This commit was manufactured by cvs2svn to create tag 'R1_5_3'.
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/.cvsignore b/bundles/org.eclipse.jst.ws.axis.consumption.core/.cvsignore
index 8dab060..f3849da 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/.cvsignore
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/.cvsignore
@@ -4,3 +4,4 @@
 wsc-axis.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/.project b/bundles/org.eclipse.jst.ws.axis.consumption.core/.project
index 846a394..f454854 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/.project
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/.project
@@ -3,7 +3,6 @@
 	<name>org.eclipse.jst.ws.axis.consumption.core</name>
 	<comment></comment>
 	<projects>
-		<project>org.eclipse.wst.command.env.core</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.axis.consumption.core/META-INF/MANIFEST.MF
index 3b52d92..822c2ed 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.axis.consumption.core; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.103.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.axis.consumption.core.plugin.WebServiceAxisConsumptionCorePlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -11,20 +11,19 @@
  org.eclipse.jst.ws.internal.axis.consumption.core.common;x-internal:=true,
  org.eclipse.jst.ws.internal.axis.consumption.core.context;x-internal:=true,
  org.eclipse.jst.ws.internal.axis.consumption.core.plugin;x-internal:=true
-Require-Bundle: org.apache.ant,
- org.eclipse.core.resources,
- org.eclipse.core.runtime,
- org.eclipse.jdt.core,
- org.eclipse.wst.command.env.core,
- org.eclipse.wst.ws,
- org.eclipse.jst.ws,
- org.eclipse.jst.ws.consumption,
- org.eclipse.jst.j2ee.web,
- org.apache.axis,
- org.eclipse.wst.common.modulecore,
- org.eclipse.wst.common.frameworks,
- org.eclipse.core.commands,
- org.eclipse.wst.common.environment,
- org.eclipse.wst.command.env
+Require-Bundle: org.apache.ant;bundle-version="[1.6.5,1.7.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.ws;bundle-version="[1.0.101,1.1.0)",
+ org.apache.axis;bundle-version="[1.3.0,1.4.0)",
+ org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.core.commands;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)"
 Eclipse-LazyStart: true
 
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/about.html b/bundles/org.eclipse.jst.ws.axis.consumption.core/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/about.html
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/command/Java2WSDLCommand.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/command/Java2WSDLCommand.java
index 41e72f6..2a1db0c 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/command/Java2WSDLCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/command/Java2WSDLCommand.java
@@ -1,16 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
+ * Copyright (c) 2003, 2006 IBM 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:
  * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060106   121199 jesper@selskabet.org - Jesper Møller
  * 20060329   127016 andyzhai@ca.ibm.com - Andy Zhai
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.consumption.core.command;
 
@@ -106,27 +107,28 @@
 		}
 
 		IStatus status = Status.OK_STATUS;
+		ILog envLog = environment.getLog();
 		Emitter emitter = new Emitter();
 		emitter.createClasspath().setPath(javaWSDLParam_.getClasspath());
-		environment.getLog().log(ILog.INFO, 5008, this, "executeAntTask", "Class Path = "+ javaWSDLParam_.getClasspath());
+		envLog.log(ILog.INFO, 5008, this, "executeAntTask", "Class Path = "+ javaWSDLParam_.getClasspath());
 		
 		emitter.setPortTypeName(javaWSDLParam_.getPortTypeName());
-		environment.getLog().log(ILog.INFO, 5009, this, "executeAntTask", "Port Type Name = "+ javaWSDLParam_.getPortTypeName());
+		envLog.log(ILog.INFO, 5009, this, "executeAntTask", "Port Type Name = "+ javaWSDLParam_.getPortTypeName());
 		
 		emitter.setServiceElementName(javaWSDLParam_.getServiceName());
-		environment.getLog().log(ILog.INFO, 5010, this, "executeAntTask", "Service Name = "+ javaWSDLParam_.getServiceName());
+		envLog.log(ILog.INFO, 5010, this, "executeAntTask", "Service Name = "+ javaWSDLParam_.getServiceName());
 		
 		emitter.setLocation(javaWSDLParam_.getUrlLocation());
-		environment.getLog().log(ILog.INFO, 5011, this, "executeAntTask", "URL Location = "+ javaWSDLParam_.getUrlLocation());
+		envLog.log(ILog.INFO, 5011, this, "executeAntTask", "URL Location = "+ javaWSDLParam_.getUrlLocation());
 		
 		emitter.setMethods(javaWSDLParam_.getMethodString());
-		environment.getLog().log(ILog.INFO, 5012, this, "executeAntTask", "Methods = "+ javaWSDLParam_.getMethodString());
+		envLog.log(ILog.INFO, 5012, this, "executeAntTask", "Methods = "+ javaWSDLParam_.getMethodString());
 		
 		emitter.setStyle(javaWSDLParam_.getStyle());
-		environment.getLog().log(ILog.INFO, 5013, this, "executeAntTask", "Style = "+ javaWSDLParam_.getStyle());
+		envLog.log(ILog.INFO, 5013, this, "executeAntTask", "Style = "+ javaWSDLParam_.getStyle());
 		
 		emitter.setUse(javaWSDLParam_.getUse());
-		environment.getLog().log(ILog.INFO, 5014, this, "executeAntTask", "Use = "+ javaWSDLParam_.getUse());
+		envLog.log(ILog.INFO, 5014, this, "executeAntTask", "Use = "+ javaWSDLParam_.getUse());
 				
 		// create temporary directory to use as output directory for java2wsdl
 		IPath pluginStateLoc = WebServiceAxisConsumptionCorePlugin.getInstance().getStateLocation();
@@ -141,13 +143,13 @@
 
 		emitter.setOutput(tempOutputWsdlFile);
 		
-		environment.getLog().log(ILog.INFO, 5015, this, "executeAntTask", "WSDL Location = "+ javaWSDLParam_.getOutputWsdlLocation());
+		envLog.log(ILog.INFO, 5015, this, "executeAntTask", "WSDL Location = "+ javaWSDLParam_.getOutputWsdlLocation());
 		
 		emitter.setNamespace(javaWSDLParam_.getNamespace());
-		environment.getLog().log(ILog.INFO, 5016, this, "executeAntTask", "Name Space = "+ javaWSDLParam_.getNamespace());
+		envLog.log(ILog.INFO, 5016, this, "executeAntTask", "Name Space = "+ javaWSDLParam_.getNamespace());
 		
 		emitter.setClassName(javaWSDLParam_.getBeanName());
-		environment.getLog().log(ILog.INFO, 5017, this, "executeAntTask", "Bean name = "+ javaWSDLParam_.getBeanName());
+		envLog.log(ILog.INFO, 5017, this, "executeAntTask", "Bean name = "+ javaWSDLParam_.getBeanName());
 		
 		emitter.setImplClass(javaWSDLParam_.getBeanName());
 		
@@ -156,7 +158,7 @@
 	    if (context.isUseInheritedMethodsEnabled() != AxisEmitterDefaults.getUseInheritedMethodsDefault())
 	    {
 	    	emitter.setUseInheritedMethods(context.isUseInheritedMethodsEnabled());
-			environment.getLog().log(ILog.INFO, 5099, this, "executeAntTask", " set UseInheritedMethods : " + context.isUseInheritedMethodsEnabled() );
+			envLog.log(ILog.INFO, 5099, this, "executeAntTask", " set UseInheritedMethods : " + context.isUseInheritedMethodsEnabled() );
 	    }
 		
 		HashMap mappings = javaWSDLParam_.getMappings();
@@ -177,7 +179,7 @@
 			emitter.execute();
 			status = moveGeneratedWSDL(environment, monitor);
 		} catch (BuildException e) {
-			environment.getLog().log(ILog.ERROR, 5018, this, "executeAntTask", e);
+			envLog.log(ILog.ERROR, 5018, this, "executeAntTask", e);
 			status = StatusUtils.errorStatus(
 			AxisConsumptionCoreMessages.MSG_ERROR_JAVA_WSDL_GENERATE + " " //$NON-NLS-1$
 			+e.getCause().toString(), e.getCause());
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/command/WSDL2JavaCommand.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/command/WSDL2JavaCommand.java
index 797bec3..02df958 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/command/WSDL2JavaCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/command/WSDL2JavaCommand.java
@@ -1,16 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
+ * Copyright (c) 2003, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
- * yyyymmdd   bug     Email and other contact information
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
+ * yyyymmdd   bug     Email and other contact information
  * 20060329   127016 andyzhai@ca.ibm.com - Andy Zhai
  * 20060404   134791 andyzhai@ca.ibm.com - Andy Zhai
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.consumption.core.command;
 
@@ -68,6 +70,7 @@
 	public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
 	{
 		IEnvironment environment = getEnvironment();
+		ILog envLog = environment.getLog();
 		IStatus status;
 		if (javaWSDLParam == null) {
 			status = StatusUtils.errorStatus(
@@ -84,7 +87,7 @@
 		javaWSDLParam.setHTTPPassword(httpBasicAuthPassword);
 		
 		Emitter wsdl2Java = new Emitter();
-		if (environment.getLog().isEnabled("emitter")) {
+		if (envLog.isEnabled("emitter")) {
 			wsdl2Java.setVerbose(true);
 		} else {
 			wsdl2Java.setVerbose(false);
@@ -119,16 +122,16 @@
 					wsdl2Java.setNamespaceMap(javaWSDLParam.getMappings());
 				}
 			}
-			environment.getLog().log(ILog.INFO, 5019, this, "execute", "Java output = " + javaWSDLParam.getJavaOutput());
+			envLog.log(ILog.INFO, 5019, this, "execute", "Java output = " + javaWSDLParam.getJavaOutput());
 			if (javaWSDLParam.getHTTPPassword() != null) {
 				wsdl2Java.setPassword(javaWSDLParam.getHTTPPassword());
-				environment.getLog().log(ILog.INFO, 5081, this, "execute", "password: " + javaWSDLParam.getHTTPPassword());
+				envLog.log(ILog.INFO, 5081, this, "execute", "password: " + javaWSDLParam.getHTTPPassword());
 			}
 			if (javaWSDLParam.getHTTPUsername() != null) {
 				wsdl2Java.setUsername(javaWSDLParam.getHTTPUsername());
-				environment.getLog().log(ILog.INFO, 5082, this, "execute", "username: " + javaWSDLParam.getHTTPUsername());
+				envLog.log(ILog.INFO, 5082, this, "execute", "username: " + javaWSDLParam.getHTTPUsername());
 			}
-			environment.getLog().log(ILog.INFO, 5020, this, "execute", "WSDL Location = " + javaWSDLParam.getInputWsdlLocation());
+			envLog.log(ILog.INFO, 5020, this, "execute", "WSDL Location = " + javaWSDLParam.getInputWsdlLocation());
 			
 			// If timeout is not set, the default timeout for wsdl2java is 45 seconds.  
 			// The user can change the timeout value by setting 
@@ -147,13 +150,13 @@
 			if (wsdl2JavaTimeoutProperty != null) {
 				timeout = new Integer(wsdl2JavaTimeoutProperty).longValue();
 				wsdl2Java.setTimeout(timeout);
-				environment.getLog().log(ILog.INFO, 5091, this, "execute", "AxisWsdl2JavaTimeout = " + timeout);				
+				envLog.log(ILog.INFO, 5091, this, "execute", "AxisWsdl2JavaTimeout = " + timeout);				
 			}
 			else if(context.getTimeOut() != AxisEmitterDefaults.getTimeOutDefault())
 			{
 				timeout = context.getTimeOut() == -1 ? -1 : context.getTimeOut()* 1000; 
 				wsdl2Java.setTimeout(timeout);
-				environment.getLog().log(ILog.INFO, 5100, this, "execute", "Timeout = " + timeout);
+				envLog.log(ILog.INFO, 5100, this, "execute", "Timeout = " + timeout);
 			}
 		    if (context.getDeployScopeType() != AxisEmitterDefaults.getDeployScopeDefault())
 		    {
@@ -161,15 +164,15 @@
 		    	{
 		    		case AxisEmitterContext.DEPLOY_SCOPE_TYPE_APPLICATION:
 		    			wsdl2Java.setScope(Scope.APPLICATION);
-						environment.getLog().log(ILog.INFO, 5101, this, "execute", " Deploy Scope: Application" );
+						envLog.log(ILog.INFO, 5101, this, "execute", " Deploy Scope: Application" );
 		    			break;
 		    		case AxisEmitterContext.DEPLOY_SCOPE_TYPE_REQUEST:
 		    			wsdl2Java.setScope(Scope.REQUEST);
-						environment.getLog().log(ILog.INFO, 5102, this, "execute", " Deploy Scope: Request" );
+						envLog.log(ILog.INFO, 5102, this, "execute", " Deploy Scope: Request" );
 		    			break;
 		    		case AxisEmitterContext.DEPLOY_SCOPE_TYPE_SESSTION:
 		    			wsdl2Java.setScope(Scope.SESSION);
-						environment.getLog().log(ILog.INFO, 5103, this, "execute", " Deploy Scope: Session" );
+						envLog.log(ILog.INFO, 5103, this, "execute", " Deploy Scope: Session" );
 		    			break;
 		    		default:
 		    	}
@@ -178,18 +181,18 @@
 		    if (context.isAllWantedEnabled() != AxisEmitterDefaults.getAllWantedDefault())
 		    {
 		    	wsdl2Java.setAllWanted(context.isAllWantedEnabled());
-				environment.getLog().log(ILog.INFO, 5104, this, "execute", " set AllWanted : " + context.isAllWantedEnabled() );
+				envLog.log(ILog.INFO, 5104, this, "execute", " set AllWanted : " + context.isAllWantedEnabled() );
 		    }
 
 		    if (context.isHelperWantedEnabled() != AxisEmitterDefaults.getHelperWantedDefault())
 		    {
 		    	wsdl2Java.setHelperWanted(context.isHelperWantedEnabled());
-				environment.getLog().log(ILog.INFO, 5105, this, "execute", " set HelperWanted : " + context.isHelperWantedEnabled() );
+				envLog.log(ILog.INFO, 5105, this, "execute", " set HelperWanted : " + context.isHelperWantedEnabled() );
 			}
 		    if (context.isWrapArraysEnabled() != AxisEmitterDefaults.getWrapArraysDefault())
 		    {
 		    	wsdl2Java.setWrapArrays(context.isWrapArraysEnabled());
-				environment.getLog().log(ILog.INFO, 5106, this, "execute", " set WrapArrays : " + context.isWrapArraysEnabled() );
+				envLog.log(ILog.INFO, 5106, this, "execute", " set WrapArrays : " + context.isWrapArraysEnabled() );
 		    }
 			
 			ProgressUtils.report(monitor, NLS.bind(AxisConsumptionCoreMessages.MSG_PARSING_WSDL, javaWSDLParam.getInputWsdlLocation() ) );
@@ -216,7 +219,7 @@
 			status = moveGeneratedFiles(environment, monitor);
 			
 		} catch (Exception e) {
-			environment.getLog().log(ILog.ERROR, 5021, this, "execute", e);
+			envLog.log(ILog.ERROR, 5021, this, "execute", e);
 			status = StatusUtils.errorStatus(
 					AxisConsumptionCoreMessages.MSG_ERROR_WSDL_JAVA_GENERATE + " " //$NON-NLS-1$
 					+ e.toString(), e);
@@ -230,7 +233,7 @@
 	public IStatus moveGeneratedFiles( IEnvironment environment, IProgressMonitor monitor ) 
 	{
 		IStatus status = Status.OK_STATUS;
-		
+		IStatusHandler statusHandler = environment.getStatusHandler();		
 		FileInputStream finStream = null;
 		
 		try {
@@ -243,7 +246,7 @@
 			
 			String fileName;
 			IPath targetPath=null;
-			IStatusHandler statusHandler = environment.getStatusHandler();
+
 			String deployFile;
 			Iterator iterator;
 			
@@ -306,7 +309,7 @@
 			
 		} catch (Exception e) {
 			status = StatusUtils.errorStatus(NLS.bind(AxisConsumptionCoreMessages.MSG_ERROR_MOVE_RESOURCE,new String[]{e.getLocalizedMessage()}), e);
-			environment.getStatusHandler().reportError(status);
+			statusHandler.reportError(status);
 			
 		} finally {
 			if (finStream != null) {
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/AxisEmitterContext.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/AxisEmitterContext.java
index 6f39617..e5a281e 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/AxisEmitterContext.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/AxisEmitterContext.java
@@ -60,6 +60,12 @@
 	 * preference from the plugins local preferences store.
 	 */
 	public static final String PREFERENCE_USE_INHERITED_METHODS = "useInheritedMethods";
+	
+	/**
+	 * This constant string is used to lookup the "validate against JAXRPC"
+	 * preference from the plugins local preferences store.
+	 */
+	public static final String PREFERENCE_VALIDATE_AGAINST_JAXRPC = "validateAgainstJAXRPC";
 
 	/**
 	 * 
@@ -123,6 +129,21 @@
 
 	/**
 	 * 
+	 * @param enable
+	 *            set whether JAX-RPC analysis of the service class is enabled.
+	 */
+	public void setValidateAgainstJAXRPCEnabled(boolean enable);
+
+	/**
+	 * 
+	 * @param returns
+	 *            whether JAX-RPC analysis of the service class is enabled.
+	 */
+
+	public boolean isValidateAgainstJAXRPCEnabled();
+
+	/**
+	 * 
 	 * @param selection
 	 *            set the deploy scope type.
 	 */
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/AxisEmitterDefaults.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/AxisEmitterDefaults.java
index f9ad3c0..19adc6e 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/AxisEmitterDefaults.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/AxisEmitterDefaults.java
@@ -19,6 +19,7 @@
  private static final boolean PREFERENCE_HELPER_WANTED_DEFAULT = false;
  private static final boolean PREFERENCE_WRAP_ARRAYS_DEFAULT = false;
  private static final boolean PREFERENCE_USE_INHERITED_METHODS_DEFAULT = false;
+ private static final boolean PREFERENCE_VALIDATE_AGAINST_JAXRPC = true;
  private static final int DEPLOY_SCOPE_DEFAULT = AxisEmitterContext.DEPLOY_SCOPE_TYPE_REQUEST;
  private static final int TIME_OUT_DEFAULT = 45;
  
@@ -60,6 +61,18 @@
  
  /**
   * 
+  * @return returns the default setting for JAX-RPC validation of the service class.
+  * Note: This is not a true Axis emitter preference. This preference controls whether
+  * the Axis Web service bottom-up scenario analyzes the service class for compliance
+  * to JAX-RPC some time before calling the emitters. 
+  */
+ public static boolean getValidateAgainstJAXRPC()
+ {
+	return PREFERENCE_VALIDATE_AGAINST_JAXRPC;
+ }
+ 
+ /**
+  * 
   * @return returns the default setting for deploy scope type.
   */
  public static int getDeployScopeDefault()
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/PersistentAxisEmitterContext.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/PersistentAxisEmitterContext.java
index 92b76ed..e8543e1 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/PersistentAxisEmitterContext.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/context/PersistentAxisEmitterContext.java
@@ -41,6 +41,7 @@
 		setDefault(PREFERENCE_HELPER_WANTED, AxisEmitterDefaults.getHelperWantedDefault());
 		setDefault(PREFERENCE_WRAP_ARRAYS, AxisEmitterDefaults.getWrapArraysDefault());
 		setDefault(PREFERENCE_USE_INHERITED_METHODS, AxisEmitterDefaults.getUseInheritedMethodsDefault());
+		setDefault(PREFERENCE_VALIDATE_AGAINST_JAXRPC, AxisEmitterDefaults.getValidateAgainstJAXRPC());
 		setDefault(PREFERENCE_DEPLOY_SCOPE, AxisEmitterDefaults.getDeployScopeDefault());
 		setDefault(PREFERENCE_TIME_OUT, AxisEmitterDefaults.getTimeOutDefault());
 	}
@@ -85,6 +86,16 @@
 		return getValueAsBoolean(PREFERENCE_USE_INHERITED_METHODS);
 	}
 
+	public void setValidateAgainstJAXRPCEnabled(boolean enable)
+	{
+		setValue(PREFERENCE_VALIDATE_AGAINST_JAXRPC, enable);
+	}
+	
+	public boolean isValidateAgainstJAXRPCEnabled()
+	{
+		return getValueAsBoolean(PREFERENCE_VALIDATE_AGAINST_JAXRPC);
+	}
+
 	public void selectDeployScopeType(int selection) {
 		setValue(PREFERENCE_DEPLOY_SCOPE, selection);
 	}
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisServicesSaxHandler.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisServicesSaxHandler.java
new file mode 100644
index 0000000..3f65216
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisServicesSaxHandler.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060517   140832 andyzhai@ca.ibm.com - Andy Zhai
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.axis.consumption.core.locator;
+
+import java.util.List;
+import java.util.Vector;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class AxisServicesSaxHandler extends DefaultHandler
+{
+	private Vector webServicesNames = new Vector();
+	
+	public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException
+	{
+		if (localName.trim().toLowerCase().equals("service"))
+		{	
+			for (int i = 0; i < atts.getLength(); i++)
+			{
+				if (atts.getLocalName(i).trim().toLowerCase().equals("name"))
+				{
+					String serviceName = atts.getValue(i);
+		            webServicesNames.add(serviceName);
+				}
+			}
+		}
+	}
+	
+	public List getWebServicesNames()
+	{
+		return this.webServicesNames;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisServletSaxHandler.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisServletSaxHandler.java
new file mode 100644
index 0000000..098bcc8
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisServletSaxHandler.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060517   140832 andyzhai@ca.ibm.com - Andy Zhai
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.axis.consumption.core.locator;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class AxisServletSaxHandler extends DefaultHandler
+{
+	private final static String AXIS_SERVLET_CLASS_NAME = "org.apache.axis.transport.http.AxisServlet";
+	
+	private final static String SERVLET_CLASS_NAME = "servlet-class";
+	
+	private boolean isThereAxisServlet = false;
+	
+	private String currentElement = null;
+	
+	public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException
+	{
+		currentElement = localName;
+	}
+	
+	public void characters(char[] ch, int start, int length) throws SAXException
+	{
+		if ( !isThereAxisServlet && SERVLET_CLASS_NAME.equals(currentElement.trim()) && String.valueOf(ch).indexOf(AXIS_SERVLET_CLASS_NAME) > -1)
+		{
+			isThereAxisServlet = true;
+		}
+	}
+	
+	public boolean isThereAxisServlet()
+	{
+		return this.isThereAxisServlet;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisWebServiceLocator.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisWebServiceLocator.java
index 79c9a9d..e03ba15 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisWebServiceLocator.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/AxisWebServiceLocator.java
@@ -10,16 +10,30 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060317   127456 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060517   140832 andyzhai@ca.ibm.com - Andy Zhai
+ * 20060620   147862 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060620   147864 cbrealey@ca.ibm.com - Chris Brealey
+ * 20061214   165716 makandre@ca.ibm.com - Andrew Mak, Web Service finder does not locate Axis Web service deployed on certain servers
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.axis.consumption.core.locator;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Vector;
 
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.IJavaModel;
@@ -27,8 +41,15 @@
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.ITypeHierarchy;
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jst.ws.internal.common.J2EEUtils;
+import org.eclipse.jst.ws.internal.wsrt.WebServiceJavaClientInfo;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerPort;
+import org.eclipse.wst.server.core.ServerUtil;
 import org.eclipse.wst.ws.internal.wsfinder.AbstractWebServiceLocator;
 import org.eclipse.wst.ws.internal.wsrt.WebServiceClientInfo;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
+import org.xml.sax.SAXException;
 
 /**
  * @author cbrealey
@@ -78,6 +99,48 @@
 	}
 	
 	/**
+	 * Searches the workspace for Axis clients as
+	 * identified by non-stub classes that implement
+	 * SEIs that are implemented by stubs that implement
+	 * org.apache.axis.client.Stub.
+	 * @param projects The projects to confine the search to.
+	 * @param monitor A progress monitor, possibly null.
+	 * @return A possibly empty list of WebServiceClientInfo objects.
+	 */
+	public List getWebServiceClients (IProject[] projects, IProgressMonitor monitor)
+	{
+		if (projects == null)
+		{
+			return getWebServiceClients(monitor);
+		}
+		List list = new LinkedList();
+		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+		IJavaModel javaModel = JavaCore.create(root);
+		try
+		{
+			javaModel.open(monitor);
+			for (int i=0; i<projects.length; i++)
+			{
+				IJavaProject javaProject = javaModel.getJavaProject(projects[i].getName());
+				// We're only interested in Java projects within which
+				// the Axis runtime's client "Stub" class is loadable:
+				IType axisStub = javaProject.findType(AXIS_STUB);
+				if (axisStub != null)
+				{
+					// Find "Proxy" classes in the project and add to the list.
+					addAxisProxies(javaProject,axisStub,list,monitor);
+				}
+			}
+			javaModel.close();
+		}
+		catch (Exception e)
+		{
+			// Fall thru and return an empty list.
+		}
+		return list;
+	}
+	
+	/**
 	 * Tries to find Axis "Proxy" classes related the given Stub.
 	 * @param axisStub The Axis client "Stub" from which to search.
 	 * @param list A list to which we'll add and WebServiceClientInfo
@@ -152,7 +215,7 @@
 	 */
 	private WebServiceClientInfo newWebServiceClientInfo (IType axisProxy)
 	{
-		WebServiceClientInfo wscInfo = null;
+		WebServiceJavaClientInfo wscInfo = null;
 		try
 		{
 			IResource resource = axisProxy.getUnderlyingResource();
@@ -162,7 +225,8 @@
 				if (proxyPath != null)
 				{
 					String proxyURL = proxyPath.toFile().toURL().toString();
-					wscInfo = new WebServiceClientInfo();
+					wscInfo = new WebServiceJavaClientInfo();
+					wscInfo.setType(axisProxy);
 					wscInfo.setImplURL(proxyURL);
 				}
 			}
@@ -179,7 +243,7 @@
 
 	/**
 	 * Searches the workspace for Axis services as
-	 * identified by deploy.wsdd <service> elements
+	 * identified by server-config.wsdd <service> elements
 	 * in projects with an Axis servlet registered
 	 * in the web.xml descriptor.
 	 * @param monitor A progress monitor, possibly null.
@@ -187,6 +251,144 @@
 	 */
 	public List getWebServices (IProgressMonitor monitor)
 	{
-		return super.getWebServices(monitor);
+		return getWebServices(null,monitor);
+	}
+	
+	/**
+	 * Searches the workspace for Axis services as
+	 * identified by server-config.wsdd <service> elements
+	 * in projects with an Axis servlet registered
+	 * in the web.xml descriptor.
+	 * @param projects The projects to confine the search to.
+	 * @param monitor A progress monitor, possibly null.
+	 * @return A possibly empty list of WebServiceInfo objects.
+	 */
+	public List getWebServices (IProject[] projects, IProgressMonitor monitor)
+	{
+		Vector webServices = new Vector();
+		if (projects == null)
+		{
+			projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+		}
+		for (int i = 0; i < projects.length; i++)
+		{
+			// we are only intersted in dynamic web project
+			if (J2EEUtils.isWebComponent(projects[i]))
+			{
+				try 
+				{
+					webServices.addAll(getWebServicesFromProject(projects[i], monitor));
+				} 
+				catch (Exception e) 
+				{
+					// Fall thru and return an empty list.
+				} 
+			}
+		}
+		return webServices;
+	}
+	
+	/**
+	 * Searches for a particular web project for Axis services as
+	 * identified by server-config.wsdd <service> elements
+	 * with an Axis servlet registered
+	 * in the web.xml descriptor.
+	 * @param monitor A progress monitor, possibly null.
+	 * @return A possibly empty list of WebServiceInfo objects.
+	 */
+	private List getWebServicesFromProject(IProject project, IProgressMonitor monitor) throws CoreException, ParserConfigurationException, SAXException, IOException
+	{	
+		// Search the web.xml in fixed location
+		IPath webDescriptorPath = J2EEUtils.getWebInfPath(project).append("/web.xml");
+		IFile webXmlFile = ResourcesPlugin.getWorkspace().getRoot().getFile(webDescriptorPath);
+		
+		if (webXmlFile != null && isAxisServletExisted(webXmlFile, monitor))
+		{
+			// Search for all server-config.wsdd inside this project
+			ServerConfigWSDDVisitor visitor = new ServerConfigWSDDVisitor();
+			project.accept(visitor);		
+			visitor.visit(project);
+			Vector wsddFiles = visitor.getWsddFiles();
+			Vector servicesNames = new Vector(); 
+			for (int i = 0; i < wsddFiles.size(); i++)
+			{
+				servicesNames.addAll(getWebServicesNamesFromAxisConfig((IFile)wsddFiles.get(i), monitor));
+			}
+			return getWebServices(project, servicesNames, monitor);
+		}
+		else
+		{
+			return new Vector();
+		}
+	}
+	
+	/*
+	 * Determine whether web.xml contains axis servlet
+	 */
+	private boolean isAxisServletExisted(IFile file, IProgressMonitor monitor) throws CoreException, ParserConfigurationException, SAXException, IOException
+	{
+		InputStream inputStream = file.getContents();
+		SAXParserFactory factory = SAXParserFactory.newInstance();
+		factory.setNamespaceAware(true);
+		SAXParser parser = factory.newSAXParser();
+		AxisServletSaxHandler handler = new AxisServletSaxHandler();
+		parser.parse(inputStream, handler);
+		inputStream.close();
+		return handler.isThereAxisServlet();
+	}
+	
+	/*
+	 * Given a list of services, find the servers this project is associated,
+	 * Combine them and form various end point
+	 */
+	private List getWebServices(IProject project, List servicesNames, IProgressMonitor monitor)
+	{
+		Vector webServices = new Vector();
+		IServer[] servers = ServerUtil.getServersByModule(ServerUtil.getModule(project),monitor);
+		for (int i = 0; i < servers.length; i++)
+		{
+			String host = servers[i].getHost();
+			ServerPort httpPort = getHttpPort(servers[i].getServerPorts(monitor));
+			if (httpPort != null)
+			{
+				for (int j = 0; j < servicesNames.size(); j++)
+				{
+					WebServiceInfo wsInfo = new WebServiceInfo();
+					String endPointURL = "http://" + host + ":" + httpPort.getPort() + "/" + J2EEUtils.getFirstWebModuleName(project) + "/services/" + (String)servicesNames.get(j);
+					wsInfo.setEndPointURL(endPointURL);
+					wsInfo.setWsdlURL(endPointURL+"?wsdl");
+		            webServices.add(wsInfo);
+				}
+			}
+		}
+		return webServices;
+	}
+	
+	/*
+	 * Parse the server-config.wsdd file, return a list of names of web services 
+	 */
+	private List getWebServicesNamesFromAxisConfig(IFile file, IProgressMonitor monitor) throws CoreException, ParserConfigurationException, SAXException, IOException
+	{
+		InputStream inputStream = file.getContents();
+		SAXParserFactory factory = SAXParserFactory.newInstance();
+		factory.setNamespaceAware(true);
+		SAXParser parser = factory.newSAXParser();
+		AxisServicesSaxHandler handler = new AxisServicesSaxHandler();
+		parser.parse(inputStream, handler);
+		inputStream.close();
+		return handler.getWebServicesNames();	
+	}
+	
+	/*
+	 * find the right port (http) from a list or ports
+	 */
+	private ServerPort getHttpPort(ServerPort[] ports)
+	{
+		for (int i = 0; i < ports.length; i++)
+		{
+			String protocol = ports[i].getProtocol(); 
+			if ( protocol != null && protocol.trim().toLowerCase().equals("http")) return ports[i];
+		}
+		return null;
 	}
 }
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/ServerConfigWSDDVisitor.java b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/ServerConfigWSDDVisitor.java
new file mode 100644
index 0000000..314d13f
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.core/src/org/eclipse/jst/ws/internal/axis/consumption/core/locator/ServerConfigWSDDVisitor.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060517   140832 andyzhai@ca.ibm.com - Andy Zhai
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.axis.consumption.core.locator;
+
+import java.util.Vector;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceVisitor;
+
+public class ServerConfigWSDDVisitor implements IResourceVisitor
+{
+	private static final String AXIS_SERVER_CONFIG_FILE_NAME = "Server-config.wsdd";
+	Vector wsddFiles = new Vector();
+	
+	public boolean visit(IResource resource)
+    {
+		if (resource.getType() == IResource.FILE)
+		{     
+			if (resource.getName().equalsIgnoreCase(AXIS_SERVER_CONFIG_FILE_NAME))
+			{
+				wsddFiles.add((IFile)resource);
+			}
+        }
+        return true;
+      }
+	public Vector getWsddFiles()
+	{
+		return wsddFiles; 
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/.cvsignore b/bundles/org.eclipse.jst.ws.axis.consumption.ui/.cvsignore
index 3620766..849a03b 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/.cvsignore
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/.cvsignore
@@ -4,3 +4,4 @@
 wsc-axis-ui.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/.project b/bundles/org.eclipse.jst.ws.axis.consumption.ui/.project
index cb0ee10..12dac85 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/.project
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/.project
@@ -3,16 +3,6 @@
 	<name>org.eclipse.jst.ws.axis.consumption.ui</name>
 	<comment></comment>
 	<projects>
-		<project>org.eclipse.wst.command.env</project>
-		<project>org.eclipse.wst.command.env.core</project>
-		<project>org.eclipse.jst.ws</project>
-		<project>org.eclipse.jst.ws.axis.consumption.core</project>
-		<project>org.eclipse.jst.ws.consumption</project>
-		<project>org.eclipse.jst.ws.consumption.ui</project>
-		<project>org.eclipse.jst.ws.discovery.core</project>
-		<project>org.eclipse.jst.ws.ui</project>
-		<project>org.eclipse.wst.wsdl</project>
-		<project>org.eclipse.wst.ws.parser</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.axis.consumption.ui/META-INF/MANIFEST.MF
index 7b2cace..13c6284 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.axis.consumption.ui; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.102.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.axis.consumption.ui.plugin.WebServiceAxisConsumptionUIPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -14,34 +14,34 @@
  org.eclipse.jst.ws.internal.axis.consumption.ui.widgets;x-internal:=true,
  org.eclipse.jst.ws.internal.axis.consumption.ui.wizard.client;x-internal:=true,
  org.eclipse.jst.ws.internal.axis.consumption.ui.wsrt;x-internal:=true
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.resources,
- org.eclipse.emf.common,
- org.eclipse.emf.ecore,
- org.eclipse.jdt.core,
- org.eclipse.jem,
- org.eclipse.jem.util,
- org.eclipse.jem.workbench,
- org.eclipse.wst.ws.parser,
- org.eclipse.jst.ws.consumption.ui,
- org.eclipse.jst.ws,
- org.eclipse.jst.ws.axis.consumption.core,
- org.eclipse.jst.ws.ui,
- org.eclipse.jst.ws.consumption,
- org.eclipse.core.runtime.compatibility,
- org.eclipse.wst.command.env.core,
- org.eclipse.wst.command.env,
- org.eclipse.wst.command.env.ui,
- org.eclipse.wst.server.core,
- org.eclipse.wst.wsdl,
- org.eclipse.jst.j2ee,
- org.eclipse.jem.workbench,
- org.eclipse.wst.ws,
- org.eclipse.wst.common.modulecore,
- org.wsdl4j,
- org.apache.axis,
- org.eclipse.wst.common.frameworks,
- org.eclipse.wst.common.environment,
- com.ibm.icu
+Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.emf.common;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jem;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jem.util;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.ws.parser;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.ws.consumption.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws.axis.consumption.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.ws.consumption;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,1.2.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.apache.axis;bundle-version="[1.3.0,1.4.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ com.ibm.icu;bundle-version="[3.4.4,3.5.0)"
 Eclipse-LazyStart: true
-Plugin-Class: org.eclipse.jst.ws.internal.axis.consumption.ui.plugin.WebServiceAxisConsumptionUIPlugin
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/about.html b/bundles/org.eclipse.jst.ws.axis.consumption.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/about.html
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/plugin.xml b/bundles/org.eclipse.jst.ws.axis.consumption.ui/plugin.xml
index 8a19dee..5e211f5 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/plugin.xml
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/plugin.xml
@@ -15,7 +15,7 @@
               key="ClientProjectName"
               operation="org.eclipse.jst.ws.internal.axis.consumption.ui.command.AxisClientDefaultingCommand"
               property="ClientProject"
-              transform="org.eclipse.jst.ws.internal.common.String2IProjectTransformer"/>
+              transform="org.eclipse.jst.ws.internal.common.StringToIProjectTransformer"/>
         <map
               key="CustomizeClientMappings"
               operation="org.eclipse.jst.ws.internal.axis.consumption.ui.command.AxisClientDefaultingCommand"
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/AxisConsumptionUI.properties b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/AxisConsumptionUI.properties
index e205e23..16fc8b0 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/AxisConsumptionUI.properties
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/AxisConsumptionUI.properties
@@ -11,6 +11,7 @@
 # -------- -------- -----------------------------------------------------------
 # 20060216   126989 pmoogk@ca.ibm.com - Peter Moogk
 # 20060329   127016 andyzhai@ca.ibm.com - Andy Zhai
+# 20060424   120137 kathy@ca.ibm.com - Kathy Chan
 ###############################################################################
 
 #
@@ -76,17 +77,13 @@
 LABEL_EXPLORE_MAPPINGS_XML2BEAN=Define custom mapping for namespace to package.
 TOOLTIP_N2P_SHOW_MAPPINGS=Define namespace to package mapping for customization.
 
-#
-# Messages for CheckAxisDeploymentDescriptorsTask
-#
-MSG_ERROR_XML_FILE_OVERWRITE_DISABLED=IWAB0532E Do you want to overwrite the Apache Axis deployment descriptor?
-
 # Messages for Axis Emitter Preference Page
 TOOLTIP_PPAE_PAGE=Set preferences that control Axis Emitter.
 TOOLTIP_PPAE_CHECKBOX_ALL_WANTED=By default, code is generated only for referenced elements. \nCall bGenerateAll(true) and WSDL2Java will generate code \nfor all elements in the scope regardless of whether they are referenced. \nScope means: by default, all WSDL files; if generateImports(false),\nthen only the immediate WSDL file.
 TOOLTIP_PPAE_CHECKBOX_HELPER_WANTED=Emits separate Helper classes for meta data.
 TOOLTIP_PPAE_CHECKBOX_WRAP_ARRAYS=Prefers building beans to straight arrays for wrapped XML array types.
 TOOLTIP_PPAE_CHECKBOX_USE_INHERITED_METHODS=If this option is selected, the Java2WSDL parser will look into extended classes to determine the list of methods to export into the WSDL file.
+TOOLTIP_PPAE_CHECKBOX_VALIDATE_AGAINST_JAXRPC=If selected, the tools will examine the Java service class and its value types to determine if it satisfies important requirements of the JAX-RPC specification.    
 TOOLTIP_PPAE_COMBO_DEPLOY_SCOPE=Add scope to deploy.wsdd.
 TOOLTIP_PPAE_FIELD_TIME_OUT=Timeout in seconds (default is 45, specify -1 to disable).
 TOOLTIP_PPAE_GROUP_WSDL2JAVA=Set preferences for wsdl2java.
@@ -95,6 +92,7 @@
 BUTTON_HELPER_WANTED=Emits separate &Helper classes for meta data.
 BUTTON_WRAP_ARRAYS=Prefers building beans to straight arrays for &wrapped XML array types.
 BUTTON_USE_INHERITED_METHODS=Look for allowed &methods in inherited class
+BUTTON_VALIDATE_AGAINST_JAXRPC=Analyze the service class for compliance to JAX-RPC before generating code
 LABEL_DEPLOY_SCOPE=Add &scope to deploy.wsdd:
 LABEL_TIME_OUT=&Timeout in seconds:
 GROUP_WSDL2JAVA_NAME=Wsdl2Java
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/AxisConsumptionUIMessages.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/AxisConsumptionUIMessages.java
index a3c779c..6f4038e 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/AxisConsumptionUIMessages.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/AxisConsumptionUIMessages.java
@@ -1,15 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
- * yyyymmdd   bug     Email and other contact information
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
+ * yyyymmdd   bug     Email and other contact information
  * 20060329   127016 andyzhai@ca.ibm.com - Andy Zhai
+ * 20060424   120137 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.consumption.ui;
 
@@ -49,12 +51,12 @@
 	public static String TABLE_COLUMN_LABEL_NAMESPACE;
 	public static String LABEL_EXPLORE_MAPPINGS_XML2BEAN;
 	public static String TOOLTIP_N2P_SHOW_MAPPINGS;
-	public static String MSG_ERROR_XML_FILE_OVERWRITE_DISABLED;
 	public static String TOOLTIP_PPAE_PAGE;
 	public static String TOOLTIP_PPAE_CHECKBOX_ALL_WANTED;
 	public static String TOOLTIP_PPAE_CHECKBOX_HELPER_WANTED;
 	public static String TOOLTIP_PPAE_CHECKBOX_WRAP_ARRAYS;
 	public static String TOOLTIP_PPAE_CHECKBOX_USE_INHERITED_METHODS;
+	public static String TOOLTIP_PPAE_CHECKBOX_VALIDATE_AGAINST_JAXRPC;
 	public static String TOOLTIP_PPAE_COMBO_DEPLOY_SCOPE;
 	public static String TOOLTIP_PPAE_FIELD_TIME_OUT;
 	public static String TOOLTIP_PPAE_GROUP_WSDL2JAVA;
@@ -63,6 +65,7 @@
 	public static String BUTTON_HELPER_WANTED;
 	public static String BUTTON_WRAP_ARRAYS;
 	public static String BUTTON_USE_INHERITED_METHODS;
+	public static String BUTTON_VALIDATE_AGAINST_JAXRPC;
 	public static String LABEL_DEPLOY_SCOPE;
 	public static String LABEL_TIME_OUT;
 	public static String GROUP_WSDL2JAVA_NAME;
@@ -75,4 +78,4 @@
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, AxisConsumptionUIMessages.class);
 	}
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/command/AxisClientOutputCommand.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/command/AxisClientOutputCommand.java
index 1f21ce5..9f729fc 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/command/AxisClientOutputCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/command/AxisClientOutputCommand.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.consumption.ui.command;
 
@@ -24,6 +27,7 @@
 	
 	private IWebServiceClient wsc_;
 	private String proxyBean_;
+	private String proxyEndpoint_;
 	  
 		/**
 		* Default CTOR
@@ -38,12 +42,17 @@
 	public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ) 
 	{	
 		wsc_.getWebServiceClientInfo().setImplURL(proxyBean_);
+		wsc_.getWebServiceClientInfo().setProxyEndpoint(proxyEndpoint_);
 		return Status.OK_STATUS;
 	  }
 
 	public void setProxyBean(String proxyBean) {
 		this.proxyBean_ = proxyBean;
 	}
+
+	public void setProxyEndpoint(String proxyEndpoint) {
+		this.proxyEndpoint_ = proxyEndpoint;
+	}
 	  
 		
 }
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/command/DefaultsForClientJavaWSDLCommand.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/command/DefaultsForClientJavaWSDLCommand.java
index 7881c7e..b1c5ec0 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/command/DefaultsForClientJavaWSDLCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/command/DefaultsForClientJavaWSDLCommand.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060216   115144 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060503   126819 rsinha@ca.ibm.com - Rupam Kuehner
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.consumption.ui.command;
 
@@ -22,8 +23,6 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jst.ws.internal.axis.consumption.core.AxisConsumptionCoreMessages;
 import org.eclipse.jst.ws.internal.axis.consumption.core.common.JavaWSDLParameter;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.AxisConsumptionUIMessages;
@@ -93,9 +92,7 @@
 		else
 		{
 			// Check if it's a plain old Java project
-			IJavaProject javaProject = null;
-			javaProject = JavaCore.create(proxyProject_);
-			if (javaProject != null)
+			if (ResourceUtils.isJavaProject(proxyProject_))
 			{
 				IPath output = ResourceUtils.findResource( new Path( outputFolder_ )).getLocation();
 				javaWSDLParam_.setJavaOutput(output.toString());
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/preferences/AxisEmitterPreferencePage.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/preferences/AxisEmitterPreferencePage.java
index 31a4e8d..12c4e17 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/preferences/AxisEmitterPreferencePage.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/preferences/AxisEmitterPreferencePage.java
@@ -75,6 +75,10 @@
   private Button useInheritedMethods;
   /*CONTEXT_ID PPAE0007 for the use inherited methods check box on the Axis Emitter Preference page*/
   private String INFOPOP_PPAE_CHECKBOX_USE_INHERITED_METHODS = WebServiceAxisConsumptionUIPlugin.ID + ".PPAE0007";
+
+  private Button validateAgainstJAXRPC;
+  /*CONTEXT_ID PPAE0010 for the "validate against JAXRPC..." check box on the Axis Emitter Preference page*/
+  private String INFOPOP_PPAE_CHECKBOX_VALIDATE_AGAINST_JAXRPC = WebServiceAxisConsumptionUIPlugin.ID + ".PPAE0010";
   
   /*CONTEXT_ID PPAE0008 for the wsdl2java group on the Axis Emitter Preference page*/
   private String INFOPOP_PPAE_GROUP_WSDL2JAVA = WebServiceAxisConsumptionUIPlugin.ID + ".PPAE0008";
@@ -116,6 +120,7 @@
     
     Group java2WsdlGroup = utils.createGroup(parent, AxisConsumptionUIMessages.GROUP_JAVA2WSDL_NAME, AxisConsumptionUIMessages.TOOLTIP_PPAE_GROUP_JAVA2WSDL, INFOPOP_PPAE_GROUP_JAVA2WSDL, 2, 10,10);
     useInheritedMethods = createCheckBox(java2WsdlGroup, AxisConsumptionUIMessages.BUTTON_USE_INHERITED_METHODS,AxisConsumptionUIMessages.TOOLTIP_PPAE_CHECKBOX_USE_INHERITED_METHODS,INFOPOP_PPAE_CHECKBOX_USE_INHERITED_METHODS);
+    validateAgainstJAXRPC = createCheckBox(java2WsdlGroup, AxisConsumptionUIMessages.BUTTON_VALIDATE_AGAINST_JAXRPC,AxisConsumptionUIMessages.TOOLTIP_PPAE_CHECKBOX_VALIDATE_AGAINST_JAXRPC,INFOPOP_PPAE_CHECKBOX_VALIDATE_AGAINST_JAXRPC);
 
     initializeValues();
     org.eclipse.jface.dialogs.Dialog.applyDialogFont(superparent);    
@@ -208,6 +213,7 @@
     if (wsdl2JavaTimeoutProperty != null) timeOutField.setText(""+ getTimeOutValueWithProperty());
     else timeOutField.setText("" + AxisEmitterDefaults.getTimeOutDefault());	
     useInheritedMethods.setSelection(AxisEmitterDefaults.getUseInheritedMethodsDefault());
+    validateAgainstJAXRPC.setSelection(AxisEmitterDefaults.getValidateAgainstJAXRPC());
   }
 
   /**
@@ -222,6 +228,7 @@
     wrapArrays.setSelection( context.isWrapArraysEnabled());
     deployScopeTypes.select(context.getDeployScopeType());
     useInheritedMethods.setSelection( context.isUseInheritedMethodsEnabled());
+    validateAgainstJAXRPC.setSelection( context.isValidateAgainstJAXRPCEnabled() );
     if (wsdl2JavaTimeoutProperty != null) 
     {	timeOut=getTimeOutValueWithProperty();
     	timeOutField.setEnabled(false);
@@ -248,6 +255,7 @@
     timeOut = Integer.parseInt(timeOutField.getText().trim());
     context.setTimeOut(timeOut);
     context.setUseInheritedMethodsEnabled( useInheritedMethods.getSelection() );
+    context.setValidateAgainstJAXRPCEnabled( validateAgainstJAXRPC.getSelection() );
   }
   
   private void numberFieldChanged(Text textControl) {
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/CheckAxisDeploymentDescriptorsTask.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/CheckAxisDeploymentDescriptorsTask.java
deleted file mode 100644
index 3c87e51..0000000
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/CheckAxisDeploymentDescriptorsTask.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jst.ws.internal.axis.consumption.ui.task;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jst.ws.internal.axis.consumption.core.AxisConsumptionCoreMessages;
-import org.eclipse.jst.ws.internal.axis.consumption.ui.AxisConsumptionUIMessages;
-import org.eclipse.jst.ws.internal.common.J2EEUtils;
-import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
-import org.eclipse.wst.command.internal.env.ui.eclipse.EnvironmentUtils;
-import org.eclipse.wst.common.environment.IEnvironment;
-import org.eclipse.wst.common.environment.StatusException;
-import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
-
-public class CheckAxisDeploymentDescriptorsTask extends AbstractDataModelOperation {
-	
-	private IProject serverProject;
-    
-  public CheckAxisDeploymentDescriptorsTask( )
-  {
-  }
-	
-	public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ) 
-	{
-		IEnvironment env = getEnvironment();
-		IStatus status = Status.OK_STATUS;
-		if(EnvironmentUtils.getResourceContext(env).isOverwriteFilesEnabled()) {
-      return status;
-		}
-
-	  IPath    filePath = null;
-      IProject project = serverProject;
-	  	  
-
-      filePath = J2EEUtils.getWebInfPath( project );
-      filePath = filePath.append("/server-config.wsdd");
-
-	  if(filePath==null || filePath.isEmpty())
-		{
-			status = StatusUtils.errorStatus( AxisConsumptionCoreMessages.MSG_ERROR_JAVA_WSDL_PARAM_NOT_SET);
-			env.getStatusHandler().reportError(status);
-			return status;			
-		}
-
-		IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath);
-		if (file.exists() && !EnvironmentUtils.getResourceContext(env).isOverwriteFilesEnabled())   {
-			status = StatusUtils.warningStatus( AxisConsumptionUIMessages.MSG_ERROR_XML_FILE_OVERWRITE_DISABLED);
-			try
-			{
-				env.getStatusHandler().report(status);
-			}
-			catch(StatusException se)
-			{
-				status = StatusUtils.errorStatus( "User aborted");
-			}
-			
-			return status;
-		}
-		return status;
-	}
-
-	public void setServerProject(IProject serverProject)
-	{
-	  this.serverProject = serverProject;
-	}
-}
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/ClientCodeGenOperation.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/ClientCodeGenOperation.java
new file mode 100644
index 0000000..33ecbe2
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/ClientCodeGenOperation.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060509   125094 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis.consumption.ui.task;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.internal.axis.consumption.core.command.WSDL2JavaCommand;
+import org.eclipse.jst.ws.internal.axis.consumption.core.common.JavaWSDLParameter;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
+
+public class ClientCodeGenOperation extends AbstractDataModelOperation {
+
+	private CopyAxisJarCommand copyAxisJarCommand = null;
+	
+	private WSDL2JavaCommand wsdl2JavaCommand = null;
+	private JavaWSDLParameter javaWSDLParam;
+	private String wsdlURI;
+	
+	private IProject project;
+	
+	private Stub2BeanCommand stub2BeanCommand = null;
+	private WebServicesParser webServicesParser;
+	private String outputFolder;
+	private String proxyBean;
+	private String proxyEndpoint;
+	
+	private RefreshProjectCommand refreshProjectCommand = null;
+
+	public ClientCodeGenOperation(){
+		copyAxisJarCommand = new CopyAxisJarCommand();
+		wsdl2JavaCommand = new WSDL2JavaCommand();
+		stub2BeanCommand = new Stub2BeanCommand();
+		refreshProjectCommand = new RefreshProjectCommand();
+	}
+	
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info) {
+
+		IEnvironment env = getEnvironment();
+		ClientWSModifyOperation buOperation = new ClientWSModifyOperation(info, env);
+		try {
+			buOperation.execute(monitor);
+		}
+		catch(CoreException ce){
+			IStatus status = ce.getStatus();
+			return status;
+		}
+		return Status.OK_STATUS;
+
+	}
+
+	
+	private class ClientWSModifyOperation extends WorkspaceModifyOperation {
+		
+		  private IAdaptable info = null;
+		  private IEnvironment env = null;
+
+		  
+		  protected ClientWSModifyOperation(IAdaptable adaptable, IEnvironment environment){
+			  info = adaptable;
+			  env = environment;
+		  }
+		  
+		  protected void execute(IProgressMonitor monitor) throws CoreException{
+		  
+			    IStatus status = null;
+
+			    // CopyAxisJarCommand
+			    copyAxisJarCommand.setEnvironment(env);
+			    copyAxisJarCommand.setProject(project);
+			    status = copyAxisJarCommand.execute(monitor, info);
+			    if (status.getSeverity() == Status.ERROR){
+			    	throw new CoreException(status);
+			    }
+				
+				// WSDL2JavaCommand
+				wsdl2JavaCommand.setEnvironment(env);
+				wsdl2JavaCommand.setJavaWSDLParam(javaWSDLParam);
+				wsdl2JavaCommand.setWsdlURI(wsdlURI);
+				status = wsdl2JavaCommand.execute(monitor, info);
+				if (status.getSeverity() == Status.ERROR) {
+					throw new CoreException(status);
+				}
+				
+				// Stub2BeanCommand
+				stub2BeanCommand.setEnvironment(env);
+				stub2BeanCommand.setWebServicesParser(webServicesParser);
+				stub2BeanCommand.setOutputFolder(outputFolder);
+				stub2BeanCommand.setJavaWSDLParam(javaWSDLParam);
+				stub2BeanCommand.setClientProject(project);
+				status = stub2BeanCommand.execute(monitor, info);
+				if (status.getSeverity() == Status.ERROR) {
+					throw new CoreException(status);
+				}
+				proxyBean = stub2BeanCommand.getProxyBean();
+				proxyEndpoint = stub2BeanCommand.getProxyEndpoint();
+			  
+				// RefreshProjectCommand
+				refreshProjectCommand.setEnvironment(env);
+				refreshProjectCommand.setProject(project);
+				status = refreshProjectCommand.execute(monitor, info);
+				if (status.getSeverity() == Status.ERROR) {
+					throw new CoreException(status);
+				}
+				
+		  }
+		
+	}
+
+
+	public void setJavaWSDLParam(JavaWSDLParameter javaWSDLParam) {
+		this.javaWSDLParam = javaWSDLParam;
+	}
+
+	public void setOutputFolder(String outputFolder) {
+		this.outputFolder = outputFolder;
+	}
+
+	public void setProject(IProject project) {
+		this.project = project;
+	}
+
+	public void setWebServicesParser(WebServicesParser webServicesParser) {
+		this.webServicesParser = webServicesParser;
+	}
+
+	public void setWsdlURI(String wsdlURI) {
+		this.wsdlURI = wsdlURI;
+	}
+		
+	public String getProxyBean() {
+		return proxyBean;
+	}
+	
+	public String getProxyEndpoint() {
+		return proxyEndpoint;
+	}
+	
+}
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/CopyAxisJarCommand.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/CopyAxisJarCommand.java
index 768fb91..ebb4ed3 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/CopyAxisJarCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/CopyAxisJarCommand.java
@@ -1,12 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
+ * Copyright (c) 2003, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060509   125094 sengpl@ca.ibm.com - Seng Phung-Lu, Use WorkspaceModifyOperation
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060517   142342 kathy@ca.ibm.com - Kathy Chan
+ * 20060828	  155439 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.consumption.ui.task;
 
@@ -51,11 +57,32 @@
   public static String[] JARLIST = new String[] {
 	  "axis.jar",
 	  "commons-discovery-0.2.jar",
-	  "commons-logging-1.0.4.jar",
 	  "jaxrpc.jar",
 	  "saaj.jar",
 	  "wsdl4j-1.5.1.jar"
   };
+  //these are the jar sizes that correspond to the jars in JARLIST.
+  private static long[] JARSIZES = {
+	  1632995L, 	// axis.jar
+	  71442L,		// commons-discovery-0.2.jar
+	  32062L,		// jaxrpc.jar
+	  19419L,		// saaj.jar	
+	  126771L		// wsdl4j-1.5.1.jar
+  };
+  private static long COMMON_LOGGING_JAR_SIZE = 38015L;
+  //Web Services Jars Used in previous Versions of WTP but now obsolete
+  private static String[] OBSOLETE_JARS = new String[]{
+	  "commons-discovery.jar",
+	  "commons-logging.jar",
+	  "log4j-1.2.4.jar",
+	  "log4j-1.2.8.jar",
+	  "wsdl4j.jar",
+	  "axis-ant.jar"
+  };
+  
+  
+  public static String COMMON_LOGGING_PLUGIN_ID = "org.apache.commons_logging"; //$NON-NLS-1$
+  public static String COMMON_LOGGING_JAR = "commons-logging-1.0.4.jar"; //$NON-NLS-1$
   public static String PATH_TO_JARS_IN_PLUGIN = "lib/";
 
   private IProject project;
@@ -72,41 +99,42 @@
    */
 	public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ) 
 	{
+		
 		IEnvironment env = getEnvironment();
-    IStatus status = Status.OK_STATUS;
-    ProgressUtils.report(monitor, AxisConsumptionUIMessages.PROGRESS_INFO_COPY_AXIS_CFG);
-    
-    if (J2EEUtils.isWebComponent(project))
-    {
-    	copyAxisJarsToProject(project, status, env, monitor);	
-    }
-    else
-    {
-    	//Check if it's a plain old Java project
- 		 if (J2EEUtils.isJavaComponent(project))
- 		 {
- 			status = addAxisJarsToBuildPath(project, env, monitor);
- 			if (status.getSeverity()==Status.ERROR)
- 			{
- 				env.getStatusHandler().reportError(status);
- 				return status;
- 			}
- 		 }
- 		 else
- 		 {
- 		   status = StatusUtils.errorStatus( AxisConsumptionUIMessages.MSG_WARN_NO_JAVA_NATURE);	
- 		   env.getStatusHandler().reportError(status);
- 		   return status;
- 		 }
+		IStatus status = Status.OK_STATUS;
+	    ProgressUtils.report(monitor, AxisConsumptionUIMessages.PROGRESS_INFO_COPY_AXIS_CFG);
+	    
+	    if (J2EEUtils.isWebComponent(project))
+	    {
+	    	copyAxisJarsToProject(project, status, env, monitor);	
+	    }
+	    else
+	    {
+	    	//Check if it's a plain old Java project
+	 		 if (J2EEUtils.isJavaComponent(project))
+	 		 {
+	 			status = addAxisJarsToBuildPath(project, env, monitor);
+	 			if (status.getSeverity()==Status.ERROR)
+	 			{
+	 				env.getStatusHandler().reportError(status);
+	 				return status;
+	 			}
+	 		 }
+	 		 else
+	 		 {
+	 		   status = StatusUtils.errorStatus( AxisConsumptionUIMessages.MSG_WARN_NO_JAVA_NATURE);	
+	 		   env.getStatusHandler().reportError(status);
+	 		   return status;
+	 		 }
 
-    }
-    
-    return status;
+	    }
+	    
+	    return status;
 
-  }
+	}
 
   private void copyAxisJarsToProject(IProject project, IStatus status, IEnvironment env, IProgressMonitor monitor) {
-//    IPath webModulePath = ResourceUtils.getWebModuleServerRoot(project).getFullPath();
+
 	IPath webModulePath = J2EEUtils.getWebContentPath( project );
     if (webModulePath == null) {
       status = StatusUtils.errorStatus( ConsumptionMessages.MSG_ERROR_PROJECT_NOT_FOUND);
@@ -114,18 +142,24 @@
       return;
     }
 	
+    deleteObsoleteJars(webModulePath);
+    
 	for (int i=0; i<JARLIST.length; ) {
-		copyIFile("lib/"+JARLIST[i], webModulePath, "WEB-INF/lib/"+JARLIST[i++], status, env, monitor); 
+		copyIFile(AXIS_RUNTIME_PLUGIN_ID, "lib/"+JARLIST[i], webModulePath, "WEB-INF/lib/"+JARLIST[i++], status, env, monitor); 
 	    if (status.getSeverity() == Status.ERROR)
 	      return;
 	}
+	
+	copyIFile(COMMON_LOGGING_PLUGIN_ID, "lib/"+COMMON_LOGGING_JAR, webModulePath, "WEB-INF/lib/"+COMMON_LOGGING_JAR, status, env, monitor); 
+    if (status.getSeverity() == Status.ERROR)
+      return;
     return;
   }
 
   /**
    *  
    */
-  private void copyIFile(String source, IPath targetPath, String targetFile, IStatus status, IEnvironment env, IProgressMonitor monitor) {
+  private void copyIFile(String pluginId, String source, IPath targetPath, String targetFile, IStatus status, IEnvironment env, IProgressMonitor monitor) {
     IPath target = targetPath.append(new Path(targetFile));
     ProgressUtils.report(monitor,ConsumptionMessages.PROGRESS_INFO_COPYING_FILE);
 
@@ -134,7 +168,7 @@
       context.setOverwriteFilesEnabled(true);
       context.setCreateFoldersEnabled(true);
       context.setCheckoutFilesEnabled(true);
-      URL sourceURL = BundleUtils.getURLFromBundle( AXIS_RUNTIME_PLUGIN_ID, source );
+      URL sourceURL = BundleUtils.getURLFromBundle( pluginId, source );
       IFile resource = ResourceUtils.getWorkspaceRoot().getFile(target);
       if (!resource.exists()) {
         IFile file = FileResourceUtils.createFile(context, target, sourceURL.openStream(), monitor, 
@@ -152,6 +186,72 @@
     }
   }
 
+  /*
+   * Check for any obsolete Jars in WEB-INF/lib folder
+   * Obsolete jars would be found in projects migrated
+   * from older versions of WTP
+   */
+  private void deleteObsoleteJars(IPath webModulePath)
+  {  
+	  //First check for Any jars that have names that are known to be obsolete
+	  for (int i=0; i <OBSOLETE_JARS.length; i++)
+	  {
+		  IPath path = webModulePath.append("WEB-INF/lib/" + OBSOLETE_JARS[i]);
+		  
+		  IFile resource = ResourceUtils.getWorkspaceRoot().getFile(path);
+		  if (resource.exists())
+		  {
+			  deleteResource(resource);
+		  }
+	  }
+	  /*
+	   * Next check for jars with the same name as a Jar in JARLIST
+	   * but that have a different size than in JARSIZES.  We need to 
+	   * do this because a jar could have the same name but still be out
+	   * of date so size is only way to check.
+	   * E.g. all versions of axis have the same name of axis.jar
+	   */
+	  for (int i=0; i< JARLIST.length; i++)
+	  {
+		  IPath path = webModulePath.append("WEB-INF/lib/" + JARLIST[i]);
+		  IFile resource = ResourceUtils.getWorkspaceRoot().getFile(path);
+		  if (resource.exists())
+		  {
+			  //calculate the size of the resource by getting the java.io.File    	  
+			  long fileSize =resource.getLocation().toFile().length();
+			  if (fileSize != JARSIZES[i])
+			  {
+				  deleteResource(resource);
+			  }
+		  }
+	  }
+	  //Finally check logging plugin (only left seperate because not in JARLIST)
+	  IPath path = webModulePath.append("WEB-INF/lib/" + COMMON_LOGGING_JAR);
+	  IFile resource = ResourceUtils.getWorkspaceRoot().getFile(path);
+	  if (resource.exists())
+	  {
+		  //calculate the size of the resource by getting the java.io.File    	  
+		  long fileSize =resource.getLocation().toFile().length();
+		  if (fileSize != COMMON_LOGGING_JAR_SIZE)
+		  {
+			  deleteResource(resource);
+		  }
+	  }
+  }
+  
+  private void deleteResource(IFile resource)
+  {	  //delete the resource
+	  try
+	  {
+		  //System.out.println("Obsolete Jar!! " + resource.getName());
+		  resource.delete(true, null);
+	  }
+	  catch (Exception e)
+	  {  //e.printStackTrace();
+	  }
+  }
+ 
+
   public IStatus addAxisJarsToBuildPath(IProject p, IEnvironment env, IProgressMonitor monitor)
   {
 	  String[] jarNames = new String[JARLIST.length];
@@ -169,6 +269,19 @@
 	  {			  
 		  return status;
 	  }
+	  
+	  StringBuffer sb2 = new StringBuffer();
+	  sb2.append(PATH_TO_JARS_IN_PLUGIN);
+	  sb2.append(COMMON_LOGGING_JAR);
+	  String jarName = sb2.toString();
+	  String[] jarNames2 = new String[1];
+	  jarNames2[0] = jarName;
+	  status = addJar(p, COMMON_LOGGING_PLUGIN_ID, jarNames2, env, monitor);
+	  if (status.getSeverity()==Status.ERROR)
+	  {			  
+		  return status;
+	  }
+	  
 	  return Status.OK_STATUS;
   }
 
@@ -295,4 +408,5 @@
   public boolean getProjectRestartRequired() {
     return projectRestartRequired_.booleanValue();
   }
+  
 }
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/Stub2BeanCommand.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/Stub2BeanCommand.java
index 955e06d..4bcee6b 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/Stub2BeanCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/Stub2BeanCommand.java
@@ -10,6 +10,9 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060216   115144 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060503   126819 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060515   118315 mahutch@ca.ibm.com - Mark Hutchinson
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.axis.consumption.ui.task;
@@ -21,23 +24,25 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Vector;
+
 import javax.wsdl.Definition;
+import javax.wsdl.Operation;
 import javax.wsdl.Port;
 import javax.wsdl.PortType;
 import javax.wsdl.Service;
 import javax.wsdl.extensions.soap.SOAPAddress;
 import javax.xml.namespace.QName;
+
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jst.ws.internal.axis.consumption.core.common.JavaWSDLParameter;
 import org.eclipse.jst.ws.internal.axis.consumption.core.common.NameMappingUtils;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.AxisConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.common.componentcore.ModuleCoreNature;
 import org.eclipse.wst.common.environment.IEnvironment;
@@ -53,6 +58,7 @@
   private Vector portTypes_;
   private String proxyBean_;
   private String outputFolder_;
+  private String proxyEndpoint_;
   
   private IProject clientProject_;
   
@@ -92,10 +98,8 @@
     ModuleCoreNature mn = ModuleCoreNature.getModuleCoreNature(clientProject_);
     if (mn==null)
     {
-        // Check if it's a plain old Java project
-    	IJavaProject javaProject = null;    	  
-		javaProject = JavaCore.create(clientProject_);    
-		if (javaProject == null)
+        // Check if it's a plain old Java project    
+		if (!ResourceUtils.isJavaProject(clientProject_))
 		{
 	 		   IStatus status = StatusUtils.errorStatus( AxisConsumptionUIMessages.MSG_WARN_NO_JAVA_NATURE);	
 	 		   environment.getStatusHandler().reportError(status);
@@ -141,6 +145,7 @@
         }
         if (soapAddress != null)
         {
+          proxyEndpoint_ = soapAddress.getLocationURI();
           PortType portType = port.getBinding().getPortType();
           QName portTypeQName = portType.getQName();
           StringBuffer portTypeID = new StringBuffer();
@@ -154,6 +159,32 @@
             stub2BeanInfo.setClientProject(clientProject_);
             stub2BeanInfo.setOutputFolder( outputFolder_ );
             String portTypePkgName = NameMappingUtils.getPackageName(portType.getQName().getNamespaceURI(), pkg2nsMapping);
+            
+            /*
+             * If the package name and method name are the same the Axis
+             * wsdl2Java Emitter adds a "_pkg" suffix to the package name
+             * of generated code.
+             * 
+             * We need to make sure the proxy get's put in this same package
+             * if an operation name is the same as the package name.
+             * (Mark Hutchinson - Bug 118315)
+             */
+            List operations = portType.getOperations();
+            Iterator operIter = operations.iterator();
+            boolean addSuffix = false;
+            while (operIter.hasNext())
+            {
+            	Operation operation = (Operation)operIter.next();
+            	if (operation.getName().equals(portTypePkgName))
+            	{
+            		addSuffix = true;            	
+            	}
+            }            
+            if (addSuffix) {
+            	portTypePkgName = portTypePkgName + "_pkg";
+            	servicePkgName = servicePkgName + "_pkg";
+            }            
+            
             String portTypeClassName = computeClassName(portTypeQName.getLocalPart());
             stub2BeanInfo.setPackage(portTypePkgName);
             stub2BeanInfo.setClass(portTypeClassName + "Proxy");
@@ -245,4 +276,8 @@
 	{
 		outputFolder_ = outputFolder;
 	}
+
+	public String getProxyEndpoint() {
+		return proxyEndpoint_;
+	}
 }
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/Stub2BeanInfo.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/Stub2BeanInfo.java
index 8561175..d752600 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/Stub2BeanInfo.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/task/Stub2BeanInfo.java
@@ -11,6 +11,7 @@
  * -------- -------- -----------------------------------------------------------
  * 20060216   115144 pmoogk@ca.ibm.com - Peter Moogk
  * 20060216   127138 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060517   141481 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.axis.consumption.ui.task;
@@ -33,6 +34,7 @@
 import org.eclipse.jem.java.JavaVisibilityKind;
 import org.eclipse.jem.java.Method;
 import org.eclipse.jst.ws.internal.common.JavaMOFUtils;
+import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.jst.ws.internal.plugin.WebServicePlugin;
 import org.eclipse.wst.command.internal.env.common.FileResourceUtils;
 import org.eclipse.wst.common.environment.IStatusHandler;
@@ -156,12 +158,15 @@
 
   public void write(IProgressMonitor progressMonitor, IStatusHandler statusMonitor) throws CoreException, IOException
   {
-    StringWriter sw = new StringWriter(2048);
+    IPath        outputPath = new Path( outputFolder_ );
+    IProject     project    = ResourceUtils.getProjectOf( outputPath );
+    StringWriter sw         = new StringWriter(2048);
+    
     writePackage(sw);
     writeImports(sw);
     writeClass(sw);
     sw.close();
-    byte[] bytes = sw.getBuffer().toString().getBytes();
+    byte[] bytes = sw.getBuffer().toString().getBytes( project.getDefaultCharset() );
     StringBuffer sb = new StringBuffer();
     if (package_ != null && package_.length() > 0)
     {
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/wizard/client/WebServiceClientAxisType.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/wizard/client/WebServiceClientAxisType.java
index 311064c..bd851ad 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/wizard/client/WebServiceClientAxisType.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/wizard/client/WebServiceClientAxisType.java
@@ -10,15 +10,15 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060216   115144 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060523   143284 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.consumption.ui.wizard.client;
 
-import org.eclipse.jst.ws.internal.axis.consumption.core.command.WSDL2JavaCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.AxisConsumptionUIMessages;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.command.AxisClientDefaultingCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.command.DefaultsForClientJavaWSDLCommand;
+import org.eclipse.jst.ws.internal.axis.consumption.ui.task.ClientCodeGenOperation;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.task.DefaultsForHTTPBasicAuthCommand;
-import org.eclipse.jst.ws.internal.axis.consumption.ui.task.Stub2BeanCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.task.ValidateWSDLCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.widgets.AxisMappingsWidget;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.widgets.AxisProxyWidget;
@@ -63,8 +63,8 @@
 	dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", DefaultsForHTTPBasicAuthCommand.class, "JavaWSDLParam", null); //OK
 	dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", DefaultsForClientJavaWSDLCommand.class, "JavaWSDLParam", null); //OK
 	dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", ValidateWSDLCommand.class, "JavaWSDLParam", null); //OK
-	dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", WSDL2JavaCommand.class, "JavaWSDLParam", null); //OK
-	dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", Stub2BeanCommand.class, "JavaWSDLParam", null); //OK
+	dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", ClientCodeGenOperation.class, "JavaWSDLParam", null); //OK
+
   }
   
   /* (non-Javadoc)
diff --git a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/wsrt/AxisWebServiceClient.java b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/wsrt/AxisWebServiceClient.java
index 370160d..e645096 100644
--- a/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/wsrt/AxisWebServiceClient.java
+++ b/bundles/org.eclipse.jst.ws.axis.consumption.ui/src/org/eclipse/jst/ws/internal/axis/consumption/ui/wsrt/AxisWebServiceClient.java
@@ -10,20 +10,21 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060216   115144 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060509   125094 sengpl@ca.ibm.com - Seng Phung-Lu, Use WorkspaceModifyOperation
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.axis.consumption.ui.wsrt;
 
 import java.util.Vector;
-import org.eclipse.jst.ws.internal.axis.consumption.core.command.WSDL2JavaCommand;
+
 import org.eclipse.jst.ws.internal.axis.consumption.ui.command.AxisClientDefaultingCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.command.AxisClientInputCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.command.AxisClientOutputCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.command.DefaultsForClientJavaWSDLCommand;
-import org.eclipse.jst.ws.internal.axis.consumption.ui.task.CopyAxisJarCommand;
+import org.eclipse.jst.ws.internal.axis.consumption.ui.task.ClientCodeGenOperation;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.task.DefaultsForHTTPBasicAuthCommand;
-import org.eclipse.jst.ws.internal.axis.consumption.ui.task.RefreshProjectCommand;
-import org.eclipse.jst.ws.internal.axis.consumption.ui.task.Stub2BeanCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.task.ValidateWSDLCommand;
 import org.eclipse.jst.ws.internal.common.StringToIProjectTransformer;
 import org.eclipse.jst.ws.internal.consumption.command.common.BuildProjectCommand;
@@ -70,12 +71,10 @@
 //		commands.add(new SimpleFragment("AxisClientStart"));
 //		commands.add(new SimpleFragment("AxisClientBeanMapping"));
 		commands.add(new DefaultsForHTTPBasicAuthCommand());
-		commands.add(new CopyAxisJarCommand());
+//		commands.add(new CopyAxisJarCommand());
 		commands.add(new DefaultsForClientJavaWSDLCommand());
 		commands.add(new ValidateWSDLCommand());
-		commands.add(new WSDL2JavaCommand());
-		commands.add(new RefreshProjectCommand());
-		commands.add(new Stub2BeanCommand());
+		commands.add(new ClientCodeGenOperation());
 		commands.add(new AxisClientOutputCommand(this,ctx));
 		commands.add(new BuildProjectCommand());
 		return new SimpleCommandFactory(commands);
@@ -118,7 +117,7 @@
 		registry.addMapping(AxisClientDefaultingCommand.class, "WsdlURL", DefaultsForHTTPBasicAuthCommand.class, "WsdlServiceURL", null); //OK
 		registry.addMapping(AxisClientDefaultingCommand.class, "WebServicesParser", DefaultsForHTTPBasicAuthCommand.class); //OK    
 		
-		registry.addMapping(AxisClientDefaultingCommand.class, "ClientProject", CopyAxisJarCommand.class, "Project", null);
+//		registry.addMapping(AxisClientDefaultingCommand.class, "ClientProject", CopyAxisJarCommand.class, "Project", null);
 
 		// DefaultsForClientJavaWSDLCommand() // javaParam_, model_
 		registry.addMapping(AxisClientDefaultingCommand.class, "JavaWSDLParam", DefaultsForClientJavaWSDLCommand.class);
@@ -135,24 +134,25 @@
 		registry.addMapping(AxisClientDefaultingCommand.class, "JavaWSDLParam", ValidateWSDLCommand.class);
 		registry.addMapping(AxisClientDefaultingCommand.class, "WsdlServiceURL", ValidateWSDLCommand.class);
 		registry.addMapping(AxisClientDefaultingCommand.class, "WebServicesParser", ValidateWSDLCommand.class);
+
 		// WSDL2JavaCommand() // javaParam_
-		registry.addMapping(AxisClientDefaultingCommand.class, "JavaWSDLParam", WSDL2JavaCommand.class);
-		registry.addMapping(AxisClientDefaultingCommand.class, "WsdlURL", WSDL2JavaCommand.class, "WsdlURI", null); // URL
-																													// to
-																													// URI??
+		registry.addMapping(AxisClientDefaultingCommand.class, "JavaWSDLParam", ClientCodeGenOperation.class);
+		registry.addMapping(AxisClientDefaultingCommand.class, "WsdlURL", ClientCodeGenOperation.class, "WsdlURI", null);
+
 		// RefreshProjectCommand()
-		registry.addMapping(AxisClientDefaultingCommand.class, "ClientProject", RefreshProjectCommand.class, "Project", null);
+		registry.addMapping(AxisClientDefaultingCommand.class, "ClientProject", ClientCodeGenOperation.class, "Project", null);		
+		
 		// Stub2BeanCommand()
-		registry.addMapping(AxisClientDefaultingCommand.class, "JavaWSDLParam", Stub2BeanCommand.class);
-		registry.addMapping(AxisClientDefaultingCommand.class, "WebServicesParser", Stub2BeanCommand.class);
-		registry.addMapping(AxisClientDefaultingCommand.class, "ClientProject", Stub2BeanCommand.class);
-		registry.addMapping(DefaultsForClientJavaWSDLCommand.class, "OutputFolder", Stub2BeanCommand.class );
+		registry.addMapping(AxisClientDefaultingCommand.class, "WebServicesParser", ClientCodeGenOperation.class);
+		registry.addMapping(DefaultsForClientJavaWSDLCommand.class, "OutputFolder", ClientCodeGenOperation.class );
+		
 		// BuildProjectCommand()
 		registry.addMapping(AxisClientDefaultingCommand.class, "ClientProject", BuildProjectCommand.class, "Project", null);
 		registry.addMapping(AxisClientDefaultingCommand.class, "ForceBuild", BuildProjectCommand.class);
 		registry.addMapping(AxisClientDefaultingCommand.class, "ValidationManager", BuildProjectCommand.class);
 		
-		registry.addMapping(Stub2BeanCommand.class, "ProxyBean", AxisClientOutputCommand.class, "ProxyBean", null);
+		registry.addMapping(ClientCodeGenOperation.class, "ProxyBean", AxisClientOutputCommand.class, "ProxyBean", null);
+		registry.addMapping(ClientCodeGenOperation.class, "ProxyEndpoint", AxisClientOutputCommand.class);
 //		registry.addMapping(AxisClientDefaultingCommand.class, "GenerateProxy", ClientExtensionOutputCommand.class);
 //		registry.addMapping(AxisClientDefaultingCommand.class, "SetEndpointMethod", ClientExtensionOutputCommand.class);
 	}
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/.cvsignore b/bundles/org.eclipse.jst.ws.axis.creation.ui/.cvsignore
index 921050a..c726c35 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/.cvsignore
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/.cvsignore
@@ -4,3 +4,4 @@
 wss-axis-ui.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/.project b/bundles/org.eclipse.jst.ws.axis.creation.ui/.project
index 0a3d1e9..39e93a9 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/.project
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/.project
@@ -3,18 +3,6 @@
 	<name>org.eclipse.jst.ws.axis.creation.ui</name>
 	<comment></comment>
 	<projects>
-		<project>org.eclipse.wst.command.env</project>
-		<project>org.eclipse.wst.command.env.core</project>
-		<project>org.eclipse.jst.ws</project>
-		<project>org.eclipse.jst.ws.axis.consumption.core</project>
-		<project>org.eclipse.jst.ws.axis.consumption.ui</project>
-		<project>org.eclipse.jst.ws.consumption</project>
-		<project>org.eclipse.jst.ws.consumption.ui</project>
-		<project>org.eclipse.jst.ws.creation.ui</project>
-		<project>org.eclipse.jst.ws.discovery.core</project>
-		<project>org.eclipse.jst.ws.ui</project>
-		<project>org.eclipse.wst.wsdl</project>
-		<project>org.eclipse.wst.ws.parser</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.axis.creation.ui/META-INF/MANIFEST.MF
index 865e257..73d0e0e 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.axis.creation.ui; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.104.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.axis.creation.ui.plugin.WebServiceAxisCreationUIPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -15,35 +15,35 @@
  org.eclipse.jst.ws.internal.axis.creation.ui.wizard.beans;x-internal:=true,
  org.eclipse.jst.ws.internal.axis.creation.ui.wizard.wsdl;x-internal:=true,
  org.eclipse.jst.ws.internal.axis.creation.ui.wsrt;x-internal:=true
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.resources,
- org.eclipse.emf.ecore,
- org.eclipse.jem,
- org.eclipse.jem.workbench,
- org.eclipse.wst.ws.parser,
- org.eclipse.jst.ws,
- org.eclipse.jst.ws.consumption.ui,
- org.eclipse.jst.ws.consumption,
- org.eclipse.jst.ws.ui,
- org.eclipse.jst.ws.axis.consumption.core,
- org.eclipse.jst.ws.axis.consumption.ui,
- org.eclipse.core.runtime.compatibility,
- org.eclipse.jem.workbench,
- org.eclipse.wst.command.env.core,
- org.eclipse.wst.command.env,
- org.eclipse.wst.command.env.ui,
- org.eclipse.wst.server.core,
- org.eclipse.wst.ws,
- org.eclipse.jst.j2ee,
- org.eclipse.jst.j2ee.core,
- org.eclipse.jst.j2ee.web,
- org.wsdl4j,
- org.eclipse.jst.common.frameworks,
- org.eclipse.jem.util,
- org.eclipse.wst.common.frameworks,
- org.eclipse.wst.common.environment,
- org.eclipse.debug.core,
- org.eclipse.jdt.core,
- org.eclipse.wst.wsdl
+Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.jem;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.ws.parser;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.ws;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws.consumption.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws.consumption;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.ws.axis.consumption.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws.axis.consumption.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.web;bundle-version="[1.1.0,1.2.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jem.util;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)"
 Eclipse-LazyStart: true
-Plugin-Class: org.eclipse.jst.ws.internal.axis.creation.ui.plugin.WebServiceAxisCreationUIPlugin
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/about.html b/bundles/org.eclipse.jst.ws.axis.creation.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/about.html
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/plugin.xml b/bundles/org.eclipse.jst.ws.axis.creation.ui/plugin.xml
index 679562b..77aef4e 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/plugin.xml
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/plugin.xml
@@ -29,14 +29,14 @@
 	<extension point="org.eclipse.wst.command.env.ui.widgetRegistry">
        <widgetFactory   
              id="AxisBeanConfig"
-             insertBeforeCommandId="org.eclipse.jst.ws.internal.axis.creation.ui.task.BUCheckAxisDeploymentDescriptors"
+             insertBeforeCommandId="org.eclipse.jst.ws.internal.axis.creation.ui.task.BUConfigCommand"
              class="org.eclipse.jst.ws.internal.axis.creation.ui.wsrt.AxisBeanConfigWidgetFactory"/>
     </extension> 
     
 	<extension point="org.eclipse.wst.command.env.ui.widgetRegistry">
        <widgetFactory   
              id="AxisSkeletonConfig"
-             insertBeforeCommandId="org.eclipse.jst.ws.internal.axis.creation.ui.task.TDCheckAxisDeploymentDescriptors"
+             insertBeforeCommandId="org.eclipse.jst.ws.internal.axis.creation.ui.task.TDConfigCommand"
              class="org.eclipse.jst.ws.internal.axis.creation.ui.wsrt.AxisSkeletonConfigWidgetFactory"/>
     </extension> 
     
@@ -88,6 +88,15 @@
 
       </clientRuntime>
     </extension>        
+    
+    <!-- extend WebServiceSampleTest to support the Axis client runtimes -->
+    <extension point="org.eclipse.jst.ws.consumption.ui.tester">
+      <tester
+         id="org.eclipse.jst.ws.internal.consumption.ui.widgets.test.WebServiceSampleTest"
+         supportedClientRuntimes="org.eclipse.jst.ws.axis.consumption.web org.eclipse.jst.ws.axis.consumption.java">
+      </tester>
+    </extension>
+    
       <extension
            point="org.eclipse.wst.command.env.antDataMapping">
         <map
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/AxisCreationUI.properties b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/AxisCreationUI.properties
index daa2e7a..f2339d5 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/AxisCreationUI.properties
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/AxisCreationUI.properties
@@ -12,6 +12,7 @@
 # 20060216   126989 pmoogk@ca.ibm.com - Peter Moogk
 # 20060329	 128827 kathy@ca.ibm.com  - Kathy Chan
 # 20060329	 124667 kathy@ca.ibm.com  - Kathy Chan
+# 20060607   144978 kathy@ca.ibm.com - Kathy Chan
 ###############################################################################
 
 #
@@ -101,3 +102,8 @@
 #
 MSG_ERROR_SKELETON_MERGE=Error in merging skeleton file {0}.
 
+#
+# Messages for ValidateWSIComplianceCommand
+#
+WSI_INCOMPLIANCE_RPC_ENCODED=RPC Encoded is selected
+
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/AxisCreationUIMessages.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/AxisCreationUIMessages.java
index 1a65b20..48733c9 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/AxisCreationUIMessages.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/AxisCreationUIMessages.java
@@ -9,8 +9,9 @@
  * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
-# 20060329	 128827 kathy@ca.ibm.com  - Kathy Chan
-# 20060329	 124667 kathy@ca.ibm.com  - Kathy Chan
+ * 20060329	 128827 kathy@ca.ibm.com  - Kathy Chan
+ * 20060329	 124667 kathy@ca.ibm.com  - Kathy Chan
+ * 20060607  144978 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui;
 
@@ -58,6 +59,7 @@
 	public static String MSG_ERROR_COMPILER_LEVEL_NOT_COMPATIBLE;
 	public static String MSG_ERROR_MODIFY_ENDPOINT;
 	public static String MSG_ERROR_SKELETON_MERGE;
+	public static String WSI_INCOMPLIANCE_RPC_ENCODED;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, AxisCreationUIMessages.class);
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/BUAxisInputCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/BUAxisInputCommand.java
index 1ea105e..c193e2a 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/BUAxisInputCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/BUAxisInputCommand.java
@@ -1,20 +1,31 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ * 20061004   159356 kathy@ca.ibm.com - Kathy Chan, Get correct module root URL based on server chosen
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.command;
 
 
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.internal.axis.consumption.core.context.AxisEmitterContext;
+import org.eclipse.jst.ws.internal.axis.consumption.core.plugin.WebServiceAxisConsumptionCorePlugin;
+import org.eclipse.jst.ws.internal.conformance.JAXRPCWebServiceAnalyzer;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.environment.StatusException;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
 import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.server.core.ServerCore;
@@ -28,6 +39,7 @@
 	private String javaBeanName_;
 
 	  private String serviceServerTypeID_;
+	  private IServer serviceExistingServer_ = null;
 	  
 		/**
 		* Default CTOR
@@ -47,13 +59,42 @@
 		String serverFactoryId = ws_.getWebServiceInfo().getServerFactoryId();
 		javaBeanName_ = ws_.getWebServiceInfo().getImplURL();
 		
-		IServer serviceExistingServer=null;
+		// The following "if" block drives validation of the given
+		// Java service class (javaBeanName_) against JAX-RPC if the
+		// JAX-RPC validation preference is switched on.
+		// For the most part, the JAX-RPC analyzer returns warnings
+		// for violations of the JAX-RPC spec, and errors only if
+		// actual JDT model navigation fails due to bad classpaths.
+		// This allows users the choice of heeding or ignoring the
+		// messages returned by the analyzer.
+		IEnvironment environment = getEnvironment();
+		AxisEmitterContext context = WebServiceAxisConsumptionCorePlugin.getInstance().getAxisEmitterContext();
+		if (javaBeanName_ != null && context.isValidateAgainstJAXRPCEnabled())
+		{
+			JAXRPCWebServiceAnalyzer analyzer = new JAXRPCWebServiceAnalyzer();
+			IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(serverProject_); 
+			if (project != null)
+			{
+				IStatus status = analyzer.analyze(project,javaBeanName_,monitor);
+				if (!status.isOK())
+				{
+					try
+					{
+						environment.getStatusHandler().report(status);
+					}
+					catch (StatusException e)
+					{
+						return new Status(IStatus.ERROR,"org.eclipse.jst.ws",0,"",null);
+					}
+				}
+			}
+		}
 		
 		if (serverInstanceId != null) { // server exists
-	    	serviceExistingServer = ServerCore.findServer(serverInstanceId);
-			if (serviceExistingServer != null)
+	    	serviceExistingServer_ = ServerCore.findServer(serverInstanceId);
+			if (serviceExistingServer_ != null)
 		    {
-		      serviceServerTypeID_ = serviceExistingServer.getServerType().getId();
+		      serviceServerTypeID_ = serviceExistingServer_.getServerType().getId();
 		    }
 	    }
 	    else
@@ -80,4 +121,9 @@
 		public String getJavaBeanName() {
 			return javaBeanName_;
 		}
+		
+		public IServer getServiceExistingServer()
+		  {
+		    return serviceExistingServer_;
+		  }
 }
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/BUCodeGenOperation.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/BUCodeGenOperation.java
new file mode 100644
index 0000000..bae2259
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/BUCodeGenOperation.java
@@ -0,0 +1,178 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ *      
+ * 20060509   125094 sengpl@ca.ibm.com - Seng Phung-Lu, Use WorkspaceModifyOperation
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060517   142327 kathy@ca.ibm.com - Kathy Chan
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis.creation.ui.command;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.internal.axis.consumption.core.command.Java2WSDLCommand;
+import org.eclipse.jst.ws.internal.axis.consumption.core.command.WSDL2JavaCommand;
+import org.eclipse.jst.ws.internal.axis.consumption.core.common.JavaWSDLParameter;
+import org.eclipse.jst.ws.internal.axis.consumption.ui.task.CopyAxisJarCommand;
+import org.eclipse.jst.ws.internal.axis.consumption.ui.task.RefreshProjectCommand;
+import org.eclipse.jst.ws.internal.axis.creation.ui.task.UpdateAxisWSDDFileTask;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+public class BUCodeGenOperation extends AbstractDataModelOperation {
+
+	// CopyAxisJarCommand
+	private CopyAxisJarCommand copyAxisJarCommand = null;
+	
+	// Java2WSDLCommand
+	private Java2WSDLCommand java2WSDLCommand = null;
+	private JavaWSDLParameter javaWSDLParam;  
+	private String wsdlURI; 
+	
+	// wsdl2JavaCommand
+	private WSDL2JavaCommand wsdl2JavaCommand = null;
+		
+	// UpdateAxisWSDDFileTask
+	private UpdateAxisWSDDFileTask updateAxisWsddCommand = null;
+	private IProject serviceProject;
+	
+	// UpdateWEBXMLCommand
+	private UpdateWEBXMLCommand updateWebXMLCommand = null;
+	
+	// RefreshProjectCommand
+	private RefreshProjectCommand refreshProjectCommand = null;
+
+	/**
+	 * This command runs the commands in the constructor in a WorkspaceModifyOperation.
+	 * The commands are listed above, along with their relevant data registry parameters 
+	 * @param java2WSDL
+	 * @param wsdl2Java
+	 * @param updateAxisWsdd
+	 * @param updateWebXML
+	 */
+	public BUCodeGenOperation(){
+		copyAxisJarCommand = new CopyAxisJarCommand();
+		java2WSDLCommand = new Java2WSDLCommand();
+		wsdl2JavaCommand = new WSDL2JavaCommand();
+		updateAxisWsddCommand = new UpdateAxisWSDDFileTask();
+		updateWebXMLCommand = new UpdateWEBXMLCommand();
+		refreshProjectCommand = new RefreshProjectCommand();
+	}
+
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info) {
+
+		IEnvironment env = getEnvironment();
+		BottomUpWSModifyOperation buOperation = new BottomUpWSModifyOperation(info, env);
+		try {
+			buOperation.execute(monitor);
+		}
+		catch(CoreException ce){
+			IStatus status = ce.getStatus();
+			return status;
+		}
+		return Status.OK_STATUS;
+
+	}
+
+	private class BottomUpWSModifyOperation extends WorkspaceModifyOperation {
+		
+		  private IAdaptable info = null;
+		  private IEnvironment env = null;
+
+		  
+		  protected BottomUpWSModifyOperation(IAdaptable adaptable, IEnvironment environment){
+			  info = adaptable;
+			  env = environment;
+		  }
+		  
+		  protected void execute(IProgressMonitor monitor) throws CoreException{
+		  
+			    IStatus status = null;
+			  
+			    // CopyAxisJarCommand
+			    copyAxisJarCommand.setEnvironment(env);
+			    copyAxisJarCommand.setProject(serviceProject);
+			    status = copyAxisJarCommand.execute(monitor, info);
+			    if (status.getSeverity() == Status.ERROR){
+			    	throw new CoreException(status);
+			    }
+			    
+			  	// Java2WSDLCommand
+				java2WSDLCommand.setEnvironment(env);
+				java2WSDLCommand.setJavaWSDLParam(javaWSDLParam);
+				status = java2WSDLCommand.execute(monitor, info);
+				if (status.getSeverity() == Status.ERROR) {
+					throw new CoreException(status);
+				}
+				wsdlURI = java2WSDLCommand.getWsdlURI();
+				
+				// WSDL2JavaCommand
+				wsdl2JavaCommand.setEnvironment(env);
+				wsdl2JavaCommand.setJavaWSDLParam(javaWSDLParam);
+				status = wsdl2JavaCommand.execute(monitor, info);
+				if (status.getSeverity() == Status.ERROR) {
+					throw new CoreException(status);
+				}
+				javaWSDLParam = wsdl2JavaCommand.getJavaWSDLParam();
+				
+				// UpdateAxisWsddCommand
+				updateAxisWsddCommand.setEnvironment(env);
+				updateAxisWsddCommand.setJavaWSDLParam(javaWSDLParam);
+				updateAxisWsddCommand.setServiceProject(serviceProject);
+				status = updateAxisWsddCommand.execute(monitor, info);
+				if (status.getSeverity() == Status.ERROR) {
+					throw new CoreException(status);
+				}
+				javaWSDLParam = updateAxisWsddCommand.getJavaWSDLParam();
+				
+				// UpdateWebXMLCommand
+				updateWebXMLCommand.setEnvironment(env);
+				updateWebXMLCommand.setServerProject(serviceProject);
+				status = updateWebXMLCommand.execute(monitor, info);
+				if (status.getSeverity() == Status.ERROR) {
+					throw new CoreException(status);
+				}
+				
+				// RefreshProjectCommand
+				refreshProjectCommand.setEnvironment(env);
+				refreshProjectCommand.setProject(serviceProject);
+				status = refreshProjectCommand.execute(monitor, info);
+				if (status.getSeverity() == Status.ERROR) {
+					throw new CoreException(status);
+				}
+
+			  
+		  }
+		
+	}
+
+	public String getWsdlURI() {
+		return wsdlURI;
+	}
+	
+	public JavaWSDLParameter getJavaWSDLParam() {
+		return javaWSDLParam;
+	}
+
+	public void setJavaWSDLParam(JavaWSDLParameter javaWSDLParam) {
+		this.javaWSDLParam = javaWSDLParam;
+	}
+
+	public void setServiceProject(IProject serviceProject) {
+		this.serviceProject = serviceProject;
+	}
+	
+}
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/CopyDeploymentFileCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/CopyDeploymentFileCommand.java
index 6b6e4b0..f97e54b 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/CopyDeploymentFileCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/CopyDeploymentFileCommand.java
@@ -1,16 +1,21 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
+ * Copyright (c) 2003, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060524   130755 kathy@ca.ibm.com - Kathy Chan
+ * 20061221   168787 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.command;
 
 
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 
@@ -24,6 +29,7 @@
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jst.ws.internal.axis.consumption.core.AxisConsumptionCoreMessages;
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
+import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.jst.ws.internal.plugin.WebServicePlugin;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.command.internal.env.common.FileResourceUtils;
@@ -52,6 +58,7 @@
 	private final String WEB_INF = "WEB-INF";
 	private final String SERVER_CONFIG = "server-config.wsdd";
     private String projectName_;
+    private String EARProjectName_;
 	private String serverInstanceId_;
   
   /**
@@ -60,9 +67,10 @@
  * @param String name
    * 
    */
-  public CopyDeploymentFileCommand( String projectName )
+  public CopyDeploymentFileCommand( String projectName, String earProjectName )
   { 
     projectName_   = projectName;
+    EARProjectName_   = earProjectName;
   }
 
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ) 
@@ -83,32 +91,46 @@
 			  IModulePublishHelper publishHelper = (IModulePublishHelper) 
 			  	server.loadAdapter(IModulePublishHelper.class, monitor);
 			  if (publishHelper != null) {
-				  IPath publishDirPath = publishHelper.getPublishDirectory(new IModule [] {projectModule});
+				  IModule[] serverModules;
+				  if (EARProjectName_ == null) {
+					  serverModules = new IModule [] {projectModule};
+				  } else {
+					  IProject EARProject = ProjectUtilities.getProject(EARProjectName_);
+					  IModule EARProjectModule = ServerUtil.getModule(EARProject);
+					  serverModules = new IModule [] {EARProjectModule, projectModule};
+				  }
+				  IPath publishDirPath = publishHelper.getPublishDirectory(serverModules);
+				  
 				  if (publishDirPath != null) {
-					  IPath path = new Path( WEB_INF ).append( SERVER_CONFIG );
-					  IPath serverConfigPath = publishDirPath.append(path);
-					  if (serverConfigPath != null) {
-						  IVirtualFolder rootFolder = component.getRootFolder();
-						  if (rootFolder != null) {			  
-							  IVirtualFile newLocation = rootFolder.getFile(path);
-							  IPath targetPath = newLocation.getWorkspaceRelativePath();
-							  
-							  if (targetPath != null) {
-								  finStream = new FileInputStream(serverConfigPath.toString());
-								  if (finStream != null) {
-									  IStatusHandler statusHandler = environment.getStatusHandler();
-									  ResourceContext context = WebServicePlugin.getInstance().getResourceContext();
-									  FileResourceUtils.createFile(context,  
-											  targetPath,
-											  finStream,
-											  monitor,
-											  statusHandler);
-									  finStream.close();
+					  IVirtualFolder rootFolder = component.getRootFolder();
+					  IPath rootFolderPath = ResourceUtils.getWorkspaceRoot().getFile(rootFolder.getWorkspaceRelativePath()).getLocation();
+					  if (rootFolderPath != null) {
+						  File rootFolderFile = rootFolderPath.toFile();
+						  File publishDirFile = publishDirPath.toFile();
+						  if (!rootFolderFile.equals(publishDirFile)) {
+							  // copy the server-config.wsdd if the publish directory is not in the same as the project root folder
+							  IPath path = new Path( WEB_INF ).append( SERVER_CONFIG );
+							  IPath serverConfigPath = publishDirPath.append(path);
+							  if (serverConfigPath != null) {			  
+								  IVirtualFile newLocation = rootFolder.getFile(path);
+								  IPath targetPath = newLocation.getWorkspaceRelativePath();
+								  if (targetPath != null) {
+									  finStream = new FileInputStream(serverConfigPath.toString());
+									  if (finStream != null) {
+										  IStatusHandler statusHandler = environment.getStatusHandler();
+										  ResourceContext context = WebServicePlugin.getInstance().getResourceContext();
+										  FileResourceUtils.createFile(context,  
+												  targetPath,
+												  finStream,
+												  monitor,
+												  statusHandler);
+										  finStream.close();
+									  }
 								  }
 							  }
 						  }
 					  }
-				  }
+				  }  
 			  } 	  		  
 		  }	  
 	  }
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/ModifyWSDLEndpointAddressCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/ModifyWSDLEndpointAddressCommand.java
index ffbf4b2..4b4f026 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/ModifyWSDLEndpointAddressCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/ModifyWSDLEndpointAddressCommand.java
@@ -1,16 +1,16 @@
-/**
- * <copyright>
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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
  *
- * Licensed Material - Property of IBM
- * (C) Copyright IBM Corp. 2005 - All Rights Reserved.
- * US Government Users Restricted Rights - Use, duplication or disclosure
- * restricted by GSA ADP Schedule Contract with IBM Corp.
- *
- * </copyright>
- *
- * File AST/ws/code/ast/eclipse/plugins/com.ibm.ast.ws.creation.ui/src/com/ibm/etools/webservice/was/creation/ui/command/ModifyWSDLEndpointAddressCommand.java, WAS.ast.ws, WASX.AST 3 
- * Version 1.3 05/11/22 11:43:13
- */
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.command;
 
 import java.io.OutputStream;
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/PublishServerCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/PublishServerCommand.java
deleted file mode 100644
index f752283..0000000
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/PublishServerCommand.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jst.ws.internal.axis.creation.ui.command;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.core.ServerCore;
-import org.eclipse.wst.server.core.internal.Server;
-import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
-
-public class PublishServerCommand extends AbstractDataModelOperation
-{
-  private WebServiceInfo wsInfo;
-  
-  public PublishServerCommand(WebServiceInfo wsInfo)
-  {
-    this.wsInfo = wsInfo;
-  }
-
-  public IStatus execute(IProgressMonitor monitor, IAdaptable adaptable) 
-  {
-    if (wsInfo != null)
-    {
-      String serverInstanceId = wsInfo.getServerInstanceId();
-      if (serverInstanceId != null)
-      {
-        IServer server = ServerCore.findServer(serverInstanceId);
-        if (server != null)
-        {
-        	if (((Server)server).shouldPublish()) {
-        		return server.publish(IServer.PUBLISH_INCREMENTAL, monitor);
-        	}
-        }
-      }
-    }
-    return Status.OK_STATUS;
-  }
-}
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/TDAxisInputCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/TDAxisInputCommand.java
index 45c8f59..dded685 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/TDAxisInputCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/TDAxisInputCommand.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060330 128827   kathy@ca.ibm.com - Kathy Chan
+ * 20061004   159356 kathy@ca.ibm.com - Kathy Chan, Get correct module root URL based on server chosen
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.command;
 
@@ -19,6 +20,8 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerCore;
 import org.eclipse.wst.ws.internal.wsrt.IWebService;
 import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
 
@@ -30,6 +33,7 @@
 
 	  private String serverServer_;
       private String serviceServerTypeID_; 
+	  private IServer serviceExistingServer_ = null;
 	  private String wsdlURI_;
 	  private WebServiceInfo webServiceInfo_;
 	  	  
@@ -47,7 +51,21 @@
 		public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable ) 
 		{	    
 		serverServer_ = ws_.getWebServiceInfo().getServerInstanceId();
-        serviceServerTypeID_ = ws_.getWebServiceInfo().getServerFactoryId();
+
+		String serverInstanceId = ws_.getWebServiceInfo().getServerInstanceId();
+		String serverFactoryId = ws_.getWebServiceInfo().getServerFactoryId();
+		if (serverInstanceId != null) { // server exists
+	    	serviceExistingServer_ = ServerCore.findServer(serverInstanceId);
+			if (serviceExistingServer_ != null)
+		    {
+		      serviceServerTypeID_ = serviceExistingServer_.getServerType().getId();
+		    }
+	    }
+	    else
+	    {
+	    	serviceServerTypeID_ = serverFactoryId;
+	    }
+		
 		wsdlURI_ = ws_.getWebServiceInfo().getWsdlURL();
 		webServiceInfo_ = ws_.getWebServiceInfo();
 		
@@ -79,5 +97,10 @@
 		public WebServiceInfo getWebServiceInfo() {
 			return webServiceInfo_;
 		}
+		
+		public IServer getServiceExistingServer()
+		  {
+		    return serviceExistingServer_;
+		  }
 
 }
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/TDCodeGenOperation.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/TDCodeGenOperation.java
new file mode 100644
index 0000000..c4ab91a
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/TDCodeGenOperation.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060509   125094 sengpl@ca.ibm.com - Seng Phung-Lu, Use WorkspaceModifyOperation
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060517   142327 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20061004   159356 kathy@ca.ibm.com - Kathy Chan, Get correct module root URL based on server chosen
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.axis.creation.ui.command;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.internal.axis.consumption.core.command.WSDL2JavaCommand;
+import org.eclipse.jst.ws.internal.axis.consumption.core.common.JavaWSDLParameter;
+import org.eclipse.jst.ws.internal.axis.consumption.ui.task.CopyAxisJarCommand;
+import org.eclipse.jst.ws.internal.axis.consumption.ui.task.RefreshProjectCommand;
+import org.eclipse.jst.ws.internal.axis.creation.ui.task.BackupSkelImplCommand;
+import org.eclipse.jst.ws.internal.axis.creation.ui.task.Skeleton2WSDLCommand;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
+
+public class TDCodeGenOperation extends AbstractDataModelOperation {
+
+	// CopyAxisJarCommand
+	private CopyAxisJarCommand copyAxisJarCommand = null;
+	
+	// BackupSkelImplCommand
+	private BackupSkelImplCommand backupSkelImplCommand = null;
+	private WebServicesParser webServicesParser;
+	private JavaWSDLParameter javaWSDLParam;
+	private WebServiceInfo webServiceInfo;
+	
+	// WSDL2JavaCommand
+	private WSDL2JavaCommand wsdl2JavaCommand = null;
+	private String wsdlURI;
+	private String httpBasicAuthUsername;
+	private String httpBasicAuthPassword;
+	
+	// Skeleton2WSDLCommand
+	private Skeleton2WSDLCommand skeleton2WSDLCommand = null;
+	private IProject serverProject;
+	private String serviceServerTypeID;
+	private IServer serviceExistingServer;
+	  
+	// UpdateWebXMLCommand
+	private UpdateWEBXMLCommand updateWebXMLCommand = null;
+
+	// RefreshProjectCommand
+	private RefreshProjectCommand refreshProjectCommand = null;
+	
+	/**
+	 * This command runs the commands passed by the constructor in a WorkspaceModifyOperation.
+	 * The commands are listed above, with only some of their data registry parameters since some appear 
+	 * to overlap the commands.
+	 * @param backupSkelImpl
+	 * @param wsdl2Java
+	 * @param skeleton2WSDL
+	 * @param updateWebXML
+	 */
+	public TDCodeGenOperation() { 
+		copyAxisJarCommand = new CopyAxisJarCommand();
+		backupSkelImplCommand = new BackupSkelImplCommand();
+		wsdl2JavaCommand = new WSDL2JavaCommand();
+		skeleton2WSDLCommand = new Skeleton2WSDLCommand();
+		updateWebXMLCommand = new UpdateWEBXMLCommand();
+		refreshProjectCommand = new RefreshProjectCommand();
+	}
+	
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info) {
+		IEnvironment env = getEnvironment();
+		TopDownWSModifyOperation tdOperation = new TopDownWSModifyOperation(info, env);
+		try {
+			tdOperation.execute(monitor);
+		}
+		catch(CoreException ce){
+			IStatus status = ce.getStatus();
+			return status;
+		}
+		return Status.OK_STATUS;
+	}
+	
+	
+	
+	private class TopDownWSModifyOperation extends WorkspaceModifyOperation {
+
+		private IAdaptable info = null;
+		private IEnvironment env = null;
+		
+		protected TopDownWSModifyOperation(IAdaptable adaptable, IEnvironment environment){
+			info = adaptable;
+			env = environment;
+		}
+		
+		protected void execute(IProgressMonitor monitor) throws CoreException {
+
+			IStatus status = null;
+			
+		    // CopyAxisJarCommand
+		    copyAxisJarCommand.setEnvironment(env);
+		    copyAxisJarCommand.setProject(serverProject);
+		    status = copyAxisJarCommand.execute(monitor, info);
+		    if (status.getSeverity() == Status.ERROR){
+		    	throw new CoreException(status);
+		    }
+			
+			// backupSkelImplCommand
+			backupSkelImplCommand.setEnvironment(env);
+			backupSkelImplCommand.setWebServicesParser(webServicesParser);
+			backupSkelImplCommand.setJavaWSDLParam(javaWSDLParam);
+			backupSkelImplCommand.setWebServiceInfo(webServiceInfo);
+			status = backupSkelImplCommand.execute(monitor, info);
+			if (status.getSeverity() == Status.ERROR) {
+				throw new CoreException(status);
+			}
+
+			// wsdl2JavaCommand
+			wsdl2JavaCommand.setEnvironment(env);
+			wsdl2JavaCommand.setWsdlURI(wsdlURI);
+			wsdl2JavaCommand.setHttpBasicAuthUsername(httpBasicAuthUsername);
+			wsdl2JavaCommand.setHttpBasicAuthPassword(httpBasicAuthPassword);
+			wsdl2JavaCommand.setJavaWSDLParam(javaWSDLParam);
+			status = wsdl2JavaCommand.execute(monitor, info);
+			if (status.getSeverity() == Status.ERROR) {
+				throw new CoreException(status);
+			}
+			javaWSDLParam = wsdl2JavaCommand.getJavaWSDLParam();
+			
+			// Skeleton2WSDLCommand
+			skeleton2WSDLCommand.setEnvironment(env);
+			skeleton2WSDLCommand.setWebServicesParser(webServicesParser);
+			skeleton2WSDLCommand.setJavaWSDLParam(javaWSDLParam);
+			skeleton2WSDLCommand.setServerProject(serverProject);
+			skeleton2WSDLCommand.setServiceServerTypeID(serviceServerTypeID);
+			skeleton2WSDLCommand.setServiceExistingServer(serviceExistingServer);
+			status = skeleton2WSDLCommand.execute(monitor, info);
+			if (status.getSeverity() == Status.ERROR) {
+				throw new CoreException(status);
+			}
+			wsdlURI = skeleton2WSDLCommand.getWsdlURI();
+		
+			// UpdateWebXMLCommand
+			updateWebXMLCommand.setEnvironment(env);
+			updateWebXMLCommand.setServerProject(serverProject);
+			status = updateWebXMLCommand.execute(monitor, info);
+			if (status.getSeverity() == Status.ERROR) {
+				throw new CoreException(status);
+			}
+			
+			// RefreshProjectCommand
+			refreshProjectCommand.setEnvironment(env);
+			refreshProjectCommand.setProject(serverProject);
+			status = refreshProjectCommand.execute(monitor, info);
+			if (status.getSeverity() == Status.ERROR) {
+				throw new CoreException(status);
+			}
+			
+		}
+	
+	}
+
+
+
+	public JavaWSDLParameter getJavaWSDLParam() {
+		return javaWSDLParam;
+	}
+
+	public void setJavaWSDLParam(JavaWSDLParameter javaWSDLParam) {
+		this.javaWSDLParam = javaWSDLParam;
+	}
+
+	public void setWebServiceInfo(WebServiceInfo webServiceInfo) {
+		this.webServiceInfo = webServiceInfo;
+	}
+
+	public void setWebServicesParser(WebServicesParser webServicesParser) {
+		this.webServicesParser = webServicesParser;
+	}
+	
+	/**
+	 * @param httpBasicAuthPassword
+	 *            The httpBasicAuthPassword to set.
+	 */
+	public void setHttpBasicAuthPassword(String httpBasicAuthPassword) {
+		this.httpBasicAuthPassword = httpBasicAuthPassword;
+	}
+
+	/**
+	 * @param httpBasicAuthUsername
+	 *            The httpBasicAuthUsername to set.
+	 */
+	public void setHttpBasicAuthUsername(String httpBasicAuthUsername) {
+		this.httpBasicAuthUsername = httpBasicAuthUsername;
+	}
+
+	public void setWsdlURI(String wsdlURI) {
+		this.wsdlURI = wsdlURI;
+	}
+
+	public String getWsdlURI() {
+		return wsdlURI;
+	}
+	
+	/**
+	 * @param serverProject The serverProject to set.
+	 */
+	public void setServerProject(IProject serverProject) {
+	  this.serverProject = serverProject;
+	}
+		  
+	public void setServiceServerTypeID(String id) {
+	  this.serviceServerTypeID = id;
+	}
+	
+	public void setServiceExistingServer(IServer server) {
+		  this.serviceExistingServer = server;
+		}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/UpdateWEBXMLCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/UpdateWEBXMLCommand.java
index 0c26812..5d4e868 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/UpdateWEBXMLCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/UpdateWEBXMLCommand.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
+ * Copyright (c) 2003, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.command;
 
@@ -52,10 +55,6 @@
 				environment.getStatusHandler().reportError(status);
 				return status;
 			}
-			if (status.getSeverity() == Status.ERROR) {
-				environment.getStatusHandler().reportError(status);
-				return status;
-			}
 			addServlet(serverProject, getAdmintServletDescriptor());
 			if (status.getSeverity() == Status.ERROR) {
 				environment.getStatusHandler().reportError(status);
@@ -87,34 +86,26 @@
 		return sd;
 	}
 
-	public IStatus addServlet(
-		IProject webProject,
-		ServletDescriptor servletDescriptor) {
+	public IStatus addServlet(IProject webProject, ServletDescriptor servletDescriptor) {
 
 		WebArtifactEdit webEdit = null;		
 		try {
 			// 
 			WebApp webapp = null;
-      IVirtualComponent vc = ComponentCore.createComponent(webProject);
-      webEdit = WebArtifactEdit.getWebArtifactEditForWrite(vc);
+			IVirtualComponent vc = ComponentCore.createComponent(webProject);
+			webEdit = WebArtifactEdit.getWebArtifactEditForWrite(vc);
 			if (webEdit != null)
 			{
-				webapp = (WebApp) webEdit.getDeploymentDescriptorRoot();
-
-			   boolean foundServlet = false;
+			   webapp = (WebApp) webEdit.getDeploymentDescriptorRoot();
 
 			   List theServlets = webapp.getServlets();
 			   for (int i = 0; i < theServlets.size(); i++) {
 				Servlet aServlet = (Servlet) theServlets.get(i);
 				if (aServlet.getServletName().equals(servletDescriptor._name)) {
-					foundServlet = true;
+					return Status.OK_STATUS;
 				 }
 			   }
-
-			   if (foundServlet) {
-				  return Status.OK_STATUS;
-			   }
-
+			   
 			   WebapplicationFactory factory = WebapplicationFactory.eINSTANCE;
 
 			   Servlet servlet = factory.createServlet();
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/ValidateWSIComplianceCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/ValidateWSIComplianceCommand.java
new file mode 100644
index 0000000..ce5635f
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/command/ValidateWSIComplianceCommand.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060607   144978 kathy@ca.ibm.com - Kathy Chan
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.axis.creation.ui.command;
+
+import java.util.Vector;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.internal.axis.consumption.core.AxisConsumptionCoreMessages;
+import org.eclipse.jst.ws.internal.axis.consumption.core.common.JavaWSDLParameter;
+import org.eclipse.jst.ws.internal.axis.creation.ui.AxisCreationUIMessages;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
+import org.eclipse.wst.ws.internal.preferences.WSIComplianceUtils;
+
+
+public class ValidateWSIComplianceCommand extends AbstractDataModelOperation
+{
+   private JavaWSDLParameter javaWSDLParam = null;
+   private Vector status = null;
+   private IProject serviceProject_ = null;
+
+   public ValidateWSIComplianceCommand() {
+  }
+
+   public IStatus execute (IProgressMonitor monitor, IAdaptable adaptable)
+  {
+ 
+	   IEnvironment environment = getEnvironment();
+
+	   if (javaWSDLParam == null) {
+		   IStatus simpleStatus = StatusUtils.errorStatus( AxisConsumptionCoreMessages.MSG_ERROR_JAVA_WSDL_PARAM_NOT_SET);
+		   environment.getStatusHandler().reportError(simpleStatus);
+		   return simpleStatus;
+	   }		
+	
+    status = new Vector();
+    
+    PersistentWSIContext wsiContext = new PersistentWSIContext();
+    int severity = WSIComplianceUtils.getWSISeverity(serviceProject_, wsiContext);
+    checkRPCEncoded(severity);
+    Status[] statuses = (Status[]) status.toArray(new Status[status.size()]);
+
+    if (statuses.length == 0 ||
+    		WSIComplianceUtils.checkWSICompliance (environment.getStatusHandler(), statuses, serviceProject_, wsiContext))
+    	return Status.OK_STATUS;
+    else {
+    	return StatusUtils.errorStatus("");
+    }
+  }
+
+  private void checkRPCEncoded(int severity)
+  {
+  		if (JavaWSDLParameter.STYLE_RPC.equals(javaWSDLParam.getStyle()) && 
+  		   JavaWSDLParameter.USE_ENCODED.equals(javaWSDLParam.getUse()))
+  		   status.add (new Status(severity, "ValidateWSIComplianceCommand", 0, 
+  				 AxisCreationUIMessages.WSI_INCOMPLIANCE_RPC_ENCODED, null));
+
+  }
+
+  /**
+   * Returns the message string identified by the given key from
+   * plugin.properties.
+   * @return The String message.
+   */
+
+/**
+ * @param javaWSDLParam The javaWSDLParam to set.
+ * @todo Generated comment
+ */
+public void setJavaWSDLParam(JavaWSDLParameter javaWSDLParam) {
+	this.javaWSDLParam = javaWSDLParam;
+}
+
+/**
+ * @param serviceProject_ The serviceProject_ to set.
+ * @todo Generated comment
+ */
+public void setServiceProject(IProject serviceProject_) {
+	this.serviceProject_ = serviceProject_;
+}
+}
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/plugin/WebServiceAxisCreationUIPlugin.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/plugin/WebServiceAxisCreationUIPlugin.java
index 17c333b..4addd2c 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/plugin/WebServiceAxisCreationUIPlugin.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/plugin/WebServiceAxisCreationUIPlugin.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   115690 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.plugin;
 
@@ -26,9 +29,6 @@
 */
 public class WebServiceAxisCreationUIPlugin extends AbstractUIPlugin
 {
-	
-	// Copyright
-	public static final String copyright = "(c) Copyright IBM Corporation 2003."; //$NON-NLS-1$
 
   /**
   * The identifier of the descriptor of this plugin in plugin.xml.
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BUCheckAxisDeploymentDescriptors.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BUConfigCommand.java
similarity index 65%
rename from bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BUCheckAxisDeploymentDescriptors.java
rename to bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BUConfigCommand.java
index a58f6ce..108ef40 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BUCheckAxisDeploymentDescriptors.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BUConfigCommand.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   120137 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.axis.creation.ui.task;
@@ -15,16 +18,14 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.jst.ws.internal.axis.consumption.ui.task.CheckAxisDeploymentDescriptorsTask;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
 
-public class BUCheckAxisDeploymentDescriptors extends
-		CheckAxisDeploymentDescriptorsTask {
-	public BUCheckAxisDeploymentDescriptors() {
+public class BUConfigCommand extends AbstractDataModelOperation {
+	public BUConfigCommand() {
 	}
 
 	/*
 	 * The execute method of this command do nothing.  It is merely an anchor point for UI page
-	 * TODO Remove this class and use another command as an anchor point for the UI
 	 */
 	public IStatus execute(IProgressMonitor monitor, IAdaptable adaptable) {
 		return Status.OK_STATUS;
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BackupSkelImplCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BackupSkelImplCommand.java
index 5df0ed5..74de5ef 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BackupSkelImplCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/BackupSkelImplCommand.java
@@ -11,6 +11,8 @@
  * -------- -------- -----------------------------------------------------------
  * 20060330 128827   kathy@ca.ibm.com - Kathy Chan
  * 20060403 128827   kathy@ca.ibm.com - Kathy Chan
+ * 20060524 127343   mahutch@ca.ibm.com - Mark Hutchinson
+ * 20070116 169138   mahutch@ca.ibm.com - Mark Hutchinson	
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.task;
 
@@ -20,6 +22,7 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Map;
 
 import javax.wsdl.Binding;
 import javax.wsdl.Definition;
@@ -94,15 +97,33 @@
 	  ArrayList implURLList = new ArrayList();
 	  if (definition != null) {
 		  StringBuffer beanName = new StringBuffer();
-		  String beanPackageName = WSDLUtils.getPackageName(definition);
-		  javaWSDLParam.setBeanPackage(beanPackageName);
+		  
+		  //first check if there is a mapping for this namespace to a package name
+		  //if not then compute package name from namespace
+		  String beanPackageName = null;
+		  Map mappings = javaWSDLParam.getMappings();
+		  if (mappings != null)
+		  {
+			  String targetNamespace = definition.getTargetNamespace();
+			  beanPackageName = (String)mappings.get(targetNamespace);
+		  }
+		  if (beanPackageName == null)
+		  {
+			  beanPackageName = WSDLUtils.getPackageName(definition);
+		  }		  
+		  
+		  javaWSDLParam.setBeanPackage(beanPackageName);		  
 		  beanName.append(beanPackageName);
 		  beanName.append(DOT);
 		  
 		  service = (Service) definition.getServices().values().iterator().next();
 		  port = (Port) service.getPorts().values().iterator().next();
 		  Binding binding = port.getBinding();
-		  beanName.append(binding.getQName().getLocalPart());
+		  
+		  String qName = binding.getQName().getLocalPart();		  
+		  beanName.append(qName.substring(0,1).toUpperCase());//Fix for bug 169138, need to ensure first char is uppercase
+		  beanName.append(qName.substring(1));
+
 		  beanName.append(IMPL);
 		  String beanNameString = beanName.toString();
 		  javaWSDLParam.setBeanName(beanNameString);
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/DefaultsForServerJavaWSDLCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/DefaultsForServerJavaWSDLCommand.java
index d614cc0..eb5636e 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/DefaultsForServerJavaWSDLCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/DefaultsForServerJavaWSDLCommand.java
@@ -11,10 +11,14 @@
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060330   124667 kathy@ca.ibm.com - Kathy Chan
+ * 20060524   128601 andyzhai@ca.ibm.com - Andy Zhai
+ * 20061004   159356 kathy@ca.ibm.com - Kathy Chan, Get correct module root URL based on server chosen
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.task;
 
 
+import java.io.File;
+
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -40,6 +44,7 @@
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.ws.internal.parser.discovery.WebServicesParserExt;
 import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
 
@@ -59,6 +64,7 @@
 	public final byte MODE_BEAN = (byte) 0;
 	public final String SERVICE_NAME_EXT = "Service"; //$NON-NLS-1$
 	private final String TEMP_URI = "http://tempuri.org/"; //$NON-NLS-1$
+	private IServer serviceExistingServer;
 
 	public DefaultsForServerJavaWSDLCommand( ) 
 	{
@@ -141,7 +147,7 @@
 		String wsdlLocation = ResourceUtils.getWorkspaceRoot().getFile(wsdlPath).getLocation().toString();
 
 		javaWSDLParam_.setOutputWsdlLocation(wsdlLocation);
-		javaWSDLParam_.setInputWsdlLocation(wsdlLocation);
+		javaWSDLParam_.setInputWsdlLocation(new File(wsdlLocation).toURI().toString());
 		WSDLServicePathname_ = wsdlPath.toString();
 
 		if (wsdlPath != null) {
@@ -167,7 +173,7 @@
         String projectURL = null;
         if (serviceServerTypeID_ != null && serviceServerTypeID_.length()>0)
         {
-		  projectURL = ServerUtils.getEncodedWebComponentURL(serviceProject_, serviceServerTypeID_);          
+		  projectURL = ServerUtils.getEncodedWebComponentURL(serviceProject_, serviceServerTypeID_, serviceExistingServer);          
         }
         if (projectURL == null) // either no server type defined or server not able to get project URL
         { 
@@ -249,4 +255,7 @@
     serviceServerTypeID_ = id;
   }
   
+  public void setServiceExistingServer(IServer existingServer) {
+		serviceExistingServer = existingServer;
+	} 
 }
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/Skeleton2WSDLCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/Skeleton2WSDLCommand.java
index 4d56e9f..0fdfa4b 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/Skeleton2WSDLCommand.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/Skeleton2WSDLCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2007 IBM 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
@@ -11,6 +11,8 @@
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060330   124667 kathy@ca.ibm.com - Kathy Chan
+ * 20061004   159356 kathy@ca.ibm.com - Kathy Chan, Get correct module root URL based on server chosen
+ * 20070112   165721 makandre@ca.ibm.com - Andrew Mak, WSDL import cannot use relative import with to parent directories
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.task;
 
@@ -46,11 +48,12 @@
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.jst.ws.internal.common.ServerUtils;
-import org.eclipse.jst.ws.internal.consumption.command.common.CopyWSDLCommand;
+import org.eclipse.jst.ws.internal.consumption.command.common.CopyWSDLTreeCommand;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
 
 public class Skeleton2WSDLCommand extends AbstractDataModelOperation
@@ -63,6 +66,7 @@
   private JavaWSDLParameter javaWSDLParam;
   private IProject serverProject;
   private String serviceServerTypeID_;  
+  private IServer serviceExistingServer;  
   private final String TEMP_URI = "http://tempuri.org/"; //$NON-NLS-1$
 
   public Skeleton2WSDLCommand( ) {
@@ -172,16 +176,20 @@
      }
 
      // copy WSDL
-     CopyWSDLCommand copyWSDLCommand = new CopyWSDLCommand();
-     copyWSDLCommand.setWebServicesParser(webServicesParser);
-     copyWSDLCommand.setWsdlURI(wsdlURL);
-     copyWSDLCommand.setDestinationURI(outputFile.getLocation().toFile().toURL().toString());
-     copyWSDLCommand.setDefinition(definition);
-     copyWSDLCommand.setEnvironment(environment);
-     IStatus status = copyWSDLCommand.execute(null, null);
+     CopyWSDLTreeCommand copyWSDLTreeCommand = new CopyWSDLTreeCommand();
+     copyWSDLTreeCommand.setWebServicesParser(webServicesParser);
+     copyWSDLTreeCommand.setWsdlURI(wsdlURL);
+     copyWSDLTreeCommand.setDestinationURI(outputFile.getLocation().toFile().toURL().toString());
+     copyWSDLTreeCommand.setDefinition(definition);
+     copyWSDLTreeCommand.setEnvironment(environment);
+     IStatus status = copyWSDLTreeCommand.execute(null, null);
      if(status!=null && status.getSeverity()==Status.ERROR) {
        return status;
      }
+     
+     // update wsdl location
+     String newPath = outputFile.getParent().getLocation().append(copyWSDLTreeCommand.getWSDLRelPath()).toString();
+     javaWSDLParam.setOutputWsdlLocation(newPath);
     } 
     catch (Exception e) {
       IStatus status = StatusUtils.errorStatus( NLS.bind(AxisConsumptionUIMessages.MSG_ERROR_WRITE_WSDL, new String[] { wsdlLocation }), e);
@@ -210,7 +218,7 @@
       String projectURL = null;
       if (serviceServerTypeID_ != null && serviceServerTypeID_.length()>0)
       {
-	    projectURL = ServerUtils.getEncodedWebComponentURL(serverProject, serviceServerTypeID_);
+	    projectURL = ServerUtils.getEncodedWebComponentURL(serverProject, serviceServerTypeID_, serviceExistingServer);
       }
       
       if (projectURL == null) // either no server type defined or server not able to get project URL
@@ -278,6 +286,10 @@
   public void setServiceServerTypeID(String id)
   {
     serviceServerTypeID_ = id;
-  }  
+  }
+
+public void setServiceExistingServer(IServer existingServer) {
+	serviceExistingServer = existingServer;
+}  
 
 }
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/TDCheckAxisDeploymentDescriptors.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/TDCheckAxisDeploymentDescriptors.java
deleted file mode 100644
index 28541b1..0000000
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/TDCheckAxisDeploymentDescriptors.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jst.ws.internal.axis.creation.ui.task;
-
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jst.ws.internal.axis.consumption.ui.task.CheckAxisDeploymentDescriptorsTask;
-
-public class TDCheckAxisDeploymentDescriptors extends CheckAxisDeploymentDescriptorsTask 
-{
-  public TDCheckAxisDeploymentDescriptors() 
-  {
-  }
-  
-  /*
-	 * The execute method of this command do nothing.  It is merely an anchor point for UI page
-	 * TODO Remove this class and use another command as an anchor point for the UI
-	 */
-  public IStatus execute(IProgressMonitor monitor, IAdaptable adaptable) {
-		return Status.OK_STATUS;
-	}
-}
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/TDConfigCommand.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/TDConfigCommand.java
new file mode 100644
index 0000000..4c412ef
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/TDConfigCommand.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   120137 kathy@ca.ibm.com - Kathy Chan
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.axis.creation.ui.task;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+public class TDConfigCommand extends AbstractDataModelOperation 
+{
+  public TDConfigCommand() 
+  {
+  }
+  
+  /*
+   * The execute method of this command do nothing.  It is merely an anchor point for UI page
+   */
+  public IStatus execute(IProgressMonitor monitor, IAdaptable adaptable) {
+	  return Status.OK_STATUS;
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/UpdateAxisWSDDFileTask.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/UpdateAxisWSDDFileTask.java
index 340e492..8af44fa 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/UpdateAxisWSDDFileTask.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/task/UpdateAxisWSDDFileTask.java
@@ -11,6 +11,7 @@
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060330   124667 kathy@ca.ibm.com - Kathy Chan
+ * 20060517   134104 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.task;
 
@@ -117,19 +118,15 @@
         {
           wsddStream.close();
         }
-        
-        IPath eclipseDeployPath = findPathFromFilePath( deployPath );
-        
-        if( eclipseDeployPath != null )
+
+
+        IResource deployFile = ResourceUtils.findResourceAtLocation(wsdd_deploy, project);
+        if( deployFile != null )
         {
-          IResource deployFile = ResourceUtils.findResource( eclipseDeployPath );
-          
-          if( deployFile != null )
-          {
-            deployFile.refreshLocal( IResource.DEPTH_ZERO, monitor );
-          }
+        	deployFile.refreshLocal( IResource.DEPTH_ZERO, monitor );
         }
-			}
+
+		}
 
 		} catch (Exception e) {
 		    String[] errorMsgStrings = new String[]{project.toString(), outputLocation.toString(), webContentPath.toString()}; 
@@ -140,23 +137,6 @@
 		
 		return status;
 	}
-
-  // This method attempts to convert a path that is relative to a file system to a path
-  // that is relative to the workspace.
-  private IPath findPathFromFilePath( IPath filePath )
-  {
-    IPath result = null;
-    
-    IPath installLocation = Platform.getLocation();
-    
-    if( installLocation.matchingFirstSegments( filePath ) == installLocation.segmentCount() )
-    {
-      filePath = filePath.removeFirstSegments( installLocation.segmentCount() );
-      result = filePath.setDevice( null );
-    }
-    
-    return result;
-  }
   
 	private IPath getPluginFilePath(String pluginfileName)
 		throws CoreException {
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/widgets/bean/BeanConfigWidget.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/widgets/bean/BeanConfigWidget.java
index 0ab663b..768f72a 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/widgets/bean/BeanConfigWidget.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/widgets/bean/BeanConfigWidget.java
@@ -10,9 +10,11 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060321   128827 joan - Joan Haggarty, remove redundant wsdl URI, folder and file controls
+ * 20060524   128601 andyzhai@ca.ibm.com - Andy Zhai
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.widgets.bean;
 
+import java.io.File;
 import java.util.Enumeration;
 import java.util.Hashtable;
 
@@ -230,7 +232,7 @@
 	String wsdlLocation = wsdlPath.toString();
 	
 	javaParameter_.setOutputWsdlLocation(wsdlLocation);
-	javaParameter_.setInputWsdlLocation(wsdlLocation);
+	javaParameter_.setInputWsdlLocation(new File(wsdlLocation).toURI().toString());
 	
 	Hashtable methods = new Hashtable();
 
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/beans/WSBeanAxisType.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/beans/WSBeanAxisType.java
index 45b037d..044bce1 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/beans/WSBeanAxisType.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/beans/WSBeanAxisType.java
@@ -1,23 +1,28 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   120137 kathy@ca.ibm.com - Kathy Chan
+ * 20060523   143284 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060605   145407 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060607   144978 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.wizard.beans;
 
 
-import org.eclipse.jst.ws.internal.axis.consumption.core.command.Java2WSDLCommand;
-import org.eclipse.jst.ws.internal.axis.consumption.core.command.WSDL2JavaCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.AxisConsumptionUIMessages;
-import org.eclipse.jst.ws.internal.axis.consumption.ui.task.CheckAxisDeploymentDescriptorsTask;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.widgets.AxisMappingsWidget;
 import org.eclipse.jst.ws.internal.axis.creation.ui.AxisCreationUIMessages;
+import org.eclipse.jst.ws.internal.axis.creation.ui.command.BUCodeGenOperation;
 import org.eclipse.jst.ws.internal.axis.creation.ui.command.JavaToWSDLMethodCommand;
+import org.eclipse.jst.ws.internal.axis.creation.ui.command.ValidateWSIComplianceCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.task.DefaultsForServerJavaWSDLCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.bean.BeanConfigWidget;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.ObjectSelectionWidget;
@@ -141,18 +146,19 @@
     dataRegistry.addMapping(JavaToWSDLMethodCommand.class, "JavaWSDLParam", BeanConfigWidget.class, "JavaParameter", null );
     //BeanConfigWidget - as source
 
-    dataRegistry.addMapping(BeanConfigWidget.class, "JavaParameter", CheckAxisDeploymentDescriptorsTask.class, "JavaWSDLParam", null);
-    dataRegistry.addMapping(BeanConfigWidget.class, "JavaParameter", Java2WSDLCommand.class, "JavaWSDLParam", null);       
-    dataRegistry.addMapping(BeanConfigWidget.class, "JavaParameter", WSDL2JavaCommand.class, "JavaWSDLParam", null);
+    //  ValidateWSIComplianceCommand
+    dataRegistry.addMapping(BeanConfigWidget.class, "JavaParameter",ValidateWSIComplianceCommand.class, "JavaWSDLParam", null);
 
+    //dataRegistry.addMapping(BeanConfigWidget.class, "JavaParameter", Java2WSDLCommand.class, "JavaWSDLParam", null);       
+    //dataRegistry.addMapping(BeanConfigWidget.class, "JavaParameter", WSDL2JavaCommand.class, "JavaWSDLParam", null);
+    dataRegistry.addMapping(BeanConfigWidget.class, "JavaParameter",BUCodeGenOperation.class, "JavaWSDLParam", null);
     //AxisMappingsWidget - as target
     dataRegistry.addMapping(BeanConfigWidget.class, "JavaParameter", AxisMappingsWidget.class);
     
     //AxisMappingsWidget - as source
 
-    dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", CheckAxisDeploymentDescriptorsTask.class, "JavaWSDLParam", null);
-    dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", Java2WSDLCommand.class, "JavaWSDLParam", null);       
-    dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", WSDL2JavaCommand.class, "JavaWSDLParam", null);    
+    dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", BUCodeGenOperation.class, "JavaWSDLParam", null);       
+  
     
     //dataRegistry.addMapping( DefaultsForConfig.class, "JavaParameter", BeanConfigWidget.class );
     //dataRegistry.addMapping( DefaultsForConfig.class, "CustomizeServiceMappings", BeanConfigWidget.class );
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/wsdl/WSWSDLAxisType.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/wsdl/WSWSDLAxisType.java
index 30a347b..413db86 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/wsdl/WSWSDLAxisType.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wizard/wsdl/WSWSDLAxisType.java
@@ -10,14 +10,15 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060321   128827 joan - Joan Haggarty, remove redundant wsdl URI, folder and file controls
+ * 20060523   143284 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060605   145407 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.axis.creation.ui.wizard.wsdl;
 
 
-import org.eclipse.jst.ws.internal.axis.consumption.core.command.WSDL2JavaCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.widgets.AxisMappingsFragment;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.widgets.AxisMappingsWidget;
-import org.eclipse.jst.ws.internal.axis.creation.ui.task.BackupSkelImplCommand;
+import org.eclipse.jst.ws.internal.axis.creation.ui.command.TDCodeGenOperation;
 import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.AxisSkeletonDefaultingCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.SkeletonConfigWidget;
 import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.SkeletonConfigWidgetDefaultingCommand;
@@ -128,7 +129,7 @@
     dataRegistry.addMapping(SkeletonConfigWidgetDefaultingCommand.class, "ShowMapping", SkeletonConfigWidget.class);
 
     //  BackupSkelImplCommand     
-    dataRegistry.addMapping(SkeletonConfigWidget.class, "JavaWSDLParam", BackupSkelImplCommand.class);
+    dataRegistry.addMapping(SkeletonConfigWidget.class, "JavaWSDLParam", TDCodeGenOperation.class, "JavaWSDLParam", null);
     
     // AxisMappingsFragment
     dataRegistry.addMapping(SkeletonConfigWidgetDefaultingCommand.class, "ShowMapping", AxisMappingsFragment.class);
@@ -139,9 +140,10 @@
     dataRegistry.addMapping(SkeletonConfigWidget.class, "JavaWSDLParam", AxisMappingsWidget.class, "JavaParameter", null);
 
     // WSDL2JavaCommand
-    dataRegistry.addMapping(SkeletonConfigWidgetDefaultingCommand.class, "JavaWSDLParam", WSDL2JavaCommand.class);
-    dataRegistry.addMapping(SkeletonConfigWidget.class, "JavaWSDLParam", WSDL2JavaCommand.class);
-    dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", WSDL2JavaCommand.class, "JavaWSDLParam", null);
+    //dataRegistry.addMapping(SkeletonConfigWidgetDefaultingCommand.class, "JavaWSDLParam", WSDL2JavaCommand.class);
+    //dataRegistry.addMapping(SkeletonConfigWidget.class, "JavaWSDLParam", WSDL2JavaCommand.class);
+    dataRegistry.addMapping(SkeletonConfigWidget.class, "JavaWSDLParam", TDCodeGenOperation.class, "JavaWSDLParam", null);
+    dataRegistry.addMapping(AxisMappingsWidget.class, "JavaParameter", TDCodeGenOperation.class, "JavaWSDLParam", null);
   }
   
   /* (non-Javadoc)
diff --git a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wsrt/AxisWebService.java b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wsrt/AxisWebService.java
index cafbeec..f293004 100644
--- a/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wsrt/AxisWebService.java
+++ b/bundles/org.eclipse.jst.ws.axis.creation.ui/src/org/eclipse/jst/ws/internal/axis/creation/ui/wsrt/AxisWebService.java
@@ -11,6 +11,14 @@
  * -------- -------- -----------------------------------------------------------
  * 20060330   124667 kathy@ca.ibm.com - Kathy Chan
  * 20060330   128827 kathy@ca.ibm.com - Kathy Chan
+ * 20060424   120137 kathy@ca.ibm.com - Kathy Chan
+ * 20060509   125094 sengpl@ca.ibm.com - Seng Phung-Lu, Use WorkspaceModifyOperation
+ * 20060515   115225 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060517   142327 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060524   130755 kathy@ca.ibm.com - Kathy Chan
+ * 20060607   144978 kathy@ca.ibm.com - Kathy Chan
+ * 20060810   135395 makandre@ca.ibm.com - Andrew Mak, Enable WTP Web service framework opening Java editor
+ * 20061004   159356 kathy@ca.ibm.com - Kathy Chan, Get correct module root URL based on server chosen
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.axis.creation.ui.wsrt;
@@ -19,33 +27,27 @@
 
 import org.eclipse.jst.ws.internal.axis.consumption.core.command.AxisDeployCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.core.command.GeronimoAxisDeployCommand;
-import org.eclipse.jst.ws.internal.axis.consumption.core.command.Java2WSDLCommand;
-import org.eclipse.jst.ws.internal.axis.consumption.core.command.WSDL2JavaCommand;
-import org.eclipse.jst.ws.internal.axis.consumption.ui.task.CopyAxisJarCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.task.RefreshProjectCommand;
 import org.eclipse.jst.ws.internal.axis.consumption.ui.task.ValidateWSDLCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.command.AxisCheckCompilerLevelCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.command.AxisOutputCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.command.AxisRunInputCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.command.BUAxisInputCommand;
-import org.eclipse.jst.ws.internal.axis.creation.ui.command.ComputeAxisSkeletonBeanCommand;
+import org.eclipse.jst.ws.internal.axis.creation.ui.command.BUCodeGenOperation;
 import org.eclipse.jst.ws.internal.axis.creation.ui.command.CopyDeploymentFileCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.command.JavaToWSDLMethodCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.command.ModifyWSDLEndpointAddressCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.command.TDAxisInputCommand;
-import org.eclipse.jst.ws.internal.axis.creation.ui.command.UpdateWEBXMLCommand;
-import org.eclipse.jst.ws.internal.axis.creation.ui.task.BUCheckAxisDeploymentDescriptors;
-import org.eclipse.jst.ws.internal.axis.creation.ui.task.BackupSkelImplCommand;
+import org.eclipse.jst.ws.internal.axis.creation.ui.command.TDCodeGenOperation;
+import org.eclipse.jst.ws.internal.axis.creation.ui.command.ValidateWSIComplianceCommand;
+import org.eclipse.jst.ws.internal.axis.creation.ui.task.BUConfigCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.task.DefaultsForServerJavaWSDLCommand;
-import org.eclipse.jst.ws.internal.axis.creation.ui.task.Skeleton2WSDLCommand;
-import org.eclipse.jst.ws.internal.axis.creation.ui.task.TDCheckAxisDeploymentDescriptors;
-import org.eclipse.jst.ws.internal.axis.creation.ui.task.UpdateAxisWSDDFileTask;
+import org.eclipse.jst.ws.internal.axis.creation.ui.task.TDConfigCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.bean.BUAxisDefaultingCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.AxisSkeletonDefaultingCommand;
 import org.eclipse.jst.ws.internal.axis.creation.ui.widgets.skeleton.SkeletonConfigWidgetDefaultingCommand;
 import org.eclipse.jst.ws.internal.common.StringToIProjectTransformer;
 import org.eclipse.jst.ws.internal.consumption.command.common.BuildProjectCommand;
-import org.eclipse.jst.ws.internal.consumption.ui.command.OpenJavaEditorCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.command.data.ProjectName2IProjectTransformer;
 import org.eclipse.wst.command.internal.env.common.WaitForAutoBuildCommand;
 import org.eclipse.wst.command.internal.env.core.ICommandFactory;
@@ -99,15 +101,11 @@
 			commands.add(new JavaToWSDLMethodCommand());
 			// commands.add(new SimpleFragment( "BeanConfig" ));
 			// commands.add(new SimpleFragment( "AxisServiceBeanMapping" ));
-			commands.add(new BUCheckAxisDeploymentDescriptors());
-			commands.add(new CopyAxisJarCommand());
+			commands.add(new BUConfigCommand());
+			commands.add(new ValidateWSIComplianceCommand());
 			commands.add(new WaitForAutoBuildCommand());
-			commands.add(new Java2WSDLCommand());
-			commands.add(new RefreshProjectCommand());
-			commands.add(new WSDL2JavaCommand());
-			commands.add(new UpdateAxisWSDDFileTask());
-			commands.add(new UpdateWEBXMLCommand());
-			commands.add(new RefreshProjectCommand());
+			commands.add(new BUCodeGenOperation());
+//			commands.add(new RefreshProjectCommand());
 			commands.add(new BuildProjectCommand());
 			commands.add(new AxisOutputCommand(this));
 			
@@ -121,13 +119,9 @@
 		    commands.add(new SkeletonConfigWidgetDefaultingCommand());
 //			commands.add(new SimpleFragment( "SkeletonConfig" ));
 //			commands.add(new SimpleFragment( "AxisMappingsWidget" ));
-		    commands.add(new TDCheckAxisDeploymentDescriptors());
-			commands.add(new CopyAxisJarCommand());
-			commands.add(new BackupSkelImplCommand());
-		    commands.add(new WSDL2JavaCommand());
-		    commands.add(new Skeleton2WSDLCommand());
-		    commands.add(new UpdateWEBXMLCommand());
-		    commands.add(new RefreshProjectCommand());
+		    commands.add(new TDConfigCommand());
+			commands.add(new TDCodeGenOperation());
+//		    commands.add(new RefreshProjectCommand());
 		    commands.add(new BuildProjectCommand());
 			commands.add(new AxisOutputCommand(this));
 			
@@ -165,12 +159,9 @@
 			else {
 			    commands.add(new AxisDeployCommand());
 			}
-			commands.add( new CopyDeploymentFileCommand( project ) );
+			commands.add( new CopyDeploymentFileCommand( project, earProject ) );
 			commands.add(new RefreshProjectCommand());
-			if (ctx.getScenario().getValue() == WebServiceScenario.TOPDOWN) {
-				commands.add(new ComputeAxisSkeletonBeanCommand());
-				commands.add(new OpenJavaEditorCommand());
-			}
+
 			return new SimpleCommandFactory(commands);
 		}
 	}
@@ -196,7 +187,8 @@
 	    //DefaultsForServerJavaWSDLCommand
 	    registry.addMapping(BUAxisDefaultingCommand.class, "JavaWSDLParam", DefaultsForServerJavaWSDLCommand.class);
 	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", DefaultsForServerJavaWSDLCommand.class, "ServiceProject", new StringToIProjectTransformer());
-        registry.addMapping(BUAxisInputCommand.class, "ServiceServerTypeID", DefaultsForServerJavaWSDLCommand.class);        
+        registry.addMapping(BUAxisInputCommand.class, "ServiceServerTypeID", DefaultsForServerJavaWSDLCommand.class); 
+        registry.addMapping(BUAxisInputCommand.class, "ServiceExistingServer", DefaultsForServerJavaWSDLCommand.class);        
 	    registry.addMapping(BUAxisDefaultingCommand.class, "JavaBeanName", DefaultsForServerJavaWSDLCommand.class);
 	    registry.addMapping(BUAxisDefaultingCommand.class, "Parser", DefaultsForServerJavaWSDLCommand.class);
 	    
@@ -205,30 +197,22 @@
 	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", JavaToWSDLMethodCommand.class, "ServiceProject", new StringToIProjectTransformer());
 
 	    // BUAxisCommands3 - these run after BeanConfigWidget
-    
-	    //CheckAxisDeploymentDescriptorsTask
-	    //registry.addMapping(JavaToWSDLMethodCommand.class, "JavaWSDLParam", CheckAxisDeploymentDescriptorsTask.class);
-	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", BUCheckAxisDeploymentDescriptors.class, "ServerProject", new StringToIProjectTransformer());
-	    
+    	    
 	    //CopyAxisJarCommand
-	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", CopyAxisJarCommand.class, "Project", new StringToIProjectTransformer());
+	    //registry.addMapping(BUAxisInputCommand.class, "ServerProject", CopyAxisJarCommand.class, "Project", new StringToIProjectTransformer());
 	    	    
+	    // ValidateWSIComplianceCommand
+	    registry.addMapping(DefaultsForServerJavaWSDLCommand.class, "JavaWSDLParam", ValidateWSIComplianceCommand.class);
+	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", ValidateWSIComplianceCommand.class, "ServiceProject", new StringToIProjectTransformer());
+	    
 	    //Java2WSDLCommand
-	    registry.addMapping(JavaToWSDLMethodCommand.class, "JavaWSDLParam", Java2WSDLCommand.class);
+	    registry.addMapping(JavaToWSDLMethodCommand.class, "JavaWSDLParam", BUCodeGenOperation.class);
 	    
 	    //RefreshProjectCommand
 	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", RefreshProjectCommand.class, "Project", new StringToIProjectTransformer());
 	    
-	    //WSDL2JavaCommand
-	    registry.addMapping(JavaToWSDLMethodCommand.class, "JavaWSDLParam", WSDL2JavaCommand.class);
-	    
-
-	    //UpdateAxisWSDDFileTask
-	    registry.addMapping(WSDL2JavaCommand.class, "JavaWSDLParam", UpdateAxisWSDDFileTask.class);
-	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", UpdateAxisWSDDFileTask.class, "ServiceProject", new StringToIProjectTransformer());
-	    
 	    //UpdateWEBXMLCommand
-	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", UpdateWEBXMLCommand.class, "ServerProject", new StringToIProjectTransformer());
+	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", BUCodeGenOperation.class, "ServiceProject", new StringToIProjectTransformer());
 	    
 	    //BuildProjectCommand
 	    registry.addMapping(BUAxisInputCommand.class, "ServerProject", BuildProjectCommand.class, "Project", new StringToIProjectTransformer());
@@ -245,8 +229,9 @@
 //	    registry.addMapping(BUAxisDefaultingCommand.class, "IsWebProjectStartupRequested",StartProjectCommand.class);
 	        
 		// AxisOutputCommand
-	    registry.addMapping(Java2WSDLCommand.class, "WsdlURI", AxisOutputCommand.class);
-		registry.addMapping(UpdateAxisWSDDFileTask.class, "JavaWSDLParam", AxisOutputCommand.class);    
+	    registry.addMapping(BUCodeGenOperation.class, "WsdlURI", AxisOutputCommand.class);
+	    registry.addMapping(BUCodeGenOperation.class, "JavaWSDLParam", AxisOutputCommand.class);	    
+   
 		
 		// Run extension
 		
@@ -293,33 +278,24 @@
 	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", SkeletonConfigWidgetDefaultingCommand.class);
 	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "WsdlURI", SkeletonConfigWidgetDefaultingCommand.class);
 	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServiceServerTypeID", SkeletonConfigWidgetDefaultingCommand.class);
+	       
+	    // AxisSkeletonDefaultingCommand
+	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "WsdlURI", TDCodeGenOperation.class);
+	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "HttpBasicAuthUsername", TDCodeGenOperation.class);
+	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "HttpBasicAuthPassword", TDCodeGenOperation.class);
+	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "JavaWSDLParam", TDCodeGenOperation.class);
 	    
-	    // CheckAxisDeploymentDescriptorsTask
-	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", TDCheckAxisDeploymentDescriptors.class, "ServerProject", projectTransformer);
-    
-	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "WsdlURI", WSDL2JavaCommand.class);
-	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "HttpBasicAuthUsername", WSDL2JavaCommand.class);
-	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "HttpBasicAuthPassword", WSDL2JavaCommand.class);
-
-//		WSDL2JavaCommand
-	  	dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "JavaWSDLParam", WSDL2JavaCommand.class);
-		
 	    // CopyAxisJarCommand
-	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", CopyAxisJarCommand.class, "Project", projectTransformer);
+	    //dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", CopyAxisJarCommand.class, "Project", projectTransformer);
 
 	    // BackupSkelImplCommand
-	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "WebServicesParser", BackupSkelImplCommand.class);      
-	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "JavaWSDLParam", BackupSkelImplCommand.class);
-	    dataRegistry.addMapping(TDAxisInputCommand.class, "WebServiceInfo", BackupSkelImplCommand.class);
+	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "WebServicesParser", TDCodeGenOperation.class);      
+	    dataRegistry.addMapping(TDAxisInputCommand.class, "WebServiceInfo", TDCodeGenOperation.class);
 	    
 	    // Skeleton2WSDLCommand
-	    dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "WebServicesParser", Skeleton2WSDLCommand.class);
-	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", Skeleton2WSDLCommand.class, "ServerProject", projectTransformer);
-        dataRegistry.addMapping(TDAxisInputCommand.class, "ServiceServerTypeID", Skeleton2WSDLCommand.class);        
-	    dataRegistry.addMapping(WSDL2JavaCommand.class, "JavaWSDLParam", Skeleton2WSDLCommand.class);
-
-	    // UpdateWEBXMLCommand
-	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", UpdateWEBXMLCommand.class, "ServerProject", projectTransformer);
+	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", TDCodeGenOperation.class, "ServerProject", projectTransformer);
+	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServiceServerTypeID", TDCodeGenOperation.class);
+	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServiceExistingServer", TDCodeGenOperation.class);	
 
 	    // RefreshProjectCommand
 	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", RefreshProjectCommand.class, "Project", projectTransformer);
@@ -343,21 +319,10 @@
 	    
 	    // CopyDeploymentFileCommand
 	    dataRegistry.addMapping(AxisRunInputCommand.class, "ServerInstanceId", CopyDeploymentFileCommand.class);
-
 	    
 	    // AxisOutputCommand
-	    dataRegistry.addMapping(Skeleton2WSDLCommand.class, "WsdlURI", AxisOutputCommand.class);
-		dataRegistry.addMapping(WSDL2JavaCommand.class, "JavaWSDLParam", AxisOutputCommand.class); 
-	    
-	    // ComputeAxisSkeletonBeanCommand
-	    dataRegistry.addMapping(WSDL2JavaCommand.class, "JavaWSDLParam", ComputeAxisSkeletonBeanCommand.class);
-	    //dataRegistry.addMapping(Skeleton2WSDLCommand.class, "WsdlURI", ComputeAxisSkeletonBeanCommand.class);
-	    //dataRegistry.addMapping(AxisSkeletonDefaultingCommand.class, "WebServicesParser", ComputeAxisSkeletonBeanCommand.class);
-	    
-	    // OpenJavaEditorCommand
-	    dataRegistry.addMapping(ComputeAxisSkeletonBeanCommand.class, "ClassNames", OpenJavaEditorCommand.class);
-	    dataRegistry.addMapping(TDAxisInputCommand.class, "ServerProject", OpenJavaEditorCommand.class, "Project", projectTransformer);
-	    
+	    dataRegistry.addMapping(TDCodeGenOperation.class, "WsdlURI", AxisOutputCommand.class);
+	    dataRegistry.addMapping(TDCodeGenOperation.class, "JavaWSDLParam", AxisOutputCommand.class); 
 	  }
 	public AxisWebServiceInfo getAxisWebServiceInfo() {
 		return axisWebServiceInfo_;
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/.cvsignore b/bundles/org.eclipse.jst.ws.consumption.ui/.cvsignore
index 27f945a..d6f4547 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/.cvsignore
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/.cvsignore
@@ -4,3 +4,4 @@
 wsc-ui.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/.project b/bundles/org.eclipse.jst.ws.consumption.ui/.project
index 7883728..e102604 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/.project
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/.project
@@ -3,14 +3,6 @@
 	<name>org.eclipse.jst.ws.consumption.ui</name>
 	<comment></comment>
 	<projects>
-		<project>org.eclipse.wst.command.env</project>
-		<project>org.eclipse.wst.command.env.core</project>
-		<project>org.eclipse.jst.ws</project>
-		<project>org.eclipse.jst.ws.consumption</project>
-		<project>org.eclipse.jst.ws.discovery.core</project>
-		<project>org.eclipse.jst.ws.ui</project>
-		<project>org.eclipse.wst.wsdl</project>
-		<project>org.eclipse.wst.ws.parser</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.consumption.ui/META-INF/MANIFEST.MF
index 6d6bf9b..19c46ac 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.consumption.ui; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.104.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.consumption.ui.plugin.WebServiceConsumptionUIPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -29,50 +29,50 @@
  org.eclipse.jst.ws.internal.consumption.ui.wizard.uddi;x-internal:=true,
  org.eclipse.jst.ws.internal.consumption.ui.wsil;x-internal:=true,
  org.eclipse.jst.ws.internal.consumption.ui.wsrt;x-internal:=true
-Require-Bundle: org.eclipse.wst.ws.parser,
- org.eclipse.wst.command.env,
- org.eclipse.wst.command.env.ui,
- org.eclipse.wst.command.env.core,
- org.eclipse.jst.common.frameworks,
- org.eclipse.wst.ws.explorer,
- org.eclipse.jst.ws,
- org.eclipse.jst.ws.ui,
- org.eclipse.jst.ws.consumption,
- org.eclipse.jem,
- org.eclipse.jem.workbench,
- org.eclipse.emf.common,
- org.eclipse.emf.ecore,
- org.eclipse.jdt.core,
- org.eclipse.jdt.ui,
- org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.wst.ws,
- org.eclipse.jem.workbench,
- org.eclipse.emf.ecore.xmi,
- org.eclipse.wst.server.core,
- org.eclipse.wst.server.ui,
- org.eclipse.wst.wsdl,
- org.eclipse.jst.j2ee,
- org.eclipse.jst.j2ee.core,
- org.eclipse.jst.j2ee.ejb,
- org.eclipse.jst.j2ee.web,
- org.eclipse.wst.common.emf,
- org.eclipse.wst.common.emfworkbench.integration,
- org.eclipse.wst.common.frameworks,
- org.eclipse.jst.j2ee.webservice,
- org.eclipse.jst.j2ee.webservice.ui,
- org.eclipse.wst.common.modulecore,
- org.eclipse.wst.ws.ui,
- org.wsdl4j,
- org.eclipse.jem.util,
- org.eclipse.wst.wsdl.validation,
- org.eclipse.wst.common.frameworks.ui,
- org.eclipse.wst.common.environment,
- org.eclipse.wst.common.project.facet.core,
- org.eclipse.jst.server.core,
- org.eclipse.debug.core,
- com.ibm.icu,
- org.apache.xerces,
- org.eclipse.ui.forms
+Require-Bundle: org.eclipse.wst.ws.parser;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.ws.explorer;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.ws.consumption;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jem;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.emf.common;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jdt.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.server.ui;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.web;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.emf;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.emfworkbench.integration;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.webservice;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.webservice.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.ws.ui;bundle-version="[1.0.100,1.1.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.eclipse.jem.util;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.wsdl.validation;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.frameworks.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
+ com.ibm.icu;bundle-version="[3.4.4,3.5.0)",
+ org.apache.xerces;bundle-version="[2.8.0,2.9.0)",
+ org.eclipse.ui.forms;bundle-version="[3.2.0,3.3.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/about.html b/bundles/org.eclipse.jst.ws.consumption.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/about.html
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale0_bground.jpg b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale0_bground.jpg
index c6304a1..4da5ca0 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale0_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale0_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale1_bground.jpg b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale1_bground.jpg
index 8f682d6..df1207d 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale1_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale1_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale2_bground.jpg b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale2_bground.jpg
index 9576875..9741fde 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale2_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale2_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale3_bground.jpg b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale3_bground.jpg
index b71b3a5..35d4e22 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale3_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale3_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale4_bground.jpg b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale4_bground.jpg
index 77ae6f4..82bbd5c 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale4_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale4_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale5_bground.jpg b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale5_bground.jpg
index 33cd760..b0806f7 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale5_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale5_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale6_bground.jpg b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale6_bground.jpg
index 40ed2e9..818bcff 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale6_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/icons/scale6_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/plugin.properties b/bundles/org.eclipse.jst.ws.consumption.ui/plugin.properties
index ec090ce..66e02b1 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/plugin.properties
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/plugin.properties
@@ -1,12 +1,15 @@
 ###############################################################################
-# Copyright (c) 2001, 2004 IBM Corporation and others.
+# Copyright (c) 2001, 2006 IBM 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:
-#     IBM Corporation - initial API and implementation
+# IBM Corporation - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20060515   141536 pmoogk@ca.ibm.com - Peter Moogk
 ###############################################################################
 
 #
@@ -16,6 +19,7 @@
 PLUGIN_PROVIDER=Eclipse.org
 
 FEATURE_DESCRIPTION=Web services
+WEBSERVICES_CATEGORY=Web services
 
 XP_wsImpl=Web service implementations
 XP_wsClientImpl=Web service client implementations
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/plugin.xml b/bundles/org.eclipse.jst.ws.consumption.ui/plugin.xml
index e97c2b4..e9ce6ae 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/plugin.xml
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/plugin.xml
@@ -156,13 +156,21 @@
             title="%LABEL_HANDLERS_CONFIG"
             id="org.eclipse.jst.ws.internal.consumption.ui.wizard.handlers">
       </dynamicWizard>
-   </extension>   
-
+   </extension>  
+    
+   <extension
+         point="org.eclipse.ui.importWizards">
+      <category
+             id="org.eclipse.jst.ws.consumption.ui.wsimport.category"
+             name="%WEBSERVICES_CATEGORY"/>
+   </extension>
+      
    <extension
          point="org.eclipse.ui.importWizards">
       <wizard
             name="%PLUGIN_IMPORT_WIZARD_NAME_WS"
             icon="icons/import_ws.gif"
+            category="org.eclipse.jst.ws.consumption.ui.wsimport.category"
             class="org.eclipse.wst.command.internal.env.ui.widgets.DynamicWizard"
             id="org.eclipse.jst.ws.consumption.ui.wsimport">
          <description>
@@ -186,6 +194,7 @@
       <wizard
             name="%IMPORT_WIZARD_NAME_WSIL"
             icon="icons/wsil/import_wsil.gif"
+            category="org.eclipse.jst.ws.consumption.ui.wsimport.category"
             class="org.eclipse.wst.command.internal.env.ui.widgets.DynamicWizard"
             id="org.eclipse.jst.ws.consumption.ui.wsilimport">
          <description>
@@ -561,8 +570,9 @@
          point="org.eclipse.jst.ws.consumption.ui.objectSelectionWidget">
       <objectSelectionWidget
             class="org.eclipse.jst.ws.internal.consumption.ui.widgets.JavaBeanSelectionLaunchable"
-            transformer="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.JavaBeanSelectionTransformer"
-            id="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.JavaBeanSelectionWidget">
+            external_modify="true"
+            id="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.JavaBeanSelectionWidget"
+            transformer="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.JavaBeanSelectionTransformer">
       </objectSelectionWidget>
    </extension>
 
@@ -570,8 +580,9 @@
          point="org.eclipse.jst.ws.consumption.ui.objectSelectionWidget">
       <objectSelectionWidget
             class="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.EJBSelectionWidget"
-            transformer="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.EJBSelectionTransformer"            
-            id="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.EJBSelectionWidget">
+            external_modify="false"
+            id="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.EJBSelectionWidget"
+            transformer="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.EJBSelectionTransformer">
       </objectSelectionWidget>
    </extension>
 
@@ -579,8 +590,9 @@
          point="org.eclipse.jst.ws.consumption.ui.objectSelectionWidget">
       <objectSelectionWidget
             class="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.WSDLSelectionWidget"
-            transformer="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.WSDLSelectionTransformer"
-            id="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.WSDLSelectionWidget">
+            external_modify="true"
+            id="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.WSDLSelectionWidget"
+            transformer="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.WSDLSelectionTransformer">
       </objectSelectionWidget>
    </extension>
    
@@ -612,6 +624,9 @@
     wsClientImplIds="org.eclipse.jst.ws.client.type.java"
     moduletypes="webmodule"
     methodsneeded="true"
+    codeGenerated="true"
+    serverRequired="true"
+    allowClientRuntimesRestriction="true"
     class="org.eclipse.jst.ws.internal.consumption.ui.widgets.test.wssample.GSTCWebServiceTester">
   </tester>
 </extension>
@@ -623,6 +638,8 @@
     wsClientImplIds="org.eclipse.jst.ws.client.type.java"
     moduletypes="webmodule"
     methodsneeded="false"
+    codeGenerated="false"
+    serverRequired="false"
     class="org.eclipse.jst.ws.internal.consumption.ui.widgets.test.explorer.WSEWebServiceTester">
   </tester>
 </extension>
@@ -720,6 +737,10 @@
               operation="org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ClientExtensionDefaultingCommand"
               property="ClientProjectName"/>  
         <map
+              key="ClientProjectName"
+              operation="org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.ClientRuntimeSelectionWidgetDefaultingCommand"
+              property="ClientProjectName"/>              
+        <map
               key="ClientEarProjectName"
               operation="org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ClientExtensionDefaultingCommand"
               property="ClientEarProjectName"/>         
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/schema/objectSelectionWidget.exsd b/bundles/org.eclipse.jst.ws.consumption.ui/schema/objectSelectionWidget.exsd
index 1ec6067..752d429 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/schema/objectSelectionWidget.exsd
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/schema/objectSelectionWidget.exsd
@@ -67,6 +67,13 @@
                </documentation>
             </annotation>
          </attribute>
+         <attribute name="external_modify" type="boolean" use="default" value="false">
+            <annotation>
+               <documentation>
+                  This attribute specifies whether the object selection can be specified outside the object selection widget.  An example, of this would be on page one of the web service widget by typing in a text field.  If set to true, the extender of ObjectSelectionWidget must provide a validate(String) implementation that does any necessary validation and sets the object selection on the widget.  The default value of this attribute is false.  Any text fields will be set to READ_ONLY style so the object selection can only be modified with object selection widget implementation directly.
+               </documentation>
+            </annotation>
+         </attribute>
       </complexType>
    </element>
 
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUI.properties b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUI.properties
index 11f0700..c2c1a27 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUI.properties
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUI.properties
@@ -19,6 +19,12 @@
 # 20060417   136390 joan@ca.ibm.com - Joan Haggarty
 # 20060413   135581 rsinha@ca.ibm.com - Rupam Kuehner
 # 20060418   136335 joan@ca.ibm.com - Joan Haggarty
+# 20060420   136158 rsinha@ca.ibm.com - Rupam Kuehner
+# 20060420   120714 kathy@ca.ibm.com - Kathy Chan
+# 20060420   135912 joan@ca.ibm.com - Joan Haggarty
+# 20060510   141115 rsinha@ca.ibm.com - Rupam Kuehner
+# 20060509   119296 pmoogk@ca.ibm.com - Peter Moogk
+# 20060602   145054 kathy@ca.ibm.com - Kathy Chan
 ###############################################################################
 
 #
@@ -160,6 +166,9 @@
 LABEL_TREE_SERVER_TYPES=Server Types
 
 MSG_NO_OBJECT_SELECTION=Select a service implementation.
+MSG_NO_SERVICE_SELECTION=Select a service definition.
+MSG_INVALID_SERVICE_IMPL=The service implementation selected is invalid.
+MSG_INVALID_SERVICE_DEF=The service definition selected is invalid.
 MSG_INVALID_SRT_SELECTIONS={0} does not support the {1} Web service runtime. Choose a different server or runtime to proceed through the Web services wizard.
 MSG_NO_RUNTIME=No runtime specified for the {0} scenario.
 MSG_NO_SERVER=No server specified for the {0} scenario.
@@ -275,7 +284,7 @@
 #
 # WebServiceTestPage
 #
-PAGE_TITLE_WSTEST=Web Service Test Page
+PAGE_TITLE_WSTEST=Test Web Service
 PAGE_DESC_WSTEST=Select a test facility
 CHECKBOX_TEST_WEBSERVICE=&Test the Web service
 CHECKBOX_MONITOR_WEBSERVICE=&Monitor the Web service
@@ -299,6 +308,7 @@
 LABEL_JSP_PROJECT_NAME=JSP project:
 MSG_ERROR_JTS_PROXY_NOT_COMPILED=IWAB0357E The Generated proxy was not found. WebService sample jsps cannot be generated.
 MSG_ERROR_MALFORMED_URL=IWAB0358E Test client URL is malformed.
+MSG_ERROR_MODULE_DEPENDENCY=Unable to establish module dependency from {0} to {1}.
 
 #
 # WebServiceBeanMethodsPage
@@ -574,7 +584,6 @@
 WAIT_VALIDATION_DESCRIPTION=Wait for WSDL validation to complete
 TASK_LABEL_CHECK_WSDL_VALIDATION=Check for WSDL validation
 TASK_DESC_CHECK_WSDL_VALIDATION=Check if WSDL validation has completed
-WAIT_FOR_WSDL=Do not continue with wizard.  Wait for WSDL validation to complete.
 
 #
 # WSDLValidation messages
@@ -589,11 +598,14 @@
 VALIDATION_COMPLETED=WSDL validation completes with no warning or error.
 TOOLTIP_VALIDATE_TEXT_MESSAGE_SUMMARY=WSDL validation preference can be changed using the Web Services Profile Compliance and Validation preference.
 
+LABEL_BUTTON_STOP_WSDL_VALIDATION=Stop Validation
+TOOLTIP_STOP_VALIDATION_BUTTON=Stops the current WSDL validation operation.
+
 
 #
 # Start server page
 #
-PAGE_TITLE_WS_START_SERVER=Server startup page
+PAGE_TITLE_WS_START_SERVER=Start Server
 PAGE_DESC_WS_START_SERVER=Start the server from this page.
 LABEL_START_SERVER_TEXT1=In order to proceed the server "{0}" must be started.
 LABEL_START_SERVER_TEXT2=Once the server is started the "next" button will be enabled.
@@ -619,3 +631,5 @@
 # Note to translation do not translate keyword ServerId
 MSG_INFO_ANT_SERVER_HEADING=Server IDs (ServerId)
 MSG_INFO_ANT_SERVER=Server: {0}
+
+MSG_INFO_WSDL_OPERATION_TIMED_OUT=Could not retrieve the WSDL file {0}.  Do you want to continue to wait for this file?
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUIMessages.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUIMessages.java
index 0596dff..a54562a 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUIMessages.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ConsumptionUIMessages.java
@@ -18,6 +18,13 @@
  * 20060417   136390/136159 joan@ca.ibm.com - Joan Haggarty
  * 20060413   135581 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060418   136335 joan@ca.ibm.com - Joan Haggarty
+ * 20060420   136158 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   120714 kathy@ca.ibm.com - Kathy Chan
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
+ * 20060426   138647 joan@ca.ibm.com - Joan Haggarty
+ * 20060510   141115 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060509   119296 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060719   139977 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui;
 
@@ -92,6 +99,9 @@
 	public static String LABEL_TREE_EXISTING_SERVERS;
 	public static String LABEL_TREE_SERVER_TYPES;
 	public static String MSG_NO_OBJECT_SELECTION;
+	public static String MSG_NO_SERVICE_SELECTION;
+	public static String MSG_INVALID_SERVICE_DEF;
+	public static String MSG_INVALID_SERVICE_IMPL;
 	public static String MSG_INVALID_SRT_SELECTIONS;
 	public static String MSG_NO_RUNTIME;
 	public static String MSG_NO_SERVER;
@@ -205,7 +215,6 @@
 	public static String TOOLTIP_WSWSCEN_SCALE_SERVICE;
 	public static String TOOLTIP_WSWSCEN_SCALE_CLIENT;
 	public static String TOOLTIP_WSWSCEN_SCALE_CLIENT_ONLY;
-	public static String TOOLTIP_WSWSCEN_SCALE_NO_CLIENT;
 	public static String TOOLTIP_WSWSCEN_TEXT_IMPL;
 	public static String TOOLTIP_WSWSCEN_BUTTON_OVERWRITE_FILES;
 	public static String TOOLTIP_WSWSCEN_BUTTON_BROWSE_IMPL;
@@ -340,7 +349,6 @@
 	public static String WAIT_VALIDATION_DESCRIPTION;
 	public static String TASK_LABEL_CHECK_WSDL_VALIDATION;
 	public static String TASK_DESC_CHECK_WSDL_VALIDATION;
-	public static String WAIT_FOR_WSDL;
 	public static String MESSAGE_VALIDATE_NO_WSDL;
 	public static String MESSAGE_VALIDATE_REMOTE_WSDL;
 	public static String MESSAGE_VALIDATE_ALL_WSDL;
@@ -350,6 +358,8 @@
 	public static String WARNING_IF_CONTINUE;
 	public static String VALIDATION_COMPLETED;
 	public static String TOOLTIP_VALIDATE_TEXT_MESSAGE_SUMMARY;
+	public static String LABEL_BUTTON_STOP_WSDL_VALIDATION;
+	public static String TOOLTIP_STOP_VALIDATION_BUTTON;
 	public static String PAGE_TITLE_WS_START_SERVER;
 	public static String PAGE_DESC_WS_START_SERVER;
 	public static String LABEL_START_SERVER_TEXT1;
@@ -375,6 +385,8 @@
     public static String MSG_SERVICE_CANNOT_ASSOCIATE;
     public static String MSG_PROJECT_MUST_EXIST;
     public static String MSG_ERROR_INVALID_MULTIPLE_SERVICE_SELECT;
+    public static String MSG_ERROR_MODULE_DEPENDENCY;
+    public static String MSG_INFO_WSDL_OPERATION_TIMED_OUT;
 
 
 	static {
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ant/AntClientRootCommandFragment.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ant/AntClientRootCommandFragment.java
index f2c3194..5f713b9 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ant/AntClientRootCommandFragment.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/ant/AntClientRootCommandFragment.java
@@ -10,18 +10,23 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060530   144358 kathy@ca.ibm.com - Kathy Chan
+ * 20060530   144350 kathy@ca.ibm.com - Kathy Chan
+ * 20060825   155114 pmoogk@ca.ibm.com - Peter Moogk
+ * 20061011   159283 makandre@ca.ibm.com - Andrew Mak, project not associated to EAR when using ant on command-line
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.ant;
 
-import org.eclipse.jst.ws.internal.consumption.common.ScenarioCleanupCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.command.AntDefaultingOperation;
+import org.eclipse.jst.ws.internal.consumption.ui.command.AntRestoringCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.command.CheckForServiceProjectCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.command.ListOptionsCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.command.data.EclipseIPath2URLStringTransformer;
 import org.eclipse.jst.ws.internal.consumption.ui.common.FinishFragment;
+import org.eclipse.jst.ws.internal.consumption.ui.common.ScenarioCleanupCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.extension.ClientRootFragment;
 import org.eclipse.jst.ws.internal.consumption.ui.extension.PreClientDevelopCommand;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.CheckWSDLValidationCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.ClientWizardWidgetDefaultingCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.ClientWizardWidgetOutputCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.WSDLSelectionOutputCommand;
@@ -62,12 +67,11 @@
   add( new SimpleFragment(new ListOptionsCommand(), ""));
   add (new SimpleFragment(new AntDefaultingOperation(), ""));
   
-  add( new SimpleFragment( new ClientWizardWidgetDefaultingCommand(), "" ) );
+  add( new SimpleFragment( new ClientWizardWidgetDefaultingCommand(true), "" ) );
   add( new SimpleFragment( new ClientWizardWidgetOutputCommand(), "" ));
   add( new SimpleFragment( new WSDLSelectionWidgetDefaultingCommand(), ""));
   
   add( new SimpleFragment( new WSDLSelectionOutputCommand(), ""));
-  add( new SimpleFragment( new CheckWSDLValidationCommand(), ""));
   add( new SimpleFragment( new ClientRuntimeSelectionWidgetDefaultingCommand(), ""));
   
   add( new SimpleFragment( new ClientExtensionDefaultingCommand( true ), ""));
@@ -75,7 +79,7 @@
   add( new SimpleFragment( new ClientExtensionOutputCommand(), "" ) );
  
   add(new FinishFragment());
-  
+  add( new SimpleFragment( new AntRestoringCommand(), "" ));
   add( new SimpleFragment( new ScenarioCleanupCommand(), "" ));
  
   }
@@ -90,6 +94,13 @@
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "TestService", ClientWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ResourceContext", ClientWizardWidgetOutputCommand.class);
       
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "DevelopClient", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "AssembleClient", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "DeployClient", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "StartClient", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ResourceContext", ClientRuntimeSelectionWidgetDefaultingCommand.class);
+
+      
       // Map ClientWizardWidgetOutputCommand command.
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "ClientTypeRuntimeServer", ClientRuntimeSelectionWidgetDefaultingCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "TestService", WSDLSelectionOutputCommand.class);
@@ -98,6 +109,13 @@
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "ResourceContext", ClientRuntimeSelectionWidgetDefaultingCommand.class);      
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "ResourceContext", ClientExtensionDefaultingCommand.class);
       
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "InstallClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "StartClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "DevelopClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "AssembleClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "DeployClient", ClientExtensionDefaultingCommand.class);
+      
+      
       // Map ClientRuntimeSelectionWidgetDefaultingCommand command
       dataRegistry.addMapping(ClientRuntimeSelectionWidgetDefaultingCommand.class, "ClientTypeRuntimeServer", ClientExtensionDefaultingCommand.class);
       dataRegistry.addMapping(ClientRuntimeSelectionWidgetDefaultingCommand.class, "ClientRuntimeId", ClientExtensionDefaultingCommand.class);
@@ -146,6 +164,11 @@
       dataRegistry.addMapping( ClientWizardWidgetOutputCommand.class, "ResourceContext", PreClientDevelopCommand.class);
 	  dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "WsdlURI", PreClientDevelopCommand.class );
 	  
+	  dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "DevelopClient", PreClientDevelopCommand.class);
+      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "AssembleClient", PreClientDevelopCommand.class);
+      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "DeployClient", PreClientDevelopCommand.class );
+      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "StartClient", PreClientDevelopCommand.class, "StartService", null);      
+	  
       dataRegistry.addMapping( PreClientDevelopCommand.class, "WebService", ClientExtensionOutputCommand.class, "WebServiceClient", null );
 			
       // Map ClientExtensionDefaultingCommand command.
@@ -193,5 +216,6 @@
       dataRegistry.addMapping( ClientRuntimeSelectionWidgetDefaultingCommand.class, "ClientEarProjectName", DeployClientFragment.class, "EarProject", null );
       dataRegistry.addMapping( ClientRuntimeSelectionWidgetDefaultingCommand.class, "ClientEarComponentName", DeployClientFragment.class, "Ear", null );  
           
+      dataRegistry.addMapping(AntDefaultingOperation.class, "RendererValidation", AntRestoringCommand.class);          
    }        
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/AntDefaultingOperation.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/AntDefaultingOperation.java
index 480cd6c..3fbf57b 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/AntDefaultingOperation.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/AntDefaultingOperation.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20061011   159283 makandre@ca.ibm.com - Andrew Mak, project not associated to EAR when using ant on command-line
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.command;
 
@@ -19,11 +20,25 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.common.internal.emf.resource.RendererFactory;
 
 public class AntDefaultingOperation extends AbstractDataModelOperation{
 
+	private boolean rendererValidation;
+	
 	public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
 		// TODO Auto-generated method stub
+
+		rendererValidation = RendererFactory.getDefaultRendererFactory().isValidating();		
+		RendererFactory.getDefaultRendererFactory().setValidating(false);
+		
+		return Status.OK_STATUS;
+	}
+	
+	public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+		
+		RendererFactory.getDefaultRendererFactory().setValidating(rendererValidation);
+		
 		return Status.OK_STATUS;
 	}
 	
@@ -56,4 +71,9 @@
     {
       return true;
     }
+    
+    public boolean getRendererValidation()
+    {
+    	return rendererValidation;
+    }
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/AntRestoringCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/AntRestoringCommand.java
new file mode 100644
index 0000000..5c73902
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/AntRestoringCommand.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20061011   159283 makandre@ca.ibm.com - Andrew Mak, project not associated to EAR when using ant on command-line
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.consumption.ui.command;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.common.internal.emf.resource.RendererFactory;
+
+public class AntRestoringCommand extends AbstractDataModelOperation{
+
+	private boolean rendererValidation;
+	
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+
+		RendererFactory.getDefaultRendererFactory().setValidating(rendererValidation);
+
+		return Status.OK_STATUS;
+	}
+	
+    public void setRendererValidation(boolean rendererValidation)
+    {
+    	this.rendererValidation = rendererValidation;
+    }
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/GenerateHandlerSkeletonCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/GenerateHandlerSkeletonCommand.java
index 68ea1dd..e4abdc6 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/GenerateHandlerSkeletonCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/GenerateHandlerSkeletonCommand.java
@@ -9,7 +9,8 @@
  *     IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
- * 20060404 134913   sengpl@ca.ibm.com - Seng Phung-Lu      
+ * 20060404   134913 sengpl@ca.ibm.com - Seng Phung-Lu      
+ * 20060517   142027 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.command;
 
@@ -74,7 +75,8 @@
           for (int j=0;j<handlers.size();j++){
             HandlerTableItem hti = (HandlerTableItem)handlers.get(j);
             String className = hti.getHandlerClassName();
-            handlerTable.put(className, outPath);
+            if (className!=null && outPath!=null)
+              handlerTable.put(className, outPath);
           }
           returnStatus = genHandlersClasses(handlerTable, monitor);
         }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/WSINonCompliantRuntimeCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/WSINonCompliantRuntimeCommand.java
index ed3332a..507cdad 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/WSINonCompliantRuntimeCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/command/WSINonCompliantRuntimeCommand.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
+ * Copyright (c) 2003, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060420   120714 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.command;
@@ -63,12 +66,18 @@
     	} 
       else 
       {
-    		return StatusUtils.errorStatus( WstWSPluginMessages.NOT_OK );
+    	  // Set message to empty string so that an error dialog does
+    	  // not pop-up telling the user that they cannot continue
+    	  // because they choose not to ignore the WS-I non-compliance warning.
+    		return StatusUtils.errorStatus( "" );
     	}
     } 
     else 
     {
-		  return StatusUtils.errorStatus( WstWSPluginMessages.NOT_OK );
+    	// Set message to empty string so that an error dialog does
+  	  	// not pop-up telling the user that they cannot continue
+  	  	// because they choose not to ignore the WS-I non-compliance warning.
+		  return StatusUtils.errorStatus( "" );
 	}
   }
   
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/DefaultingUtils.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/DefaultingUtils.java
new file mode 100644
index 0000000..ec3795d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/DefaultingUtils.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   138058 joan@ca.ibm.com - Joan Haggarty
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.consumption.ui.common;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jst.ws.internal.common.J2EEUtils;
+import org.eclipse.jst.ws.internal.common.ResourceUtils;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+
+public class DefaultingUtils {
+	
+	public DefaultingUtils()
+	{
+			
+	}
+	
+	/**
+	 * 
+	 * Uses the following steps to determine a valid default EAR project name:
+	 *  
+	 * 1. If project does exist:
+	 * 		a - look for an existing, referencing EAR component, if one exists return that EAR name
+	 * 		b - look for an existing EAR component with the same J2EE version as the project
+	 * 2. If can't find an appropriate existing EAR component or project does not exist in the 
+	 *     workspace, return a new EAR name of form projectNameEAR
+	 * 3. If project name is null or an empty string return the default EAR name
+	 * 
+	 * @param projectName a string representing the name of the project for the service
+	 * @return a string to be used as the default EAR project name for the project name provided
+	 */
+	public static String getDefaultEARProjectName(String projectName)
+	{
+
+		if (projectName != null && projectName.length() > 0) {
+			
+			IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+
+			if (proj.exists()) {
+				
+				//Step 1a - return a referencing EAR project
+				IVirtualComponent[] ears = J2EEUtils.getReferencingEARComponents(proj);
+				if (ears != null && ears.length > 0) {
+					return ears[0].getName();
+				}
+				
+				//Step 1b - return an appropriate existing EAR project
+			    IVirtualComponent[] allEarComps = J2EEUtils.getAllEARComponents();			      
+
+			    if (allEarComps.length > 0)
+			    {			      
+			        for (int i=0; i < allEarComps.length; i++)
+			        {
+			          IProject earProject = allEarComps[i].getProject();
+			          IStatus associationStatus = J2EEUtils.canAssociateProjectToEAR(proj, earProject);
+			          if (associationStatus.getSeverity()==IStatus.OK)
+			          {
+			            return allEarComps[i].getName(); 
+			          }
+			        }			      			      
+			    }
+			}
+			
+			//Step 2 - return project name with EAR on the end
+			return projectName + ResourceUtils.getDefaultEARExtension();			
+		}
+		
+		//Step 3 - return the default EAR project name
+		return ResourceUtils.getDefaultServiceEARProjectName();		
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/HandlerDescriptionHolder.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/HandlerDescriptionHolder.java
index 5f6c823..00cbadd 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/HandlerDescriptionHolder.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/HandlerDescriptionHolder.java
@@ -8,9 +8,10 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
- * 20060404 134913  sengpl@ca.ibm.com - Seng Phung-Lu
  * -------- -------- -----------------------------------------------------------
- */
+ * 20060404 134913  sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060518 142554 sengpl@ca.ibm.com  - Seng Phung-Lu
+ *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.common;
 
 import java.util.List;
@@ -96,7 +97,7 @@
     this.handlerList = handlerList;
   }
   
-  public boolean addHandlerToAllPorts(){
+  public void addHandlerToAllPorts(){
     
     if (handlerList!=null && !handlerList.isEmpty()){
       
@@ -123,14 +124,12 @@
                 newHandler.setHandlerName(hti.getHandlerName());
                 newHandler.setHandlerClass(hti.getHandlerClassName());
                 wsHandlers.add(newHandler);
-                return true;
               }
             }
           }
         }
       }
     }
-    return false;
     
   }
   
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/HandlerServiceRefHolder.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/HandlerServiceRefHolder.java
index aee530a..b1b004b 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/HandlerServiceRefHolder.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/HandlerServiceRefHolder.java
@@ -8,9 +8,10 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
- * 20060404 134913  sengpl@ca.ibm.com - Seng Phung-Lu
  * -------- -------- -----------------------------------------------------------
- */
+ * 20060404   134913sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060517   142339 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.common;
 
 import java.util.List;
@@ -83,7 +84,7 @@
           boolean alreadyExists = false;
           for (int i=0;i<existingHandlers.size();i++){
             Handler handler = (Handler)existingHandlers.get(i);
-            if (handler.getHandlerClass().equals(hti.getHandlerClassName())){
+            if (handler.getHandlerClass().getJavaName().equals(hti.getHandlerClassName())){
               alreadyExists = true;
             }
           }
@@ -100,6 +101,7 @@
                 if (javaClass != null) {
                   newHandler.setHandlerClass(javaClass);
                 }    
+                existingHandlers.add(newHandler);
               }
             }
             catch(Exception e){
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/ScenarioCleanupCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ScenarioCleanupCommand.java
similarity index 67%
rename from bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/ScenarioCleanupCommand.java
rename to bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ScenarioCleanupCommand.java
index 91ef778..a9b44f6 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/ScenarioCleanupCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ScenarioCleanupCommand.java
@@ -1,20 +1,25 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060825   155114 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 
-package org.eclipse.jst.ws.internal.consumption.common;
+package org.eclipse.jst.ws.internal.consumption.ui.common;
 
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.ws.internal.consumption.common.WSDLParserFactory;
+import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.ObjectSelectionRegistry;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
 
 /**
@@ -29,6 +34,7 @@
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
 	  WSDLParserFactory.killParser();
+    ObjectSelectionRegistry.getInstance().cleanup();
 	
 	  return Status.OK_STATUS;
   }
@@ -39,6 +45,7 @@
 	  // Even if the user cancels out of the wizard we want to
 	  // kill the parser.
 	  WSDLParserFactory.killParser();
+    ObjectSelectionRegistry.getInstance().cleanup();
     
     return Status.OK_STATUS;
   }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ServerSelectionUtils.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ServerSelectionUtils.java
index 0a472a2..02886f1 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ServerSelectionUtils.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ServerSelectionUtils.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060324   116750 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20070119   159458 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.common;
@@ -25,6 +26,7 @@
 import org.eclipse.jst.ws.internal.consumption.common.IServerDefaulter;
 import org.eclipse.jst.ws.internal.consumption.common.ServerInfo;
 import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IRuntimeType;
 import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.server.core.ServerCore;
 
@@ -72,14 +74,22 @@
       return null;
     
     ArrayList compatibleServersList = new ArrayList();
-    String runtimeId = runtime.getRuntimeType().getId();
-    for (int i=0; i<servers.length; i++)
+    IRuntimeType runtimeType = runtime.getRuntimeType();
+    if (runtimeType != null)
     {
-      IServer server = (IServer)servers[i];
-      String serverRuntimeId = server.getRuntime().getRuntimeType().getId();
-      if (serverRuntimeId.equals(runtimeId))
-        compatibleServersList.add(server);
-      
+    	String runtimeId = runtimeType.getId();
+		for (int i=0; i<servers.length; i++)
+		{
+		  IServer server = (IServer)servers[i];
+		  IRuntimeType runtimeType2 = server.getRuntime().getRuntimeType();
+		  if (runtimeType2 != null)
+		  {
+			  String serverRuntimeId = runtimeType2.getId();
+			  if (serverRuntimeId.equals(runtimeId))
+			    compatibleServersList.add(server);
+		  }
+		  
+		}
     }
     if (compatibleServersList.size()<1)
       return null;
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ValidationUtils.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ValidationUtils.java
index ee8cc9c..b38af5c 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ValidationUtils.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/common/ValidationUtils.java
@@ -11,6 +11,14 @@
  * -------- -------- -----------------------------------------------------------
  * 20060222   115834 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060413   135581 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   136158 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   136705 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060421   136761 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060425   137831 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060427   126780 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060427   138058 joan@ca.ibm.com - Joan Haggarty
+ * 20060905   156230 kathy@ca.ibm.com - Kathy Chan, Handling projects with no target runtime
+ * 20070119   159458 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.common;
 
@@ -65,9 +73,11 @@
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
 import org.eclipse.wst.common.project.facet.core.VersionFormatException;
 import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IRuntimeType;
 import org.eclipse.wst.server.core.IServerType;
 import org.eclipse.wst.server.core.ServerCore;
 import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
 
 /**
  *
@@ -88,7 +98,50 @@
   {
   }
   
-  public IStatus checkMissingFieldStatus(int validationState, String serviceImpl, String runtimeId, String serverId,
+  /**
+   * Returns a new validation state based on the current validation state
+   * and the requested validation state. If the requested validation state
+   * does not cover all the validation covered by the current validation
+   * state, VALIDATE_ALL is returned. Otherwise, the requested validation
+   * state is returned.
+   * 
+   * @param currentValidationState the validaton state at the time the caller's requests a change
+   * @param requestedValidationState the validation state being requested by the caller.
+   * @return Returns VALIDATE_ALL if the requested validation state
+   * does not cover all the validation covered by the current validation
+   * state. Returned requestedValidationState otherwise.
+   */
+  public int getNewValidationState(int currentValidationState, int requestedValidationState) {
+		int newValidationState;
+		if (currentValidationState == VALIDATE_NONE
+				|| currentValidationState == requestedValidationState) {
+			newValidationState = requestedValidationState;
+		} else {
+			newValidationState = VALIDATE_ALL;
+		}
+
+		return newValidationState;
+
+	}
+  
+  /**
+   * Returns IStatus resulting from checking for empty fields. Used for validation of page 1 of the
+   * Web service/client wizards.
+   * @param validationState one of VALIDATE_NONE, VALIDATE_ALL, VALIDATE_SERVER_RUNTIME_CHANGES, VALIDATE_PROJECT_CHANGES, VALIDATE_SCALE_CHANGES
+   * @param typeId Web service type id (isClient=false) or Web service client implementation type id (isClient=true) 
+   * @param serviceImpl String representation of the object selection from page 1
+   * @param runtimeId Web service runtime id
+   * @param serverId server type id
+   * @param projectName name of project
+   * @param needEar boolean <code>true</code> if EAR is required, <code>false</code> if not.
+   * @param earProjectName name of EAR project
+   * @param projectTypeId template id
+   * @param isClient boolean <code>true</code> if the method is being called for client side validation, 
+   * <code>false</code> for service side validation.
+   * @return IStatus with severity IStatus.OK if all mandatory fields are non-null and non-empty. 
+   * IStatus with severity IStatus.ERROR otherwise.
+   */
+  public IStatus checkMissingFieldStatus(int validationState, String typeId, String serviceImpl, String runtimeId, String serverId,
 			String projectName, boolean needEar, String earProjectName, String projectTypeId,
 			boolean isClient)
   {
@@ -96,8 +149,17 @@
 	  if (validationState==VALIDATE_ALL && !isClient)
 	  {
 		if (serviceImpl.length() == 0) {
-			return StatusUtils
-					.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_NO_OBJECT_SELECTION, new String[]{ConsumptionUIMessages.LABEL_WEBSERVICEIMPL}));
+			int scenario = WebServiceRuntimeExtensionUtils2.getScenarioFromTypeId(typeId);
+			if (scenario == WebServiceScenario.BOTTOMUP)
+			{
+			  return StatusUtils
+					.errorStatus(ConsumptionUIMessages.MSG_NO_OBJECT_SELECTION);
+			}
+			else
+			{
+			  return StatusUtils
+					.errorStatus(ConsumptionUIMessages.MSG_NO_SERVICE_SELECTION);				
+			}
 		}
 	  }
 
@@ -184,6 +246,22 @@
 		return Status.OK_STATUS;
   }
   
+  /**
+   * Returns IStatus resulting from checking for errors. Used for validation of page 1 of the
+   * Web service/client wizards.
+   * @param validationState one of VALIDATE_NONE, VALIDATE_ALL, VALIDATE_SERVER_RUNTIME_CHANGES, VALIDATE_PROJECT_CHANGES, VALIDATE_SCALE_CHANGES
+   * @param typeId Web service type id (isClient=false) or Web service client implementation type id (isClient=true)
+   * @param runtimeId Web service runtime id
+   * @param serverId server type id
+   * @param projectName name of project
+   * @param needEar boolean <code>true</code> if EAR is required, <code>false</code> if not.
+   * @param earProjectName name of EAR project
+   * @param projectTypeId template id
+   * @param isClient boolean <code>true</code> if the method is being called for client side validation, 
+   * <code>false</code> for service side validation.
+   * @return IStatus with severity IStatus.OK if no errors are present,
+   * IStatus with severity IStatus.ERROR otherwise.
+   */
   public IStatus checkErrorStatus(int validationState, String typeId, String runtimeId, String serverId,
 			String projectName, boolean needEar, String earProjectName, String projectTypeId,
 			boolean isClient) {
@@ -192,23 +270,37 @@
 		// compatible
 
 		// Labels
-		String serverLabel = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverId);
+	    String serverLabel = "";
+	    if (serverId != null && serverId.length()>0)
+	    {
+	    	serverLabel = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverId);
+	    }
 		String runtimeLabel = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById(runtimeId);
-
+		
 	    if (validationState == VALIDATE_ALL || validationState == VALIDATE_SERVER_RUNTIME_CHANGES) {
-			if (isClient) {
-				if (!WebServiceRuntimeExtensionUtils2.isServerClientRuntimeTypeSupported(serverId,
-						runtimeId, typeId)) {
-					return StatusUtils.errorStatus(NLS.bind(
-							ConsumptionUIMessages.MSG_INVALID_SRT_SELECTIONS, new String[] {
-									serverLabel, runtimeLabel }));
-				}
-			} else {
-				if (!WebServiceRuntimeExtensionUtils2.isServerRuntimeTypeSupported(serverId,
-						runtimeId, typeId)) {
-					return StatusUtils.errorStatus(NLS.bind(
-							ConsumptionUIMessages.MSG_INVALID_SRT_SELECTIONS, new String[] {
-									serverLabel, runtimeLabel }));
+	    	if (serverId != null && serverId.length() > 0) {
+				if (isClient) {
+					if (!WebServiceRuntimeExtensionUtils2
+							.isServerClientRuntimeTypeSupported(serverId,
+									runtimeId, typeId)) {
+						return StatusUtils
+								.errorStatus(NLS
+										.bind(
+												ConsumptionUIMessages.MSG_INVALID_SRT_SELECTIONS,
+												new String[] { serverLabel,
+														runtimeLabel }));
+					}
+				} else {
+					if (!WebServiceRuntimeExtensionUtils2
+							.isServerRuntimeTypeSupported(serverId, runtimeId,
+									typeId)) {
+						return StatusUtils
+								.errorStatus(NLS
+										.bind(
+												ConsumptionUIMessages.MSG_INVALID_SRT_SELECTIONS,
+												new String[] { serverLabel,
+														runtimeLabel }));
+					}
 				}
 			}
 		}
@@ -234,10 +326,12 @@
 					}
 
 					// Check if the server supports it.
-					if (!valUtils.doesServerSupportProject(serverId, projectName)) {
-						return StatusUtils.errorStatus(NLS.bind(
-								ConsumptionUIMessages.MSG_CLIENT_SERVER_DOES_NOT_SUPPORT_PROJECT,
-								new String[] { serverLabel, projectName }));
+					if (serverId != null && serverId.length() > 0) {
+						if (!valUtils.doesServerSupportProject(serverId, projectName)) {
+							return StatusUtils.errorStatus(NLS.bind(
+													ConsumptionUIMessages.MSG_CLIENT_SERVER_DOES_NOT_SUPPORT_PROJECT,
+													new String[] { serverLabel, projectName }));
+						}
 					}
 				} else {
 					// Check if the runtime supports it.
@@ -249,10 +343,13 @@
 					}
 
 					// Check if the server supports it.
-					if (!valUtils.doesServerSupportProject(serverId, projectName)) {
+					if (serverId != null && serverId.length() > 0)
+					{
+					  if (!valUtils.doesServerSupportProject(serverId, projectName)) {
 						return StatusUtils.errorStatus(NLS.bind(
 								ConsumptionUIMessages.MSG_SERVICE_SERVER_DOES_NOT_SUPPORT_PROJECT,
 								new String[] { serverLabel, projectName }));
+					  }
 					}
 				}
 			} else {
@@ -273,11 +370,13 @@
 					}
 
 					// Check if the server supports it.
-
-					if (!valUtils.doesServerSupportTemplate(serverId, templateId)) {
+					if (serverId != null && serverId.length()>0)
+					{
+					  if (!valUtils.doesServerSupportTemplate(serverId, templateId)) {
 						return StatusUtils.errorStatus(NLS.bind(
 								ConsumptionUIMessages.MSG_CLIENT_SERVER_DOES_NOT_SUPPORT_TEMPLATE,
 								new String[] { serverLabel, templateLabel }));
+					  }
 					}
 
 				} else {
@@ -292,10 +391,13 @@
 					}
 
 					// Check if the server supports it.
-					if (!valUtils.doesServerSupportTemplate(serverId, templateId)) {
+					if (serverId != null && serverId.length()>0)
+					{
+					  if (!valUtils.doesServerSupportTemplate(serverId, templateId)) {
 						return StatusUtils.errorStatus(NLS.bind(
 								ConsumptionUIMessages.MSG_SERVICE_SERVER_DOES_NOT_SUPPORT_TEMPLATE,
 								new String[] { serverLabel, templateLabel }));
+					  }
 					}
 				}
 
@@ -334,6 +436,24 @@
 
 	}
   
+  /**
+   * Returns IStatus resulting from checking for warnings. Used for validation of page 1 of the
+   * Web service/client wizards. 
+   * @param validationState one of VALIDATE_NONE, VALIDATE_ALL, VALIDATE_SERVER_RUNTIME_CHANGES, VALIDATE_PROJECT_CHANGES, VALIDATE_SCALE_CHANGES
+   * @param scaleSetting one of <BR/>
+   * ScenarioContext.WS_TEST<BR/>
+   * ScenarioContext.WS_START<BR/>
+   * ScenarioContext.WS_INSTALL<BR/>
+   * ScenarioContext.WS_DEPLOY<BR/>
+   * ScenarioContext.WS_ASSEMBLE<BR/>
+   * ScenarioContext.WS_DEVELOP<BR/>
+   * ScenarioContext.WS_NONE
+   * @param serverId server type id
+   * @param isClient boolean <code>true</code> if the method is being called for client side validation, 
+   * <code>false</code> for service side validation.
+   * @return IStatus with severity IStatus.OK if no errors are present,
+   * IStatus with severity IStatus.WARNING otherwise.
+   */
   public IStatus checkWarningStatus(int validationState, int scaleSetting, String serverId,
 			boolean isClient) {
 		// Return a warning if there is no server selection and scale setting is
@@ -374,6 +494,18 @@
 
 	}
   
+  /**
+   * Returns whether or not the provided server type supports the facet versions on the provided project
+   * @param serverFactoryId server type id
+   * @param projectName name of a project that may or may not exist.
+   * @return boolean <code>true</code>
+   * <ul> 
+   * <li>if the server type supports the facet versions on the project or</li>
+   * <li>if the project is not a faceted project or</li>
+   * <li>if the project does not exist.</li>
+   * </ul>
+   * Returns <code>false</code> otherwise.
+   */
   public boolean doesServerSupportProject(String serverFactoryId, String projectName)
   {
     IProject project = ProjectUtilities.getProject(projectName);
@@ -407,6 +539,13 @@
     
   }
 
+  /**
+   * Returns whether or not the provided server type supports the facet versions in the provided set.
+   * @param serverFactoryId server type id
+   * @param facets set containing elements of type {@link IProjectFacetVersion}
+   * @return boolean <code>true</code> if the server type supports the facet versions in the provided set,
+   * <code>false</code> otherwise.
+   */
   public boolean doesServerSupportFacets(String serverFactoryId, Set facets)
   {
     Set runtimes = FacetUtils.getRuntimes(new Set[]{facets});
@@ -417,7 +556,8 @@
     {
       org.eclipse.wst.common.project.facet.core.runtime.IRuntime fRuntime = (org.eclipse.wst.common.project.facet.core.runtime.IRuntime)itr.next();
       IRuntime sRuntime = FacetUtil.getRuntime(fRuntime);
-      if (runtimeTypeId.equals(sRuntime.getRuntimeType().getId()))
+      IRuntimeType runtimeType = sRuntime.getRuntimeType();
+      if (runtimeType != null && runtimeTypeId.equals(runtimeType.getId()))
       {
         //found a match
         return true;
@@ -427,6 +567,14 @@
     return false;    
   }
   
+  /**
+   * Returns whether or not the provided server type supports at least one version of
+   * each of the fixed facets on the provided template
+   * @param serverFactoryId server type id
+   * @param templateId id of a {@link IFacetedProjectTemplate}
+   * @return boolean <code>true</code> if the server type supports at least one version of
+   * each of the fixed facets on the provided template, <code>false</code> otherwise.
+   */
   public boolean doesServerSupportTemplate(String serverFactoryId, String templateId)
   {
     IFacetedProjectTemplate template = ProjectFacetsManager.getTemplate(templateId);
@@ -481,6 +629,64 @@
     return true;
   }
   
+  /**
+   * Returns whether or not the provided project or project type (if the project is null or does not exist)
+   * rules out the need for an EAR.
+   * @param projectName name of a project
+   * @param projectTypeId id of a {@link IFacetedProjectTemplate}. Must be non-empty if the project is null or
+   * does not exist. 
+   * @return boolean <code>true</code> if the need for an EAR is not ruled out, <code>false</code> otherwise.
+   */
+	public boolean projectOrProjectTypeNeedsEar(String projectName, String projectTypeId)
+	{
+		// If the project is a simple Java project or the project type is
+		// Java utility return false.
+		if (projectName != null && projectName.length() > 0) {
+			IProject project = ResourceUtils.getWorkspaceRoot().getProject(projectName);
+			if (project.exists()) {
+				if (FacetUtils.isJavaProject(project)) {
+					return false;
+				}
+			}
+		}
+
+		// Project didn't rule out the need for an EAR
+		// so check the proect type
+		String templateId = projectTypeId;
+		if (templateId != null && templateId.length() > 0) {
+			if (FacetUtils.isUtilityTemplate(templateId)) {
+				return false;
+			}
+		}
+
+		return true;
+	}
+	
+	/**
+	 * Returns whether or not an J2EE 1.3 EAR project can be installed on a server of
+	 * the provided server type.
+	 * @param serverTypeId server type id
+	 * @return boolean <code>true</code> if a J2EE 1.3 EAR project can be installed on a server of
+	 * the provided server type, <code>false</code> otherwise. 
+	 */
+	public boolean serverNeedsEAR(String serverTypeId)
+	{
+		if (serverTypeId == null) {
+			return false;
+		}
+	    if (serverTypeId.length() > 0) {
+			String targetId = ServerUtils.getRuntimeTargetIdFromFactoryId(serverTypeId);
+			if (targetId != null && targetId.length() > 0) {
+				if (!ServerUtils.isTargetValidForEAR(targetId, "13")) // rm j2ee
+				{
+					return false;
+				}
+			}
+		}
+
+		return true;
+	}
+	
   public IStatus validateProjectTargetAndJ2EE(String projectName, String compName, String earName, String earCompName, String serverFactoryId, String j2eeLevel)
   {
     IProject p = ProjectUtilities.getProject(projectName);
@@ -522,6 +728,7 @@
     return Status.OK_STATUS;
   }
   
+  //TODO: This method is obselete - should be removed.
   private IStatus doesProjectTargetMatchServerType(IProject p, String serverFactoryId)
   {
     if (p!=null && p.exists())
@@ -543,6 +750,7 @@
     return Status.OK_STATUS;        
   }
 
+  //TODO: This method is obselete - should be removed.
   private IStatus doesProjectMatchJ2EELevel(IProject p, String compName, String j2eeLevel)
   {
 
@@ -569,6 +777,7 @@
     return Status.OK_STATUS;        
   }
   
+  //TODO: This method is obselete - should be removed.
   public IStatus validateProjectType(String projectName, SelectionListChoices runtime2ClientTypes)
   {
     IStatus status = Status.OK_STATUS;
@@ -601,7 +810,7 @@
     
   }
   
-  
+  //TODO: This method is obselete - should be removed.
   private String getClientTypeLabel( String type )
   {	  
 	  if (type.equals(IModuleConstants.JST_WEB_MODULE))
@@ -628,11 +837,14 @@
   }  
   
   /**
-   * 
-   * @param p
-   * @param wsdlURL
+   * Returns whether or not this project is likely hosting any of the services
+   * in the provided WSDL as a J2EE Web service.
+   * @param p IProject in the workspace
+   * @param wsdlURL URL of a WSDL document
    * @param parser
-   * @return
+   * @return boolean <code>true</code> if the project contains a webservices.xml 
+   * deployment descriptor that points to at least one of the ports in the provided WSDL. 
+   * Returns <code>false</code> otherwise.
    */
   public boolean isProjectServiceProject(IProject p, String wsdlURL, WebServicesParser parser)
   {
@@ -690,7 +902,10 @@
   }
   
   /**
-   * 
+   * Returns the IResource corresponding to the webservices.xml in the provided project.
+   * @param p an IProject in the workspace.
+   * @return IResource corresponding to the webservices.xml in the provided project,
+   * null if there is no webservices.xml in the project.
    */
   private IResource getWebServcesXML(IProject p)
   {
@@ -737,6 +952,12 @@
     return res;
   }
   
+  /**
+   * Returns a list of WSDL ports in the provided WSDL
+   * @param wsdlURL URL of a WSDL document
+   * @param parser 
+   * @return ArrayList containing elements of type {@link QualifiedName}
+   */
   private ArrayList getPortNamesFromWsdl(String wsdlURL, WebServicesParser parser)
   {
   	ArrayList portNameList = new ArrayList();
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/ClientRootFragment.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/ClientRootFragment.java
index 93a52f5..3e4feac 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/ClientRootFragment.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/ClientRootFragment.java
@@ -11,6 +11,7 @@
  * -------- -------- -----------------------------------------------------------
  * 20060131 121071   rsinha@ca.ibm.com - Rupam Kuehner          
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.extension;
@@ -93,6 +94,7 @@
   	registry.addMapping( PreClientDevelopCommand.class, "Ear", RunClientFragment.class );
     
     //Mappings from framework to framework commands
+  	registry.addMapping( PreClientDevelopCommand.class, "Context", PreClientAssembleCommand.class );
     registry.addMapping( PreClientDevelopCommand.class, "Context", PreClientDeployCommand.class );
     
     registry.addMapping( PreClientDevelopCommand.class, "WebService", PreClientAssembleCommand.class );
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientAssembleCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientAssembleCommand.java
index cee67b8..35951ce 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientAssembleCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientAssembleCommand.java
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060131 121071   rsinha@ca.ibm.com - Rupam Kuehner          
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.extension;
@@ -24,6 +25,7 @@
 import org.eclipse.jst.ws.internal.consumption.common.RequiredFacetVersion;
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.wsrt.IContext;
 import org.eclipse.wst.ws.internal.wsrt.IWebServiceClient;
 
 public class PreClientAssembleCommand extends AbstractDataModelOperation 
@@ -33,48 +35,53 @@
   private String                  module_;
   private String                  earProject_;
   private String                  ear_;
+  private IContext          	  context_;
   
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
-    IEnvironment environment = getEnvironment();
-    
-	// Check if EAR module is req'd, ie. !=null
-	if (earProject_==null)
-		return Status.OK_STATUS;
-	
-    //  Create the client EAR module
-    CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
-    command.setProjectName(earProject_);
-    command.setTemplateId(IJ2EEModuleConstants.JST_EAR_TEMPLATE);
-    
-    // RequiredFacetVersions is set to an empty array because we don't need to impose any additional constraints.
-    // We just want to create the highest level of EAR project that the selected server supports.
-    command.setRequiredFacetVersions(new RequiredFacetVersion[0]); 
-    
-    command.setServerFactoryId(webServiceClient_.getWebServiceClientInfo().getServerFactoryId());
-    command.setServerInstanceId(webServiceClient_.getWebServiceClientInfo().getServerInstanceId());
-    IStatus status = command.execute( monitor, adaptable );
-    if (status.getSeverity() == Status.ERROR)
-    {
-      environment.getStatusHandler().reportError( status );
-      return status;
-    }        
+	  IStatus status = Status.OK_STATUS;
 
-    
-    //Associate the client module and service EAR
-    AssociateModuleWithEARCommand associateCommand = new AssociateModuleWithEARCommand();
-    associateCommand.setProject(project_);
-    associateCommand.setModule(module_);
-    associateCommand.setEARProject(earProject_);
-    associateCommand.setEar(ear_);
-    associateCommand.setEnvironment( environment );
-    status = associateCommand.execute( monitor, adaptable );
-    if (status.getSeverity()==Status.ERROR)
-    {
-      environment.getStatusHandler().reportError(  status );     
-    }     
-    
-    return status;
+	  if (context_ != null && context_.getAssemble()) {
+		  IEnvironment environment = getEnvironment();
+
+		  // Check if EAR module is req'd, ie. !=null
+		  if (earProject_==null)
+			  return Status.OK_STATUS;
+
+		  //  Create the client EAR module
+		  CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
+		  command.setProjectName(earProject_);
+		  command.setTemplateId(IJ2EEModuleConstants.JST_EAR_TEMPLATE);
+
+		  // RequiredFacetVersions is set to an empty array because we don't need to impose any additional constraints.
+		  // We just want to create the highest level of EAR project that the selected server supports.
+		  command.setRequiredFacetVersions(new RequiredFacetVersion[0]); 
+
+		  command.setServerFactoryId(webServiceClient_.getWebServiceClientInfo().getServerFactoryId());
+		  command.setServerInstanceId(webServiceClient_.getWebServiceClientInfo().getServerInstanceId());
+		  status = command.execute( monitor, adaptable );
+		  if (status.getSeverity() == Status.ERROR)
+		  {
+			  environment.getStatusHandler().reportError( status );
+			  return status;
+		  }        
+
+
+		  //Associate the client module and service EAR
+		  AssociateModuleWithEARCommand associateCommand = new AssociateModuleWithEARCommand();
+		  associateCommand.setProject(project_);
+		  associateCommand.setModule(module_);
+		  associateCommand.setEARProject(earProject_);
+		  associateCommand.setEar(ear_);
+		  associateCommand.setEnvironment( environment );
+		  status = associateCommand.execute( monitor, adaptable );
+		  if (status.getSeverity()==Status.ERROR)
+		  {
+			  environment.getStatusHandler().reportError(  status );     
+		  }     
+
+	  }
+	  return status;
   }
   
   public void setProject( String project )
@@ -101,4 +108,8 @@
   {
     webServiceClient_ = webServiceClient;  
   }   
+  
+  public void setContext (IContext context) {
+	  context_ = context;
+  }
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientDeployCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientDeployCommand.java
index 08f589e..cb571d8 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientDeployCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientDeployCommand.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.extension;
@@ -27,7 +28,7 @@
   
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
-    if (context_.getDeploy())
+    if (context_ != null && context_.getDeploy())
     {
       //If and when there are framework specific deploy things to be done,
       //do them here.
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientDevelopCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientDevelopCommand.java
index 5c66bd3..8c03870 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientDevelopCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientDevelopCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2007 IBM 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
@@ -11,6 +11,9 @@
  * -------- -------- -----------------------------------------------------------
  * 20060131 121071   rsinha@ca.ibm.com - Rupam Kuehner     
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060516   126965 kathy@ca.ibm.com - Kathy Chan
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20070123   167487 makandre@ca.ibm.com - Andrew Mak
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.extension;
@@ -22,13 +25,13 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jst.ws.internal.consumption.command.common.CreateFacetedProjectCommand;
-import org.eclipse.jst.ws.internal.consumption.common.FacetUtils;
 import org.eclipse.jst.ws.internal.consumption.common.RequiredFacetVersion;
 import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
 import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
 import org.eclipse.wst.command.internal.env.core.context.ResourceContext;
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.common.HTTPUtility;
 import org.eclipse.wst.ws.internal.wsrt.IContext;
 import org.eclipse.wst.ws.internal.wsrt.ISelection;
 import org.eclipse.wst.ws.internal.wsrt.IWebService;
@@ -54,84 +57,81 @@
   private IWebServiceClient webServiceClient_;
   private String            j2eeLevel_;
   private ResourceContext   resourceContext_;
-  private boolean                       deploy_;
-  private boolean						test_;
-  private boolean						install_;
-  private boolean						run_;
+  private boolean           develop_;
+  private boolean           assemble_;
+  private boolean           deploy_;
+  private boolean			test_;
+  private boolean			install_;
+  private boolean			run_;
   private String            wsdlURI_;
   private Object            dataObject_;
 
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
-    IEnvironment environment = getEnvironment();
-    
-    // Split up the project and module
-    int index = module_.indexOf("/");
-    if (index!=-1){
-      project_ = module_.substring(0,index);
-      module_ = module_.substring(index+1);
-    }
+	  IStatus status = Status.OK_STATUS;
+	  
+	  if (develop_) {
+		  IEnvironment environment = getEnvironment();
 
-    if (ear_!=null && ear_.length()>0)
-    {
-      int earIndex = ear_.indexOf("/");
-      if (earIndex!=-1) {
-        earProject_ = ear_.substring(0,earIndex);
-        ear_ = ear_.substring(earIndex+1);
-      }
-    }    
-    
-    IWebServiceRuntime wsrt = WebServiceRuntimeExtensionUtils2
-        .getClientRuntime(clientRuntimeId_);
-    WebServiceClientInfo wsInfo = new WebServiceClientInfo();
+		  // Split up the project and module
+		  int index = module_.indexOf("/");
+		  if (index!=-1){
+			  project_ = module_.substring(0,index);
+			  module_ = module_.substring(index+1);
+		  }
 
-    wsInfo.setServerFactoryId(typeRuntimeServer_.getServerId());
-    wsInfo.setServerInstanceId(typeRuntimeServer_.getServerInstanceId());
-    wsInfo.setState(WebServiceState.UNKNOWN_LITERAL);
-    wsInfo.setWebServiceRuntimeId(typeRuntimeServer_.getRuntimeId());
-    wsInfo.setWsdlURL(wsdlURI_);
-    
-    webServiceClient_ = wsrt.getWebServiceClient(wsInfo);
-    WebServiceScenario scenario = WebServiceScenario.CLIENT_LITERAL;
-    context_ = new SimpleContext(true, true, deploy_, install_, run_, true, test_,
-        false, scenario, resourceContext_.isOverwriteFilesEnabled(),
-        resourceContext_.isCreateFoldersEnabled(), resourceContext_
-            .isCheckoutFilesEnabled());
+		  if (ear_!=null && ear_.length()>0)
+		  {
+			  int earIndex = ear_.indexOf("/");
+			  if (earIndex!=-1) {
+				  earProject_ = ear_.substring(0,earIndex);
+				  ear_ = ear_.substring(earIndex+1);
+			  }
+		  }    
 
-    IStatus status = Status.OK_STATUS;
+		  IWebServiceRuntime wsrt = WebServiceRuntimeExtensionUtils2
+		  .getClientRuntime(clientRuntimeId_);
+		  WebServiceClientInfo wsInfo = new WebServiceClientInfo();
 
-    // Create the client module if needed.
-    IProject project = ProjectUtilities.getProject(project_);
-    if (!project.exists())
-    {
-      boolean matches = WebServiceRuntimeExtensionUtils2.doesClientRuntimeSupportTemplate(clientRuntimeId_, moduleType_);
-      if (matches)
-      {  
-        RequiredFacetVersion[] rfv = WebServiceRuntimeExtensionUtils2.getClientRuntimeDescriptorById(clientRuntimeId_).getRequiredFacetVersions();
-        CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
-        command.setProjectName(project_);
-        command.setTemplateId(moduleType_);
-        command.setRequiredFacetVersions(rfv);
-        command.setServerFactoryId(typeRuntimeServer_.getServerId());
-        command.setServerInstanceId(typeRuntimeServer_.getServerInstanceId());
-        status = command.execute( monitor, adaptable );
-        if (status.getSeverity() == Status.ERROR)
-        {
-          environment.getStatusHandler().reportError( status );
-          return status;
-        }        
-      }            
-    }
+		  wsInfo.setServerFactoryId(typeRuntimeServer_.getServerId());
+		  wsInfo.setServerInstanceId(typeRuntimeServer_.getServerInstanceId());
+		  wsInfo.setState(WebServiceState.UNKNOWN_LITERAL);
+		  wsInfo.setWebServiceRuntimeId(typeRuntimeServer_.getRuntimeId());
+		  
+		  // check for redirection in the wsdl
+		  HTTPUtility httpUtil = new HTTPUtility();		  
+		  wsInfo.setWsdlURL(httpUtil.handleRedirect(wsdlURI_));
 
-    //The project should now exist. Add facets if needed.
-    RequiredFacetVersion[] rfvs = WebServiceRuntimeExtensionUtils2.getClientRuntimeDescriptorById(clientRuntimeId_).getRequiredFacetVersions();
-    status = FacetUtils.addRequiredFacetsToProject(project, rfvs, monitor);
-    if (status.getSeverity() == Status.ERROR)
-    {
-      environment.getStatusHandler().reportError( status );
-      return status;
-    }              
+		  webServiceClient_ = wsrt.getWebServiceClient(wsInfo);
+		  WebServiceScenario scenario = WebServiceScenario.CLIENT_LITERAL;
+		  context_ = new SimpleContext(develop_, assemble_, deploy_, install_, run_, true, test_,
+				  false, scenario, resourceContext_.isOverwriteFilesEnabled(),
+				  resourceContext_.isCreateFoldersEnabled(), resourceContext_
+				  .isCheckoutFilesEnabled());
 
+		  // Create the client module if needed.
+		  IProject project = ProjectUtilities.getProject(project_);
+		  if (!project.exists())
+		  {
+			  boolean matches = WebServiceRuntimeExtensionUtils2.doesClientRuntimeSupportTemplate(clientRuntimeId_, moduleType_);
+			  if (matches)
+			  {  
+				  RequiredFacetVersion[] rfv = WebServiceRuntimeExtensionUtils2.getClientRuntimeDescriptorById(clientRuntimeId_).getRequiredFacetVersions();
+				  CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
+				  command.setProjectName(project_);
+				  command.setTemplateId(moduleType_);
+				  command.setRequiredFacetVersions(rfv);
+				  command.setServerFactoryId(typeRuntimeServer_.getServerId());
+				  command.setServerInstanceId(typeRuntimeServer_.getServerInstanceId());
+				  status = command.execute( monitor, adaptable );
+				  if (status.getSeverity() == Status.ERROR)
+				  {
+					  environment.getStatusHandler().reportError( status );
+					  return status;
+				  }        
+			  }            
+		  }        
+	  }
     return status;
   }
   
@@ -215,6 +215,14 @@
 	ear_ = ear;  
   }
   
+  public void setDevelopClient(boolean developClient) {
+	  develop_ = developClient;
+  }	
+
+  public void setAssembleClient(boolean assembleClient) {
+	  assemble_ = assembleClient;
+  }
+
   public void setDeployClient(boolean deployClient)
   {
       deploy_ = deployClient;
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientInstallCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientInstallCommand.java
index c07be6b..970c4b1 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientInstallCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientInstallCommand.java
@@ -7,6 +7,9 @@
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.extension;
@@ -33,7 +36,7 @@
   
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {	  
-	  if (context_.getInstall())
+	  if (context_ != null && context_.getInstall())
 	  {  
 	      IEnvironment environment = getEnvironment();
 	      
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientRunCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientRunCommand.java
index bc48701..fdb38b0 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientRunCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/extension/PreClientRunCommand.java
@@ -7,6 +7,10 @@
  * 
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.extension;
@@ -30,7 +34,7 @@
   {
 	  IStatus status = Status.OK_STATUS;
 	 
-	  if (context_.getRun())
+	  if (context_ != null && context_.getRun())
 	  {
 	    IEnvironment environment = getEnvironment();   
 	    
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/plugin/WebServiceConsumptionUIPlugin.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/plugin/WebServiceConsumptionUIPlugin.java
index 73175bb..f599367 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/plugin/WebServiceConsumptionUIPlugin.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/plugin/WebServiceConsumptionUIPlugin.java
@@ -1,25 +1,29 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   115690 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060504   136118 joan@ca.ibm.com - Joan Haggarty
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.plugin;
 
-import java.net.MalformedURLException;
 import java.net.URL;
-import java.text.MessageFormat;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jst.ws.internal.consumption.ui.preferences.PersistentProjectTopologyContext;
 import org.eclipse.jst.ws.internal.consumption.ui.preferences.PersistentServerRuntimeContext;
 import org.eclipse.jst.ws.internal.consumption.ui.preferences.ProjectTopologyContext;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.wst.command.internal.env.core.common.MessageUtils;
 
 
 /**
@@ -63,66 +67,23 @@
     return instance_;
   }
 
- /**
-  * Returns the message string identified by the given key from
-  * the plugin.properties file for the appropriate locale.
-  * @param key The message key string prefixed by a "%" symbol.
-  * That is, the string passed in must be of the form "%KEY"
-  * where the plugin.properties file contains a line of the
-  * form: "KEY = value".
-  * @return The locale-specific message.
-  */
-  public static String getMessage ( String key )
-  {
-    MessageUtils msgUtils = new MessageUtils( "org.eclipse.jst.ws.consumption.ui.plugin", instance_ );
-    
-    if( key.startsWith("%"))
-    {
-      key = key.substring( 1, key.length() );
-    }
-    
-    return msgUtils.getMessage(key);
-  }
-
   /**
-  * Returns the message string identified by the given key from
-  * the plugin.properties file for the appropriate locale.
-  * Substitution sequences in the message string
-  * are replaced by the given array of substitution objects (which
-  * are most frequently strings). See java.text.MessageFormat for
-  * further details on substitution.
-  * @param key The message key string prefixed by a "%" symbol.
-  * That is, the string passed in must be of the form "%KEY"
-  * where the plugin.properties file contains a line of the
-  * form: "KEY = value".
-  * @param args The substitution values for the message
-  * as required by the message in plugin.properties and
-  * by the rules of class java.text.MessageFormat.
-  * @return The locale-specific message.
-  */
-  public static String getMessage ( String key, Object[] args )
-  {
-    return MessageFormat.format(getMessage(key),args);
-  }
-
-  /**
-  * Returns an image descriptor for the named resource
-  * as relative to the plugin install location.
-  * @return An image descriptor, possibly null.
-  */
-  public static ImageDescriptor getImageDescriptor ( String name )
-  {
-    try
-    {
-      URL installURL = instance_.getBundle().getEntry("/");;
-      URL imageURL = new URL(installURL,name);
-      return ImageDescriptor.createFromURL(imageURL);
-    }
-    catch (MalformedURLException e)
-    {
-      return null;
-    }
-  }
+   * Returns an image descriptor for the named resource
+   * as relative to the plugin install location.
+   * @return An image descriptor, possibly null.
+   */
+   public static ImageDescriptor getImageDescriptor ( String name )
+   {
+ 	try
+     {	
+     	URL imageURL = FileLocator.find(instance_.getBundle(), new Path("$nl$/"+name), null);
+     	return ImageDescriptor.createFromURL(imageURL);
+     }
+     catch (Exception e)
+     {
+       return null;
+     }
+   }
 
   public ProjectTopologyContext getProjectTopologyContext()
   {
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/preferences/ProjectTopologyPreferencePage.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/preferences/ProjectTopologyPreferencePage.java
index fe3db67..40c7bc1 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/preferences/ProjectTopologyPreferencePage.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/preferences/ProjectTopologyPreferencePage.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060227   124392 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060515   141398 cbrealey@ca.ibm.com - Chris Brealey
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.preferences;
@@ -161,13 +162,13 @@
     c.setLayout(gl);
 
     moveUp_ = new Button(c, SWT.PUSH);
-    moveUp_.setText(WSUIPluginMessages.LABEL_MOVE_UP);
+    moveUp_.setText(WSUIPluginMessages.LABEL_MOVE_UP_2);
     moveUp_.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
     moveUp_.addSelectionListener(this);
     moveUp_.setToolTipText(WSUIPluginMessages.TOOLTIP_MOVE_UP);
 
     moveDown_ = new Button(c, SWT.PUSH);
-    moveDown_.setText(WSUIPluginMessages.LABEL_MOVE_DOWN);
+    moveDown_.setText(WSUIPluginMessages.LABEL_MOVE_DOWN_2);
     moveDown_.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
     moveDown_.addSelectionListener(this);
     moveDown_.setToolTipText(WSUIPluginMessages.TOOLTIP_MOVE_DOWN);
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/preferences/ServerRuntimePreferencePage.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/preferences/ServerRuntimePreferencePage.java
index 54f647f..699f534 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/preferences/ServerRuntimePreferencePage.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/preferences/ServerRuntimePreferencePage.java
@@ -1,17 +1,22 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060728	  151723 mahutch@ca.ibm.com - Mark Hutchinson
+ * 20070109   130965 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.preferences;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 
 import org.eclipse.jface.preference.PreferencePage;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
@@ -88,6 +93,7 @@
 
 	  initializeValues();
 	  startListening();
+	  applyDialogFont(page);
 	  return page;
 	}
 
@@ -127,14 +133,17 @@
 		String selectedText = getServerSelection();
 		serverToRuntimeToJ2EE_.getList().setSelectionValue(selectedText);
 		
+		// TODO (see bug 116025) - Since the server and runtime set in serverToRuntimeToJ2EE is just the list of 
+		// all servers and all runtime (i.e. no validation checking is being done), no need to update the runtime,
+		// just keep the original value.
 		//Update the runtime -------------------------------
-		setRuntimeItems(serverToRuntimeToJ2EE_.getChoice().getList().getList());
-		if (serverToRuntimeToJ2EE_.getChoice().getList().getList().length > 0)
-		  serverToRuntimeToJ2EE_.getChoice().getList().setIndex(0);
-		
-		String newRuntimeText = serverToRuntimeToJ2EE_.getChoice().getList().getSelection();
-		if (newRuntimeText!=null && newRuntimeText.length()>0)
-			setRuntimeSelection(newRuntimeText);		
+//		setRuntimeItems(serverToRuntimeToJ2EE_.getChoice().getList().getList());
+//		if (serverToRuntimeToJ2EE_.getChoice().getList().getList().length > 0)
+//		  serverToRuntimeToJ2EE_.getChoice().getList().setIndex(0);
+//		
+//		String newRuntimeText = serverToRuntimeToJ2EE_.getChoice().getList().getSelection();
+//		if (newRuntimeText!=null && newRuntimeText.length()>0)
+//			setRuntimeSelection(newRuntimeText);		
 		
 		startListening();
 	}
@@ -239,6 +248,9 @@
 		  //runtimeLabels[i] = WebServiceServerRuntimeTypeRegistry.getInstance().getRuntimeLabel(ids[i]);
       runtimeLabels[i] = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById(ids[i]);
 		}
+
+		//sort the labels (bug 151723)
+		Arrays.sort(runtimeLabels);
 		runtime_.setItems(runtimeLabels);
 	  }
 		
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/server/StartClientWidgetFactory.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/server/StartClientWidgetFactory.java
index ba92ff8..47e5972 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/server/StartClientWidgetFactory.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/server/StartClientWidgetFactory.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.server;
@@ -29,7 +32,7 @@
   {
     IServer server = null;
     
-    if( webserviceClient_ != null  && context_.getInstall())
+    if( webserviceClient_ != null  && context_.getRun())
     {
       server = ServerCore.findServer(webserviceClient_.getWebServiceClientInfo().getServerInstanceId() );
     }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/AbstractObjectSelectionLaunchable.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/AbstractObjectSelectionLaunchable.java
index dd1d2d9..1c00cca 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/AbstractObjectSelectionLaunchable.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/AbstractObjectSelectionLaunchable.java
@@ -1,3 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
+ *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
 import org.eclipse.core.runtime.IStatus;
@@ -31,5 +44,10 @@
 		 //  subclass should override this method
 		return "";
 	}
+	
+	public boolean validate(String s) {
+		// subclass should override this method
+		return true;
+	}  
 
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/AddHandlerDialog.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/AddHandlerDialog.java
index 11b25e1..045aa36 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/AddHandlerDialog.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/AddHandlerDialog.java
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004,2006 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060404 134913   sengpl@ca.ibm.com - Seng Phung-Lu       
+ * 20060529   143518 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -67,6 +68,7 @@
   public AddHandlerDialog( Shell shell, boolean isClientHandler)
   {
     super(shell);
+    setShellStyle(getShellStyle() | SWT.RESIZE);
     isClient_ = isClientHandler;
   }
 
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/CheckWSDLValidationCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/CheckWSDLValidationCommand.java
index 67b1199..3962d82 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/CheckWSDLValidationCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/CheckWSDLValidationCommand.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060420   120714 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -51,8 +54,9 @@
 					  existingValidateWSDLJob.cancel();
 					  return Status.OK_STATUS;
 				  } else {
-					  // wait for WSDL validation
-					  return StatusUtils.errorStatus( ConsumptionUIMessages.WAIT_FOR_WSDL );
+					  // Setting the error string to an empty string so that the command engine would not
+					  // pop-up another error message when the user decided to wait for WSDL validation.
+					  return StatusUtils.errorStatus( "" );
 				  }
 			  }
 		  }
@@ -99,4 +103,4 @@
 	}
   
 
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientHandlersWidgetOutputCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientHandlersWidgetOutputCommand.java
index 64ce06b..4cee18a 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientHandlersWidgetOutputCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientHandlersWidgetOutputCommand.java
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060404 134913   sengpl@ca.ibm.com - Seng Phung-Lu  
+ * 20060517   142339 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -65,6 +66,7 @@
           // add new handler to internal model if it doesn't already exist
           for (int i = 0; i < handlerServiceRefHolder_.length; i++) {
             handlerServiceRefHolder_[i].addHandlerToServiceRef();
+            saveEditModel(handlerServiceRefHolder_[i].getProject());
           }
           
         }
@@ -127,11 +129,11 @@
           // add handlers to ports
           addHandlersToServiceRefs();
         }
+        
+        // save the artifact edit model
+        saveEditModel();
       }
       
-      // save the artifact edit model
-      saveEditModel();
-      
     }
     catch (Exception e) 
     {
@@ -162,6 +164,11 @@
       }
   }
   
+  private void saveEditModel(IProject project){
+	  project_ = project;
+	  saveEditModel();
+  }
+  
   private void addHandlersToServiceRefs() {
     try {
       Enumeration refsToHandlers = newWSServiceRefsToHandlersTable_.keys();
@@ -197,4 +204,4 @@
     this.isMultipleSelection_ = isMulitpleSelection;
   }
 
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidget.java
index a827a3e..24dd038 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidget.java
@@ -12,6 +12,20 @@
  * 20060407   135415 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060417   136390/136159 joan@ca.ibm.com - Joan Haggarty
  * 20060413   135581 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
+ * 20060424   138052 kathy@ca.ibm.com - Kathy Chan
+ * 20060425   137831 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060509   119296 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060612   145081 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060725   149351 makandre@ca.ibm.com - Andrew Mak, Deleted service definition keeps reappearing
+ * 20060803   152486 makandre@ca.ibm.com - Andrew Mak, Typing WSDL in Service definition field is very slow
+ * 20060817   140017 makandre@ca.ibm.com - Andrew Mak, longer project or server/runtime strings do not resize wizard
+ * 20060825   135570 makandre@ca.ibm.com - Andrew Mak, Service implementation URL not displayed properly on first page
+ * 20060829   155441 makandre@ca.ibm.com - Andrew Mak, web service wizard hangs during resize
+ * 20060907   156211 makandre@ca.ibm.com - Andrew Mak, Selecting service definition invalidated project config when creating web service java client
+ * 20061212   159911 makandre@ca.ibm.com - Andrew Mak, changing service definition resets some configuration fields
+ * 20060125   159911 kathy@ca.ibm.com - Kathy Chan, Remove unused method and imports
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -19,23 +33,28 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jst.ws.internal.consumption.common.WSDLParserFactory;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
 import org.eclipse.jst.ws.internal.consumption.ui.command.data.EclipseIPath2URLStringTransformer;
 import org.eclipse.jst.ws.internal.consumption.ui.common.ValidationUtils;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.ClientRuntimeSelectionWidgetDefaultingCommand;
+import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.Timer;
 import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
 import org.eclipse.jst.ws.internal.plugin.WebServicePlugin;
 import org.eclipse.jst.ws.internal.ui.common.UIUtils;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.internal.Workbench;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.command.internal.env.core.context.ResourceContext;
 import org.eclipse.wst.command.internal.env.ui.widgets.PageInfo;
@@ -46,7 +65,7 @@
 import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
 
 
-public class ClientWizardWidget extends SimpleWidgetDataContributor
+public class ClientWizardWidget extends SimpleWidgetDataContributor implements Runnable
 {  
   private WebServiceClientTypeWidget clientWidget_;
   private Button overwriteButton_;
@@ -55,9 +74,6 @@
   private Text serviceImpl_;
   private Button browseButton_;
   private WSDLSelectionDialog wsdlDialog_;
-  private String clientRuntimeId_ ;
-  private String clientEarProjectName_;
-  private boolean clientNeedEAR_;
   private String componentName_;
   private IProject project_;
   private String webServiceURI_;
@@ -65,8 +81,13 @@
   private ResourceContext resourceContext_;
   
   private Listener statusListener_;
+  private ModifyListener objectModifyListener_ ;
   private int validationState_;
+  private boolean validObjectSelection_ = true;
+  private WSDLSelectionWidgetWrapper wsdlValidatorWidget_;
 
+  private Timer timer_ = null;
+  
   /* CONTEXT_ID WSWSCEN0020 for the Service Implemenation text field of the Scenario Page */
 	 private String INFOPOP_WSWSCEN_TEXT_SERVICE_IMPL = "WSWSCEN0020";
 
@@ -78,6 +99,18 @@
   /* CONTEXT_ID WSWSCEN0001 for the Scenario Page */
   private String INFOPOP_WSWSCEN_PAGE = "WSWSCEN0001";
   
+  /**
+   * Run this ClientWizardWidget, which validates the entry field values. 
+   */
+  public void run() {
+	  validationState_ = ValidationUtils.VALIDATE_ALL;
+	  statusListener_.handleEvent(null);
+	  if (validObjectSelection_)
+		  callObjectTransformation(project_, 
+				  wsdlValidatorWidget_.getComponentName(), 
+				  wsdlValidatorWidget_.getWsdlURI());	  
+  }
+  
   public WidgetDataEvents addControls( Composite parent, Listener statusListener)
   {
     String       pluginId = "org.eclipse.jst.ws.consumption.ui";
@@ -90,11 +123,26 @@
   	Composite typeComposite = utils.createComposite(parent, 3);
 	serviceImpl_ = utils.createText(typeComposite, ConsumptionUIMessages.LABEL_WEBSERVICEDEF, 
 			ConsumptionUIMessages.TOOLTIP_WSWSCEN_TEXT_IMPL,
-			INFOPOP_WSWSCEN_TEXT_SERVICE_IMPL, SWT.LEFT | SWT.BORDER | SWT.READ_ONLY);
+			INFOPOP_WSWSCEN_TEXT_SERVICE_IMPL, SWT.LEFT | SWT.BORDER );
+	
+	objectModifyListener_ = new ModifyListener(){
+		public void modifyText(ModifyEvent e) {
+			if (serviceImpl_.getText().indexOf(':') > 0) {
+		        timer_ = Timer.newInstance(timer_, Display.getCurrent(), ClientWizardWidget.this);
+		        timer_.startTimer();
+			}
+		    else
+		        run();
+		}
+	};
+	
+	serviceImpl_.addModifyListener(objectModifyListener_);
+	
 	browseButton_ = utils.createPushButton(typeComposite,
 			ConsumptionUIMessages.BUTTON_BROWSE, ConsumptionUIMessages.TOOLTIP_WSWSCEN_BUTTON_BROWSE_IMPL, null);
 	
-    wsdlDialog_ = new WSDLSelectionDialog(Workbench.getInstance().getActiveWorkbenchWindow().getShell(), 
+	IWorkbench workbench = PlatformUI.getWorkbench();
+    wsdlDialog_ = new WSDLSelectionDialog(workbench.getActiveWorkbenchWindow().getShell(), 
 		  						new PageInfo(ConsumptionUIMessages.DIALOG_TITILE_SERVICE_IMPL_SELECTION, "", 
 		                        new WidgetContributorFactory()
 		  						{	
@@ -107,7 +155,7 @@
 	
 	utils.createHorizontalSeparator(parent, 1);
 	
-	Composite clientComposite = utils.createComposite( parent, 1 );
+	Composite clientComposite = utils.createComposite( parent, 1, 0, 0 );
 	
     clientWidget_ = new WebServiceClientTypeWidget(true);
     clientWidget_.addControls(clientComposite , statusListener );
@@ -154,12 +202,6 @@
     clientWidget_.setTypeRuntimeServer( ids );
   }
   
-  public void setClientRuntimeId(String id)
-  {
-	  clientRuntimeId_ = id;
-	  clientWidget_.setClientRuntimeId(id);
-  }
-  
   public void setClientProjectName(String name)
   {
 	  clientWidget_.setClientProjectName(name);
@@ -167,7 +209,6 @@
   
   public void setClientEarProjectName(String name)
   {
-	  clientEarProjectName_ = name;
 	  clientWidget_.setClientEarProjectName(name);
   }
   
@@ -178,18 +219,17 @@
   
   public void setClientNeedEAR(boolean b)
   {
-	  clientNeedEAR_ = b;
 	  clientWidget_.setClientNeedEAR(b);
   }
   
   public String getClientRuntimeId()
   {
-	  return clientRuntimeId_;
+	  return clientWidget_.getClientRuntimeId();
   }
   
   public String getClientEarProjectName()
   {
-	  return clientEarProjectName_;
+	  return clientWidget_.getClientEarProjectName();
   }
   
   public String getClientProjectName()
@@ -204,33 +244,27 @@
   
   public boolean getClientNeedEAR()
   {
-	  return clientNeedEAR_;
+	  return clientWidget_.getClientNeedEAR();
   }
   
  public void setWebServiceURI(String uri)
  {
      webServiceURI_ = uri;    
-     wsdlDialog_.setWebServiceURI(uri);
-     String wsdlDialogDisplayableString = wsdlDialog_.getDisplayableSelectionString();
-     if (uri != null && uri.length() > 0)
-     {
-       if (wsdlDialogDisplayableString != null && wsdlDialogDisplayableString.length() > 0)
-       {
-    	   serviceImpl_.setText(wsdlDialogDisplayableString);     	 
-       }
-       else 
-       {
-    	   //This else clause is to handle the call to the enclosing method
-    	   //when the page first comes up since wsdlDialog_ will not have been
-    	   //properly initialized with a WSDLSelectionWidgetWrapper containing
-    	   //a non-null WSDLSelectionWidget.
-    	   EclipseIPath2URLStringTransformer transformer = new EclipseIPath2URLStringTransformer();
-    	   webServiceURI_ = (String)transformer.transform(uri);
-    	   serviceImpl_.setText(uri);    	 
-       }
-     }
-     
  }
+ 
+public void internalize() {		
+
+	if (webServiceURI_ == null || webServiceURI_.length() == 0)
+		return;
+
+	serviceImpl_.removeModifyListener(objectModifyListener_);
+	serviceImpl_.setText(webServiceURI_);    	 
+	serviceImpl_.addModifyListener(objectModifyListener_);
+		
+	EclipseIPath2URLStringTransformer transformer = new EclipseIPath2URLStringTransformer();
+	webServiceURI_ = (String) transformer.transform(webServiceURI_);    
+}
+ 
  public void setProject(IProject project)
  {
      project_ = project;
@@ -262,13 +296,13 @@
   
    public WebServicesParser getWebServicesParser()
 	{
-		return parser_;
+		return WSDLParserFactory.getWSDLParser();
 	}
 	
 	public void setWebServicesParser(WebServicesParser parser)
 	{
-		parser_ = parser;	
-		clientWidget_.setWebServicesParser(parser);
+		parser_ = getWebServicesParser();
+		clientWidget_.setWebServicesParser(parser_);
 	}
    
   public TypeRuntimeServer getClientTypeRuntimeServer()
@@ -306,6 +340,38 @@
 	  clientWidget_.setClientGeneration(value);
   }
   
+  public void setDevelopClient(boolean develop) {
+		clientWidget_.setDevelopClient( develop );
+	}
+
+	public boolean getDevelopClient() {		
+		return clientWidget_.getDevelopClient();
+	}
+	
+	public void setAssembleClient(boolean assemble) {
+		clientWidget_.setAssembleClient( assemble );
+	}
+
+	public boolean getAssembleClient() {		
+		return clientWidget_.getAssembleClient();
+	}
+	
+	public void setDeployClient(boolean deploy) {
+		clientWidget_.setDeployClient( deploy );
+	}
+
+	public boolean getDeployClient() {		
+		return clientWidget_.getDeployClient();
+	}
+	
+	public void setStartClient(Boolean start) {
+		clientWidget_.setStartClient( start );
+	}
+
+	public Boolean getStartClient() {	
+		return clientWidget_.getStartClient();
+	}
+  
   public Boolean getMonitorService()
   {
     return new Boolean(monitorService_.getSelection());
@@ -316,67 +382,42 @@
     monitorService_.setSelection(value.booleanValue());
   }
 
-  private void refreshClientRuntimeSelection()
-	{		
-		//new up ServerRuntimeSelectionWidgetDefaultingCommand
-		ClientRuntimeSelectionWidgetDefaultingCommand clientRTDefaultCmd = new ClientRuntimeSelectionWidgetDefaultingCommand();
-		
-		// jvh - don't seem to need these??
-	/*	clientRTDefaultCmd.setClientInitialSelection();  //selected in object selection
-		clientRTDefaultCmd.setInitialInitialSelection();  //original selection...*/		
-		clientRTDefaultCmd.setResourceContext(resourceContext_);
-		clientRTDefaultCmd.setClientEarProjectName(getClientEarProjectName());
-		clientRTDefaultCmd.setClientInitialProject(getProject());  
-        clientRTDefaultCmd.setClientTypeRuntimeServer(getClientTypeRuntimeServer());
-		clientRTDefaultCmd.setTestService(getTestService().booleanValue());
-		clientRTDefaultCmd.setWebServicesParser(getWebServicesParser());
-		clientRTDefaultCmd.setWsdlURI(getWsdlURI());
-		clientRTDefaultCmd.execute(null, null);
-		
-		clientRTDefaultCmd.execute(null, null);
-		  
-		setClientComponentType(clientRTDefaultCmd.getClientComponentType());
-		setClientEarProjectName(clientRTDefaultCmd.getClientEarProjectName());
-		setClientNeedEAR(clientRTDefaultCmd.getClientNeedEAR());
-		setClientProjectName(clientRTDefaultCmd.getClientProjectName());
-		setClientRuntimeId(clientRTDefaultCmd.getClientRuntimeId());
-		setClientTypeRuntimeServer(clientRTDefaultCmd.getClientTypeRuntimeServer());
-		
-		//setServiceRuntimeId(clientRTDefaultCmd.getXXX()));
-		  
-	}
-  
-	public IStatus getStatus() {
-		IStatus status = Status.OK_STATUS;
+  public IStatus getStatus() {
+				
+		validObjectSelection_ = false;	// assume false at first
 
-		try {
-			IStatus missingFieldStatus = checkMissingFieldStatus();
-			if (missingFieldStatus.getSeverity() == IStatus.ERROR) {
-				return missingFieldStatus;
-			}
-
-			IStatus possibleErrorStatus = checkErrorStatus();
-			if (possibleErrorStatus.getSeverity() == IStatus.ERROR) {
-				return possibleErrorStatus;
-			}
-
-			IStatus possibleWarningStatus = checkWarningStatus();
-			if (possibleWarningStatus.getSeverity() == IStatus.WARNING) {
-				return possibleWarningStatus;
-			}
-		} finally {
-			// clear the validation state.
-			validationState_ = ValidationUtils.VALIDATE_NONE;
-			clientWidget_.setValidationState(ValidationUtils.VALIDATE_NONE);
+		IStatus missingFieldStatus = checkMissingFieldStatus();
+		if (missingFieldStatus.getSeverity() == IStatus.ERROR) {
+			return missingFieldStatus;
 		}
-		return status;
+
+		IStatus invalidServiceImplStatus = checkServiceImplTextStatus();
+		if (invalidServiceImplStatus.getSeverity() == IStatus.ERROR) {
+			return invalidServiceImplStatus;
+		}
+
+		IStatus possibleErrorStatus = checkErrorStatus();
+		if (possibleErrorStatus.getSeverity() == IStatus.ERROR) {
+			return possibleErrorStatus;
+		}
+
+		IStatus possibleWarningStatus = checkWarningStatus();
+		if (possibleWarningStatus.getSeverity() == IStatus.WARNING) {
+			return possibleWarningStatus;
+		}
+
+		// if no errors or warnings were found, clear the validation state.
+		validationState_ = ValidationUtils.VALIDATE_NONE;
+		clientWidget_.setValidationState(ValidationUtils.VALIDATE_NONE);
+
+		return Status.OK_STATUS;
 	}
 	
 	private IStatus checkMissingFieldStatus() {
 
 		if (validationState_ == ValidationUtils.VALIDATE_ALL) {
 			if (serviceImpl_.getText().trim().length() == 0) {
-				return StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_NO_OBJECT_SELECTION, new String[]{ConsumptionUIMessages.LABEL_WEBSERVICEIMPL}));
+				return StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_NO_SERVICE_SELECTION, new String[]{ConsumptionUIMessages.LABEL_WEBSERVICEIMPL}));
 			}
 		}
 		
@@ -405,6 +446,47 @@
 		return Status.OK_STATUS;
 	}	
 	
+	/*call validation code in the object selection widget to ensure
+	 any modifications to the serviceImpl_ field are valid*/
+	private IStatus checkServiceImplTextStatus() {
+		
+		String fieldText = serviceImpl_.getText().trim();
+
+		if (wsdlValidatorWidget_ == null)
+			wsdlValidatorWidget_ = new WSDLSelectionWidgetWrapper();
+		
+		validObjectSelection_ = wsdlValidatorWidget_.validate(fieldText);
+				
+		if (!validObjectSelection_)
+		{
+			return StatusUtils.errorStatus(ConsumptionUIMessages.MSG_INVALID_SERVICE_DEF);			
+		}		
+		
+		return Status.OK_STATUS;
+	}
+	
+	private void callObjectTransformation(IProject project, String componentName,
+			String wsdlURI)
+	{
+		   WSDLSelectionOutputCommand wsdlOutputCommand = new WSDLSelectionOutputCommand();
+		   wsdlOutputCommand.setComponentName(componentName);
+		   wsdlOutputCommand.setProject(project);
+		   wsdlOutputCommand.setWsdlURI(wsdlURI);
+		   wsdlOutputCommand.setTestService(getTestService().booleanValue());
+		   wsdlOutputCommand.setWebServicesParser(getWebServicesParser());
+		
+           wsdlOutputCommand.execute(null, null);
+      
+           setComponentName(wsdlOutputCommand.getComponentName());
+           setProject(wsdlOutputCommand.getProject());
+           setWebServicesParser(wsdlOutputCommand.getWebServicesParser());
+           setWebServiceURI(wsdlOutputCommand.getWsdlURI());
+           
+           // bug 159911: our starting point is a wsdl, we should not need to
+           // refresh the runtime everytime the user specify a new wsdl path
+           // refreshClientRuntimeSelection();
+     }
+	
   private class WSDLBrowseListener implements SelectionListener
   {
 	  public void widgetDefaultSelected(SelectionEvent e) {
@@ -415,30 +497,20 @@
 		  
 		   wsdlDialog_.setComponentName(getComponentName());
 		   wsdlDialog_.setProject(getProject());
-		   wsdlDialog_.setWebServiceURI(getWebServiceURI());		   
+		   wsdlDialog_.setWebServiceURI( serviceImpl_.getText() );		
 		   
 		   int result = wsdlDialog_.open();
 		   
 		   if (result == Dialog.OK)
 		   {
+			   serviceImpl_.removeModifyListener(objectModifyListener_);
 			   serviceImpl_.setText(wsdlDialog_.getDisplayableSelectionString());
+			   serviceImpl_.addModifyListener(objectModifyListener_);
 			   
 			   // call WSDLSelectionOutputCommand to carry out any transformation on the objectSelection
-			   WSDLSelectionOutputCommand wsdlOutputCommand = new WSDLSelectionOutputCommand();
-			   wsdlOutputCommand.setComponentName(wsdlDialog_.getComponentName());
-			   wsdlOutputCommand.setProject(wsdlDialog_.getProject());
-			   wsdlOutputCommand.setWsdlURI(wsdlDialog_.getWebServiceURI());
-			   wsdlOutputCommand.setTestService(getTestService().booleanValue());
-			   wsdlOutputCommand.setWebServicesParser(getWebServicesParser());
-			
-	           wsdlOutputCommand.execute(null, null);
-	      
-	           setComponentName(wsdlOutputCommand.getComponentName());
-	           setProject(wsdlOutputCommand.getProject());
-	           setWebServicesParser(wsdlOutputCommand.getWebServicesParser());
-	           setWebServiceURI(wsdlOutputCommand.getWsdlURI());
-	       
-		       refreshClientRuntimeSelection();   
+	           callObjectTransformation(project_,
+	        			wsdlDialog_.getComponentName(), wsdlDialog_.getWebServiceURI());
+	           
 		       validationState_ = ValidationUtils.VALIDATE_ALL;
 		       clientWidget_.setValidationState(ValidationUtils.VALIDATE_ALL);
 		       statusListener_.handleEvent(null); //validate the page
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidgetDefaultingCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidgetDefaultingCommand.java
index 620c49f..6d8aef4 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidgetDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidgetDefaultingCommand.java
@@ -10,6 +10,10 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060728   150560 kathy@ca.ibm.com - Kathy Chan
+ * 20060728   151078 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -28,6 +32,26 @@
 
 public class ClientWizardWidgetDefaultingCommand extends AbstractDataModelOperation
 {    
+	private int clientGeneration_;
+	private boolean developClient_;
+	private boolean assembleClient_;
+	private boolean deployClient_;
+	private boolean installClient_;
+	private boolean startClient_;
+	private boolean testClient_;
+	private boolean clientOnly_ = false;
+	  
+	public ClientWizardWidgetDefaultingCommand() {
+	}
+	
+	
+	/**
+	 * @param clientOnly  Set to true for if called from ClientWidgetWizard
+	 */
+	public ClientWizardWidgetDefaultingCommand(boolean clientOnly) {
+		clientOnly_ = clientOnly;
+	}
+	
   public Boolean getTestService()
   {
     return new Boolean( getScenarioContext().getTestWebService() );
@@ -38,14 +62,19 @@
     return new Boolean( getScenarioContext().getMonitorWebService());
   }
   
-  public Boolean getInstallClient()
+  public boolean getInstallClient()
   {
-    return new Boolean( getScenarioContext().getInstallClient() );  
+    return installClient_; 
+  }
+  
+  public boolean getRunTestClient()
+  {
+    return getScenarioContext().isLaunchSampleEnabled() ;  
   }
   
   public int getClientGeneration()
   {
-	  return getScenarioContext().getGenerateClient();
+	  return clientGeneration_;
   }
 
   public ResourceContext getResourceContext()
@@ -88,6 +117,46 @@
 
   public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
   {
-    return Status.OK_STATUS;
+	  defaultClientScale();
+	  return Status.OK_STATUS;
   }
+  
+  protected void defaultClientScale() {
+	  clientGeneration_ = getScenarioContext().getGenerateClient();
+	  
+	  if (clientOnly_ && clientGeneration_ == ScenarioContext.WS_NONE) {
+		  developClient_ = true;
+		  assembleClient_ = true;
+		  deployClient_ = true;
+		  clientGeneration_ = ScenarioContext.WS_DEPLOY;
+	  } else {
+		  developClient_ = clientGeneration_ <= ScenarioContext.WS_DEVELOP;
+		  assembleClient_ = clientGeneration_ <= ScenarioContext.WS_ASSEMBLE;
+		  deployClient_ = clientGeneration_ <= ScenarioContext.WS_DEPLOY;
+	  }
+	  installClient_ = clientGeneration_ <= ScenarioContext.WS_INSTALL;
+	  startClient_ = clientGeneration_ <= ScenarioContext.WS_START;
+	  testClient_ = clientGeneration_ <= ScenarioContext.WS_TEST;
+  }
+  
+  public boolean getDevelopClient() {
+	  return developClient_;
+  }
+  
+  public boolean getAssembleClient() {
+	  return assembleClient_;
+  }
+  
+  public boolean getDeployClient() {
+	  return deployClient_;
+  }
+  
+  public boolean getStartClient() {
+	  return startClient_;
+  }
+  
+  public boolean getTestClient() {
+	  return testClient_;
+  }
+  
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidgetOutputCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidgetOutputCommand.java
index 655dfa2..35511e1 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidgetOutputCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ClientWizardWidgetOutputCommand.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -23,7 +27,7 @@
 
 public class ClientWizardWidgetOutputCommand extends AbstractDataModelOperation
 {    
-  private boolean           testService_;
+  private boolean testService_;
   private boolean monitorService;
   private ResourceContext   resourceContext_;
   private TypeRuntimeServer clientIds_;
@@ -32,6 +36,12 @@
   private String webServiceURI_;
   private IProject project_;
   private String componentName_;
+  private boolean runTestClient_;
+  private boolean developClient_;
+  private boolean assembleClient_;
+  private boolean deployClient_;
+  private boolean startClient_;
+  private boolean testClient_; 
   
   public boolean getTestService()
   {
@@ -43,6 +53,16 @@
     testService_ = testService;  
   }
   
+  public boolean getRunTestClient()
+  {
+    return runTestClient_;
+  }
+
+  public void setRunTestClient( boolean runTestClient )
+  {
+    runTestClient_ = runTestClient;  
+  }
+  
   public void setInstallClient( boolean installClient)
   {
     installClient_ = installClient;  
@@ -53,6 +73,45 @@
 	return installClient_;  
   }
   
+  public boolean getDevelopClient() {
+		return developClient_;
+	}
+
+	public void setDevelopClient(boolean developClient) {
+		this.developClient_ = developClient;
+	}	
+	
+	public boolean getAssembleClient() {
+		return assembleClient_;
+	}
+
+	public void setAssembleClient(boolean assembleClient) {
+		this.assembleClient_ = assembleClient;
+	}
+	
+	public boolean getDeployClient() {
+		return deployClient_;
+	}
+
+	public void setDeployClient(boolean deployClient) {
+		this.deployClient_ = deployClient;
+	}
+	
+	public boolean getStartClient() {
+		return startClient_;
+	}
+
+	public void setStartClient(boolean startClient) {
+		this.startClient_ = startClient;
+	}
+	
+	public boolean getTestClient() {
+		return testClient_;
+	}
+
+	public void setTestClient(boolean testClient) {
+		this.testClient_ = testClient;
+	}
   public boolean getMonitorService()
   {
     return monitorService;
@@ -118,4 +177,4 @@
   {
       return componentName_ ;
   }
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ConfigClientHandlersTableWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ConfigClientHandlersTableWidget.java
index 75b6ec7..c615cce 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ConfigClientHandlersTableWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ConfigClientHandlersTableWidget.java
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060404 134913   sengpl@ca.ibm.com - Seng Phung-Lu       
+ * 20060426   135614 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -130,7 +131,7 @@
             | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_VERTICAL | GridData.FILL_VERTICAL);
     handlersComp.setLayoutData(griddata);
     handlersComp.setSize(130, 600);
-
+    
     Composite buttonsComp = uiUtils.createComposite(displayComp, 1);
     griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
     buttonsComp.setLayoutData(griddata);
@@ -152,8 +153,8 @@
     wsLabel.setLayoutData(gd);
 
     Button moveUpButton = uiUtils.createPushButton(buttonsComp, ConsumptionUIMessages.LABEL_BUTTON_MOVE_UP, null, null);
-    griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
-    moveUpButton.setLayoutData(griddata);
+    GridData muGriddata = new GridData();
+    Point musize = moveUpButton.computeSize(SWT.DEFAULT, SWT.DEFAULT);
     moveUpButton.addSelectionListener(new SelectionListener() {
 
       public void widgetSelected(SelectionEvent event) {
@@ -165,8 +166,8 @@
     });
 
     Button moveDownButton = uiUtils.createPushButton(buttonsComp, ConsumptionUIMessages.LABEL_BUTTON_MOVE_DOWN, null, null);
-    griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
-    moveDownButton.setLayoutData(griddata);
+    GridData mdGriddata = new GridData();
+    Point mdsize = moveDownButton.computeSize(SWT.DEFAULT, SWT.DEFAULT);
     moveDownButton.addSelectionListener(new SelectionListener() {
 
       public void widgetSelected(SelectionEvent event) {
@@ -184,8 +185,8 @@
     wsLabel.setLayoutData(gd);
 
     addButton_ = uiUtils.createPushButton(buttonsComp, ConsumptionUIMessages.LABEL_BUTTON_ADD, null, null);
-    griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
-    addButton_.setLayoutData(griddata);
+    GridData addGriddata = new GridData(); 
+    Point addSize = addButton_.computeSize(SWT.DEFAULT, SWT.DEFAULT);
     addButton_.addSelectionListener(new SelectionListener() {
 
       public void widgetSelected(SelectionEvent event) {
@@ -197,8 +198,8 @@
     });
 
     removeButton_ = uiUtils.createPushButton(buttonsComp, ConsumptionUIMessages.LABEL_BUTTON_REMOVE, null, null);
-    griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
-    removeButton_.setLayoutData(griddata);
+    GridData remGriddata = new GridData();
+    Point remSize = removeButton_.computeSize(SWT.DEFAULT, SWT.DEFAULT);
     removeButton_.addSelectionListener(new SelectionListener() {
 
       public void widgetSelected(SelectionEvent event) {
@@ -210,6 +211,23 @@
     });
     enableRemove(false);
 
+    // set the width to the max of the button labels
+    int widthHint = 0;
+    int[] sizes = new int[]{musize.x, mdsize.x, addSize.x, remSize.x, 100};
+    for(int j = 0; j < sizes.length; j++) {
+    	if (sizes[j] > widthHint)
+    	widthHint = sizes[j];
+    }
+    muGriddata.widthHint = widthHint;
+    mdGriddata.widthHint = widthHint;
+    addGriddata.widthHint = widthHint;
+    remGriddata.widthHint = widthHint;
+    
+    moveUpButton.setLayoutData(muGriddata);
+    moveDownButton.setLayoutData(mdGriddata);
+    addButton_.setLayoutData(addGriddata);
+    removeButton_.setLayoutData(remGriddata);
+    
     // table stuff
     String[] columns_ = new String[] { ConsumptionUIMessages.LABEL_HANDLER_NAME, ConsumptionUIMessages.LABLE_HANDLER_CLASS};
 
@@ -272,7 +290,7 @@
         enableRemove(true);
       }
     });
-
+   
     // gen skeleton check box
     genSkeletonRadioButton_ = uiUtils.createCheckbox(parent_, ConsumptionUIMessages.LABEL_BUTTON_GEN_SKELETON, ConsumptionUIMessages.TOOLTIP_BUTTON_GEN_SKELETON, INFOPOP_HDLR_GEN_SKELETON);
     genSkeletonRadioButton_.addSelectionListener(new SelectionAdapter() {
@@ -347,7 +365,7 @@
           else
             webServiceRefCombo_.select(0);
         }
-    
+        
         // set handler table
         HandlerServiceRefHolder hsrh = HandlerServiceRefHelper.getForServiceRefName(handlerServiceRefHolder_, webServiceRefCombo_.getText());
         if (hsrh != null) {
@@ -360,6 +378,7 @@
         // set output folder
         setSourceOutputLocation();
       }
+      parent_.getShell().setSize(530, 650);
     }
     catch (Exception e) {
       e.printStackTrace();
@@ -381,7 +400,7 @@
 
   protected void handleAddButtonSelected(SelectionEvent event) {
 
-    AddHandlerDialog dialog = dialog = new AddHandlerDialog(parent_.getShell(), true);
+    AddHandlerDialog dialog = new AddHandlerDialog(parent_.getShell(), true);
     dialog.create();
     dialog.getShell().setSize( 500, 200 );
     
@@ -615,4 +634,4 @@
     return this.handlerServiceRefHolder_;
   }
   
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ConfigServiceHandlersTableWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ConfigServiceHandlersTableWidget.java
index 32a9d2f..37b15ea 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ConfigServiceHandlersTableWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ConfigServiceHandlersTableWidget.java
@@ -1,15 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060404 134913   sengpl@ca.ibm.com - Seng Phung-Lu       
+ * 20060426   135614 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060529   143518 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -118,13 +120,10 @@
 
     parent_ = parent;
 
-    int maxWidth = 130;
-    int maxHeight = 600;
-
     // Web service description composite (combo/text to be created later)
     webServiceDescComp_ = uiUtils.createComposite(parent_, 2);
     
-    Composite displayComp = new Composite(parent, SWT.NONE);
+    Composite displayComp = new Composite(parent_, SWT.NONE);
 
     GridLayout gridlayout = new GridLayout(2, false);
     displayComp.setLayout(gridlayout);
@@ -134,8 +133,8 @@
     GridData griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING
         | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_VERTICAL | GridData.FILL_VERTICAL);
     handlersComp.setLayoutData(griddata);
-    handlersComp.setSize(maxWidth, maxHeight);
-
+    handlersComp.setSize(130, 600);
+    
     Composite buttonsComp = uiUtils.createComposite(displayComp, 1);
     griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
     buttonsComp.setLayoutData(griddata);
@@ -145,7 +144,7 @@
     GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
     gd.horizontalSpan = 2;
     handlersText.setLayoutData(gd);
-
+    
     handlersTable_ = uiUtils.createTable(handlersComp, ConsumptionUIMessages.TOOLTIP_EDIT_WS_HANDLERS, INFOPOP_HDLR_WS_HANDLERS, SWT.MULTI
         | SWT.FULL_SELECTION | SWT.BORDER);
     handlersTable_.setHeaderVisible(true);
@@ -158,8 +157,8 @@
     wsLabel.setLayoutData(gd);
 
     Button moveUpButton = uiUtils.createPushButton(buttonsComp, ConsumptionUIMessages.LABEL_BUTTON_MOVE_UP, null, null);
-    griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
-    moveUpButton.setLayoutData(griddata);
+    GridData muGriddata = new GridData();
+    Point musize = moveUpButton.computeSize(SWT.DEFAULT, SWT.DEFAULT);
     moveUpButton.addSelectionListener(new SelectionListener() {
 
       public void widgetSelected(SelectionEvent event) {
@@ -171,8 +170,8 @@
     });
 
     Button moveDownButton = uiUtils.createPushButton(buttonsComp, ConsumptionUIMessages.LABEL_BUTTON_MOVE_DOWN, null, null);
-    griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
-    moveDownButton.setLayoutData(griddata);
+    GridData mdGriddata = new GridData();
+    Point mdsize = moveDownButton.computeSize(SWT.DEFAULT, SWT.DEFAULT);
     moveDownButton.addSelectionListener(new SelectionListener() {
 
       public void widgetSelected(SelectionEvent event) {
@@ -190,8 +189,8 @@
     wsLabel.setLayoutData(gd);
 
     addButton_ = uiUtils.createPushButton(buttonsComp, ConsumptionUIMessages.LABEL_BUTTON_ADD, null, null);
-    griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
-    addButton_.setLayoutData(griddata);
+    GridData addGriddata = new GridData(); 
+    Point addSize = addButton_.computeSize(SWT.DEFAULT, SWT.DEFAULT);
     addButton_.addSelectionListener(new SelectionListener() {
 
       public void widgetSelected(SelectionEvent event) {
@@ -203,8 +202,8 @@
     });
 
     removeButton_ = uiUtils.createPushButton(buttonsComp, ConsumptionUIMessages.LABEL_BUTTON_REMOVE, null, null);
-    griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
-    removeButton_.setLayoutData(griddata);
+    GridData remGriddata = new GridData();
+    Point remSize = removeButton_.computeSize(SWT.DEFAULT, SWT.DEFAULT);
     removeButton_.addSelectionListener(new SelectionListener() {
 
       public void widgetSelected(SelectionEvent event) {
@@ -216,6 +215,22 @@
     });
     enableRemove(false);
 
+    int widthHint = 0;
+    int[] sizes = new int[]{musize.x, mdsize.x, addSize.x, remSize.x, 100};
+    for(int j = 0; j < sizes.length; j++) {
+    	if (sizes[j] > widthHint)
+    	widthHint = sizes[j];
+    }
+    muGriddata.widthHint = widthHint;
+    mdGriddata.widthHint = widthHint;
+    addGriddata.widthHint = widthHint;
+    remGriddata.widthHint = widthHint;
+    
+    moveUpButton.setLayoutData(muGriddata);
+    moveDownButton.setLayoutData(mdGriddata);
+    addButton_.setLayoutData(addGriddata);
+    removeButton_.setLayoutData(remGriddata);
+    
     // table stuff here
     String[] columns_ = new String[] { ConsumptionUIMessages.LABEL_HANDLER_NAME, ConsumptionUIMessages.LABLE_HANDLER_CLASS,
         ConsumptionUIMessages.LABEL_HANDLER_PORT};
@@ -303,6 +318,7 @@
         handleSourceLocationCombo(evt);
       }
     });
+    
     return this;
   }
 
@@ -322,7 +338,7 @@
           String text = NLS.bind(ConsumptionUIMessages.MSG_TEXT_NUM_OF_SERVICES, Integer.toString(handlerDescriptionHolder_.length));
           webServiceDescText_.setText(text);
         }
-        
+                
         genSkeletonRadioButton_.setSelection(false);
         genSkeletonRadioButton_.setEnabled(false);
         genSkeletonRadioButton_.setVisible(false);
@@ -361,7 +377,7 @@
           else
             webServiceDescCombo_.select(0);
         }
-       
+        
         // set Descriptions
         HandlerDescriptionHolder hdh = HandlerDescriptionHelper.getForDescriptionName(handlerDescriptionHolder_, webServiceDescCombo_.getText());
         if (hdh!=null){
@@ -372,8 +388,8 @@
         }
         // set output folder
         setSourceOutputLocation();  
-        
       }
+      parent_.getShell().setSize(530, 650);
     }
     catch (Exception e) {
       e.printStackTrace();
@@ -394,7 +410,7 @@
   }
 
   protected void handleAddButtonSelected(SelectionEvent event) {
-    AddHandlerDialog dialog = dialog = new AddHandlerDialog(parent_.getShell(), false);
+    AddHandlerDialog dialog = new AddHandlerDialog(parent_.getShell(), false);
     dialog.setIsMultipleServices(isMultipleSelection_);
     dialog.create();
     
@@ -407,8 +423,8 @@
       }
     }
 
-    dialog.getShell().setSize(500, 200);
-
+    dialog.getShell().setSize(500, 230);
+    
     int result = dialog.open();
 
     if (result == Window.OK) {
@@ -666,4 +682,4 @@
     populateHandlersTable();
   }
 
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/IObjectSelectionLaunchable.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/IObjectSelectionLaunchable.java
index 4a547cc..c59ad6d 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/IObjectSelectionLaunchable.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/IObjectSelectionLaunchable.java
@@ -1,3 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
+ *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
 import org.eclipse.core.resources.IProject;
@@ -67,4 +80,14 @@
 	   * @return returns the string to displayed in the UI for the selected object
 	   */
 	  public  String getObjectSelectionDisplayableString();
+	  
+	  /**
+	   * 
+	   * @param s A string representation of the object selection
+	   * @return true if the string represents a valid object selection.
+       *  The implementation of this method should set the widget object selection
+	   *  according to the input string so that a subsequent call to getObjectSelection
+	   *  will retrieve the correct object.
+	   */  
+	  public boolean validate(String s);
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/IPackable.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/IPackable.java
new file mode 100644
index 0000000..5600bd9
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/IPackable.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060829   155441 makandre@ca.ibm.com - Andrew Mak, web service wizard hangs during resize
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.consumption.ui.widgets;
+
+/**
+ * An interface that marks an UI element as having some custom packing code.
+ */
+public interface IPackable {
+	
+	/**
+	 * Calling this method should cause the UI element to pack itself.  Note that
+	 * this does not necessarily have the same behavior as the pack() method in SWT.
+	 */
+	void packIt();
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/JavaBeanSelectionLaunchable.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/JavaBeanSelectionLaunchable.java
index 0fd0d78..f0a4c92 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/JavaBeanSelectionLaunchable.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/JavaBeanSelectionLaunchable.java
@@ -1,3 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
+ * 20060719   149352 mahutch@ca.ibm.com - Mark Hutchinson
+ * 20060826   135570 makandre@ca.ibm.com - Andrew Mak, Service implementation URL not displayed properly on first page
+ *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
 import org.eclipse.core.resources.IFile;
@@ -48,6 +63,8 @@
 	      	setBeanClass((ServiceImplBeanImpl)object);
 	      else if(object instanceof BeanLink)
 	      	setBeanClass((BeanLink)object);
+	      else if (object instanceof String)
+	    	beanClassString_ = (String) object; // use for displayable string
 	    }
 	  }
 
@@ -74,7 +91,7 @@
 		       beanClassString_ = itype.getFullyQualifiedName();
 		      try
 		      {
-		        IResource res = itype.getCorrespondingResource();
+		        IResource res = itype.getUnderlyingResource();
 		        if (res != null)
 		        {
 		          serverProject_ = res.getProject();
@@ -171,5 +188,14 @@
 	  public String getObjectSelectionDisplayableString() {		  
 			  return beanClassString_;
 	  }
+	  
+	  public boolean validate(String s) {
+		  beanClassString_ = s;
+		  if (s.length() > 0)
+		  {		
+			  return true;
+		  }
+  		  return false;
+	  }
 
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ProjectSelectionDialog.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ProjectSelectionDialog.java
index f29f0f5..94916f3 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ProjectSelectionDialog.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ProjectSelectionDialog.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060413   135581 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060802   148731 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -50,7 +51,7 @@
 	
 	  protected Point getInitialSize()
 	  {
-	    return new Point( 250, 300 );  
+	    return this.getShell().computeSize(250, SWT.DEFAULT, true); 
 	  }
 
 
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetDefaultingCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetDefaultingCommand.java
index 4eb40f6..beeab2f 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetDefaultingCommand.java
@@ -1,15 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
- * 20060404 134913   sengpl@ca.ibm.com - Seng Phung-Lu       
+ * 20060404   134913 sengpl@ca.ibm.com - Seng Phung-Lu   
+ * 20060517   142027 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060518   142554 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -85,7 +87,7 @@
       WebServicesManager webServicesManager = new WebServicesManager();
       List allWSDLServices = webServicesManager.getAllWSDLServices();
       int servicesSize = allWSDLServices.size();
-      
+
       wsddResource_= new WsddResource[servicesSize];
       wsddResource_[0] = getWsddResourceFromSelection();
       if (wsddResource_[0] == null) {
@@ -97,7 +99,15 @@
       while (x<servicesSize) {
         Service service = (Service )allWSDLServices.get(x);
         WsddResource wsddRes = webServicesManager.getWsddResource(service);
-        if (!wsddRes.equals(wsddResource_[x])){
+        boolean isUniqueWsdd = true;
+        for (int w=0;w<wsddResource_.length;w++){
+        	if (wsddRes.equals(wsddResource_[w])){
+        		isUniqueWsdd = false;
+        		break;
+        	}
+        }
+        
+        if (isUniqueWsdd) {
           wsddResource_[x] = wsddRes;
         }
         x++;
@@ -108,44 +118,44 @@
       
       int descCounter = 0;
       for (int y=0;y<wsddResource_.length;y++) {
-        
-        WebServices webServices = wsddResource_[y].getWebServices();
-        if (webServices != null) {
-          List wsDescriptions = webServices.getWebServiceDescriptions();
-          for (int i = 0; i < wsDescriptions.size() ; i++) {
- 
-            WebServiceDescription wsDescription = (WebServiceDescription) wsDescriptions.get(i);
-            Vector handlers = new Vector();  
-            List wsPortComponents = wsDescription.getPortComponents();
-            for (int j = 0; j < wsPortComponents.size(); j++) {
-              PortComponent wsPort = (PortComponent) wsPortComponents.get(j);
-              String portName = wsPort.getPortComponentName();
-              List wsHandlers = wsPort.getHandlers();
-     
-              for (int k = 0; k < wsHandlers.size(); k++) {
-  
-                Handler wsHandler = (Handler) wsHandlers.get(k);
-  
-                HandlerTableItem handlerItem = new HandlerTableItem();
-                handlerItem.setHandler(wsHandler);
-                handlerItem.setHandlerName(wsHandler.getHandlerName());
-                handlerItem.setHandlerClassName(wsHandler.getHandlerClass());
-                handlerItem.setPort(wsPort);
-                handlerItem.setPortName(portName);
-                handlerItem.setWsDescRef(wsDescription);
-                
-                handlers.add(handlerItem);
-              }
-              String wsDescName = wsDescription.getWebServiceDescriptionName();
-              handlerDescriptionHolder_[descCounter] = new HandlerDescriptionHolder();
-              handlerDescriptionHolder_[descCounter].setHandlerList(handlers);
-              handlerDescriptionHolder_[descCounter].setDescriptionObject(wsDescription);
-              handlerDescriptionHolder_[descCounter].setDescriptionName(wsDescName);
-              descCounter++;
-              
-            }
-          }
-        }
+        if (wsddResource_[y] !=null) {
+	        WebServices webServices = wsddResource_[y].getWebServices();
+	        if (webServices != null) {
+	          List wsDescriptions = webServices.getWebServiceDescriptions();
+	          for (int i = 0; i < wsDescriptions.size() ; i++) {
+	 
+	            WebServiceDescription wsDescription = (WebServiceDescription) wsDescriptions.get(i);
+	            Vector handlers = new Vector();  
+	            List wsPortComponents = wsDescription.getPortComponents();
+	            for (int j = 0; j < wsPortComponents.size(); j++) {
+	              PortComponent wsPort = (PortComponent) wsPortComponents.get(j);
+	              String portName = wsPort.getPortComponentName();
+	              List wsHandlers = wsPort.getHandlers();
+	     
+	              for (int k = 0; k < wsHandlers.size(); k++) {
+	  
+	                Handler wsHandler = (Handler) wsHandlers.get(k);
+	  
+	                HandlerTableItem handlerItem = new HandlerTableItem();
+	                handlerItem.setHandler(wsHandler);
+	                handlerItem.setHandlerName(wsHandler.getHandlerName());
+	                handlerItem.setHandlerClassName(wsHandler.getHandlerClass());
+	                handlerItem.setPort(wsPort);
+	                handlerItem.setPortName(portName);
+	                handlerItem.setWsDescRef(wsDescription);
+	                
+	                handlers.add(handlerItem);
+	              }
+	            }
+	            String wsDescName = wsDescription.getWebServiceDescriptionName();
+	            handlerDescriptionHolder_[descCounter] = new HandlerDescriptionHolder();
+	            handlerDescriptionHolder_[descCounter].setHandlerList(handlers);
+	            handlerDescriptionHolder_[descCounter].setDescriptionObject(wsDescription);
+	            handlerDescriptionHolder_[descCounter].setDescriptionName(wsDescName);
+	            descCounter++;
+	          }
+	        }
+	      }
       }
 
       if (handlerDescriptionHolder_ == null){
@@ -308,10 +318,12 @@
   private int getNumberofServices(WsddResource[] wsddRes){
     int num= 0;
     for (int i=0;i<wsddRes.length;i++){
-      WebServices ws = wsddRes[i].getWebServices();
-      if (ws!=null){
-        num += ws.getWebServiceDescriptions().size();
-      }
+    	if (wsddRes[i]!=null) {
+    		WebServices ws = wsddRes[i].getWebServices();
+    		if (ws!=null){
+    			num += ws.getWebServiceDescriptions().size();
+    		}
+    	}
     }
     return num;
     
@@ -322,13 +334,16 @@
    * @return
    */
   private Service[] getSelectedServices(){
+	  WebServicesManager wsManager = new WebServicesManager();
 	  IStructuredSelection initSel = getInitialSelection();
   	  Service[] services = new Service[initSel.size()];
+  	  wsddResource_ = new WsddResource[initSel.size()];
   	  Iterator iter = initSel.iterator();
   	  for (int i=0;i<initSel.size();i++) {
   		  Object obj = iter.next();
   		  if (obj instanceof Service){
   			  services[i] = (Service)obj;
+  			  wsddResource_[i] = wsManager.getWsddResource(services[i]);
   		  }
   		  else{
   			  errorStatusMsg_ = ConsumptionUIMessages.MSG_ERROR_INVALID_MULTIPLE_SERVICE_SELECT;
@@ -358,4 +373,4 @@
   }
   
   
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetOutputCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetOutputCommand.java
index 9a1b6b8..9ef8c60 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetOutputCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/ServiceHandlersWidgetOutputCommand.java
@@ -9,7 +9,8 @@
  *     IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
- * 20060404 134913   sengpl@ca.ibm.com - Seng Phung-Lu       
+ * 20060404   134913 sengpl@ca.ibm.com - Seng Phung-Lu   
+ * 20060517   142027 sengpl@ca.ibm.com - Seng Phung-Lu    
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -153,7 +154,8 @@
       // save
       if (wsddResource_ != null) {
         for (int i=0;i<wsddResource_.length;i++) {
-          wsddResource_[i].save(new HashMap());
+        	if (wsddResource_[i]!=null)
+        		wsddResource_[i].save(new HashMap());
         }
       }
   
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/TableViewerWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/TableViewerWidget.java
index ed902a3..1bc2523 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/TableViewerWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/TableViewerWidget.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060505   139918 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -42,6 +45,8 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.TableEditor;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.events.MouseEvent;
@@ -496,6 +501,15 @@
              }
            }
          );
+         
+    text_.addFocusListener( new FocusAdapter() 
+                            {
+                              public void focusLost(FocusEvent e)
+                              {
+                                internalRefresh();
+                              }
+                            } );
+    
 	  editor_.setEditor(text_, tableItem, column);
 	  text_.setFocus();
 	  text_.selectAll();
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/TimedWSDLSelectionConditionCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/TimedWSDLSelectionConditionCommand.java
new file mode 100644
index 0000000..f56b6e0
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/TimedWSDLSelectionConditionCommand.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060504   119296 pmoogk@ca.ibm.com - Peter Moogk
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.consumption.ui.widgets;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.consumption.ui.plugin.WebServiceConsumptionUIPlugin;
+import org.eclipse.wst.command.internal.env.core.common.Condition;
+import org.eclipse.wst.command.internal.env.ui.common.TimedOperation;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
+
+
+public class TimedWSDLSelectionConditionCommand extends AbstractDataModelOperation implements Condition
+{
+  private final String                  TIMEOUT_PREFERENCE = "wsdlTimeOut";
+  private WSDLSelectionConditionCommand selectionCommand;
+  private int                           timeOutValue;
+  
+  public TimedWSDLSelectionConditionCommand()
+  {
+    selectionCommand = new WSDLSelectionConditionCommand();
+    
+    IPreferenceStore prefStore = WebServiceConsumptionUIPlugin.getInstance().getPreferenceStore();
+    
+    timeOutValue = prefStore.getDefaultString(TIMEOUT_PREFERENCE).equals("") ? 10000 : prefStore.getInt( TIMEOUT_PREFERENCE );
+  }
+
+  public void setWebServicesParser(WebServicesParser webServicesParser)
+  {
+    selectionCommand.setWebServicesParser( webServicesParser );
+  }
+
+  public WebServicesParser getWebServicesParser()
+  {
+    return selectionCommand.getWebServicesParser();
+  }
+  
+  public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
+  {
+    String         timeOutMessage = ConsumptionUIMessages.bind( ConsumptionUIMessages.MSG_INFO_WSDL_OPERATION_TIMED_OUT, getWebServiceURI() );
+    
+    TimedOperation timedOperation = new TimedOperation( selectionCommand, timeOutValue, timeOutMessage );
+    
+    return timedOperation.execute(monitor, adaptable);
+  }
+  
+  public boolean evaluate()
+  {
+    return selectionCommand.evaluate();
+  }
+
+  public String getWebServiceURI()
+  {
+    return selectionCommand.getWebServiceURI();
+  }
+
+  public void setWebServiceURI(String webServiceURI)
+  {
+    selectionCommand.setWebServiceURI(webServiceURI);
+  }
+  
+  public String getWsdlURI()
+  {
+    return getWebServiceURI();
+  }
+/**
+ * @return Returns the httpBasicAuthPassword.
+ */
+public String getHttpBasicAuthPassword() {
+	return selectionCommand.getHttpBasicAuthPassword();
+}
+/**
+ * @return Returns the httpBasicAuthUsername.
+ */
+public String getHttpBasicAuthUsername() {
+	return selectionCommand.getHttpBasicAuthUsername();
+}
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionDialog.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionDialog.java
index 49bedaf..a24276e 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionDialog.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionDialog.java
@@ -1,9 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060525   142281 joan@ca.ibm.com - Joan Haggarty
+ *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.wst.command.internal.env.ui.widgets.AbstractSelectionDialog;
 import org.eclipse.wst.command.internal.env.ui.widgets.PageInfo;
@@ -75,11 +87,6 @@
 	  public IProject getProject(){
 		  return project_;
 	  }
-	  
-	  protected Point getInitialSize()
-	  {
-		  return new Point( 550, 500 );  
-	  }
 
       public boolean close() {
         setComponentName(((WSDLSelectionWidgetWrapper)getWidget()).getComponentName());
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionWidgetDefaultingCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionWidgetDefaultingCommand.java
index fc40135..127c509 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionWidgetDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionWidgetDefaultingCommand.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070116   159618 makandre@ca.ibm.com - Andrew Mak, Project and EAR not defaulted properly when wizard launched from JSR-109 Web services branch in J2EE Project Explorer
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -18,11 +21,13 @@
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
 import org.eclipse.jst.ws.internal.common.J2EEActionAdapterFactory;
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
+import org.eclipse.jst.ws.internal.common.UniversalPathTransformer;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
 import org.eclipse.wst.wsdl.internal.impl.ServiceImpl;
@@ -31,9 +36,12 @@
 public class WSDLSelectionWidgetDefaultingCommand extends AbstractDataModelOperation
 {
   private IStructuredSelection selection_;
+  private UniversalPathTransformer transformer_ = new UniversalPathTransformer();  
   
   public String getWebServiceURI()
   {
+    String uri = "";
+    
   	if (selection_ != null && !selection_.isEmpty())
   	{
   	  Object firstSel = selection_.getFirstElement();
@@ -43,28 +51,30 @@
   	    String ext = ifile.getFileExtension();
   	    if (ext != null && (ext.equals("wsdl") || ext.equals("wsil") || ext.equals("html")))
   	    {
-  	      return ifile.getFullPath().toString();
+  	      uri = ifile.getFullPath().toString();
   	    }
   	  }
   	  if (firstSel instanceof ServiceImpl)
       {
         ServiceImpl serviceImpl = (ServiceImpl)firstSel;
-        return J2EEActionAdapterFactory.getWSDLURI(serviceImpl);
+        uri = J2EEActionAdapterFactory.getWSDLURI(serviceImpl);
       }
   	  if (firstSel instanceof ServiceRef)
       {
   	    ServiceRef serviceRef = (ServiceRef)firstSel;
-        return J2EEActionAdapterFactory.getWSDLURI(serviceRef);
+        uri = J2EEActionAdapterFactory.getWSDLURI(serviceRef);
       }
   	  if (firstSel instanceof WSDLResourceImpl)
   	  {
   	    WSDLResourceImpl wsdlRI = (WSDLResourceImpl)firstSel;
-  	    return J2EEActionAdapterFactory.getWSDLURI(wsdlRI);
+  	    uri = J2EEActionAdapterFactory.getWSDLURI(wsdlRI);
   	  }
   	  if (firstSel instanceof String)
-  	    return (String)firstSel;
+  	    uri = (String)firstSel;
+  	  
+  	  uri = transformer_.toPath(uri);
   	}
-    return "";
+    return uri;
   }
  
   public void setInitialSelection( IStructuredSelection selection )
@@ -101,6 +111,10 @@
     return cname;
   }
   
+  private boolean hasProtocol(String url) {	  
+    return url.indexOf(":") != -1;	  
+  }
+  
   private IProject getProjectFromInitialSelection(IStructuredSelection selection)
   {
     if (selection != null && selection.size() == 1)
@@ -111,10 +125,13 @@
         try
         { 
           IResource resource = ResourceUtils.getResourceFromSelection(obj);
-          if (resource==null) 
-            return null;
-          IProject p = ResourceUtils.getProjectOf(resource.getFullPath());
-          return p;
+          if (resource==null) {
+            String uri = getWebServiceURI();
+            if (hasProtocol(uri)) return null;
+            return ResourceUtils.getProjectOf(new Path(uri));
+          }
+          else
+            return ResourceUtils.getProjectOf(resource.getFullPath());
         } catch(CoreException e)
         {
           return null;
@@ -134,10 +151,14 @@
         try
         { 
           IResource resource = ResourceUtils.getResourceFromSelection(obj);
-          if (resource==null) 
-            return null;
-          
-          IVirtualComponent comp = ResourceUtils.getComponentOf(resource);
+          IVirtualComponent comp;
+          if (resource==null) {
+            String uri = getWebServiceURI();
+            if (hasProtocol(uri)) return null;              
+            comp = ResourceUtils.getComponentOf(new Path(uri)) ;
+          }
+          else 
+            comp = ResourceUtils.getComponentOf(resource);
           if (comp!=null)
           {
             return comp.getName();
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionWidgetWrapper.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionWidgetWrapper.java
index a069a1e..56a9a6a 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionWidgetWrapper.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WSDLSelectionWidgetWrapper.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -30,11 +33,11 @@
   
   public WSDLSelectionWidgetWrapper()
   {
+	  wsdlSelectionWidget = new WSDLSelectionWidget();
   }
   
   public WidgetDataEvents addControls(Composite parent, Listener statusListener)
-  {
-    wsdlSelectionWidget = new WSDLSelectionWidget();
+  {    
     wsdlSelectionWidget.addControls(parent, statusListener);
     return this;
   }
@@ -133,4 +136,9 @@
   public IStructuredSelection getObjectSelection() {
 	  return wsdlSelectionWidget.getObjectSelection();
   }
+  
+  public boolean validate(String s)
+  {
+	  return wsdlSelectionWidget.validate(s);
+  }
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WebServiceClientTypeWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WebServiceClientTypeWidget.java
index 7cfef39..12561b2 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WebServiceClientTypeWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/WebServiceClientTypeWidget.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM 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
@@ -15,6 +15,23 @@
  * 20060411   136167 kathy@ca.ibm.com - Kathy Chan
  * 20060417   136390 joan@ca.ibm.com - Joan Haggarty
  * 20060413   135581 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   136158 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   136705 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060421   136761 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060424   138052 kathy@ca.ibm.com - Kathy Chan
+ * 20060425   137831 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060426   137622 joan@ca.ibm.com - Joan Haggarty
+ * 20060427   138058 joan@ca.ibm.com - Joan Haggarty
+ * 20060504   138035 joan@ca.ibm.com - Joan Haggarty
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060607   144826 joan@ca.ibm.com - Joan Haggarty
+ * 20060607   144049 joan@ca.ibm.com - Joan Haggarty
+ * 20060614   146270 joan@ca.ibm.com - Joan Haggarty
+ * 20060717   150577 makandre@ca.ibm.com - Andrew Mak
+ * 20060726   150865 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060817   140017 makandre@ca.ibm.com - Andrew Mak, longer project or server/runtime strings do not resize wizard
+ * 20060829   155441 makandre@ca.ibm.com - Andrew Mak, web service wizard hangs during resize
+ * 20070126   138484 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets;
 
@@ -25,8 +42,10 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.window.Window;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.consumption.ui.common.DefaultingUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.common.ValidationUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.plugin.WebServiceConsumptionUIPlugin;
+import org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.ClientRuntimeSelectionWidgetDefaultingCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.ProjectSelectionWidget;
 import org.eclipse.jst.ws.internal.consumption.ui.wizard.RuntimeServerSelectionDialog;
 import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
@@ -35,9 +54,15 @@
 import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
 import org.eclipse.jst.ws.internal.ui.common.UIUtils;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.accessibility.Accessible;
+import org.eclipse.swt.accessibility.AccessibleAdapter;
+import org.eclipse.swt.accessibility.AccessibleControlAdapter;
+import org.eclipse.swt.accessibility.AccessibleControlEvent;
+import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -48,12 +73,13 @@
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Scale;
 import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.forms.HyperlinkGroup;
 import org.eclipse.ui.forms.HyperlinkSettings;
 import org.eclipse.ui.forms.events.HyperlinkEvent;
 import org.eclipse.ui.forms.events.IHyperlinkListener;
 import org.eclipse.ui.forms.widgets.Hyperlink;
-import org.eclipse.ui.internal.Workbench;
 import org.eclipse.wst.command.internal.env.ui.widgets.PageInfo;
 import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetDataContributor;
 import org.eclipse.wst.command.internal.env.ui.widgets.WidgetContributor;
@@ -62,7 +88,7 @@
 import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
 
 
-public class WebServiceClientTypeWidget extends SimpleWidgetDataContributor
+public class WebServiceClientTypeWidget extends SimpleWidgetDataContributor implements IPackable
 {    
 	 // INFOPOPS	 
 	 /* CONTEXT_ID WSWSCEN0022 for the Server hyperlink of the Scenario Page */
@@ -92,7 +118,7 @@
   private String ICON_SCALE_BG_5="icons/scale5_bground.jpg";  //$NON-NLS-N$
   private String ICON_SCALE_BG_6="icons/scale6_bground.jpg";  //$NON-NLS-N$
   
-  private Composite groupComposite_;
+  private Composite clientComposite_;
   private Composite hCompClient_;
   private Shell shell_;
   private Combo  clientTypeCombo_;  
@@ -105,14 +131,16 @@
   private Hyperlink hLinkClientEAR_;
   private ProjectSelectionDialog projectDialog_;
   
+  private boolean developClient_;
+  private boolean assembleClient_;
+  private boolean deployClient_;
+	
   private Boolean testClient_;
   private Boolean installClient_;
   private Boolean startClient_;    
-  private String clientRuntimeId_;
-  
+    
   private TypeRuntimeServer ids_;
   private IStructuredSelection objectSelection_;
-  private LabelsAndIds      labelIds_;
   private boolean enableProxy_;  //service scale is set to a level that the client scale can be enabled
   private boolean clientOnly_=false;
   private int clientScaleSetting_;
@@ -129,36 +157,59 @@
   
   private ScaleSelectionListener scaleSelectionListener = new ScaleSelectionListener();
   
-	private String CLIENT_RUNTIME_PREFIX = ConsumptionUIMessages.LABEL_RUNTIMES_LIST ; 
-	private String CLIENT_SERVER_PREFIX =  ConsumptionUIMessages.LABEL_SERVERS_LIST;
-	private String CLIENT_PROJECT_PREFIX = ConsumptionUIMessages.LABEL_CLIENT_PROJECT;
-	private String CLIENT_EAR_PREFIX = ConsumptionUIMessages.LABEL_CLIENT_EAR_PROJECT;
-    
+  private String CLIENT_RUNTIME_PREFIX = ConsumptionUIMessages.LABEL_RUNTIMES_LIST ; 
+  private String CLIENT_SERVER_PREFIX =  ConsumptionUIMessages.LABEL_SERVERS_LIST;
+  private String CLIENT_PROJECT_PREFIX = ConsumptionUIMessages.LABEL_CLIENT_PROJECT;
+  private String CLIENT_EAR_PREFIX = ConsumptionUIMessages.LABEL_CLIENT_EAR_PROJECT;
+  
+  private Composite clientGroupComposite_ ;
+	
+  private UIUtils utils_ = new UIUtils("org.eclipse.jst.ws.consumption.ui");
+  private IPackable packable_ = null;  
+  private LabelsAndIds labelIds_;
+  
   public WebServiceClientTypeWidget(boolean clientOnly) {
 	    clientOnly_ = clientOnly;
 		initImageRegistry();
 		validationState_ = ValidationUtils.VALIDATE_ALL;
 	}
+   
+    /**
+     * Give this widget a handle to an IPackable instance, which will also be
+     * packed when this widget's packIt() is called.
+     * 
+     * @param packable The IPackable instance.
+     */
+    public void setPackable(IPackable packable) {
+    	packable_ = packable;
+    }
+  
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.consumption.ui.widgets.IPackable#packIt()
+	 */
+	public void packIt() {
+		clientGroupComposite_.pack(true);		
+		utils_.horizontalResize(clientGroupComposite_.getShell(), clientGroupComposite_, UIUtils.DEFAULT_PADDING);
+		if (!clientOnly_ && packable_ != null)
+			packable_.packIt();
+	}
   
   /* (non-Javadoc)
    * @see org.eclipse.wst.command.env.ui.widgets.WidgetContributor#addControls(org.eclipse.swt.widgets.Composite, org.eclipse.swt.widgets.Listener)
    */
   public WidgetDataEvents addControls( Composite parent, Listener statusListener)
   {
-    String       pluginId = "org.eclipse.jst.ws.consumption.ui";
-    UIUtils      utils    = new UIUtils( pluginId );   
-	
     statusListener_ = statusListener;
-    Composite clientComposite = new Composite(parent, SWT.NONE);
+    Composite clientTypeComposite = new Composite(parent, SWT.NONE);
 	GridLayout cclayout = new GridLayout();
 	cclayout.numColumns = 2;
 	cclayout.marginTop=3;
-	clientComposite.setLayout( cclayout );
+	clientTypeComposite.setLayout( cclayout );
     GridData ccGridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL); 
-    clientComposite.setLayoutData(ccGridData);
+    clientTypeComposite.setLayoutData(ccGridData);
     
     int comboStyle = SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY;
-    clientTypeCombo_ = utils.createCombo( clientComposite, 
+    clientTypeCombo_ = utils_.createCombo( clientTypeComposite, 
     		ConsumptionUIMessages.LABEL_WEBSERVICECLIENTTYPE,
     		ConsumptionUIMessages.TOOLTIP_PWPR_COMBO_CLIENTTYPE, 
     		INFOPOP_WSWSCEN_COMBO_CLIENTTYPE, 
@@ -170,36 +221,53 @@
 			}
 
 			public void widgetSelected(SelectionEvent e) {
-				// TODO - a change in the client type should result in a recalcualtion
-				// of page defaults. Not an issue at this point since 
-				// there is only one possible client type.
+				String oldTypeId = ids_.getTypeId();
+				int currentSelectionIdx = clientTypeCombo_.getSelectionIndex();
+				String currentTypeId = labelIds_.getIds_()[currentSelectionIdx];
+				if (!oldTypeId.equals(currentTypeId)) {		
+					// handle changing client type
+					ids_.setTypeId(currentTypeId);
+					refreshServerRuntimeSelection();
+				}
 				validationState_ = ValidationUtils.VALIDATE_ALL;
 				statusListener_.handleEvent(null);
 			}
 
 		});    
     
-    groupComposite_ = new Composite(parent, SWT.NONE);
+    clientGroupComposite_ = new Composite(parent, SWT.NONE);    
 	GridLayout gclayout = new GridLayout();
 	gclayout.numColumns = 2;
 	gclayout.horizontalSpacing=0;		
 	gclayout.marginHeight=0;		
 	gclayout.marginBottom=5;
-	groupComposite_.setLayout( gclayout );
+	clientGroupComposite_.setLayout( gclayout );
     GridData gcGridData = new GridData(SWT.BEGINNING, SWT.BEGINNING, true, true); 
-    groupComposite_.setLayoutData(gcGridData);
+    clientGroupComposite_.setLayoutData(gcGridData);
+    
+    clientGroupComposite_.addControlListener(new ControlListener()
+	{
+		public void controlMoved(ControlEvent e) {
+			// TODO Auto-generated method stub
+			
+		}
+		public void controlResized(ControlEvent e) {
+			clientGroupComposite_.pack(true);
+		}
+	});
+    
        
-	Composite clientScaleComposite_ =  new Composite(groupComposite_, SWT.NONE);
+	clientComposite_ =  new Composite(clientGroupComposite_, SWT.NONE);
 	GridLayout gridlayout   = new GridLayout();
     gridlayout.numColumns   = 2;
     gridlayout.horizontalSpacing=0;
     gridlayout.marginHeight=0;
-    clientScaleComposite_.setLayout( gridlayout );
-    GridData scGridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
-    clientScaleComposite_.setLayoutData(scGridData);    
+    clientComposite_.setLayout( gridlayout );
+    GridData scGridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+    clientComposite_.setLayoutData(scGridData);
     
-    clientScale_ = new Scale(clientScaleComposite_ , SWT.VERTICAL | SWT.BORDER | SWT.CENTER);		
-	utils.createInfoPop(clientScale_, INFOPOP_WSWSCEN_SCALE_CLIENT);	
+    clientScale_ = new Scale(clientComposite_ , SWT.VERTICAL | SWT.BORDER);		
+	utils_.createInfoPop(clientScale_, INFOPOP_WSWSCEN_SCALE_CLIENT);	
 	clientScale_.setMinimum(0);
 	clientScale_.setMaximum(6);
 	clientScale_.setIncrement(1);
@@ -207,16 +275,60 @@
 	setClientScale(getClientGeneration());
 	clientScale_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_CLIENT);
 	
+	Accessible accessibleScale = clientScale_.getAccessible();
+	accessibleScale.addAccessibleListener(new AccessibleAdapter(){
+		// return a string that describes what to do with the slider
+		//  this is read by the screen reader when the slider first gets focus
+		public void getName(AccessibleEvent e) {
+			e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_CLIENT;			
+		}			
+	});
+	accessibleScale.addAccessibleControlListener(new AccessibleControlAdapter(){
+		// return a meaningful string when the screen reader
+		// attempts to get the value from the service scale
+		public void getValue(AccessibleControlEvent e) {
+			int selection = clientScale_.getSelection();
+			switch (selection) {
+			case 0:
+				e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_TEST;
+				break;
+			case 1:
+				e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_RUN;
+				break;
+			case 2:
+				e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_INSTALL;
+				break;
+			case 3:
+				e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_DEPLOY;
+				break;
+			case 4:
+				e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_ASSEMBLE;
+				break;
+			case 5:
+				e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_DEVELOP;
+				break;
+			case 6:				
+				if (clientOnly_)
+					e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_CLIENT_ONLY;
+				else
+					e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_CLIENT;				
+				break;
+			default:
+				break;
+			}								
+		}
+	});
+	
 	GridData layoutData1 = new GridData();
-	layoutData1.horizontalAlignment=SWT.BEGINNING;
+	layoutData1.horizontalAlignment=SWT.CENTER;
 	layoutData1.verticalAlignment = SWT.BEGINNING;
 	Rectangle scaleR = (imageReg_.get(ICON_SCALE_BG_0)).getBounds();	
 	layoutData1.heightHint=scaleR.height;
-	layoutData1.widthHint=scaleR.width;
+	layoutData1.widthHint=scaleR.width+1;
 	clientScale_.setLayoutData(layoutData1);
 		
-	topologySpot_ = new Label(clientScaleComposite_ , SWT.CENTER | SWT.BORDER );
-	topologySpot_.setBackground(new Color(Display.getCurrent(), 255, 255, 255));
+	topologySpot_ = new Label(clientComposite_ , SWT.CENTER | SWT.BORDER );
+	topologySpot_.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
 	if (clientOnly_)
 		topologySpot_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_CLIENT_ONLY);
 	else
@@ -232,24 +344,24 @@
 	
 	setGraphics(getClientGeneration());
 		
-	hCompClient_ = utils.createComposite(groupComposite_, 1);
+	hCompClient_ = utils_.createComposite(clientGroupComposite_, 1);
 	
 	clientDetailsLabel_ = new Label(hCompClient_, SWT.NONE);
 	clientDetailsLabel_.setText(ConsumptionUIMessages.LABEL_SUMMARY);
 	
 	hLinkClientServer_= new Hyperlink(hCompClient_, SWT.NULL);
-	utils.createInfoPop(hLinkClientServer_, INFOPOP_WSWSCEN_HYPERLINK_SERVER);
+	utils_.createInfoPop(hLinkClientServer_, INFOPOP_WSWSCEN_HYPERLINK_SERVER);
 	hLinkClientServer_.setToolTipText(ConsumptionUIMessages.TOOLTIP_PWRS_TEXT_SERVER);
 	hLinkClientServer_.addHyperlinkListener(new IHyperlinkListener(){
 		public void linkActivated(HyperlinkEvent e){			
-			launchRuntimeSelectionDialog(true);				
+			launchRuntimeSelectionDialog(true, true);				
 		}
 		public void linkEntered(HyperlinkEvent e){}
 		public void linkExited(HyperlinkEvent e){}			
 	});
 	
 	hLinkClientRuntime_ = new Hyperlink(hCompClient_, SWT.NULL);
-	utils.createInfoPop(hLinkClientRuntime_, INFOPOP_WSWSCEN_HYPERLINK_RUNTIME);
+	utils_.createInfoPop(hLinkClientRuntime_, INFOPOP_WSWSCEN_HYPERLINK_RUNTIME);
 	hLinkClientRuntime_.setToolTipText(ConsumptionUIMessages.TOOLTIP_PWRS_TEXT_RUNTIME);
 	hLinkClientRuntime_.addHyperlinkListener(new IHyperlinkListener(){
 		public void linkActivated(HyperlinkEvent e){			
@@ -259,7 +371,8 @@
 		public void linkExited(HyperlinkEvent e){}			
 	});
 	
-	projectDialog_ = new ProjectSelectionDialog(Workbench.getInstance().getActiveWorkbenchWindow().getShell(), 
+	IWorkbench workbench = PlatformUI.getWorkbench();
+	projectDialog_ = new ProjectSelectionDialog(workbench.getActiveWorkbenchWindow().getShell(), 
 			new PageInfo(ConsumptionUIMessages.DIALOG_TITILE_CLIENT_PROJECT_SETTINGS, "", 
                     new WidgetContributorFactory()
 						{	
@@ -270,7 +383,7 @@
 						}));
 	
 	hLinkClientProject_ = new Hyperlink(hCompClient_, SWT.NULL);
-	utils.createInfoPop(hLinkClientRuntime_, INFOPOP_WSWSCEN_HYPERLINK_PROJECTS);
+	utils_.createInfoPop(hLinkClientRuntime_, INFOPOP_WSWSCEN_HYPERLINK_PROJECTS);
 	hLinkClientProject_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_CLIENTPROJECT_LINK);
 	hLinkClientProject_.addHyperlinkListener(new IHyperlinkListener(){
 		public void linkActivated(HyperlinkEvent e){			
@@ -281,7 +394,7 @@
 	});
 	
 	hLinkClientEAR_ = new Hyperlink(hCompClient_, SWT.NULL);	
-	utils.createInfoPop(hLinkClientRuntime_, INFOPOP_WSWSCEN_HYPERLINK_PROJECTS);
+	utils_.createInfoPop(hLinkClientRuntime_, INFOPOP_WSWSCEN_HYPERLINK_PROJECTS);
 	hLinkClientEAR_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_CLIENTPROJECT_LINK);
 	hLinkClientEAR_.addHyperlinkListener(new IHyperlinkListener(){
 		public void linkActivated(HyperlinkEvent e){			
@@ -348,20 +461,20 @@
 		  hCompClient_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_CLIENT);
 		  clientDetailsLabel_.setText(ConsumptionUIMessages.LABEL_SUMMARY_NO_CLIENT);		  
 	  }	  
+	  clientDetailsLabel_.pack(true);
 	  hLinkClientProject_.pack(true);
 	  hLinkClientEAR_.pack(true);
+	  packIt();
   }
 
   public void setTypeRuntimeServer( TypeRuntimeServer ids )
   {
-		// rskreg
-    //WebServiceClientTypeRegistry registry   = WebServiceClientTypeRegistry.getInstance();
-    //LabelsAndIds                 labelIds   = registry.getClientTypeLabels();
 	LabelsAndIds                 labelIds   = WebServiceRuntimeExtensionUtils2.getClientTypeLabels();
     int                          selection  = 0;
     String[]                     clientIds  = labelIds.getIds_();
     String                       selectedId = ids.getTypeId();
     
+    labelIds_ = labelIds;
 	// rskreg
     clientTypeCombo_.setItems( labelIds.getLabels_() );
     
@@ -380,25 +493,85 @@
 	
 	if (ids_ != null)
 	{
-		String clientServerText = WebServiceRuntimeExtensionUtils2.getServerLabelById(ids_.getServerId());
-		String clientRuntimeText = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById(ids_.getRuntimeId());		
-		hLinkClientServer_.setText(CLIENT_SERVER_PREFIX + " " + clientServerText);
-		hLinkClientRuntime_.setText(CLIENT_RUNTIME_PREFIX + " " + clientRuntimeText);
-		groupComposite_.pack(true);		
+		String clientServerText = "";
+		String serverId = ids_.getServerId();
+		if (serverId != null && serverId.length()>0)
+		{
+			clientServerText = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverId);
+		} 
+		String clientRuntimeText = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById(ids_.getRuntimeId());
+		
+		String currentServerText = hLinkClientServer_.getText();
+		String currentRuntimeText = hLinkClientRuntime_.getText();
+		String newServerText = CLIENT_SERVER_PREFIX + " " + clientServerText;
+		String newRuntimeText = CLIENT_RUNTIME_PREFIX + " " + clientRuntimeText;
+		hLinkClientServer_.setText(newServerText);
+		hLinkClientRuntime_.setText(newRuntimeText);
+		
+		/*check to see if text has changed for server or runtime
+		if so, repaint links */
+		if (!newServerText.equals(currentServerText))
+		{
+			hLinkClientServer_.pack(true);
+			packIt();
+		}			
+		
+		if (!newRuntimeText.equals(currentRuntimeText))
+		{
+			hLinkClientRuntime_.pack(true);
+			packIt();
+		} 	
 	}
 	
-    labelIds_ = labelIds;
-    
     if (projectDialog_ != null)
     	projectDialog_.setTypeRuntimeServer(ids_);
+    
+	//When the server changes, the state of needEar could change.
+	//If the the server change results in a change in the state of needEar,
+	//update needEar and clientEarProjectName.    
+    
+	ValidationUtils vu = new ValidationUtils();
+	boolean oldNeedEar = getClientNeedEAR();
+	boolean clientProjectOrProjectTypeNeedsEar;
+
+	if (!oldNeedEar) {
+			// If an EAR was not needed previously it could have been because of
+			// the project/project type or the server.
+			// If it was because of the project/project type, changing the
+			// server should have no impact
+			// on the state of needEar.
+			clientProjectOrProjectTypeNeedsEar = vu.projectOrProjectTypeNeedsEar(getClientProjectName(),
+					getClientComponentType());
+		} else {
+			clientProjectOrProjectTypeNeedsEar = true;
+		}
+
+		// boolean clientProjectOrProjectTypeNeedsEar =
+		// vu.projectOrProjectTypeNeedsEar(getClientProjectName(),
+		// getClientComponentType());
+		if (clientProjectOrProjectTypeNeedsEar) {
+			// Could not rule out need for an Ear from the project/project type
+			// so changing the server
+			// may impact the need for an Ear.
+			boolean currentServerNeedsEar = vu.serverNeedsEAR(getTypeRuntimeServer().getServerId());
+			if (oldNeedEar != currentServerNeedsEar) {
+				// Update needEar and serviceEarProjectName.
+				if (currentServerNeedsEar) {
+					// Calculate a reasonable default for the Ear project name
+					String earProjectName = DefaultingUtils.getDefaultEARProjectName(getClientProjectName());
+					setClientNeedEAR(currentServerNeedsEar);
+					setClientEarProjectName(earProjectName);
+				} else {
+					setClientNeedEAR(currentServerNeedsEar);
+					setClientEarProjectName("");
+				}
+
+			}
+		}		    
   }
   
   public TypeRuntimeServer getTypeRuntimeServer()
   {
-    int selectionIndex = clientTypeCombo_.getSelectionIndex();
-    
-    ids_.setTypeId( labelIds_.getIds_()[selectionIndex] );
-    
     return ids_;  
   }
       
@@ -407,6 +580,29 @@
 	  return getClientGeneration() <= ScenarioContext.WS_DEVELOP;
   }
   
+  public boolean getDevelopClient() {
+	  return developClient_;
+  }
+
+  public void setDevelopClient(boolean developClient) {
+	  this.developClient_ = developClient;
+  }	
+
+  public boolean getAssembleClient() {
+	  return assembleClient_;
+  }
+
+  public void setAssembleClient(boolean assembleClient) {
+	  this.assembleClient_ = assembleClient;
+  }
+
+  public boolean getDeployClient() {
+	  return deployClient_;
+  }
+
+  public void setDeployClient(boolean deployClient) {
+	  this.deployClient_ = deployClient;
+  }
   
   public void setTestClient(Boolean value)
   {
@@ -468,17 +664,35 @@
 				setClientProjectName(newProjectName);
 				setClientEarProjectName(newEarProjectName);
 				setClientNeedEAR(newNeedEar);
-				setClientComponentType(newProjectType);
-				validationState_ = ValidationUtils.VALIDATE_PROJECT_CHANGES;
+				setClientComponentType(newProjectType);				
+				validationState_ = (new ValidationUtils()).getNewValidationState(validationState_, ValidationUtils.VALIDATE_PROJECT_CHANGES);
 				statusListener_.handleEvent(null);
 			}
+			
+			/*check to see if text has changed for project or EAR
+			if so, repaint links */
+			if (!newProjectName.equals(currentProjectName))
+			{
+				hLinkClientProject_.pack(true);
+				packIt();
+			}
+			if (!newEarProjectName.equals(currentEarProjectName))
+			{
+				hLinkClientEAR_.pack(true);
+				packIt();
+			}
 		}		
 	}
   
-  private void launchRuntimeSelectionDialog(boolean clientContext)
+  private void launchRuntimeSelectionDialog(boolean clientContext) {
+	  launchRuntimeSelectionDialog(clientContext, false);
+  }
+  
+  private void launchRuntimeSelectionDialog(boolean clientContext, boolean selectServerFirst)
 	{
 	    TypeRuntimeServer currentClientTRS = getTypeRuntimeServer();
 	    RuntimeServerSelectionDialog rssd = new RuntimeServerSelectionDialog(shell_, (byte)1, getTypeRuntimeServer(), "14");
+	    rssd.setSelectServerFirst(selectServerFirst);
 	    int status = rssd.open();
 		if (status == Window.OK)
 		{
@@ -486,7 +700,7 @@
 			if (!currentClientTRS.equals(newClientTRS))
 			{
 				setTypeRuntimeServer(rssd.getTypeRuntimeServer());
-				validationState_ = ValidationUtils.VALIDATE_SERVER_RUNTIME_CHANGES;
+				validationState_ = (new ValidationUtils()).getNewValidationState(validationState_, ValidationUtils.VALIDATE_SERVER_RUNTIME_CHANGES);
 				statusListener_.handleEvent(null); //validate the page
 			}
 		}		
@@ -540,6 +754,7 @@
      String iconImage = "";
      String topologyImage = "";
      
+	  //TODO: change the hard coded integers here to the the ScenarioContext.WS_xxx when in less critical phase
 	  switch (selection) {
 		case 0:
 			iconImage=ICON_SCALE_BG_0;
@@ -583,7 +798,7 @@
 			}
 			else
 			{
-				setClientScale(5); //"no selection" is not allowed...must develop service @ minimum
+				setClientScale(ScenarioContext.WS_DEVELOP); //"no selection" is not allowed...must develop client @ minimum
 				iconImage=ICON_SCALE_BG_5;
 				topologyImage=GRAPHIC_CLIENT_5;				
 				clientScale_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_DEVELOP);			
@@ -605,23 +820,22 @@
 	{
         objectSelection_ = selection;
 	}
-  
+	
   public int getClientGeneration()
   {
-	  return clientScale_.getSelection();
+	  return clientScaleSetting_;
   }
   
   public void setClientGeneration(int value)
   {
-	  if (clientOnly_ && value == ScenarioContext.WS_NONE)
+	  if (clientOnly_ && value == ScenarioContext.WS_NONE) {
 		  value = ScenarioContext.WS_DEVELOP;
-	  
+		  setDevelopClient(true);
+	  }
+	
+	  clientScaleSetting_ = value;
 	  setClientScale(value);
-	  
-	  setTestClient(new Boolean(value <= ScenarioContext.WS_TEST));
-	  setInstallClient(new Boolean(value <= ScenarioContext.WS_INSTALL));
-	  setStartClient(new Boolean(value <= ScenarioContext.WS_START));
-	  
+	  	  
 	  setGraphics(value);
 	  showSummary(value < ScenarioContext.WS_NONE);
   }
@@ -638,7 +852,9 @@
   
   public String getClientRuntimeId()
   {
-	  return clientRuntimeId_;
+	  // calculate the most appropriate clientRuntimeId based on current settings.
+	  return WebServiceRuntimeExtensionUtils2.getClientRuntimeId(getTypeRuntimeServer(), getClientProjectName(), getClientComponentType());   
+
   }
   
   public void setClientComponentType(String type)
@@ -651,17 +867,12 @@
 	  return clientComponentType_;
   }
 
-  
-  public void setClientRuntimeId(String id)
-  {
-	  clientRuntimeId_ = id;
-  }
-  
   public void setClientProjectName(String name)
   {
     projectName_ = name;      
 	hLinkClientProject_.setText(CLIENT_PROJECT_PREFIX + " " + projectName_);	
-	hLinkClientProject_.pack(true);     
+	hLinkClientProject_.pack(true);   
+	packIt();
   }
   
   public String getClientProjectName()
@@ -680,11 +891,12 @@
   
   public void refreshEARLink()
   {
-	  hLinkClientEAR_.setVisible(needEar_);
+	  hLinkClientEAR_.setVisible(needEar_ && getGenerateProxy());
 	  if (needEar_)
 	  {    	
 		  hLinkClientEAR_.setText(CLIENT_EAR_PREFIX + " " + earProjectName_);
-		  hLinkClientEAR_.pack(true);  
+		  hLinkClientEAR_.pack(true); 
+		  packIt();
 	  }  
   }
 	    
@@ -744,7 +956,7 @@
 		boolean needEar = getClientNeedEAR();
 		String earProjectName = getClientEarProjectName();
 		String projectTypeId = getClientComponentType();
-		IStatus missingFieldStatus = valUtils.checkMissingFieldStatus(validationState_, null, runtimeId, serverId,
+		IStatus missingFieldStatus = valUtils.checkMissingFieldStatus(validationState_, null, null, runtimeId, serverId,
 				projectName, needEar, earProjectName, projectTypeId, true);
 		return missingFieldStatus;
 	}
@@ -778,13 +990,19 @@
 	{
 		public void widgetSelected(SelectionEvent e) {
 			    int oldClientScaleSetting = clientScaleSetting_;
-			    int selection = getClientGeneration();
-			    clientScaleSetting_ = selection;
+			    
+				setGraphics(((Scale)e.widget).getSelection());
+				
+				int selection = clientScale_.getSelection();
+				setClientGeneration(selection);
+			    
+			    setDevelopClient(selection <= ScenarioContext.WS_DEVELOP);
+				setAssembleClient(selection <= ScenarioContext.WS_ASSEMBLE);
+				setDeployClient(selection <= ScenarioContext.WS_DEPLOY);
 			    setTestClient(new Boolean(selection <= ScenarioContext.WS_TEST));
 				setInstallClient(new Boolean(selection <= ScenarioContext.WS_INSTALL));
 				setStartClient(new Boolean(selection <= ScenarioContext.WS_START));
 				
-				setGraphics(selection);
 				//disable the client settings if the client scenario setting isn't at least "DEVELOP"
 				boolean generate = selection<=ScenarioContext.WS_DEVELOP;
 				showSummary(generate);
@@ -798,7 +1016,7 @@
 				}
 				else
 				{
-					validationState_ = ValidationUtils.VALIDATE_SCALE_CHANGES;	
+					validationState_ = (new ValidationUtils()).getNewValidationState(validationState_, ValidationUtils.VALIDATE_SCALE_CHANGES);	
 				}				
 				statusListener_.handleEvent(null); //validate the page
 			}
@@ -807,6 +1025,28 @@
 		public void widgetDefaultSelected(SelectionEvent e) {
 			widgetSelected(e);
 		}
-	}  
+	} 
+  
+  private void refreshServerRuntimeSelection()
+	{		
+		//new up ServerRuntimeSelectionWidgetDefaultingCommand
+		ClientRuntimeSelectionWidgetDefaultingCommand clientRTDefaultCmd = new ClientRuntimeSelectionWidgetDefaultingCommand();
+		
+		  //call setters of new defaulting command:
+		  clientRTDefaultCmd.setClientInitialSelection(getObjectSelection());
+		  clientRTDefaultCmd.setClientInitialProject(getProject());	      
+	      clientRTDefaultCmd.setClientTypeRuntimeServer(getTypeRuntimeServer());
+		  clientRTDefaultCmd.setWebServicesParser(getWebServicesParser());     
+	      clientRTDefaultCmd.setClientEarProjectName(getClientEarProjectName());
+		  		  
+		  clientRTDefaultCmd.execute(null, null);
+		  
+		  //perform mappings from the defaulting command to the project settings...	
+		  setClientProjectName(clientRTDefaultCmd.getClientProjectName());
+		  setClientEarProjectName(clientRTDefaultCmd.getClientEarProjectName());
+		  setClientComponentType(clientRTDefaultCmd.getClientComponentType());
+		  setTypeRuntimeServer(clientRTDefaultCmd.getClientTypeRuntimeServer());
+          setClientNeedEAR(clientRTDefaultCmd.getClientNeedEAR());
+	}
 }
 
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/ClientWidgetBinding.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/ClientWidgetBinding.java
index ef38f45..49b54a4 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/ClientWidgetBinding.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/ClientWidgetBinding.java
@@ -15,18 +15,27 @@
  * 20060223 129020    rsinha@ca.ibm.com - Rupam Kuehner
  * 20060406 135350    kathy@ca.ibm.com - Kathy Chan
  * 20060407 135415    rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060425 138052    kathy@ca.ibm.com - Kathy Chan
+ * 20060517 141880    pmoogk@ca.ibm.com - Peter Moogk
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060530   144358 kathy@ca.ibm.com - Kathy Chan
+ * 20060530   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060717   146332 makandre@ca.ibm.com - Andrew Mak
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
+ * 20060821   153833 makandre@ca.ibm.com - Andrew Mak, Allow the Web Service Test extension point to specify the supported client runtime
+ * 20060825   155114 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.binding;
 
 import org.eclipse.jst.ws.internal.consumption.command.common.GetMonitorCommand;
-import org.eclipse.jst.ws.internal.consumption.common.ScenarioCleanupCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
 import org.eclipse.jst.ws.internal.consumption.ui.command.CheckForServiceProjectCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.command.data.EclipseIPath2URLStringTransformer;
 import org.eclipse.jst.ws.internal.consumption.ui.common.FinishFragment;
+import org.eclipse.jst.ws.internal.consumption.ui.common.ScenarioCleanupCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.extension.ClientRootFragment;
 import org.eclipse.jst.ws.internal.consumption.ui.extension.PreClientDevelopCommand;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.CheckWSDLValidationCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.ClientWizardWidget;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.ClientWizardWidgetDefaultingCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.ClientWizardWidgetOutputCommand;
@@ -34,7 +43,6 @@
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ClientExtensionDefaultingCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ClientExtensionFragment;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ClientExtensionOutputCommand;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.ClientRuntimeSelectionWidget;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.ClientRuntimeSelectionWidgetDefaultingCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.test.ClientTestDelegateCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.test.ClientTestFragment;
@@ -98,6 +106,10 @@
     dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "MonitorService", ClientWizardWidget.class);
     dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ClientGeneration", ClientWizardWidget.class );
     dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ResourceContext", ClientWizardWidget.class );
+    dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "DevelopClient", ClientWizardWidget.class);
+    dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "AssembleClient", ClientWizardWidget.class);
+    dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "DeployClient", ClientWizardWidget.class);
+    dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "StartClient", ClientWizardWidget.class);
     
     // After ClientWizardWidget
     dataRegistry.addMapping(ClientWizardWidget.class, "ClientTypeRuntimeServer", ClientWizardWidgetOutputCommand.class);
@@ -106,6 +118,10 @@
     dataRegistry.addMapping(ClientWizardWidget.class, "MonitorService", ClientWizardWidgetOutputCommand.class);
     dataRegistry.addMapping(ClientWizardWidget.class, "ResourceContext", ClientWizardWidgetOutputCommand.class);
     dataRegistry.addMapping(ClientWizardWidget.class, "ClientProjectName", ClientExtensionDefaultingCommand.class);
+    dataRegistry.addMapping(ClientWizardWidget.class, "DevelopClient", ClientWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ClientWizardWidget.class, "AssembleClient", ClientWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ClientWizardWidget.class, "DeployClient", ClientWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ClientWizardWidget.class, "StartClient", ClientWizardWidgetOutputCommand.class);
 
     //jvh added..
     dataRegistry.addMapping(ClientWizardWidget.class, "Project", ClientWizardWidgetOutputCommand.class);
@@ -115,7 +131,6 @@
     //jvh - rerouted the defaulting command to the ClientWizardWidget 
     // Before ClientRuntimeSelectionWidget
     dataRegistry.addMapping(ClientRuntimeSelectionWidgetDefaultingCommand.class, "ClientTypeRuntimeServer", ClientWizardWidget.class);
-    dataRegistry.addMapping(ClientRuntimeSelectionWidgetDefaultingCommand.class, "ClientRuntimeId", ClientWizardWidget.class);
     dataRegistry.addMapping(ClientRuntimeSelectionWidgetDefaultingCommand.class, "ClientProjectName", ClientWizardWidget.class);    
     dataRegistry.addMapping(ClientRuntimeSelectionWidgetDefaultingCommand.class, "ClientEarProjectName", ClientWizardWidget.class);
     dataRegistry.addMapping(ClientRuntimeSelectionWidgetDefaultingCommand.class, "ClientComponentType", ClientWizardWidget.class);
@@ -129,10 +144,7 @@
     dataRegistry.addMapping(ClientWizardWidget.class, "ClientEarProjectName", ClientExtensionDefaultingCommand.class); 
     dataRegistry.addMapping(ClientWizardWidget.class, "ClientComponentType", ClientExtensionDefaultingCommand.class);
     dataRegistry.addMapping(ClientWizardWidget.class, "ClientNeedEAR", ClientExtensionDefaultingCommand.class);
-    
-    // The ClientRuntimeSelectionWidget can control what client extension comes up.
-    dataRegistry.addMapping(ClientRuntimeSelectionWidget.class, "ClientTypeRuntimeServer", ClientExtensionFragment.class);
-    
+        
     // Before WSDLSelectionWidgetWrapper
     // jvh - rerouted these to ClientWizardWidget  
     dataRegistry.addMapping(WSDLSelectionWidgetDefaultingCommand.class, "WebServiceURI", ClientWizardWidget.class );
@@ -147,17 +159,20 @@
     dataRegistry.addMapping(WSDLSelectionWidgetWrapper.class, "ComponentName", WSDLSelectionOutputCommand.class);
 */    
 	dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "GenerateProxy",TestDefaultingFragment.class);
+	dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientRuntimeId",TestDefaultingFragment.class);
 	
     // Before Client Test widget.
     dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "TestService",FinishTestFragment.class);
     dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "TestService", ClientTestWidget.class );
+    dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "RunTestClient", FinishTestFragment.class );
+    dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "RunTestClient", ClientTestWidget.class );
     dataRegistry.addMapping(SelectionCommand.class, "InitialSelection", ClientTestWidget.class );
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "SampleProject", ClientTestWidget.class );
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "SampleProjectEAR", ClientTestWidget.class );
     dataRegistry.addMapping(TestDefaultingFragment.class, "TestFacility",ClientTestWidget.class);
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "Folder",ClientTestWidget.class);
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "JspFolder",ClientTestWidget.class);
-    dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "RunClientTest",ClientTestWidget.class);
+    dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "RunTestClient",ClientTestWidget.class);
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "Methods",ClientTestWidget.class);
 
     // After the client test widget   
@@ -166,9 +181,8 @@
     dataRegistry.addMapping(ClientTestWidget.class, "TestFacility",ClientTestDelegateCommand.class);
     dataRegistry.addMapping(ClientTestWidget.class, "Folder",ClientTestDelegateCommand.class);
     dataRegistry.addMapping(ClientTestWidget.class, "JspFolder",ClientTestDelegateCommand.class);
-    dataRegistry.addMapping(ClientTestWidget.class, "RunClientTest",ClientTestDelegateCommand.class);
-    dataRegistry.addMapping(ClientTestWidget.class, "SampleMethods",ClientTestDelegateCommand.class);
-    
+    dataRegistry.addMapping(ClientTestWidget.class, "RunTestClient",ClientTestDelegateCommand.class);
+    dataRegistry.addMapping(ClientTestWidget.class, "Methods",ClientTestDelegateCommand.class);    
     dataRegistry.addMapping(ClientTestWidget.class, "TestService",FinishTestFragment.class);
     dataRegistry.addMapping(ClientTestWidget.class, "TestID",FinishTestFragment.class);
     dataRegistry.addMapping(ClientTestWidget.class, "IsTestWidget",FinishTestFragment.class);
@@ -234,14 +248,12 @@
       add( new SimpleFragment( new ScenarioCleanupCommand(), "" ));
       
       //add( new SimpleFragment( new CheckForMissingFiles(), "" ) );
-      add( new SimpleFragment( new ClientWizardWidgetDefaultingCommand(), "" ) );
+      add( new SimpleFragment( new ClientWizardWidgetDefaultingCommand(true), "" ) );
       add( new SimpleFragment( new WSDLSelectionWidgetDefaultingCommand(), "")); //jvh moved this up
       add( new SimpleFragment( new ClientRuntimeSelectionWidgetDefaultingCommand(), ""));  //jvh moved this up      
       add( new SimpleFragment( "ClientWizardWidget" ) );
 	  //add( new TestCommandFactoryFragment() );
       add( new SimpleFragment( new ClientWizardWidgetOutputCommand(), "" ));
-
-      add( new SimpleFragment( new CheckWSDLValidationCommand(), ""));
       
       //add( new TestCommandFactoryFragment2() );
       //add( new SimpleFragment( new CheckForServiceProjectCommand(), ""));
@@ -270,14 +282,27 @@
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ClientTypeRuntimeServer", ClientWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "InstallClient", ClientWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "TestService", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "RunTestClient", ClientWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "MonitorService", ClientWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ResourceContext", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "DevelopClient", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "AssembleClient", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "DeployClient", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "StartClient", ClientWizardWidgetOutputCommand.class);
+
       
       // Map ClientWizardWidgetOutputCommand command.
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ResourceContext", ClientRuntimeSelectionWidgetDefaultingCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ClientTypeRuntimeServer", ClientRuntimeSelectionWidgetDefaultingCommand.class);
-      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "InstallClient", ClientExtensionDefaultingCommand.class); 
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "InstallClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "RunTestClient", ClientExtensionDefaultingCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "TestService", ClientExtensionDefaultingCommand.class);      
-      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "TestService", ClientRuntimeSelectionWidgetDefaultingCommand.class);       
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "TestService", ClientRuntimeSelectionWidgetDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "StartClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "DevelopClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "AssembleClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "DeployClient", ClientExtensionDefaultingCommand.class);
+
       
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "ResourceContext", ClientRuntimeSelectionWidgetDefaultingCommand.class);      
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "ResourceContext", ClientExtensionDefaultingCommand.class);
@@ -326,9 +351,11 @@
 	  // Setup the PreClientDevelopCommand.
       dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "DeployClient", PreClientDevelopCommand.class);
       dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "InstallClient", PreClientDevelopCommand.class);
-      
-      //Always start the client if it is installed.      
-      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "InstallClient", PreClientDevelopCommand.class, "StartService", null);                 
+           
+      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "DevelopClient", PreClientDevelopCommand.class);
+      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "AssembleClient", PreClientDevelopCommand.class);
+      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "StartClient", PreClientDevelopCommand.class, "StartService", null);      
+
       
       dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "TestService", PreClientDevelopCommand.class);      
       dataRegistry.addMapping( ClientWizardWidgetOutputCommand.class, "ResourceContext", PreClientDevelopCommand.class);						
@@ -356,13 +383,15 @@
 	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientEarProjectName", ClientTestDelegateCommand.class);
 	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientEarProjectName", ClientTestDelegateCommand.class,"ClientEarComponentName", null);
 	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientProject",ClientTestDelegateCommand.class);
-      dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientTypeRuntimeServer", ClientTestDelegateCommand.class);
+	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "RunTestClient",ClientTestDelegateCommand.class); 
+	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientTypeRuntimeServer", ClientTestDelegateCommand.class);
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientServer", ClientTestDelegateCommand.class);
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "WsdlURI", ClientTestDelegateCommand.class);
       
       // Map ClientExtensionOutputCommand command.
       dataRegistry.addMapping(ClientExtensionOutputCommand.class, "ProxyBean", WebServiceClientTestArrivalCommand.class);      
-	  dataRegistry.addMapping(ClientExtensionOutputCommand.class, "ProxyBean", ClientTestDelegateCommand.class);      
+	  dataRegistry.addMapping(ClientExtensionOutputCommand.class, "ProxyBean", ClientTestDelegateCommand.class); 
+	  dataRegistry.addMapping(ClientExtensionOutputCommand.class, "ProxyEndpoint", GetMonitorCommand.class);
 	  dataRegistry.addMapping(ClientExtensionOutputCommand.class, "GenerateProxy", ClientTestFragment.class);
       dataRegistry.addMapping(ClientExtensionOutputCommand.class, "GenerateProxy", FinishTestFragment.class);
       dataRegistry.addMapping(ClientExtensionOutputCommand.class, "SetEndpointMethod", ClientTestDelegateCommand.class);
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/ConfigClientHandlersWidgetBinding.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/ConfigClientHandlersWidgetBinding.java
index 18bb9ac..16b3fa8 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/ConfigClientHandlersWidgetBinding.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/ConfigClientHandlersWidgetBinding.java
@@ -1,15 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
- * 20060404 134913   sengpl@ca.ibm.com - Seng Phung-Lu       
+ * 20060404   134913 sengpl@ca.ibm.com - Seng Phung-Lu       
+ * 20060517   142339 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.binding;
 
@@ -74,6 +75,7 @@
     
     // output
     dataRegistry.addMapping(ClientHandlersWidgetDefaultingCommand.class,"IsMultipleSelection", ClientHandlersWidgetOutputCommand.class);
+    dataRegistry.addMapping(ClientHandlersWidgetDefaultingCommand.class,"ClientProject", ClientHandlersWidgetOutputCommand.class);
     dataRegistry.addMapping(ConfigClientHandlersTableWidget.class,"HandlerServiceRefHolder", ClientHandlersWidgetOutputCommand.class);
     
     // gen skeleton
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/GenSampleWidgetBinding.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/GenSampleWidgetBinding.java
index 5f723f5..b4c92cb 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/GenSampleWidgetBinding.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/binding/GenSampleWidgetBinding.java
@@ -1,12 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060608   145529 kathy@ca.ibm.com - Kathy Chan
+ * 20060717   146332 makandre@ca.ibm.com - Andrew Mak
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.binding;
 
@@ -91,13 +97,14 @@
     // Before Client Test widget.
     dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "TestService",FinishTestFragment.class);
     dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "TestService", ClientTestWidget.class );
+    dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "RunTestClient", ClientTestWidget.class );
     dataRegistry.addMapping(SelectionCommand.class, "InitialSelection", ClientTestWidget.class );
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "SampleProject", ClientTestWidget.class );
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "SampleProjectEAR", ClientTestWidget.class );
     dataRegistry.addMapping(TestDefaultingFragment.class, "TestFacility",ClientTestWidget.class);
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "Folder",ClientTestWidget.class);
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "JspFolder",ClientTestWidget.class);
-    dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "RunClientTest",ClientTestWidget.class);
+    dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "RunTestClient",ClientTestWidget.class);
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "Methods",ClientTestWidget.class);
 
     // After the client test widget   
@@ -106,9 +113,8 @@
     dataRegistry.addMapping(ClientTestWidget.class, "TestFacility",ClientTestDelegateCommand.class);
     dataRegistry.addMapping(ClientTestWidget.class, "Folder",ClientTestDelegateCommand.class);
     dataRegistry.addMapping(ClientTestWidget.class, "JspFolder",ClientTestDelegateCommand.class);
-    dataRegistry.addMapping(ClientTestWidget.class, "RunClientTest",ClientTestDelegateCommand.class);
-    dataRegistry.addMapping(ClientTestWidget.class, "SampleMethods",ClientTestDelegateCommand.class);
-    
+    dataRegistry.addMapping(ClientTestWidget.class, "RunTestClient",ClientTestDelegateCommand.class);
+    dataRegistry.addMapping(ClientTestWidget.class, "Methods",ClientTestDelegateCommand.class);    
     dataRegistry.addMapping(ClientTestWidget.class, "TestService",FinishTestFragment.class);
     dataRegistry.addMapping(ClientTestWidget.class, "TestID",FinishTestFragment.class);
     dataRegistry.addMapping(ClientTestWidget.class, "IsTestWidget",FinishTestFragment.class);
@@ -277,7 +283,7 @@
   {
     public GenSampleRootCommandFragment()
     {
-      add( new SimpleFragment( new ClientWizardWidgetDefaultingCommand(), "" ) );
+      add( new SimpleFragment( new ClientWizardWidgetDefaultingCommand(true), "" ) );
       add( new SimpleFragment( new ClientWizardWidgetOutputCommand(), "" ));
       add( new SimpleFragment( new WSDLSelectionWidgetDefaultingCommand(), ""));
       add( new SimpleFragment( new ClientRuntimeSelectionWidgetDefaultingCommand(), ""));
@@ -302,10 +308,12 @@
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ClientTypeRuntimeServer", ClientWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "TestService", ClientWizardWidgetOutputCommand.class, "TestService", new ForceTrue() );
       dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "ResourceContext", ClientWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetDefaultingCommand.class, "RunTestClient", ClientWizardWidgetOutputCommand.class);
       
       // Map ClientWizardWidgetOutputCommand command.
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "ClientTypeRuntimeServer", ClientRuntimeSelectionWidgetDefaultingCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "TestService", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "RunTestClient", ClientExtensionDefaultingCommand.class);
       dataRegistry.addMapping(ClientWizardWidgetOutputCommand.class, "ResourceContext", ClientExtensionDefaultingCommand.class);
       
       // Map ClientRuntimeSelectionWidgetDefaultingCommand command
@@ -342,6 +350,7 @@
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ServiceServerInstanceId", FinishDefaultCommand.class);
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientServer", ClientTestDelegateCommand.class);
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "WsdlURI", ClientTestDelegateCommand.class);
+      dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "RunTestClient", ClientTestDelegateCommand.class);
       
 	  dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "ClientTypeRuntimeServer", InitializeProxyCommand.class );
       dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "ClientJ2EEVersion", InitializeProxyCommand.class);
@@ -365,6 +374,7 @@
 	  dataRegistry.addMapping(ClientExtensionOutputCommand.class, "GenerateProxy", ClientTestFragment.class);
       dataRegistry.addMapping(ClientExtensionOutputCommand.class, "GenerateProxy", FinishTestFragment.class);
       dataRegistry.addMapping(ClientExtensionOutputCommand.class, "GenerateProxy", ClientTestDelegateCommand.class);
+      dataRegistry.addMapping(ClientExtensionOutputCommand.class, "RunTestClient", ClientTestDelegateCommand.class);
 	  dataRegistry.addMapping(ClientExtensionOutputCommand.class, "ServerInstanceId", FinishDefaultCommand.class);
 	  
       // MAP post server config call      
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ClientExtensionDefaultingCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ClientExtensionDefaultingCommand.java
index 80fcd73..c590291 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ClientExtensionDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ClientExtensionDefaultingCommand.java
@@ -11,6 +11,10 @@
  * -------- -------- -----------------------------------------------------------
  * 20060204 124408   rsinha@ca.ibm.com - Rupam Kuehner          
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060818   154402 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060830   151091 kathy@ca.ibm.com - Kathy Chan, Client side still enabled when there's only stub server
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions;
 
@@ -39,11 +43,17 @@
 public class ClientExtensionDefaultingCommand extends AbstractDataModelOperation
 {
   // ClientWizardWidget
+	
+	private boolean           developClient_;
+	private boolean           assembleClient_;
+	private boolean           deployClient_;
+	
   private TypeRuntimeServer    clientIds_;
   private String               clientRuntimeId_;
   private Boolean              testService;
-  private Boolean              deployClient;
   private Boolean              installClient;
+  private boolean              startClient;
+  private boolean              runTestClient;
   private ResourceContext      resourceContext;
   
   // ClientRuntimeSelectionWidget
@@ -285,11 +295,44 @@
   }
 
   /**
-   * @return Returns the deployService.
+   * @return Returns the testProxySelected.
    */
-  public Boolean getDeployClient()
+  public boolean getRunTestClient()
   {
-    return deployClient;
+    return runTestClient;
+  }
+
+  /**
+   * @param testProxySelected
+   *            The testProxySelected to set.
+   */
+  public void setRunTestClient(boolean runTestClient)
+  {
+    this.runTestClient = runTestClient;
+  }
+  
+  public boolean getDevelopClient() {
+	  return developClient_;
+  }
+
+  public void setDevelopClient(boolean developClient) {
+	  this.developClient_ = developClient;
+  }	
+
+  public boolean getAssembleClient() {
+	  return assembleClient_;
+  }
+
+  public void setAssembleClient(boolean assembleClient) {
+	  this.assembleClient_ = assembleClient;
+  }
+
+  public boolean getDeployClient() {
+	  return deployClient_;
+  }
+
+  public void setDeployClient(boolean deployClient) {
+	  this.deployClient_ = deployClient;
   }
   
   /**
@@ -301,8 +344,8 @@
   }
 
   /**
-   * @param testProxySelected
-   *            The testProxySelected to set.
+   * @param installClient
+   *            The installClient to set.
    */
   public void setInstallClient(Boolean installClient)
   {
@@ -310,6 +353,23 @@
   }
   
   /**
+   * @return Returns the startClient.
+   */
+  public boolean getStartClient()
+  {
+    return startClient;
+  }
+
+  /**
+   * @param startClient
+   *            The startClient to set.
+   */
+  public void setStartClient(boolean startClient)
+  {
+    this.startClient = startClient;
+  }
+  
+  /**
    * @return Returns the wsdlURI.
    */
   public String getWsdlURI()
@@ -482,11 +542,7 @@
     //when the user clicks Finish prior to page 3 of the wizard.
     
     IStatus status = Status.OK_STATUS;
-    
-    //default deployClient to true. It will get set to false later if there is no
-    //server type selected.
-    deployClient = Boolean.TRUE;
-    
+        
     String scenario = ConsumptionUIMessages.MSG_CLIENT_SUB;
 
     //Ensure server and runtime are non-null
@@ -524,7 +580,7 @@
           // No server has been selected and the selected Web service runtime
           // does not
           // require a server. Set deploy, install, run, and test to false.
-          deployClient = Boolean.FALSE;
+          deployClient_ = false;
           installClient = Boolean.FALSE;
           testService = Boolean.FALSE;
         }
@@ -550,12 +606,14 @@
       if (nonStubRuntime == null)
       {
         installClient = Boolean.FALSE;
+        startClient = false;
         testService = Boolean.FALSE;
       }
     }
 
+	  // calculate the most appropriate clientRuntimeId based on current settings.
+	  clientRuntimeId_ = WebServiceRuntimeExtensionUtils2.getClientRuntimeId(clientIds_, clientProjectName_, clientComponentType_);   
+
     return status;
-  }
-  
-  
+  } 
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ClientExtensionOutputCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ClientExtensionOutputCommand.java
index 5923a9f..f7fda18 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ClientExtensionOutputCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ClientExtensionOutputCommand.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 /**
  */
@@ -61,6 +64,13 @@
 	return webServiceClient_.getWebServiceClientInfo().getServerFactoryId();
   }
 
+  /**
+   * @return Returns the proxyEndpoint.
+   */
+  public String getProxyEndpoint() {
+  	return webServiceClient_.getWebServiceClientInfo().getProxyEndpoint();
+  }
+  
   public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
   {
     return Status.OK_STATUS;
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ServerExtensionDefaultingCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ServerExtensionDefaultingCommand.java
index 34beebf..0169b15 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ServerExtensionDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/extensions/ServerExtensionDefaultingCommand.java
@@ -11,6 +11,8 @@
  * -------- -------- -----------------------------------------------------------
  * 20060204 124408   rsinha@ca.ibm.com - Rupam Kuehner          
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060823   154938 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions;
 
@@ -37,7 +39,10 @@
 
 public class ServerExtensionDefaultingCommand extends AbstractDataModelOperation
 {
-  private Boolean              deployService;
+	private boolean           developService_;
+	private boolean           assembleService_;
+	private boolean           deployService_;
+
   private Boolean              installService;
   private Boolean              startService;
   private Boolean              testService;
@@ -175,12 +180,28 @@
     return serviceIds_.getTypeId();
   }
 
-  /**
-   * @return Returns the deployService.
-   */
-  public Boolean getDeployService()
-  {
-    return deployService;
+  public boolean getDevelopService() {
+	  return developService_;
+  }
+
+  public void setDevelopService(boolean developService) {
+	  this.developService_ = developService;
+  }	
+
+  public boolean getAssembleService() {
+	  return assembleService_;
+  }
+
+  public void setAssembleService(boolean assembleService) {
+	  this.assembleService_ = assembleService;
+  }
+
+  public boolean getDeployService() {
+	  return deployService_;
+  }
+
+  public void setDeployService(boolean deployService) {
+	  this.deployService_ = deployService;
   }
   
   /**
@@ -309,11 +330,7 @@
     //when the user clicks Finish prior to page 3 of the wizard.
     
     IStatus status = Status.OK_STATUS;
-    
-    //default deployService to true. It will get set to false later if there is no
-    //server type selected.
-    deployService = Boolean.TRUE;
-    
+       
     String scenario = ConsumptionUIMessages.MSG_SERVICE_SUB;
 
     //Ensure server and runtime are non-null
@@ -350,7 +367,7 @@
         {
           // No server has been selected and the selected Web service runtime
           // does not require a server. Set deploy, install, run, and test to false.
-          deployService = Boolean.FALSE;
+          deployService_ = false;
           installService = Boolean.FALSE;
           startService = Boolean.FALSE;
           testService = Boolean.FALSE;
@@ -381,6 +398,9 @@
         testService = Boolean.FALSE;
       }
     }
+
+	// calculate the most appropriate clientRuntimeId based on current settings.
+	serviceRuntimeId_ = WebServiceRuntimeExtensionUtils2.getServiceRuntimeId( serviceIds_, serviceProjectName_, serviceComponentType_);   
     
     return status;
   }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/AbstractObjectSelectionWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/AbstractObjectSelectionWidget.java
index 16d9d71..805c970 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/AbstractObjectSelectionWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/AbstractObjectSelectionWidget.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060410   135441 joan@ca.ibm.com - Joan Haggarty
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
@@ -58,4 +59,9 @@
       // subclasses should override with an appropriate default dialog size for this widget	  
  	  return null;  
    }
+   
+   public boolean validate(String s) {
+    // subclass should override this method
+	return true;
+    }  
   }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBSelectionTransformer.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBSelectionTransformer.java
index f6c35a6..6306fbb 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBSelectionTransformer.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBSelectionTransformer.java
@@ -1,19 +1,26 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070116   159618 makandre@ca.ibm.com - Andrew Mak, Project and EAR not defaulted properly when wizard launched from JSR-109 Web services branch in J2EE Project Explorer
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
+import org.eclipse.jst.j2ee.webservice.wsdd.EJBLink;
+import org.eclipse.jst.j2ee.webservice.wsdd.PortComponent;
+import org.eclipse.jst.j2ee.webservice.wsdd.ServiceImplBean;
 import org.eclipse.wst.command.internal.env.core.data.Transformer;
 
 public class EJBSelectionTransformer implements Transformer
@@ -28,9 +35,31 @@
       {
         return new StructuredSelection(((EnterpriseBean)sel).getName());
       }
+      else if (sel instanceof ServiceImplBean)
+      {
+        return new StructuredSelection(getBeanName((ServiceImplBean) sel));
+      }
+      else if (sel instanceof EJBLink)
+      {
+        return new StructuredSelection(getBeanName((EJBLink) sel));
+      }
     }
     return value;
   }
   
-
+  private String getBeanName(ServiceImplBean bean) {
+	  EObject eObject = bean.eContainer();
+	  if (eObject instanceof PortComponent) {
+		  PortComponent pc = (PortComponent) eObject;
+		  return pc.getPortComponentName();	      	
+	  }
+	  return "";
+  }
+  
+  private String getBeanName(EJBLink link) {
+	  EObject eObject = link.eContainer();
+	  if (eObject instanceof ServiceImplBean)
+		  return getBeanName((ServiceImplBean) eObject);
+	  return "";
+  }
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBSelectionWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBSelectionWidget.java
index 595a247..5a7b2d0 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBSelectionWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBSelectionWidget.java
@@ -11,6 +11,8 @@
  * -------- -------- -----------------------------------------------------------
  * 20060329   128069 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060418   136180 kathy@ca.ibm.com - Kathy Chan
+ * 20060524   141194 joan@ca.ibm.com - Joan Haggarty
+ * 20060825   135570 makandre@ca.ibm.com - Andrew Mak, Service implementation URL not displayed properly on first page
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
@@ -31,11 +33,12 @@
 import org.eclipse.jst.j2ee.ejb.componentcore.util.EJBArtifactEdit;
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.ui.common.UIUtils;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Group;
@@ -60,6 +63,7 @@
   private Vector ejbComponentProjectNames;
   private Hashtable ejbValuesByEARSelectionCache;
   private Listener  statusListener_;
+  private String displayString_ = "";
   /* CONTEXT_ID PEBD0001 for the EAR Projects drop-down box */
   private String INFOPOP_PEBD_EAR_PROJECTS = "org.eclipse.jst.ws.consumption.ui.PEBD0001";
   /* CONTEXT_ID PEBD0002 for the table containing all of the bean names */
@@ -92,18 +96,11 @@
   public WidgetDataEvents addControls(Composite parent, Listener statusListener)
   {
     statusListener_  = statusListener;
-    Composite composite = new Composite(parent, SWT.NONE);
-    GridLayout layout = new GridLayout();
-    layout.marginHeight = 0;
-    layout.marginWidth = 0;
-    GridData gd = new GridData(GridData.FILL_BOTH);
-    composite.setLayout(layout);
-    composite.setLayoutData(gd);
-    Composite projectComposite = new Composite(composite, SWT.NONE);
-    layout = new GridLayout();
-    layout.numColumns = 2;
-    projectComposite.setLayout(layout);
-    projectComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL));
+    UIUtils utils = new UIUtils(INFOPOP_PEBD_EAR_PROJECTS);
+    
+    Composite composite = utils.createComposite(parent, 1, 0, 0);
+    
+    Composite projectComposite = utils.createComposite(composite, 2);
     new Label(projectComposite, SWT.NULL).setText(ConsumptionUIMessages.LABEL_EAR_PROJECTS);
     earList = new Combo(projectComposite, SWT.DROP_DOWN | SWT.READ_ONLY);
     earList.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
@@ -128,14 +125,11 @@
     addEARNamesToList();
     earList.setToolTipText(ConsumptionUIMessages.TOOLTIP_EAR_PROJECTS);
     PlatformUI.getWorkbench().getHelpSystem().setHelp(earList, INFOPOP_PEBD_EAR_PROJECTS);
-    Group beanComposite = new Group(composite, SWT.NONE);
-    layout = new GridLayout();
-    beanComposite.setLayout(layout);
-    beanComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL));
-    beanComposite.setText(ConsumptionUIMessages.LABEL_EJB_BEAN_NAME);
-    beanList = new EJBTableViewer(beanComposite);
+    
+    Group beanComposite = utils.createGroup(composite, ConsumptionUIMessages.LABEL_EJB_BEAN_NAME, "", "");
+    beanList = new EJBTableViewer(beanComposite);    
     Table beanTable = beanList.getTable();
-    gd = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
+    GridData gd = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
     gd.heightHint = 100;
     beanTable.setLayoutData(gd);
     beanTable.addSelectionListener(new SelectionAdapter()
@@ -149,6 +143,7 @@
     });
     beanTable.setToolTipText(ConsumptionUIMessages.TOOLTIP_TABLE_BEAN_NAMES);
     PlatformUI.getWorkbench().getHelpSystem().setHelp(beanTable, INFOPOP_PEBD_TABLE_BEAN_NAMES);
+    
     if (earComponents != null && earComponents.length > 0)
     {
       setBeanList(earComponents[0]);
@@ -157,14 +152,16 @@
     {
       setBeanList(null);
     }
-    beanTable.getColumn(0).pack();
-    beanTable.getColumn(1).pack();
+    
     // This is a dummy label that forces the status label into the second
     // column.
     new Label(composite, SWT.NULL).setText("");
+   
     return this;
   }
 
+  
+  
   private void addEARNamesToList()
   {
     earList.add(ConsumptionUIMessages.LABEL_SHOW_ALL_STATELESS_SESSION_EJBS);
@@ -285,6 +282,8 @@
           selectedBeanIndex = new Integer(ejbBeanNames.indexOf(session.getName()));
         }
       }
+      else if (object instanceof String)
+    	  displayString_ = (String) object; // save for display use
     }
   }
 
@@ -339,6 +338,16 @@
     return null;
   }    
   
+  public String getObjectSelectionDisplayableString() {
+	  
+	  if (ejbBeanNames == null)
+		  return displayString_;
+	  
+	  int index = selectedBeanIndex == null ? 0 : selectedBeanIndex.intValue();
+	  String bean = (String) ejbBeanNames.get(index);
+	  return bean == null ? displayString_ : bean;
+  }
+  
   public IStatus validateSelection(IStructuredSelection objectSelection)
   {
     return Status.OK_STATUS;
@@ -354,6 +363,10 @@
   	return Status.OK_STATUS;
   }
   
+  public Point getWidgetSize() {
+	return new Point(450, 350);
+  } 
+    
   private class EJBTableValues
   {
     Vector cachedEjbBeanNames;
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBTableViewer.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBTableViewer.java
index 9d17a46..155b4f0 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBTableViewer.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/EJBTableViewer.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060524   141194 joan@ca.ibm.com - Joan Haggarty
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
@@ -34,24 +37,28 @@
   public EJBTableViewer(Composite parent)
   {
     super(parent, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
+    
     String columnProperties[] = {ConsumptionUIMessages.TABLE_TITLE_EJB_BEAN_NAMES, ConsumptionUIMessages.TABLE_TITLE_EJB_PROJECT_NAME};
+    int columnsWidth[] = {60, 20};
+    int columnMins[] = {175, 125};
+    
     Table table = getTable();
     table.setHeaderVisible(true);
     table.setLinesVisible(true);
     TableLayout layout = new TableLayout();
     for (int i = 0; i < columnProperties.length; i++)
     {
-      TableColumn column = new TableColumn(table, i);
+      TableColumn column = new TableColumn(table, SWT.NONE, i);
       column.setText(columnProperties[i]);
-      column.setAlignment(SWT.LEFT);
-      layout.addColumnData(new ColumnWeightData(50, 80, true));
+      column.pack();
+      layout.addColumnData(new ColumnWeightData(columnsWidth[i], columnMins[i], true));      
     }
     table.setLayout(layout);
     setColumnProperties(columnProperties);
     setContentProvider(new EJBContentProvider());
     setLabelProvider(new EJBLabelProvider());
   }
-
+  
   public void setData(Vector beanNames, Vector projectNames)
   {
     this.beanNames = beanNames;
@@ -112,4 +119,4 @@
       return false;
     }
   }
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/IObjectSelectionWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/IObjectSelectionWidget.java
index 4a4fff0..ab80c38 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/IObjectSelectionWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/IObjectSelectionWidget.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060410   135441 joan@ca.ibm.com - Joan Haggarty
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
@@ -84,4 +85,10 @@
    */
   public Point getWidgetSize();
   
+  /**
+   * 
+   * @param s A string representation of the object selection
+   * @return true if the string represents a valid object selection
+   */  
+  public boolean validate(String s);
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/JavaBeanSelectionTransformer.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/JavaBeanSelectionTransformer.java
index 7a93358..8e76b88 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/JavaBeanSelectionTransformer.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/JavaBeanSelectionTransformer.java
@@ -1,21 +1,28 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070116   159618 makandre@ca.ibm.com - Andrew Mak, Project and EAR not defaulted properly when wizard launched from JSR-109 Web services branch in J2EE Project Explorer
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jst.j2ee.webservice.wsdd.ServiceImplBean;
+import org.eclipse.jst.j2ee.webservice.wsdd.ServletLink;
+import org.eclipse.jst.j2ee.webservice.wsdd.internal.impl.PortComponentImpl;
 import org.eclipse.wst.command.internal.env.core.data.Transformer;
 
 public class JavaBeanSelectionTransformer implements Transformer
@@ -35,6 +42,14 @@
         if (res instanceof IFile)
           return new StructuredSelection(computeFullyQualifiedJavaName((IFile)res));
       }
+      else if (sel instanceof ServiceImplBean)
+      {
+        return new StructuredSelection(getBeanName((ServiceImplBean) sel));
+      }
+      else if(sel instanceof ServletLink)
+      {
+        return new StructuredSelection(getBeanName((ServletLink) sel));
+      }
     }
     return value;
   }
@@ -53,4 +68,20 @@
     }
     return beanClass;
   }
-}
\ No newline at end of file
+  
+  private String getBeanName(ServiceImplBean bean) {
+    EObject eObject = bean.eContainer();
+    if (eObject instanceof PortComponentImpl) {
+      PortComponentImpl pci = (PortComponentImpl) eObject;
+      return pci.getServiceEndpointInterface();	      	
+    }
+    return "";
+  }
+  
+  private String getBeanName(ServletLink link) {    
+    EObject eObject = link.eContainer();
+    if (eObject instanceof ServiceImplBean)
+      return getBeanName((ServiceImplBean) eObject);
+    return "";
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionOutputCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionOutputCommand.java
index 75b18de..0dd5eab 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionOutputCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionOutputCommand.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060830   155114 pmoogk@ca.ibm.com - Peter Moogk, Updated patch for this defect.
+ * 20070116   159618 makandre@ca.ibm.com - Andrew Mak, Project and EAR not defaulted properly when wizard launched from JSR-109 Web services branch in J2EE Project Explorer
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
@@ -14,12 +18,15 @@
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
+import org.eclipse.jst.ws.internal.common.UniversalPathTransformer;
 import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceImpl;
 import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
 import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
@@ -40,6 +47,10 @@
   private IProject               project_;
   private String                 componentName_;
   private WebServicesParser      parser_;
+  
+  private UniversalPathTransformer transformer_ = new UniversalPathTransformer();
+  
+  private boolean                topDown_ = false;
 
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
@@ -48,29 +59,12 @@
     // Transformation
     if (objectSelectionWidgetId_ != null && objectSelectionWidgetId_.length() > 0)
     {
-      IConfigurationElement[] elements = ObjectSelectionRegistry.getInstance().getConfigurationElements();
-      for (int i = 0; i < elements.length; i++)
+      Transformer transformer          = ObjectSelectionRegistry.getInstance().getTransformer(objectSelectionWidgetId_);
+      Object      transformedSelection = transformer == null ? null : transformer.transform(objectSelection_);
+      
+      if (transformedSelection instanceof IStructuredSelection)
       {
-        if (objectSelectionWidgetId_.equals(elements[i].getAttribute("id")))
-        {
-          String transformerId = elements[i].getAttribute("transformer");
-          if (transformerId != null && transformerId.length() > 0)
-          {
-            try
-            {
-              Object transformer = elements[i].createExecutableExtension("transformer");
-              if (transformer instanceof Transformer)
-              {
-                Object transformedSelection = ((Transformer)transformer).transform(objectSelection_);
-                if (transformedSelection instanceof IStructuredSelection)
-                  objectSelection_ = (IStructuredSelection)transformedSelection;
-              }
-            }
-            catch (CoreException ce)
-            {
-            }
-          }
-        }
+        objectSelection_ = (IStructuredSelection)transformedSelection;
       }
     }
 	
@@ -111,35 +105,20 @@
         if (scenario == WebServiceScenario.TOPDOWN)
         {
           objectSelectionWidgetId = "org.eclipse.jst.ws.internal.consumption.ui.widgets.object.WSDLSelectionWidget";
+          topDown_ = true;
         }
         else
         {
           objectSelectionWidgetId = wsimpl.getObjectSelectionWidget();
         }        
         
-		objectSelectionWidgetId_ = objectSelectionWidgetId;
-		
-        if (objectSelectionWidgetId_ != null && objectSelectionWidgetId_.length() > 0)
+		    objectSelectionWidgetId_ = objectSelectionWidgetId;
+        
+		    Object object = ObjectSelectionRegistry.getInstance().getSelectionWidget(objectSelectionWidgetId_);
+        
+        if( object instanceof IObjectSelectionWidget )
         {
-          IConfigurationElement[] elements = ObjectSelectionRegistry.getInstance().getConfigurationElements();
-          for (int i = 0; i < elements.length; i++)
-          {
-            if (objectSelectionWidgetId_.equals(elements[i].getAttribute("id")))
-            {
-              try
-              {
-                Object object = elements[i].createExecutableExtension("class");
-                if (object instanceof IObjectSelectionWidget)
-                {
-                  objectSelectionWidget_ = (IObjectSelectionWidget)object;
-                  return;
-                }
-              }
-              catch (CoreException ce)
-              {
-              }
-            }
-          }
+          objectSelectionWidget_ = (IObjectSelectionWidget)object;
         }
       }
     }
@@ -189,6 +168,8 @@
   
   public IProject getProject()
   {
+    if (project_ == null && topDown_)
+      project_ = getProjectFromTransformedSelection();
     return project_;
   }
   
@@ -199,6 +180,8 @@
   
   public String getComponentName()
   {
+    if (componentName_ == null && topDown_)
+      componentName_ = getComponentNameFromTransformedSelection();
     return componentName_;
   }
 
@@ -215,6 +198,34 @@
     return parser_;
   }
   
+  private boolean hasProtocol(String url) { 
+    return url.indexOf(":") != -1;  
+  }
+  
+  private IResource findResourceFromSelection(Object selection) throws CoreException {
+	  
+      IResource resource = ResourceUtils.getResourceFromSelection(selection); 
+	  
+      // try finding at least the project using the EMF way
+      if (resource == null && selection instanceof EObject)
+          resource = ProjectUtilities.getProject(selection);
+	  
+      return resource;
+  }
+  
+  private IProject getProjectFromTransformedSelection() {
+    if (objectSelection_ != null && objectSelection_.size() == 1)
+    {
+      Object obj = objectSelection_.getFirstElement();
+      if (obj instanceof String) {
+        String str = transformer_.toPath((String) obj);
+        if (hasProtocol(str)) return null;
+        return ResourceUtils.getProjectOf(new Path(str));
+      }
+    }
+    return null;	  
+  }
+  
   private IProject getProjectFromObjectSelection(IStructuredSelection selection)
   {
     if (selection != null && selection.size() == 1)
@@ -224,9 +235,11 @@
       {
         try
         { 
-          IResource resource = ResourceUtils.getResourceFromSelection(obj);
+          IResource resource = findResourceFromSelection(obj);
           if (resource==null) 
             return null;
+          if (resource instanceof IProject)
+        	return (IProject) resource;
           IProject p = ResourceUtils.getProjectOf(resource.getFullPath());
           return p;
         } catch(CoreException e)
@@ -239,6 +252,20 @@
     return null;
   }
   
+  private String getComponentNameFromTransformedSelection() {
+    if (objectSelection_ != null && objectSelection_.size() == 1)
+    {
+      Object obj = objectSelection_.getFirstElement();
+      if (obj instanceof String) { 
+        String str = transformer_.toPath((String) obj);
+        if (hasProtocol(str)) return null;
+        IVirtualComponent comp = ResourceUtils.getComponentOf(new Path(str));
+        return comp == null ? null : comp.getName();
+      }
+    }
+    return null;	  
+  }
+  
   private String getComponentNameFromObjectSelection(IStructuredSelection selection)
   {
     if (selection != null && selection.size() == 1)
@@ -248,7 +275,7 @@
       {
         try
         { 
-          IResource resource = ResourceUtils.getResourceFromSelection(obj);
+          IResource resource = findResourceFromSelection(obj);
           if (resource==null) 
             return null;
      
@@ -267,4 +294,4 @@
     }
     return null;
   }  
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionRegistry.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionRegistry.java
index 8cdbd64..e6b2918 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionRegistry.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionRegistry.java
@@ -1,37 +1,157 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060825   155114 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060830   155114 pmoogk@ca.ibm.com - Peter Moogk, Updated patch for this defect.
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
+import java.util.Hashtable;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.Platform;
+import org.eclipse.jst.ws.internal.consumption.ui.widgets.IObjectSelectionLaunchable;
+import org.eclipse.wst.command.internal.env.core.data.Transformer;
 
 public class ObjectSelectionRegistry
 {
   private static ObjectSelectionRegistry instance;
-  private static IConfigurationElement[] elements;
+  private IConfigurationElement[]        elements;
+  private Hashtable                      cachedSelectionWidgets;
   
   private ObjectSelectionRegistry()
   {
     elements = Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.jst.ws.consumption.ui", "objectSelectionWidget");
+    cachedSelectionWidgets = new Hashtable();    
   }
   
   public static ObjectSelectionRegistry getInstance()
   {
     if (instance == null)
+    {
       instance = new ObjectSelectionRegistry();
+    }
+    
     return instance;
   }
-
-  public IConfigurationElement[] getConfigurationElements()
+  
+  /**
+   * 
+   * @param id if the selection widget object.
+   * @return returns the transformer class if has been specified.  Otherwise
+   * null is returned.
+   */
+  public Transformer getTransformer( String id )
   {
-    return elements;
+    TableEntry  entry  = getTableEntry( id );
+    Transformer result = null;
+    
+    if( entry != null )
+    {
+      try
+      {
+        Object object = entry.element.createExecutableExtension("transformer");
+        
+        if( object instanceof Transformer )
+        {
+          result = (Transformer)object;
+        }
+      }
+      catch( CoreException exc ){}     
+    }
+    
+    return result;
   }
-}
\ No newline at end of file
+  
+  /**
+   * 
+   * @param id if the selection widget object.
+   * @return returns the value of the external modify attribute if
+   * it has been specified.  Otherwise false is returned.
+   */
+  public boolean getExternalModify( String id )
+  {
+    TableEntry entry  = getTableEntry( id );
+    boolean    result = false;
+    
+    if( entry != null )
+    {
+      String modifyString = entry.element.getAttribute("external_modify"); 
+      
+      result = new Boolean( modifyString ).booleanValue();
+    }
+    
+    return result;
+  }
+  
+  /**
+   * Gets the IObjectSelectionWidget based on the selectionId.  If one is
+   * not found null is returned.
+   * 
+   * @param selectionId the ID of the selection widget.
+   * @return returns the registered IObjectSelectionWidget object.
+   */
+  public Object getSelectionWidget( String selectionId )
+  {
+    TableEntry entry = getTableEntry( selectionId );
+    
+    return entry == null ? null : entry.objectSelection;
+  }
+  
+  public void cleanup()
+  {
+    instance = null;
+    elements = null;
+    cachedSelectionWidgets = null;
+  }
+  
+  private TableEntry getTableEntry( String id )
+  {
+    if( id == null ) return null;
+    
+    TableEntry entry = (TableEntry)cachedSelectionWidgets.get( id );
+    
+    if( entry == null )
+    {
+      for( int index = 0; index < elements.length; index++ )
+      {
+        IConfigurationElement element = elements[index];
+        String                elemId  = element.getAttribute( "id" );
+      
+        if( id.equals( elemId ) )
+        {
+          try
+          {
+            Object object = element.createExecutableExtension("class");
+            
+            if( object instanceof IObjectSelectionWidget || object instanceof IObjectSelectionLaunchable )
+            {
+              entry = new TableEntry();
+              entry.element = element;
+              entry.objectSelection = object;
+              cachedSelectionWidgets.put( id, entry );
+              break;
+            }
+          }
+          catch( CoreException exc ){}
+        }
+      }
+    }
+    
+    return entry;
+  }
+  
+  private class TableEntry
+  {
+    public IConfigurationElement  element;
+    public Object                 objectSelection;
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionWidget.java
index 2727182..3285958 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ObjectSelectionWidget.java
@@ -11,13 +11,14 @@
  * -------- -------- -----------------------------------------------------------
  * 20060224   129387 pmoogk@ca.ibm.com - Peter Moogk
  * 20060410   135441 joan@ca.ibm.com - Joan Haggarty
+ * 20060825   155114 pmoogk@ca.ibm.com - Peter Moogk
+ * 20061220   161232 makandre@ca.ibm.com - Andrew Mak, AbstractObjectSelectionWidget.setInitialSelection(IStructuredSelection initialSelection) called twice each time Browse pressed
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -39,11 +40,9 @@
 
 public class ObjectSelectionWidget extends AbstractObjectSelectionWidget implements IObjectSelectionWidget
 {
-  private IConfigurationElement[] elements;
   private Composite parent;
   private Listener statusListener;
   private Composite composite;
-  private IStructuredSelection initialSelection;
   private IProject project;
   private String componentName;
   private IObjectSelectionWidget child;
@@ -51,7 +50,6 @@
   
   public WidgetDataEvents addControls(Composite parentComposite, Listener statListener)
   {
-    elements = ObjectSelectionRegistry.getInstance().getConfigurationElements();
     this.parent = parentComposite;
     this.statusListener = statListener;
     composite = null;
@@ -92,60 +90,49 @@
           objectSelectionWidgetId = wsimpl.getObjectSelectionWidget();
         }
 
-        if (objectSelectionWidgetId != null && objectSelectionWidgetId.length() > 0)
+        Object object = ObjectSelectionRegistry.getInstance().getSelectionWidget( objectSelectionWidgetId );
+        
+        if( object instanceof IObjectSelectionWidget )
         {
-          for (int i = 0; i < elements.length; i++)
-          {
-            if (objectSelectionWidgetId.equals(elements[i].getAttribute("id")))
-            {
-              try
-              {
-                Object object = elements[i].createExecutableExtension("class");
-                if (object instanceof IObjectSelectionWidget)
-                {
-                  Control shell = parent.getShell();
-                  composite = new Composite(parent, SWT.NONE);
-                  GridLayout gl = new GridLayout();
-                  gl.marginHeight = 0;
-                  gl.marginWidth = 0;
-                  GridData gd = new GridData(GridData.FILL_BOTH);
-                  composite.setLayout(gl);
-                  composite.setLayoutData(gd);
-                  child = (IObjectSelectionWidget)object;
-                  child.addControls(composite, statusListener);
-                  child.setInitialSelection(initialSelection);                  
+          child = (IObjectSelectionWidget)object;
+        }
+        
+        if( child != null )
+        {
+          Control shell = parent.getShell();
+          composite = new Composite(parent, SWT.NONE);
+          GridLayout gl = new GridLayout();
+          gl.marginHeight = 0;
+          gl.marginWidth = 0;
+          GridData gd = new GridData(GridData.FILL_BOTH);
+          composite.setLayout(gl);
+          composite.setLayoutData(gd);
+          child.addControls(composite, statusListener);
 
-                  Point origSize = shell.getSize();
-                  Point compSize = composite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-                  int   newX     = origSize.x;
-                  int   newY     = origSize.y;
+          Point origSize = shell.getSize();
+          Point compSize = composite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+          int   newX     = origSize.x;
+          int   newY     = origSize.y;
                   
-                  // Note: we are trying to determine here if the wizard page should
-                  //       be resized based on the size of the control that is
-                  //       given to us by the extension.  The hard coded constants
-                  //       below represent the vertical and horizontal pixels that need
-                  //       to go around object selection control.  Hopefully, a more
-                  //       programatic method of doing this can be found in the future.
-                  if( compSize.x + 20 > origSize.x )
-                  {
-                    newX = compSize.x + 20;
-                  }
-                  
-                  if( compSize.y + 205 > origSize.y )
-                  {
-                    newY = compSize.y + 205;
-                  }
-   
-                  widgetSize_ = new Point(newX, newY);                  
-                  
-                  return;
-                }
-              }
-              catch (CoreException ce)
-              {
-              }
-            }
+          // Note: we are trying to determine here if the wizard page should
+          //       be resized based on the size of the control that is
+          //       given to us by the extension.  The hard coded constants
+          //       below represent the vertical and horizontal pixels that need
+          //       to go around object selection control.  Hopefully, a more
+          //       programatic method of doing this can be found in the future.
+          if( compSize.x + 20 > origSize.x )
+          {
+            newX = compSize.x + 20;
           }
+                  
+          if( compSize.y + 205 > origSize.y )
+          {
+            newY = compSize.y + 205;
+          }
+   
+          widgetSize_ = new Point(newX, newY);                  
+                  
+          return;
         }
       }
     }
@@ -158,7 +145,6 @@
 
   public void setInitialSelection(IStructuredSelection initialSelection)
   {
-    this.initialSelection = initialSelection;
     project = getProjectFromInitialSelection(initialSelection);
     componentName = getComponentNameFromInitialSelection(initialSelection);
     if (child != null)
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/Timer.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/Timer.java
index 4db0a34..ac76212 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/Timer.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/Timer.java
@@ -6,7 +6,10 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060803   152486 makandre@ca.ibm.com - Andrew Mak, Typing WSDL in Service definition field is very slow
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
@@ -15,9 +18,9 @@
 
 public class Timer extends Thread
 {
-  private static Timer instance = null;
   private final long ONE_SECOND = 1000;
   private long refreshTime;
+  private boolean isRunning = true;
   private Display display;
   private Runnable runnable;
 
@@ -27,16 +30,17 @@
     this.runnable = runnable;
   }
 
-  public synchronized static Timer newInstance(Display display, Runnable runnable)
+  public synchronized static Timer newInstance(Timer timer, Display display, Runnable runnable)
   {
-    if (instance == null)
-      instance = new Timer(display, runnable);
-    return instance;
+    if (!Timer.isRunning(timer))
+      return new Timer(display, runnable);
+    
+    return timer;
   }
   
-  public synchronized static boolean isRunning()
+  public synchronized static boolean isRunning(Timer timer)
   {
-    return instance != null;
+    return timer != null && timer.isRunning;
   }
 
   public synchronized void startTimer()
@@ -65,7 +69,7 @@
       }
       currTime = getCurrentTime();
     }
-    instance = null;
+    isRunning = false;
     display.syncExec(runnable);
   }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ValidationMessageViewerWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ValidationMessageViewerWidget.java
index c1bcdf0..177f5dc 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ValidationMessageViewerWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/ValidationMessageViewerWidget.java
@@ -11,6 +11,7 @@
  * -------- -------- -----------------------------------------------------------
  * 20060310   131352 pmoogk@ca.ibm.com - Peter Moogk
  * 20060411   136134 kathy@ca.ibm.com - Kathy Chan
+ * 20060420   136221 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
@@ -53,7 +54,8 @@
 	  								ConsumptionUIMessages.TABLE_COLUMN_VALIDATION_LINE,
 	  								ConsumptionUIMessages.TABLE_COLUMN_VALIDATION_COLUMN,
 	  								ConsumptionUIMessages.TABLE_COLUMN_VALIDATION_MESSAGE};
-  static final int columnsWidth_[] = {10, 10, 10, 60};
+  static final int columnsWidth_[] = {12, 10, 10, 60};
+  static final int columnMins_[] = {60, 50, 50, 300};
 
   
 
@@ -91,7 +93,7 @@
 	  TableColumn tableColumn = new TableColumn(table_, SWT.NONE);
 	  tableColumn.setText(columns_[i]);
 	  tableColumn.pack();
-	  ColumnWeightData columnData = new ColumnWeightData(columnsWidth_[i], columnsWidth_[i], true);
+	  ColumnWeightData columnData = new ColumnWeightData(columnsWidth_[i], columnMins_[i], true);
 	  tableLayout.addColumnData(columnData);
 	}
 	table_.setLayout(tableLayout);
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/WSDLSelectionTransformer.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/WSDLSelectionTransformer.java
index 2e2a809..2630fdc 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/WSDLSelectionTransformer.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/WSDLSelectionTransformer.java
@@ -1,21 +1,33 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070116   159618 makandre@ca.ibm.com - Andrew Mak, Project and EAR not defaulted properly when wizard launched from JSR-109 Web services branch in J2EE Project Explorer
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
 import java.net.MalformedURLException;
+
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jst.j2ee.webservice.wsclient.internal.impl.ServiceRefImpl;
+import org.eclipse.jst.j2ee.webservice.wsdd.BeanLink;
+import org.eclipse.jst.j2ee.webservice.wsdd.ServiceImplBean;
+import org.eclipse.jst.j2ee.webservice.wsdd.WebServiceDescription;
 import org.eclipse.jst.ws.internal.common.J2EEActionAdapterFactory;
+import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.wst.command.internal.env.core.data.Transformer;
 import org.eclipse.wst.wsdl.internal.impl.ServiceImpl;
 import org.eclipse.wst.wsdl.util.WSDLResourceImpl;
@@ -49,7 +61,51 @@
       {
         return new StructuredSelection(J2EEActionAdapterFactory.getWSDLURI((WSDLResourceImpl)sel));
       }
+      /*
+       * TODO - Remove the cases below after bug 170834 is fixed
+       * 
+       * WSDLSelectionTransformer should not need to handle ServiceImplBean and BeanLink which
+       * represent service classes.  These catches are here for now since we incorrectly allow
+       * the wizard to default to top-down sceanrio when launch from these objects in the JSR-109
+       * branch. 
+       */
+      else if (sel instanceof ServiceImplBean)
+      {
+        return new StructuredSelection(getWSDLURI((ServiceImplBean) sel));
+      }
+      else if (sel instanceof BeanLink)
+      {
+        return new StructuredSelection(getWSDLURI((BeanLink) sel));
+      }
     }
     return value;
   }
+  
+  private String getWSDLURI(ServiceImplBean bean) {
+	  EObject eObject = bean.eContainer();
+	  if (eObject == null)
+		  return "";
+          
+	  eObject = eObject.eContainer();
+      
+	  if (eObject instanceof WebServiceDescription) {
+		  WebServiceDescription wsd = (WebServiceDescription) eObject;
+		  IProject project = ProjectUtilities.getProject(wsd);    	  
+    	  
+		  // getWebContentPath returns the "WebContent" folder path for Web projects
+		  // for EJB projects, it returns the "ebjModule" folder path
+		  IPath path = J2EEUtils.getWebContentPath(project);    	 
+		  path = path.append(wsd.getWsdlFile()); 
+    	  
+		  return path.toString();    	    
+	  }
+	  return "";
+  }
+  
+  private String getWSDLURI(BeanLink link) {
+	  EObject eObject = link.eContainer();
+	  if (eObject instanceof ServiceImplBean)
+		  return getWSDLURI((ServiceImplBean) eObject);
+	  return "";
+  }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/WSDLSelectionWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/WSDLSelectionWidget.java
index 35f901e..1cde516 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/WSDLSelectionWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/object/WSDLSelectionWidget.java
@@ -11,12 +11,22 @@
  * -------- -------- -----------------------------------------------------------
  * 20060410   135441 joan@ca.ibm.com - Joan Haggarty
  * 20060410   136011 kathy@ca.ibm.com - Kathy Chan
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
+ * 20060504   119296 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060525   142281 joan@ca.ibm.com - Joan Haggarty
+ * 20060607   144932 kathy@ca.ibm.com - Kathy Chan
+ * 20060612   145081 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060719   139977 kathy@ca.ibm.com - Kathy Chan
+ * 20060803   152701 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060803   152486 makandre@ca.ibm.com - Andrew Mak, Typing WSDL in Service definition field is very slow
+ * 20060825   135570 makandre@ca.ibm.com - Andrew Mak, Service implementation URL not displayed properly on first page
+ * 20060831   155883 makandre@ca.ibm.com - Andrew Mak, service impl field doesn't work after switching from BU to TD
+ * 20061211   161589 makandre@ca.ibm.com - Andrew Mak, NPE in service generation after opening and cancelling from browse dialog
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.object;
 
 import java.io.File;
 import java.net.MalformedURLException;
-
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -35,9 +45,10 @@
 import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
 import org.eclipse.jst.ws.internal.common.J2EEActionAdapterFactory;
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
+import org.eclipse.jst.ws.internal.common.UniversalPathTransformer;
 import org.eclipse.jst.ws.internal.consumption.common.WSDLParserFactory;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.WSDLSelectionConditionCommand;
+import org.eclipse.jst.ws.internal.consumption.ui.widgets.TimedWSDLSelectionConditionCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.WSDLSelectionTreeWidget;
 import org.eclipse.jst.ws.internal.ui.common.DialogResourceBrowser;
 import org.eclipse.jst.ws.internal.ui.common.FileExtensionFilter;
@@ -77,8 +88,13 @@
   
   private Composite parent_;
   private Listener  statusListener_;
+  private ModifyListener modifyListener_;
   private WSDLSelectionTreeWidget tree;
   
+  private Timer timer_ = null;
+  
+  private UniversalPathTransformer transformer_ = new UniversalPathTransformer();
+  
   /*CONTEXT_ID PCON0001 for the WSDL Selection Page*/
   private final String INFOPOP_PCON_PAGE = "PCON0001";
 
@@ -98,7 +114,10 @@
   /*CONTEXT_ID PCON0005 for the Wizard WSDL Validation summary message of the WSDL Selection Page*/
   private Text validationSummaryText_;
   private Text validationSummaryText2_;
-
+  
+  /*CONTEXT_ID PCON0006 for the Stop Wizard WSDL Validation button of the WSDL Selection Page*/
+  private Button stopValidationButton_;
+  private final String INFOPOP_PCON_BUTTON_STOP_VALIDATION = "PCON0006";
   
   public WSDLSelectionWidget()
   {
@@ -112,6 +131,7 @@
       {
 		  msgViewer_.setInput(validateWSDLJob_.getValidationMessages());
 		  updateValidationSummary(validateWSDLJob_.getValidationMessageSeverity());
+		  setValidationInProgress(false);
       }
     };
     
@@ -147,14 +167,17 @@
     webServiceURI = uiUtils.createText( wsdlGroup, null, 
     						ConsumptionUIMessages.TOOLTIP_PCON_TEXT_WS, 
     						INFOPOP_PCON_TEXT_WSDL, SWT.SINGLE | SWT.BORDER );
-    webServiceURI.addModifyListener(
+    modifyListener_ =
       new ModifyListener()
       {
         public void modifyText(ModifyEvent event)
         {
           handleWebServiceURIModifyEvent();
         }
-      });
+      };
+    
+    webServiceURI.addModifyListener(modifyListener_);
+    
 //    webServiceURI.addListener( SWT.Modify, statusListener );
 
     wsBrowseButton_ = uiUtils.createPushButton( wsdlGroup, ConsumptionUIMessages.BUTTON_BROWSE, 
@@ -176,14 +199,14 @@
 
     tree = new WSDLSelectionTreeWidget();
     tree.addControls(parent, statusListener);
-    tree.setWebServicesParser(webServicesParser);
+    tree.setWebServicesParser(webServicesParser);    
     
     msgViewer_ = new ValidationMessageViewerWidget();
     msgViewer_.addControls(parent, statusListener);
     
     validationSummaryText_ = new Text( parent, SWT.WRAP);
     validationSummaryText_.setEditable(false);
-    GridData gd1 = new GridData(GridData.FILL_BOTH);
+    GridData gd1 = new GridData(SWT.FILL, SWT.FILL, false, false);
     validationSummaryText_.setLayoutData(gd1);
     validationSummaryText_.setToolTipText( ConsumptionUIMessages.TOOLTIP_VALIDATE_TEXT_MESSAGE_SUMMARY );
     
@@ -191,6 +214,26 @@
     validationSummaryText2_.setEditable(false);
     validationSummaryText2_.setLayoutData(gd1);
     
+    stopValidationButton_ = uiUtils.createPushButton(parent, 
+    			ConsumptionUIMessages.LABEL_BUTTON_STOP_WSDL_VALIDATION, 
+    			ConsumptionUIMessages.TOOLTIP_STOP_VALIDATION_BUTTON, 
+    			INFOPOP_PCON_BUTTON_STOP_VALIDATION);
+    setValidationInProgress(false);
+    
+    stopValidationButton_.addSelectionListener(
+    		new SelectionListener()
+    		{
+    			public void widgetDefaultSelected(SelectionEvent event)
+    			{
+    				handleStopValidationButton();
+    			}
+
+    			public void widgetSelected(SelectionEvent event)
+    			{
+    				handleStopValidationButton();
+    			} 
+    		});
+    
     setMessageSummary();
     return this;
   }
@@ -210,17 +253,21 @@
   
   private void handleWebServiceURIModifyEvent()
   {
-    if (webServiceURI.getText().indexOf(':') > 0)
-      Timer.newInstance(Display.getCurrent(), this).startTimer();
+    if (webServiceURI.getText().indexOf(':') > 0) {
+      timer_ = Timer.newInstance(timer_, Display.getCurrent(), this);
+      timer_.startTimer();
+    }
     else
       handleWebServiceURI();
     statusListener_.handleEvent(null);
   }
   
-  private void handleWebServiceURI()
-  {
-    String wsURI = webServiceURI.getText();
-    
+  private void handleWebServiceURI() {
+	  handleWebServiceURI(webServiceURI.getText());
+  }
+  
+  private void handleWebServiceURI(String wsURI)
+  {    
     if (wsURI.indexOf(':') < 0)
     {
       IFile file = uri2IFile(wsURI);
@@ -229,7 +276,7 @@
     }
     if (wsURI != null && wsURI.indexOf(':') >= 0 && webServicesParser.getWebServiceEntityByURI(wsURI) == null)
     {
-      WSDLSelectionConditionCommand cmd = new WSDLSelectionConditionCommand();
+      TimedWSDLSelectionConditionCommand cmd = new TimedWSDLSelectionConditionCommand();
       cmd.setWebServicesParser(webServicesParser);
       cmd.setWebServiceURI(wsURI);
       cmd.execute(null, null);
@@ -264,6 +311,36 @@
     statusListener_.handleEvent(null);
   }
   
+  private void setValidationInProgress(boolean validating) {
+	  stopValidationButton_.setEnabled(validating);
+  }
+  
+  private void handleStopValidationButton()
+  {
+	  IJobManager    jobManager     = Platform.getJobManager();
+	  Job[]          jobs           = jobManager.find( ValidateWSDLJob.VALIDATE_WSDL_JOB_FAMILY );
+	  ValidateWSDLJob existingValidateWSDLJob = null;
+	  
+	  if( jobs.length > 0 )
+	  {
+		  for (int i=0; i<jobs.length; i++) {
+			  existingValidateWSDLJob = (ValidateWSDLJob)jobs[i];
+
+			  if (existingValidateWSDLJob.getState() != Job.NONE) { 
+				  existingValidateWSDLJob.cancel();
+			  }
+		  }
+	  }
+	  clearValidationMessages();
+	  setValidationInProgress(false);
+  }
+  
+  private void clearValidationMessages() {
+	  msgViewer_.clearInput();
+	  validationSummaryText_.setText(" " );
+	  validationSummaryText2_.setText(" ");
+  }
+  
   public IStatus getStatus()
   {
     // Timer validation
@@ -276,33 +353,35 @@
     // Validate the String representation of the Web service URI
     // For example, is it pointing to an existing resource in the workspace?
     String wsPath  = webServiceURI.getText();
-    if( wsPath == null || wsPath.length() <= 0 )
-      return StatusUtils.errorStatus( ConsumptionUIMessages.PAGE_MSG_INVALID_WEB_SERVICE_URI );
+    if( wsPath == null || wsPath.length() <= 0 ) {
+    	clearValidationMessages();
+    	return StatusUtils.errorStatus( ConsumptionUIMessages.PAGE_MSG_INVALID_WEB_SERVICE_URI );
+    }
     else if( wsPath.indexOf(':') < 0 )
     {
-      IResource res = ResourceUtils.findResource(wsPath);
-      if( res == null ) {
-    	  msgViewer_.clearInput();
-        return StatusUtils.errorStatus( NLS.bind(ConsumptionUIMessages.PAGE_MSG_NO_SUCH_FILE, new Object[] {wsPath}) );
-      }
-      else if( res.getType() != IResource.FILE ) {
-    	  msgViewer_.clearInput();
-        return StatusUtils.errorStatus( ConsumptionUIMessages.PAGE_MSG_INVALID_WEB_SERVICE_URI );
-      }
+    	IResource res = ResourceUtils.findResource(wsPath);
+    	if( res == null ) {
+    		clearValidationMessages();
+    		return StatusUtils.errorStatus( NLS.bind(ConsumptionUIMessages.PAGE_MSG_NO_SUCH_FILE, new Object[] {wsPath}) );
+    	}
+    	else if( res.getType() != IResource.FILE ) {
+    		clearValidationMessages();
+    		return StatusUtils.errorStatus( ConsumptionUIMessages.PAGE_MSG_INVALID_WEB_SERVICE_URI );
+    	}
     }
 
     
     // Validate the content of the Web service URI
     // For example, is selection a WSDL URI?
-    if (!Timer.isRunning() && tree.isEnabled())
+    if (!Timer.isRunning(timer_) && tree.isEnabled())
     {
       IStatus status = tree.getStatus();
       if (status != null)
       {
         int severity = status.getSeverity();
         if (severity == Status.ERROR || severity == Status.WARNING) {
-        	msgViewer_.clearInput();
-          return status;
+        	clearValidationMessages();
+        	return status;
         }
       }
     }
@@ -312,31 +391,36 @@
         {
           String wsdlURI = iFile2URI((IFile)ResourceUtils.findResource(wsPath));
           if (webServicesParser.getWSDLDefinition(wsdlURI) == null) {
-        	  msgViewer_.clearInput();
-            return StatusUtils.errorStatus(ConsumptionUIMessages.PAGE_MSG_SELECTION_MUST_BE_WSDL );
+        	  clearValidationMessages();
+        	  return StatusUtils.errorStatus(ConsumptionUIMessages.PAGE_MSG_SELECTION_MUST_BE_WSDL );
           }
         }
     }
     
     
-    if (!Timer.isRunning()) {
+    if (!Timer.isRunning(timer_)) {
     	String wsdlURI1 = wsPath;
     	 boolean isRemote = true;
     	if (tree.isEnabled()) { // is wsil
     		wsdlURI1 = tree.getWsdlURI();
-    		if (wsdlURI1.startsWith("file:")) {
+    		if (wsdlURI1.startsWith("file:") || wsdlURI1.startsWith("platform:"))
+    		{
     			isRemote = false;
     		}
-    	} else { // is wsil
-    	
-    		if( wsPath.indexOf(':') < 0 )
-    		{      	// not remote
+    	} else {
+    		if (wsPath.indexOf(':') < 0)
+    		{
     			isRemote = false;
     			wsdlURI1 = iFile2URI((IFile)ResourceUtils.findResource(wsPath));
     		}
+    		else if (wsPath.startsWith("file:") || wsPath.startsWith("platform:"))
+    		{
+    			isRemote = false;
+    		}
     	}
   	  
       setMessageSummary();
+	  msgViewer_.clearInput();
   	  validateWSDL(wsdlURI1, isRemote);
     }
     
@@ -370,6 +454,7 @@
 
 					  if (!wsdlURI.equals(existingValidateWSDLJob.getWsdlURI())) {
 						  existingValidateWSDLJob.cancel();
+						  setValidationInProgress(false);
 					  } else {						  
 						  startWSDLValidation = false;
 					  }
@@ -388,6 +473,7 @@
 	  validateWSDLJob_ = new ValidateWSDLJob(wsdlURI);
 	  validateWSDLJob_.addJobChangeListener( jobChangeAdapter_ );
 	  validateWSDLJob_.schedule();
+	  setValidationInProgress(true);
   }
   
   public void updateValidationSummary(int messageSeverity)
@@ -442,8 +528,11 @@
       
       if (wsdlURI != null && webServiceURI != null)
       {
-        webServiceURI.setText(wsdlURI);       
-        handleWebServiceURI();
+        handleWebServiceURI(wsdlURI);
+    	
+        webServiceURI.removeModifyListener(modifyListener_);
+        webServiceURI.setText(getObjectSelectionDisplayableString());       
+        webServiceURI.addModifyListener(modifyListener_);
       }
     }  
   }
@@ -466,9 +555,13 @@
   
   public IStructuredSelection getObjectSelection()
   {
-    return new StructuredSelection( 
-               new WSDLSelectionWrapper( webServicesParser,
-                                         new StructuredSelection(tree.getWsdlURI()) ) );
+	  StructuredSelection ss; 
+	  if (tree != null && tree.getWsdlURI() != null)
+		  ss = new StructuredSelection(tree.getWsdlURI());
+	  else
+		  ss = new StructuredSelection(wsdlURI_);
+	return new StructuredSelection( 
+               new WSDLSelectionWrapper( webServicesParser, ss));
   }
   
   public WebServicesParser getWebServicesParser()
@@ -483,7 +576,13 @@
   
   public IProject getProject()
   {
-    String wsdlURI = tree.getWsdlURI();
+	String wsdlURI;
+
+	if (tree != null)
+       wsdlURI = tree.getWsdlURI();
+	else
+		wsdlURI = wsdlURI_;
+	
     if (wsdlURI != null)
     {
       IProject p = getProjectFromURI(wsdlURI);
@@ -504,7 +603,13 @@
   
   public String getComponentName()
   {
-    String wsdlURI = tree.getWsdlURI();
+	 
+    String wsdlURI;
+    if (tree != null)
+    	wsdlURI = tree.getWsdlURI();
+    else 
+    	wsdlURI = wsdlURI_;
+    
     if (wsdlURI != null)
     {
       String cname = getComponentNameFromURI(wsdlURI);
@@ -565,11 +670,47 @@
     return null;    
   }
   
-  public String getObjectSelectionDisplayableString() {	
-	    return wsdlURI_;
-	  }
+  public String getObjectSelectionDisplayableString() 
+  {	
+    if (tree != null)
+    {
+      return transformer_.toPath(tree.getWsdlURI());
+    }
+    else
+    {
+	    return transformer_.toPath(wsdlURI_);
+    }
+	}
   
   public Point getWidgetSize() {	
-	  return new Point( 550, 500 );  
+	  return new Point( 580, 580);  
   }
+  
+  public boolean validate(String s) {
+	  String wsURI = s;
+	    
+	    if (wsURI.indexOf(':') < 0)
+	    {
+	      IFile file = uri2IFile(wsURI);
+	      if (file != null)
+	        wsURI = iFile2URI(file);
+	    }
+	    if (wsURI != null && wsURI.indexOf(':') >= 0 && webServicesParser.getWebServiceEntityByURI(wsURI) == null)
+	    {
+	      TimedWSDLSelectionConditionCommand cmd = new TimedWSDLSelectionConditionCommand();
+	      cmd.setWebServicesParser(webServicesParser);
+	      cmd.setWebServiceURI(wsURI);
+	      cmd.execute(null, null);
+	    }
+		
+	    // prime widget based on the string
+	    wsdlURI_ = wsURI;
+	    
+	    WebServiceEntity entity = webServicesParser.getWebServiceEntityByURI(wsURI);
+	    if (entity != null && entity.getType() == WebServiceEntity.TYPE_WSDL)
+             return true;
+	    else
+	    	return false;
+	    
+  } 
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ClientRuntimeSelectionWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ClientRuntimeSelectionWidget.java
deleted file mode 100644
index 4f44992..0000000
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ClientRuntimeSelectionWidget.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM 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:
- * IBM Corporation - initial API and implementation
- * yyyymmdd bug      Email and other contact information
- * -------- -------- -----------------------------------------------------------
- * 20060204 124408   rsinha@ca.ibm.com - Rupam Kuehner          
- * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
- *******************************************************************************/
-package org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
-import org.eclipse.jst.ws.internal.consumption.common.FacetUtils;
-import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
-import org.eclipse.jst.ws.internal.consumption.ui.common.ValidationUtils;
-import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
-import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
-import org.eclipse.jst.ws.internal.ui.common.UIUtils;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
-import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetDataContributor;
-import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataEvents;
-
-
-public class ClientRuntimeSelectionWidget extends SimpleWidgetDataContributor
-{
-  private String    pluginId_ = "org.eclipse.jst.ws.consumption.ui";
-  
-  /* CONTEXT_ID PWRS0003 for the Wizard Scenario Client configuration of the Runtime Selection Page */
-  private String INFOPOP_PWRS_GROUP_CLIENT = pluginId_ + ".PWRS0003";
-  
-  private Group                        clientGroup_;
-  private RuntimeServerSelectionWidget runtimeWidget_;
-  private ProjectSelectionWidget       projectWidget_;
-  private boolean 					           isVisible_;
-  
-  
-  public WidgetDataEvents addControls( Composite parent, final Listener statusListener )
-  {
-    UIUtils      uiUtils  = new UIUtils( pluginId_ ); 
-    
-    clientGroup_ = uiUtils.createGroup( parent, ConsumptionUIMessages.LABEL_CLIENT_SELECTION_VIEW_TITLE,
-                                        null, INFOPOP_PWRS_GROUP_CLIENT, 2, 5, 5 );
-    
-    runtimeWidget_ = new RuntimeServerSelectionWidget( true );
-    runtimeWidget_.addControls( clientGroup_, statusListener );
-
-    
-    runtimeWidget_.addModifyListener( new ModifyListener()
-                                      {
-                                        public void modifyText(ModifyEvent e)
-                                        {
-                                          //handleRuntime2ClientTypesEvent();
-                                          handleUpdateProjectWidget();
-                                        }
-                                      });
-                                         
-    
-    projectWidget_ = new ProjectSelectionWidget(true);
-    projectWidget_.addControls( clientGroup_, statusListener );
-        
-    return this;
-  }
-  
-  // This method is called by the creator of this widget to control
-  // whether it is visible or not.
-  public void setVisible( boolean value )
-  {
-    clientGroup_.setVisible( value ); 
-    isVisible_ = value;
-  }
-  
-  public boolean isVisible(){
-  	return this.isVisible_;
-  }
-
-  public void setClientTypeRuntimeServer( TypeRuntimeServer ids )
-  {     
-    runtimeWidget_.setTypeRuntimeServer( ids );
-    projectWidget_.setTypeRuntimeServer(ids);
-  }
-  
-  public TypeRuntimeServer getClientTypeRuntimeServer()
-  {
-    return runtimeWidget_.getTypeRuntimeServer();  
-  }
-  
-  public String getClientRuntimeId()
-  {
-    //calculate the most appropriate clientRuntimeId based on current settings.
-    String projectName = projectWidget_.getProjectName();
-    String templateId = projectWidget_.getComponentType();
-    
-    //Find the client runtime that fits this profile best.
-    return WebServiceRuntimeExtensionUtils2.getClientRuntimeId(runtimeWidget_.getTypeRuntimeServer(), projectName, templateId);
-  } 
-    
-  public boolean getClientNeedEAR()
-  {
-    return projectWidget_.getNeedEAR();
-  }
-  
-  public void setClientNeedEAR(boolean b)
-  {
-    projectWidget_.setNeedEAR(b);
-  }  
-  
-  public String getClientProjectName()
-  {
-	return projectWidget_.getProjectName();  
-  }
-  
-  public void setClientProjectName( String name )
-  {
-    projectWidget_.setProjectName( name );
-  }
-  
-  public String getClientEarProjectName()
-  {
-    return projectWidget_.getEarProjectName();	  
-  }
-  
-  public void setClientEarProjectName( String name )
-  {
-	projectWidget_.setEarProjectName( name );  
-  }
-  
-  public String getClientComponentType()
-  {
-    return projectWidget_.getComponentType();
-  }
-  
-  public void setClientComponentType( String type )
-  {
-	projectWidget_.setComponentType( type );  
-  }
-  
-  public void setInstallClient(boolean b)
-  {
-    runtimeWidget_.setInstall(b);
-  }
-
-  private void handleUpdateProjectWidget()
-  {
-    projectWidget_.setTypeRuntimeServer(runtimeWidget_.getTypeRuntimeServer());    
-
-    //Update the list of projects shown to the user.
-    projectWidget_.refreshProjectItems();    
-  }
-  
-  public ProjectSelectionWidget getProjectSelectionWidget() {
-    return this.projectWidget_;
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.command.env.ui.widgets.WidgetContributor#getStatus()
-   */
-  public IStatus getStatus() 
-  {
-    //MessageUtils msgUtils = new MessageUtils( pluginId_ + ".plugin", this );
-    ValidationUtils valUtils = new ValidationUtils();
-    //Return OK all the time for now.
-    IStatus finalStatus   = Status.OK_STATUS;
-    
-    
-    IStatus projectStatus = projectWidget_.getStatus();
-    IStatus runtimeStatus = runtimeWidget_.getStatus();
-    
-    if( runtimeStatus.getSeverity() == Status.ERROR )
-    {
-      finalStatus = runtimeStatus;
-    }
-    else if( projectStatus.getSeverity() == Status.ERROR )
-    {
-      finalStatus = projectStatus;
-    }
-    else
-    {      
-      String projectName = projectWidget_.getProjectName();
-      if (projectName != null && projectName.length()>0)
-      {
-        //If the project exists, ensure that it is suitable for the selected runtime
-        //and server.
-        
-        IProject project = ProjectUtilities.getProject(projectName);
-        String typeId = getClientTypeRuntimeServer().getTypeId();
-        String runtimeId = getClientTypeRuntimeServer().getRuntimeId();
-        String serverFactoryId = getClientTypeRuntimeServer().getServerId();
-        
-        if (project.exists())
-        {
-          //Check if the runtime supports it.
-          if (!WebServiceRuntimeExtensionUtils2.doesClientTypeAndRuntimeSupportProject(typeId, runtimeId, projectName))
-          {
-            String runtimeLabel = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById(runtimeId);
-            finalStatus = StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_CLIENT_RUNTIME_DOES_NOT_SUPPORT_PROJECT, new String[]{runtimeLabel, projectName}));
-          }
-          
-          //Check if the server supports it.
-
-          if (serverFactoryId!=null && serverFactoryId.length()>0)
-          {
-            if (!valUtils.doesServerSupportProject(serverFactoryId, projectName))
-            {
-              String serverLabel = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverFactoryId);
-              finalStatus = StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_CLIENT_SERVER_DOES_NOT_SUPPORT_PROJECT, new String[]{serverLabel, projectName}));
-            }
-          }          
-        }
-        else
-        {
-          //Non-existing project is only permitted if there is a server selected.
-          if (serverFactoryId==null || serverFactoryId.length()==0)
-          {
-            finalStatus = StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_PROJECT_MUST_EXIST, new String[]{projectName}));
-          }
-          else
-          {
-            // Look at the project type to ensure that it is suitable for the
-            // selected runtime and server.
-            String templateId = getClientComponentType();
-
-            if (templateId != null && templateId.length() > 0)
-            {
-              // Check if the runtime supports it.
-              if (!WebServiceRuntimeExtensionUtils2.doesClientTypeAndRuntimeSupportTemplate(typeId, runtimeId, templateId))
-              {
-                String runtimeLabel = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById(runtimeId);
-                String templateLabel = FacetUtils.getTemplateLabelById(templateId);
-                finalStatus = StatusUtils.errorStatus(NLS.bind(
-                    ConsumptionUIMessages.MSG_CLIENT_RUNTIME_DOES_NOT_SUPPORT_TEMPLATE, new String[] { runtimeLabel,
-                        templateLabel }));
-              }
-
-              // Check if the server supports it.
-              if (serverFactoryId != null && serverFactoryId.length() > 0)
-              {
-                if (!valUtils.doesServerSupportTemplate(serverFactoryId, templateId))
-                {
-                  String serverLabel = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverFactoryId);
-                  String templateLabel = FacetUtils.getTemplateLabelById(templateId);
-                  finalStatus = StatusUtils.errorStatus(NLS.bind(
-                      ConsumptionUIMessages.MSG_CLIENT_SERVER_DOES_NOT_SUPPORT_TEMPLATE, new String[] { serverLabel,
-                          templateLabel }));
-                }
-              }
-            }
-          }
-          
-          
-        }
-      }
-      
-      //If finalStatus is still OK, check if there are any warnings.
-      if (finalStatus.getSeverity()!=Status.ERROR)
-      {
-        if( runtimeStatus.getSeverity() == Status.WARNING )
-        {
-          finalStatus = runtimeStatus;
-        }
-      }
-    }
-        
-    return finalStatus;    
-  }
-}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ClientRuntimeSelectionWidgetDefaultingCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ClientRuntimeSelectionWidgetDefaultingCommand.java
index 7536be5..7c62335 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ClientRuntimeSelectionWidgetDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ClientRuntimeSelectionWidgetDefaultingCommand.java
@@ -16,6 +16,13 @@
  * 20060227   124392 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060315   131963 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060418   129688 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060427   126780 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060427   126780 kathy@ca.ibm.com - Kathy Chan
+ * 20060427   138058 joan@ca.ibm.com - Joan Haggarty
+ * 20060523   133714 joan@ca.ibm.com - Joan Haggarty
+ * 20060525   143843 joan@ca.ibm.com - Joan Haggarty
+ * 20060905   156230 kathy@ca.ibm.com - Kathy Chan, Handling projects with no target runtime
+ * 20070119   159458 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime;
 
@@ -43,6 +50,7 @@
 import org.eclipse.jst.ws.internal.consumption.common.FacetUtils;
 import org.eclipse.jst.ws.internal.consumption.common.RequiredFacetVersion;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.consumption.ui.common.DefaultingUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.common.ValidationUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.plugin.WebServiceConsumptionUIPlugin;
 import org.eclipse.jst.ws.internal.consumption.ui.preferences.PersistentServerRuntimeContext;
@@ -58,12 +66,12 @@
 import org.eclipse.wst.command.internal.env.core.context.ResourceContext;
 import org.eclipse.wst.command.internal.env.core.selection.SelectionList;
 import org.eclipse.wst.command.internal.env.core.selection.SelectionListChoices;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
 import org.eclipse.wst.common.project.facet.core.IFacetedProject;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
 import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IRuntimeType;
 import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.server.core.IServerType;
 import org.eclipse.wst.server.core.ServerCore;
@@ -169,6 +177,23 @@
     return selection_;    
   }
   
+  /**
+   * Defaults the following bits of information in the following order:
+   * clientRuntimeId_ : the clientRuntimeId. Must be defaulted to non-empty String.
+   * clientIds_.runtimeId_: the Web service runtime id. Must be defaulted to non-empty String.
+   * clientProjectName_ : the name of the client project. Must be non-empty. May or may not exist.
+   * clientComponentType_: the id of the client project template. Must be empty if the client
+   *                        project exists. Must be non-empty of the client project does not exist.
+   * clientIds_.serverId_: the server type id. May be an empty String if the defaulted Web service runtime
+   *                        does not require a server.
+   * clientIds_.serverInstanceId_: the server id. May be null or an empty String.
+   * clientNeedEAR_: true if an EAR is needed. False otherwise.
+   * clientEarProjectName_: the client EAR project. Must be empty if the clientNeedEAR_ is false.
+   *                         Must be non-empty if the clientNeedEAR_ is true.
+   * webServiceClient_ : the IWebServiceClient based on the calculated defaults. Must be non-null for "Next"
+   *                     button to be enabled on the page following this command.
+   * context_ : an IContext. Must be non-null for "Next" button to be enabled on the page following this command.                         
+   */  
   public IStatus execute(IProgressMonitor monitor, IAdaptable adaptable)
   {
 
@@ -177,7 +202,11 @@
     try
     {
       
-      if (clientIdsFixed_)
+      //**Step 1** Default the Web service runtime.
+    	
+      //clientIdsFixed_ is set to true for the Ant scenario. It's always false for the wizard
+      //scenarios.
+      if (clientIdsFixed_ && (clientProjectName_ == null))
       {
         // Set the clientRuntime based on the runtime, server, and initial
         // selection.
@@ -186,26 +215,26 @@
         clientProjectName_ = drt.getProjectName();
         clientRuntimeId_ = drt.getRuntimeId();        
       } 
-      else
-      {
+      else      
+      {	
         ValidationUtils vu = new ValidationUtils();
         
         // Set the runtime based on the project containing the object selection/initial selection.
         DefaultRuntimeTriplet drt = null;
         
-        if (!vu.isProjectServiceProject(clientInitialProject_, wsdlURI_, parser_))
+        if (!vu.isProjectServiceProject(clientInitialProject_, wsdlURI_, parser_) && !clientIdsFixed_)
         {
           //If clientIntialProject_ does not contain the J2EE Web service, choose a clientRuntime based on it.
           drt = getDefaultRuntime(clientInitialProject_, clientIds_.getTypeId(), true);
           clientFacetMatcher_ = drt.getFacetMatcher();
-          clientProjectName_ = drt.getProjectName();
+          clientProjectName_ = drt.getProjectName(); 
           clientRuntimeId_ = drt.getRuntimeId();          
         }
         else
         {
           //clientInitialProject_ contains the J2EE Web service so don't use it.
           //Try using the initalProject_ instead.
-          if (!vu.isProjectServiceProject(initialProject_, wsdlURI_, parser_))
+          if (!vu.isProjectServiceProject(initialProject_, wsdlURI_, parser_) && !clientIdsFixed_)
           {
             //If intialProject_ does not contain the J2EE Web service, choose a clientRuntime based on it.
             drt = getDefaultRuntime(initialProject_, clientIds_.getTypeId(), true);
@@ -224,22 +253,20 @@
           }
         }
 
-        if (clientRuntimeId_ == null)
-        {
-        	// TODO:
-          // return and error.
-        }
+        //Set the Web service runtime id from the clientRuntime
         clientIds_.setRuntimeId(WebServiceRuntimeExtensionUtils2.getClientRuntimeDescriptorById(clientRuntimeId_).getRuntime()
             .getId());
       }
       
-      // Set the project
+      //**Step 2** Default the client project if it was not already defaulted 
+      //as part of defaulting the Web service runtime.
       if (clientProjectName_ == null)
       {
         // Project name did not get set when the runtime was set, so set it now
         clientProjectName_ = getDefaultClientProjectName();
       }
 
+      //**Step 3** Default the client project type.      
       IProject clientProject = ProjectUtilities.getProject(clientProjectName_);
       if (!clientProject.exists())
       {
@@ -253,7 +280,7 @@
       }
 
 
-      // Set the server
+      //**Step 4** Default the client server if this is not an Ant scenario.
       if (!clientIdsFixed_)
       {
         IStatus serverStatus = setClientDefaultServer();
@@ -264,8 +291,12 @@
         }
       }
       
+      //**Step 5** Default clientNeedEAR and client EAR if an EAR is needed
       setDefaultClientEarProject();      
-      // Calculate default IWebServiceClient
+      
+      
+      //**Step 6** Calculate default IWebServiceClient. This is need to make sure that
+      // Next is enabled on the page following this command.
       setDefaultsForExtension(env);
 
       return Status.OK_STATUS;
@@ -312,12 +343,15 @@
             clientNeedEAR_ = false;
           }
         }
+      } else {  // serverId == null, assume that it does not need EAR
+    	  clientNeedEAR_ = false;
+    	  
       }
     }
     
     if (clientNeedEAR_)
     {
-      clientEarProjectName_ = getDefaultClientEarProjectName();
+    	clientEarProjectName_ = DefaultingUtils.getDefaultEARProjectName(clientProjectName_);
     }
     else
     {
@@ -623,12 +657,13 @@
 	    if (fRuntime != null)
 	    {
 	      //Get a server type that has the same runtime type.
-	      IRuntime sRuntime = FacetUtil.getRuntime(fRuntime);      
+	      IRuntime sRuntime = FacetUtil.getRuntime(fRuntime); 
+	      IRuntimeType sRuntimeType = sRuntime.getRuntimeType();
 	      IServerType firstMatchingServerType = null;
 	      for (int i=0; i<serverTypes.length; i++)
 	      {
 	        IServerType thisServerType = serverTypes[i];
-	        if (thisServerType.getRuntimeType().getId().equals(sRuntime.getRuntimeType().getId()))
+	        if (sRuntimeType != null && thisServerType.getRuntimeType().getId().equals(sRuntimeType.getId()))
 	        {
 	          if (firstMatchingServerType == null)
 	          {
@@ -661,7 +696,7 @@
 	        {
 	          Set facetsClone = new HashSet();
 	          facetsClone.addAll(facets);          
-	          if (facetMatcher.getFacetsToAdd() != null)
+	          if (facetMatcher != null && facetMatcher.getFacetsToAdd() != null)
 	          {
 	            Iterator itr = facetMatcher.getFacetsToAdd().iterator();
 	            while (itr.hasNext())
@@ -700,7 +735,8 @@
 	        {
 	          org.eclipse.wst.common.project.facet.core.runtime.IRuntime fRuntime = (org.eclipse.wst.common.project.facet.core.runtime.IRuntime)runtimesItr.next();
 	          IRuntime sRuntime = FacetUtil.getRuntime(fRuntime);
-	          if (thisServerType.getRuntimeType().getId().equals(sRuntime.getRuntimeType().getId()))
+	          IRuntimeType sRuntimeType = sRuntime.getRuntimeType();
+	          if (sRuntimeType != null && thisServerType.getRuntimeType().getId().equals(sRuntimeType.getId()))
 	          {
 	            serverType = thisServerType;
 	          }          
@@ -716,10 +752,11 @@
 	        org.eclipse.wst.common.project.facet.core.runtime.IRuntime fRuntime = (org.eclipse.wst.common.project.facet.core.runtime.IRuntime) itr
 	            .next();
 	        IRuntime sRuntime = FacetUtil.getRuntime(fRuntime);
+	        IRuntimeType sRuntimeType = sRuntime.getRuntimeType();
 	        for (int i = 0; i < serverTypes.length; i++)
 	        {
 	          IServerType thisServerType = serverTypes[i];
-	          if (thisServerType.getRuntimeType().getId().equals(sRuntime.getRuntimeType().getId()))
+	          if (sRuntimeType != null && thisServerType.getRuntimeType().getId().equals(sRuntimeType.getId()))
 	          {
 	            serverType = thisServerType;
 	            break outer;
@@ -790,20 +827,9 @@
       }      
     }
 
-    
-    //Didn't find a template id in the preferred list that worked. 
-    //Return the first one that is a match.
-    for (int j = 0; j < templates.length; j++)
-    {
-      String templateId = templates[j];
-      boolean matches = WebServiceRuntimeExtensionUtils2.doesClientRuntimeSupportTemplate(clientRuntimeId_, templateId);
-      if (matches)
-      {
-        return templates[j];            
-      }
-    }
-    
-    //Still nothing, return the first one if available.
+    //Since the preferredTemplateIds contains the union of all project types for all client runtimes, we are
+    //guaranteed to have returned by now, so the code below will never be executed under normal
+    //circumstances. Just return something to satisfy the compiler.    
     if (templates.length > 0)
       return templates[0];
     
@@ -1217,42 +1243,6 @@
   }
   
   
-  protected String getDefaultClientEarProjectName()
-  {
-    IProject clientProject = ProjectUtilities.getProject(clientProjectName_);
-    IVirtualComponent[] earComps = J2EEUtils.getReferencingEARComponents(clientProject);
-    if (earComps.length>0)
-    {
-      //Pick the first one
-      return earComps[0].getName();
-    }    
-
-    //Either project does not exist or component is not associated with any EARs, so pick the first EAR you see with the correct J2EE version.
-    IVirtualComponent[] allEarComps = J2EEUtils.getAllEARComponents();
-    if (allEarComps.length>0)
-    {
-      if (clientProject != null && clientProject.exists())
-      {
-        for (int i=0; i < allEarComps.length; i++)
-        {
-          IProject earProject = allEarComps[i].getProject();
-          IStatus associationStatus = J2EEUtils.canAssociateProjectToEAR(clientProject, earProject);
-          if (associationStatus.getSeverity()==IStatus.OK)
-          {
-            return allEarComps[i].getName(); 
-          }
-        }
-      }
-      else
-      {
-        return allEarComps[0].getName();
-      }
-    }
-    
-    //there are no Ears.
-    return ResourceUtils.getDefaultClientEARProjectName();
-        
-  }
       
   /*
    * Set defaults for the client-side from the service-side if possible.
@@ -1439,6 +1429,13 @@
       clientInitialProject_ = getProjectFromInitialSelection(selection);
     }
   }
+  
+  // This is for the Ant scenario where the client project name can be set in the property file.
+  // If the user has set the ClientProjectName use it for defaulting purposes
+  public void setClientProjectName(String name)
+  {
+	  clientProjectName_ = name;
+  }
 
   public void setClientInitialProject(IProject clientInitialProject)
   {
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ProjectSelectionWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ProjectSelectionWidget.java
index 4ab472b..dac452a 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ProjectSelectionWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/ProjectSelectionWidget.java
@@ -14,11 +14,14 @@
  * 20060223   129020 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060227   124392 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060413   135581 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060427   138058 joan@ca.ibm.com - Joan Haggarty
+ * 20060510   140868 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060524   141024 joan@ca.ibm.com - Joan Haggarty
+ * 20060829   145449 makandre@ca.ibm.com - Andrew Mak, Web service client project type dropdown disabled after selecting client project
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
@@ -27,6 +30,7 @@
 import org.eclipse.jst.ws.internal.common.ServerUtils;
 import org.eclipse.jst.ws.internal.consumption.common.FacetUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.consumption.ui.common.DefaultingUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.plugin.WebServiceConsumptionUIPlugin;
 import org.eclipse.jst.ws.internal.consumption.ui.preferences.ProjectTopologyContext;
 import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
@@ -69,6 +73,7 @@
 
   private byte ADD_EAR_ASSOCIATION = (byte) 4;
   
+  private Composite parent_;
   private Combo moduleProject_;
   private Combo earProject_;
   private Combo projectType_;
@@ -109,9 +114,10 @@
   public ProjectSelectionWidget(boolean isClient) {
     this.isClient_ = isClient;
   }
-
+    
   public WidgetDataEvents addControls(Composite parent, Listener statusListener) {
-
+	  
+    parent_ = parent;
     UIUtils uiUtils = new UIUtils(pluginId_);
 
     statusListener_ = statusListener;
@@ -119,13 +125,13 @@
     if (isClient_)
 	{
 	  moduleProject_ = uiUtils.createCombo(parent, ConsumptionUIMessages.LABEL_CLIENT_PROJECT, ConsumptionUIMessages.LABEL_CLIENT_PROJECT, INFOPOP_PWRS_COMBO_PROJECT, SWT.SINGLE | SWT.BORDER );
-      projectType_ = uiUtils.createCombo(parent, ConsumptionUIMessages.LABEL_CLIENT_TYPE, ConsumptionUIMessages.TOOLTIP_PWCR_COMBO_CLIENT_TYPE, INFOPOP_PWRS_COMBO_CLIENT_PROJECT_TYPE, SWT.SINGLE | SWT.BORDER);      
+      projectType_ = uiUtils.createCombo(parent, ConsumptionUIMessages.LABEL_CLIENT_TYPE, ConsumptionUIMessages.TOOLTIP_PWCR_COMBO_CLIENT_TYPE, INFOPOP_PWRS_COMBO_CLIENT_PROJECT_TYPE, SWT.SINGLE | SWT.BORDER |SWT.READ_ONLY);      
 	  earProject_ = uiUtils.createCombo(parent, ConsumptionUIMessages.LABEL_CLIENT_EAR_PROJECT, ConsumptionUIMessages.LABEL_CLIENT_EAR_PROJECT, INFOPOP_PWRS_COMBO_PROJECT, SWT.SINGLE | SWT.BORDER );
     }
     else 
 	{      
 	  moduleProject_ = uiUtils.createCombo(parent, ConsumptionUIMessages.LABEL_SERVICE_PROJECT, ConsumptionUIMessages.LABEL_SERVICE_PROJECT, INFOPOP_PWRS_COMBO_PROJECT, SWT.SINGLE | SWT.BORDER );
-      projectType_ = uiUtils.createCombo(parent, ConsumptionUIMessages.LABEL_SERVICE_TYPE, ConsumptionUIMessages.TOOLTIP_PWCR_COMBO_SERVICE_TYPE, INFOPOP_PWRS_COMBO_SERVICE_PROJECT_TYPE, SWT.SINGLE | SWT.BORDER);      
+      projectType_ = uiUtils.createCombo(parent, ConsumptionUIMessages.LABEL_SERVICE_TYPE, ConsumptionUIMessages.TOOLTIP_PWCR_COMBO_SERVICE_TYPE, INFOPOP_PWRS_COMBO_SERVICE_PROJECT_TYPE, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);      
 	  earProject_ = uiUtils.createCombo(parent, ConsumptionUIMessages.LABEL_SERVICE_EAR_PROJECT, ConsumptionUIMessages.LABEL_SERVICE_EAR_PROJECT, INFOPOP_PWRS_COMBO_PROJECT, SWT.SINGLE | SWT.BORDER );
     }
     
@@ -326,7 +332,7 @@
       if (project.exists())
       {
         projectType_.setEnabled(false);
-        projectType_.setText("");        
+        projectType_.deselectAll();        
       }
       else
       {
@@ -437,29 +443,11 @@
 
   private void populateEARCombos()
   {
-    earProject_.removeAll();
-    String projectName = moduleProject_.getText();
-    setEarProjectItems();
-    if (projectName != null && projectName.length() > 0)
-    {
-      IProject proj = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
-      
-      if (proj.exists())
-      {
-        
-        IVirtualComponent[] ears = J2EEUtils.getReferencingEARComponents(proj);
-        if (ears != null && ears.length > 0)
-        {
-          earProject_.setText(ears[0].getName());
-          return;
-        }
-        
-      }
-      
-     
-      String earName = projectName + "EAR";
-      earProject_.setText(earName);      
-    }
+    earProject_.removeAll();    
+    setEarProjectItems(); 
+    
+    String earName = DefaultingUtils.getDefaultEARProjectName(moduleProject_.getText());
+    earProject_.setText(earName);
   }
 
   private boolean projectNeedsEAR(String projectName)
@@ -536,6 +524,7 @@
       else {
         messageText_.setText(getValidationMessage(result, ConsumptionUIMessages.MSG_SERVICE_SUB));
       }
+      parent_.layout();  //force message area resize/wrap
     }
     catch (Exception e) {
       return StatusUtils.errorStatus( ConsumptionUIMessages.PAGE_MSG_VALIDATION_INTERNAL_ERROR, e );
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/RuntimeServerSelectionWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/RuntimeServerSelectionWidget.java
deleted file mode 100644
index f95d580..0000000
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/runtime/RuntimeServerSelectionWidget.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM 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:
- * IBM Corporation - initial API and implementation
- * yyyymmdd bug      Email and other contact information
- * -------- -------- -----------------------------------------------------------
- * 20060204 124408   rsinha@ca.ibm.com - Rupam Kuehner          
- * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
- *******************************************************************************/
-package org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jst.ws.internal.common.ServerUtils;
-import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
-import org.eclipse.jst.ws.internal.consumption.ui.wizard.RuntimeServerSelectionDialog;
-import org.eclipse.jst.ws.internal.consumption.ui.wsrt.RuntimeDescriptor;
-import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
-import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
-import org.eclipse.jst.ws.internal.ui.common.UIUtils;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
-import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetDataContributor;
-import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataEvents;
-import org.eclipse.wst.server.core.IRuntime;
-import org.eclipse.wst.server.core.IServerType;
-import org.eclipse.wst.server.core.ServerCore;
-
-
-
-public class RuntimeServerSelectionWidget extends SimpleWidgetDataContributor
-{
-  private String            pluginId_ = "org.eclipse.jst.ws.consumption.ui";
-  private Text              runtime_;
-  private Text              server_;
-
-  private Composite         parent_;
-  private boolean           isClientContext_;
-  private TypeRuntimeServer ids_;
-  private boolean           install_;
-
-  private Listener           statusListener_;
-  
-  /* CONTEXT_ID PWRS0004 for the service-side runtime selection of the runtime selection Page */
-  private String INFOPOP_PWRS_GROUP_SERVICE_RUNTIME = pluginId_ + ".PWRS0004";
-
-  /* CONTEXT_ID PWRS0005 for the service-sdie server selection of the runtime selection Page */
-  private String INFOPOP_PWRS_GROUP_SERVICE_SERVER = pluginId_ + ".PWRS0005";
-
-  public RuntimeServerSelectionWidget( boolean isClientScenario )
-  {
-    isClientContext_ = isClientScenario; 
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.command.env.ui.widgets.WidgetContributor#addControls(org.eclipse.swt.widgets.Composite, org.eclipse.swt.widgets.Listener)
-   */
-  public WidgetDataEvents addControls( Composite parent, Listener statusListener )
-  {
-    UIUtils      uiUtils  = new UIUtils( pluginId_ ); 
-    
-    parent_         = parent;
-    statusListener_ = statusListener;
-        
-    // Runtime label and text
-    runtime_ = uiUtils.createText( parent, ConsumptionUIMessages.LABEL_RUNTIMES_LIST,  
-    		ConsumptionUIMessages.TOOLTIP_PWRS_TEXT_RUNTIME,
-                                   INFOPOP_PWRS_GROUP_SERVICE_RUNTIME, SWT.READ_ONLY );
-    
-    // Server label and text
-    server_ = uiUtils.createText( parent, ConsumptionUIMessages.LABEL_SERVERS_LIST,  
-    		ConsumptionUIMessages.TOOLTIP_PWRS_TEXT_SERVER,
-                                  INFOPOP_PWRS_GROUP_SERVICE_SERVER, SWT.READ_ONLY );
-    
-    Button editButton = new Button( parent, SWT.NONE );
-    editButton.setText( ConsumptionUIMessages.LABEL_EDIT_BUTTON); 
-    editButton.addSelectionListener( new SelectionAdapter()
-                                     {
-                                       public void widgetSelected( SelectionEvent  evt )
-                                       {
-                                         handleEditButton(); 
-                                       }
-                                     } );
-    
-    // Dummy label that goes on the right side of the edit button.
-    new Label( parent, SWT.NONE );
-    
-    return this;
-  }
-
-  public TypeRuntimeServer getTypeRuntimeServer()
-  {
-    return ids_;  
-  }
-  
-  public void setTypeRuntimeServer( TypeRuntimeServer ids )
-  {
-    ids_ = ids;
-    setLabels();
-  }
-  
-  public void setInstall(boolean b)
-  {
-    install_ = b;
-  }
-  
-  private void setLabels()
-  {
-	String                       runtimeLabel = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById( ids_.getRuntimeId() );
-    String                       serverLabel  = null;
-    
-    if( ids_.getServerInstanceId() == null )
-    {
-      // Get the label for the general server type.
-      //WebServiceServer server = registry.getWebServiceServerByFactoryId( ids_.getServerId() );
-      //serverLabel = server == null ? "" : server.getLabel();
-      String serverId = ids_.getServerId();
-      if (serverId != null)
-        serverLabel = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverId);
-    }
-    else
-    {
-      // Get the label for the server instance.
-      //serverLabel = registry.getServerInstanceLabelFromInstanceId( ids_.getServerInstanceId() );
-      String serverInstanceId = ids_.getServerInstanceId();
-      if (serverInstanceId != null)
-        serverLabel = WebServiceRuntimeExtensionUtils2.getServerInstanceLabelFromInstanceId(serverInstanceId);
-    }
-    // rskreg
-    runtimeLabel = runtimeLabel == null ? "" : runtimeLabel;
-    
-    runtime_.setText( runtimeLabel );
-    if (serverLabel != null)
-      server_.setText( serverLabel );
- 
-  }
-  
-  public void handleEditButton()
-  {
-    byte mode = isClientContext_ ? (byte)1 : (byte)0;
-    
-    RuntimeServerSelectionDialog dialog     
-      = dialog = new RuntimeServerSelectionDialog( parent_.getShell(), mode, ids_, "14" ); //rm j2ee
-    dialog.create();
-    dialog.handleServerViewSelectionEvent();
-    int result = dialog.open();
-
-    if (result == Window.OK)
-    {
-      ids_ = dialog.getTypeRuntimeServer();
-      setLabels();
-      statusListener_.handleEvent(null);
-    }  
-  }  
-  
-  public void addModifyListener(ModifyListener listener)
-  {
-    if (runtime_ != null)
-      runtime_.addModifyListener(listener);
-  }
-  
-  public void removeModifyListener(ModifyListener listener)
-  {
-    if (runtime_ != null)
-      runtime_.removeModifyListener(listener);
-  }
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.command.env.ui.widgets.WidgetContributor#getStatus()
-   */
-  public IStatus getStatus() 
-  {
-    IStatus status = Status.OK_STATUS;
-    String scenario = isClientContext_ ? ConsumptionUIMessages.MSG_CLIENT_SUB
-                                        : ConsumptionUIMessages.MSG_SERVICE_SUB;
-    
-	String                       runtimeLabel = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById( ids_.getRuntimeId() );
-	String                       serverLabel  = ids_.getServerId() == null ? "" : WebServiceRuntimeExtensionUtils2.getServerLabelById(ids_.getServerId());
-    
-	
-    if( ids_.getRuntimeId() == null || runtimeLabel == null || runtimeLabel.equals("" ))
-    {
-      status = StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_NO_RUNTIME, new String[]{ scenario } ) );
-    }    
-    else if( ids_.getServerId() == null || serverLabel.equals( "" ))
-    {
-      RuntimeDescriptor desc = WebServiceRuntimeExtensionUtils2.getRuntimeById(ids_.getRuntimeId());
-      if (desc.getServerRequired())
-      {
-        status = StatusUtils.errorStatus( NLS.bind(ConsumptionUIMessages.MSG_NO_SERVER, new String[]{ scenario } ) );
-      }
-    }
-    
-    //
-    
-	//--------- check if WSCT exists for these selections
-	if (!(ids_.getServerId() == null) && !(ids_.getRuntimeId() == null) && isClientContext_)
-	{
-
-		if (!WebServiceRuntimeExtensionUtils2.isServerClientRuntimeTypeSupported( ids_.getServerId(), ids_.getRuntimeId(), ids_.getTypeId())) 
-		{
-			status = StatusUtils.errorStatus( NLS.bind(ConsumptionUIMessages.MSG_INVALID_SRT_SELECTIONS, new String[]{ serverLabel, runtimeLabel } ) );		  
-		}
-
-	}    
-    
-    //--------- check if WSSRT exists for these selections
-    if (!(ids_.getServerId() == null) && !(ids_.getRuntimeId() == null) && !isClientContext_)
-    {
-
-	  if (!WebServiceRuntimeExtensionUtils2.isServerRuntimeTypeSupported(ids_.getServerId(), ids_.getRuntimeId(), ids_.getTypeId())) {	  
-        status = StatusUtils.errorStatus( NLS.bind(ConsumptionUIMessages.MSG_INVALID_SRT_SELECTIONS, new String[]{ serverLabel, runtimeLabel } ) );      
-      }
-
-    }
-
-    //If no errors for detected, check for warnings    
-    if (status.getSeverity() != Status.ERROR)
-    {
-      
-      // Check if server type is null and the user opted to install on page 1.
-      String serverFactoryId = ids_.getServerId();
-      if (serverFactoryId == null || serverFactoryId.length() == 0)
-      {
-        if (isClientContext_)
-        {
-          status = StatusUtils.warningStatus(NLS.bind(ConsumptionUIMessages.MSG_WARN_NO_CLIENT_SERVER, new String[0]));
-        } else
-        {
-          status = StatusUtils.warningStatus(NLS.bind(ConsumptionUIMessages.MSG_WARN_NO_SERVICE_SERVER, new String[0]));
-        }
-
-      }
-      else
-      {
-
-        // Check if only stub runtime is available for the selected server type
-        IServerType serverType = ServerCore.findServerType(serverFactoryId);
-        if (serverType != null)
-        {
-
-          // Find a Runtime which is not a stub
-          IRuntime nonStubRuntime = ServerUtils.getNonStubRuntime(serverFactoryId);
-          if (install_ && nonStubRuntime == null)
-          {
-            String servertypeLabel = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverFactoryId);
-            status = StatusUtils.warningStatus(NLS.bind(ConsumptionUIMessages.MSG_WARN_STUB_ONLY,
-                new String[] { servertypeLabel }));
-          }
-        }
-      }
-    }
-            
-    return status;
-  }
-}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestDelegateCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestDelegateCommand.java
index cac73e1..2719823 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestDelegateCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestDelegateCommand.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060608   145529 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.test;
@@ -49,6 +53,7 @@
   private String sampleServerTypeID;
   private IServer sampleExistingServer;
   private String proxyBean;
+  private boolean runTestClient;
   private String sampleProject;
   private String sampleP;
   private String clientProject;
@@ -86,11 +91,13 @@
 	if(status.getSeverity() == Status.ERROR){
 	  return status;	
 	}
+	
+	testInfo.setRunTestClient(runTestClient);
+	
 	status = commandFactoryExecution(iwst.launch(testInfo),env, monitor );
 	if(status.getSeverity() == Status.ERROR){
-	  return status;	
+		return status;	
 	}
-	
     return status;
   }
   
@@ -207,8 +214,9 @@
     this.methods = methods;  
   }
  
-  public void setRunClientTest(boolean runClientTest)
+  public void setRunTestClient(boolean runTestClient)
   {
+    this.runTestClient = runTestClient;
   }
   
   public void setProxyBean(String proxyBean)
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestFragment.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestFragment.java
index f86bb26..0f6fb6f 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestFragment.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060727   144354 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 /**
  */
@@ -21,7 +24,7 @@
 public class ClientTestFragment extends BooleanFragment
 {
   private boolean testService;
-  private boolean genProxy;
+  private boolean genProxy;  // This actually represent whether client test is requested
   private boolean launchedTest = false;
   
   public ClientTestFragment( String id )
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestWidget.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestWidget.java
index 9021919..6b579d3 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestWidget.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/ClientTestWidget.java
@@ -1,28 +1,30 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060815   104870 makandre@ca.ibm.com - Andrew Mak, enable/disable test page controls base on settings in test facility extension
+ * 20060815   153903 makandre@ca.ibm.com - Andrew Mak, Browse does not work in generate client test page
  *******************************************************************************/
-/**
- */
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.test;
 
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.jst.ws.internal.consumption.common.FolderResourceFilter;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.ext.test.WebServiceTestExtension;
+import org.eclipse.jst.ws.internal.ext.test.WebServiceTestRegistry;
 import org.eclipse.jst.ws.internal.ui.common.UIUtils;
 import org.eclipse.jst.ws.internal.ui.dialog.DialogUtils;
 import org.eclipse.swt.SWT;
@@ -102,6 +104,9 @@
   private IStructuredSelection initialSelection_;
   private boolean isTestWidget = false;
   
+  private IPath webContentPath_;
+  private IResource webContent_;
+    
   public WidgetDataEvents addControls( Composite parent, Listener statusListener )
   {
     isTestWidget = true;
@@ -127,6 +132,14 @@
     									ConsumptionUIMessages.TOOLTIP_PWSM_COMBOBOX_TEST,
                                           INFOPOP_PWSM_COMBOBOX_TEST,
                                           SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY );
+    testTypeCombo_.addSelectionListener(
+    		new SelectionAdapter() {
+    			public void widgetSelected(SelectionEvent e) {
+    				handleTestFacilitySelection();
+    			}
+    		}
+    );    
+    
     new Label( comboGroup_, SWT.NONE );
     
     projectCombo_ = uiUtils.createCombo( comboGroup_, ConsumptionUIMessages.LABEL_JSP_PROJECT_NAME,
@@ -227,23 +240,21 @@
   
   private void handleFolderText()
   {
+	// webContentPath_ is set when jspFolderText_ is set for the first time.  Therefore,
+	// if webContentPath_ is still null, there is no need to touch jspFolderText_ yet.
+	  
+	if (webContentPath_ == null)
+		return;
+	  
   	String folder = sampleFolderText_.getText();	
-    String jspFolder = jspFolderText_.getText();
-    int index = jspFolder.lastIndexOf(Path.SEPARATOR);
-    if(index == -1) return;
-    jspFolder = jspFolder.substring(0,index + 1);
-    jspFolder = jspFolder + folder;
-    jspFolderText_.setText(jspFolder);
+    jspFolderText_.setText(webContentPath_.toString() + IPath.SEPARATOR + folder);
   }
   
   private void handleSampleBrowse()
   {
     IPath      selectedPath       = null;
     IResource  initialResource    = null;
-    IPath      projectPath        = new Path( projectCombo_.getText() ).makeAbsolute();
-    IResource  project            = ResourceUtils.findResource( projectPath );
-//    IContainer webModuleContainer = ResourceUtils.getWebModuleServerRoot( (IProject)project);
-    IContainer webModuleContainer = J2EEUtils.getFirstWebContentContainer((IProject)project);  
+    
     try
     {
       initialResource = ResourceUtils.getResourceFromSelection( initialSelection_ );
@@ -252,10 +263,10 @@
     {  
     }
     
-    if( initialResource == null )initialResource = project;
+    if( initialResource == null )initialResource = webContent_;
     
     IResource resource = DialogUtils.browseResources( comboGroup_.getShell(), 
-                                                      project,
+                                                      webContent_,
                                                       initialResource, 
                                                       folderFilter_ );
     
@@ -263,9 +274,9 @@
     {
       selectedPath = resource.getFullPath();   
     
-      int webModuleSegments = selectedPath.matchingFirstSegments(webModuleContainer.getFullPath());
+      int webModuleSegments = selectedPath.matchingFirstSegments(webContentPath_);
       
-      if ( webModuleSegments < 2 )
+      if ( webModuleSegments < webContentPath_.segmentCount() )
       {
         sampleFolderText_.setText("");
         handleFolderText();
@@ -283,6 +294,12 @@
     boolean enabled = testCheckbox_.getSelection();
     
     testTypeCombo_.setEnabled( enabled );
+    
+    if (enabled && testFacilities_ != null) {
+    	handleTestFacilitySelection();
+    	return;
+    }    
+
     sampleFolderText_.setEnabled( enabled );
     methodsTree_.setEnabled( enabled );
     runTestCheckbox_.setEnabled( enabled );
@@ -291,6 +308,31 @@
     sampleFolderBrowseButton_.setEnabled( enabled );
   }
   
+  private void handleTestFacilitySelection() {
+	  
+	  String clientTestID = getTestFacility().getSelection();
+	  	
+	  WebServiceTestExtension testExtension = 
+		  (WebServiceTestExtension) WebServiceTestRegistry.getInstance()
+		  .getWebServiceExtensionsByName(clientTestID);
+	    
+      boolean hasCodeGen = testExtension.isCodeGenNeeded();
+      
+      // folder selection is only applicable for test facilities with codegen
+      sampleFolderText_.setEnabled( hasCodeGen );
+      sampleFolderBrowseButton_.setEnabled( hasCodeGen && webContent_ != null );
+      
+      boolean hasMethods = testExtension.areMethodsNeeded();
+      
+      // method selection is only applicable for test facilities with methods
+      methodsTree_.setEnabled( hasMethods );      
+      selectAllMethodsButton_.setEnabled( hasMethods );
+      deselectAllMethodsButton_.setEnabled( hasMethods );
+      
+      // run on server only applicable for test facilities that needs launching
+      runTestCheckbox_.setEnabled( testExtension.isServerNeeded() );
+  }
+  
   private void handleSelectAll( boolean value )
   {
 	TreeItem[] items = methodsTree_.getItems();
@@ -318,6 +360,7 @@
     testFacilities_ = testFacilities;
     testTypeCombo_.setItems( testFacilities.getList() );
     testTypeCombo_.select( testFacilities.getIndex() );
+    handleTestFacilitySelection();
   }
   
   public SelectionList getTestFacility()
@@ -331,15 +374,33 @@
     return testTypeCombo_.getText();
   }
   
+  /**
+   * Given a project name which may be of the (obsolete) format "project/module",
+   * return only the project part of the name
+   * 
+   * @param project The project name.
+   * @return If the name has the format "project/module", returns only "project", 
+   * otherwise returns the name as is.
+   */
+  private String extractProjectName(String project) {
+	  
+	  int index = project.indexOf("/");
+	  
+	  if (index != -1)
+		  project = project.substring(0, index);
+	  
+	  return project;
+  }
+  
   public void setSampleProject(String clientProject) 
   {
-	projectCombo_.setItems( new String[]{ clientProject } );
+	projectCombo_.setItems( new String[]{ extractProjectName(clientProject) } );
 	projectCombo_.select(0);
   }
   
   public void setSampleProjectEAR(String clientProjectEAR) 
   {
-    earCombo_.setItems( new String[]{ clientProjectEAR } );
+    earCombo_.setItems( new String[]{ extractProjectName(clientProjectEAR) } );
     earCombo_.select(0);
   }
   
@@ -360,6 +421,10 @@
   
   public void setJspFolder( String folder )
   {
+	webContentPath_ = (new Path(folder)).removeLastSegments(1);
+	webContent_ = ResourceUtils.findResource(webContentPath_);	
+	sampleFolderBrowseButton_.setEnabled(webContent_ != null);
+	  
     jspFolderText_.setText( folder );
   }
   
@@ -372,12 +437,12 @@
   {
   }
   
-  public boolean getRunClientTest()
+  public boolean getRunTestClient()
   {
     return runTestCheckbox_.getSelection();
   }
   
-  public void setRunClientTest( boolean value )
+  public void setRunTestClient( boolean value )
   {
     runTestCheckbox_.setSelection( value );
   }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/CopyWebServiceUtilsJarCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/CopyWebServiceUtilsJarCommand.java
index bb5e85a..b87d272 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/CopyWebServiceUtilsJarCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/CopyWebServiceUtilsJarCommand.java
@@ -1,18 +1,26 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060912   157039 makandre@ca.ibm.com - Andrew Mak, new webserviceutils.jar not copied in client generation
+ * 20061025   161250 makandre@ca.ibm.com - Andrew Mak, Installations or workspace paths with spaces break Sample Gen and Java Editor Launch
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.test;
 
+import java.io.File;
+import java.net.URL;
+
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -32,6 +40,7 @@
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.common.environment.IStatusHandler;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.common.BundleUtils;
 
 
 public class CopyWebServiceUtilsJarCommand extends AbstractDataModelOperation 
@@ -100,10 +109,15 @@
        context.setCreateFoldersEnabled(true);
        context.setCheckoutFilesEnabled(true);
        IResource resource = FileResourceUtils.findResource(target);
-       if(resource != null) return Status.OK_STATUS;
+       URL sourceURL = BundleUtils.getURLFromBundle( WebServiceConsumptionPlugin.ID, source );       
+       if(resource != null) {    	      	   
+    	   File sourceFile = new File(FileLocator.toFileURL(sourceURL).getPath());   
+    	   if (resource.getLocation().toFile().length() == sourceFile.length())
+    		   return Status.OK_STATUS;
+       }
        FileResourceUtils.createFile(context, 
                       							target,
-                                    plugin.openStream(new Path(source)),
+                                    sourceURL.openStream(),
                                     monitor,
                                     env.getStatusHandler());
     }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/FinishTestFragment.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/FinishTestFragment.java
index aeb174a..20fd0be 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/FinishTestFragment.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/FinishTestFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060727   144354 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 /*
  * Created on May 4, 2004
@@ -33,7 +36,7 @@
 public class FinishTestFragment extends BooleanFragment{
 
   private boolean isTestWidget;	
-  private boolean generateProxy;
+  private boolean generateProxy;  // This actually represent whether client test is requested
   private String launchedServiceTestName;
   private boolean testService;
   private String testID;
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/TestDefaultingFragment.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/TestDefaultingFragment.java
index a595294..a246e7c 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/TestDefaultingFragment.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/TestDefaultingFragment.java
@@ -1,12 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060727   144354 kathy@ca.ibm.com - Kathy Chan
+ * 20060821   153833 makandre@ca.ibm.com - Andrew Mak, Allow the Web Service Test extension point to specify the supported client runtime
+ * 20060907   156606 makandre@ca.ibm.com - Andrew Mak, no sample JSP in the pop-up action of Generate Sample JSPs
  *******************************************************************************/
 /*
  * Created on May 4, 2004
@@ -16,11 +21,16 @@
  */
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.test;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.ws.internal.context.ScenarioContext;
+import org.eclipse.jst.ws.internal.ext.test.WebServiceTestExtension;
+import org.eclipse.jst.ws.internal.ext.test.WebServiceTestRegistry;
 import org.eclipse.jst.ws.internal.plugin.WebServicePlugin;
 import org.eclipse.wst.command.internal.env.core.selection.SelectionList;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
@@ -38,8 +48,9 @@
   private SelectionList testFacilities;
   private String launchedServiceTestName;
   private ScenarioContext scenarioContext;	
-  private boolean generateProxy;
+  private boolean generateProxy;  // This actually represent whether client test is requested
   
+  private String clientRuntimeId_;
   
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
@@ -70,29 +81,36 @@
     //if we find something we launched earlier 
     //put it on the bottom
     String[] testTypes = scenarioContext.getWebServiceTestTypes();	  
-    String[] newTestTypes = new String[testTypes.length];
+    List newTestTypes = new ArrayList();
 	String[] wsdlCases = scenarioContext.getNonJavaTestService();
 	boolean launched = false;
-    
-	int j = 0;
 	
     for(int i = 0;i<testTypes.length;i++){
+    	
+      WebServiceTestExtension extension =
+    	  (WebServiceTestExtension) WebServiceTestRegistry.getInstance()
+    	  .getWebServiceExtensionsByName(testTypes[i]);
+		  
+      if (clientRuntimeId_ != null && !extension.supportsRuntime(clientRuntimeId_))
+    	  continue;
+    	
 	  if(testTypes[i].equals(launchedServiceTestName))
 	    launched = true;
 	  else{
-	     newTestTypes[j] = testTypes[i];
-	     j++;
+	     newTestTypes.add(testTypes[i]); 
 	  }
 	}
 	   	
     if(launched)
-	  newTestTypes[testTypes.length - 1] = launchedServiceTestName;
+	  newTestTypes.add(launchedServiceTestName);
     
 	
 	if(!generateProxy)
       testFacilities = new SelectionList(wsdlCases,0);	
-	else
-	  testFacilities = new SelectionList(newTestTypes,0);	
+	else {
+	  String[] tempArray = new String[newTestTypes.size()];
+	  testFacilities = new SelectionList((String[]) newTestTypes.toArray(tempArray), 0);
+	}
   }
 
   public void setLaunchedServiceTestName(String launchedServiceTestName)
@@ -104,5 +122,14 @@
   {
   	this.generateProxy = generateProxy;
   }
-  
+    
+  /**
+   * Sets the client runtime ID.
+   * 
+   * @param clientRuntimeId The client runtime ID.
+   */
+  public void setClientRuntimeId(String clientRuntimeId) {
+	  clientRuntimeId_ = clientRuntimeId;
+  }
+
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/WebServiceClientTestArrivalCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/WebServiceClientTestArrivalCommand.java
index 9202593..9cd6558 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/WebServiceClientTestArrivalCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/WebServiceClientTestArrivalCommand.java
@@ -1,12 +1,18 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
+ * Copyright (c) 2003, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060608   144500 mahutch@ca.ibm.com - Mark Hutchinson
+ * 20060818   153903 makandre@ca.ibm.com - Andrew Mak, Browse does not work in generate client test page
+ * 20060906   154548 gilberta@ca.ibm.com - Gilbert Andrews, This fixes name collisions when creating a sample project
+ * 20060922   158177 makandre@ca.ibm.com - Andrew Mak, NPE when creating web service client into existing Java project with test
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.test;
 
@@ -15,6 +21,7 @@
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
@@ -22,6 +29,7 @@
 import org.eclipse.jem.java.JavaHelpers;
 import org.eclipse.jem.java.Method;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.consumption.command.common.JavaMofReflectionCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
@@ -75,11 +83,24 @@
 	IStatus status = Status.OK_STATUS;
   	
 	sampleProjectAndEarSetup(env);
-  	
+	IPath webcontentPath = null;
+
+	// *need* to double-check that clientIProject is a web project
+	if (J2EEUtils.isWebComponent(clientIProject))
+		webcontentPath = J2EEUtils.getWebContentPath(clientIProject);
+	
     //Get the sample Folder ready
     StringBuffer sb = new StringBuffer();
-	
-	sb.append("/").append(sampleC).append("/").append(DEFAULT_WEB_MODULE_ROOT).append("/");
+    
+    if (webcontentPath != null)
+    {	
+    	String path = webcontentPath.toString();
+    	sb.append(path).append("/");
+    }
+    else
+    {	//then just use the default
+    	sb.append("/").append(sampleC).append("/").append(DEFAULT_WEB_MODULE_ROOT).append("/");
+    }
     folder = SAMPLE_DIR + getBean(); 
         
     sb.append(folder);
@@ -162,9 +183,30 @@
 	  sampleC = clientC + DEFAULT_SAMPLE_WEB_PROJECT_EXT;
 	  sampleProject = sampleP + "/" + sampleC;
 	  
+	  String sampleTemp = sampleP;
 	  
-	}  
-	sampleProjectEAR = clientProjectEAR;
+	  boolean nameFound = false;
+	  int i = 1;
+	  while(!nameFound){
+		  IProject sampleIProject = (IProject)ProjectUtilities.getProject(sampleTemp);
+		  if(sampleIProject.exists() && !J2EEProjectUtilities.isDynamicWebProject(sampleIProject)){
+			  sampleTemp = sampleP + Integer.toString(i);
+			  sampleProject = sampleTemp + "/" + sampleC;
+		      
+		  }
+		  else
+			  nameFound = true; 
+		  
+		  i++;
+	  }
+	  sampleP = sampleTemp;
+    
+  	}  
+	
+  	
+  	
+  	
+  	sampleProjectEAR = clientProjectEAR;
 	if (sampleProjectEAR == null || sampleProjectEAR.length()==0){
 	  sampleProjectEAR = sampleP + DEFAULT_SAMPLE_EAR_PROJECT_EXT + "/" + sampleC + DEFAULT_SAMPLE_EAR_PROJECT_EXT;	
 	}
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/AddModuleDependenciesCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/AddModuleDependenciesCommand.java
index 412e994..3c6638f 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/AddModuleDependenciesCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/AddModuleDependenciesCommand.java
@@ -10,12 +10,16 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060324   122799 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060503   138478 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060510   141115 rsinha@ca.ibm.com - Rupam Kuehner
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.test.wssample;
 
+import java.io.IOException;
 import java.util.List;
 
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -26,13 +30,21 @@
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
+import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveManifest;
+import org.eclipse.jst.j2ee.internal.plugin.IJ2EEModuleConstants;
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
 import org.eclipse.jst.j2ee.project.facet.IJavaProjectMigrationDataModelProperties;
 import org.eclipse.jst.j2ee.project.facet.JavaProjectMigrationDataModelProvider;
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.consumption.command.common.AddModuleToServerCommand;
 import org.eclipse.jst.ws.internal.consumption.command.common.AssociateModuleWithEARCommand;
-import org.eclipse.jst.ws.internal.consumption.command.common.CreateModuleCommand;
+import org.eclipse.jst.ws.internal.consumption.command.common.CreateFacetedProjectCommand;
+import org.eclipse.jst.ws.internal.consumption.common.RequiredFacetVersion;
+import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
 import org.eclipse.jst.ws.internal.consumption.ui.command.StartServerCommand;
+import org.eclipse.jst.ws.internal.consumption.ui.common.ValidationUtils;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties;
 import org.eclipse.wst.common.componentcore.internal.operation.CreateReferenceComponentsDataModelProvider;
@@ -53,7 +65,6 @@
   private IProject clientIProject;
   private IProject sampleEARIProject;
   private String sampleEARProject;
-  private String sampleEARModule;
   
   public AddModuleDependenciesCommand(TestInfo testInfo)
   {
@@ -66,32 +77,176 @@
    */
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
-    IEnvironment env = getEnvironment();
-      createSampleProjects(env, monitor );
-	  clientIProject = ProjectUtilities.getProject(testInfo.getClientProject());
-	        
-      if (clientIProject != null && !J2EEUtils.isWebComponent(clientIProject))
-      {
-        if (J2EEUtils.isJavaComponent(clientIProject)){
-          addJavaProjectAsUtilityJar(clientIProject, sampleEARIProject,monitor);
-          addJavaProjectAsUtilityJar(clientIProject, sampleIProject,monitor);
-          try
+	  IEnvironment env = getEnvironment();
+	  //1. Create a Web project for the sample if one does not already exist.
+	  sampleIProject = ProjectUtilities.getProject(testInfo.getGenerationProject());
+	  boolean createdSampleProject = false;
+      if (!sampleIProject.exists())
+      {    	
+          CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
+          command.setProjectName(testInfo.getGenerationProject());
+          command.setTemplateId(IJ2EEModuleConstants.JST_WEB_TEMPLATE);          
+          // RequiredFacetVersions is set to an empty array because we don't need to impose any additional constraints.
+          // We just want to create the highest level of Web project that the selected server supports.
+          command.setRequiredFacetVersions(new RequiredFacetVersion[0]);           
+          command.setServerFactoryId(testInfo.getClientServerTypeID());
+          command.setServerInstanceId(testInfo.getClientExistingServer().getId());
+          IStatus status = command.execute( monitor, adaptable );
+          if (status.getSeverity() == Status.ERROR)
           {
-        	  addBuildPath(sampleIProject, clientIProject);
-          } catch (JavaModelException jme)
-          {
-        	  //Do nothing in this catch block. The worst that
-        	  //will happen is that the sample Web project
-        	  //will show some compile errors. The sample will
-        	  //likely still launch successfully on the server
-        	  //and the user will be able to use it.
-          }
-		}
+            env.getStatusHandler().reportError( status );
+            return status;
+          }                    	  
+          createdSampleProject = true;
+      }
+	  
+	  //2. If the selected server requires an EAR and no EAR name
+	  //has been provided, choose an EAR name and create it if it doesn't exist.
+      ValidationUtils vu = new ValidationUtils();
+      boolean serverNeedsEAR = vu.serverNeedsEAR(testInfo.getClientServerTypeID());
+      if (serverNeedsEAR) {
+			if (testInfo.getClientEARProject() == null
+					|| testInfo.getClientEARProject().length() == 0) {
+				sampleEARProject = testInfo.getGenerationProject() + DEFAULT_SAMPLE_EAR_PROJECT_EXT;
+			} else {
+				sampleEARProject = testInfo.getClientEARProject();
+			}
+			sampleEARIProject  = ProjectUtilities.getProject(sampleEARProject);
+			if (sampleEARIProject == null || !sampleEARIProject.exists())
+			{
+		          CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
+		          command.setProjectName(sampleEARProject);
+		          command.setTemplateId(IJ2EEModuleConstants.JST_EAR_TEMPLATE);          
+		          // RequiredFacetVersions is set to an empty array because we don't need to impose any additional constraints.
+		          // We just want to create the highest level of Web project that the selected server supports.
+		          command.setRequiredFacetVersions(new RequiredFacetVersion[0]);           
+		          command.setServerFactoryId(testInfo.getClientServerTypeID());
+		          command.setServerInstanceId(testInfo.getClientExistingServer().getId());
+		          IStatus status = command.execute( monitor, adaptable );
+		          if (status.getSeverity() == Status.ERROR)
+		          {
+		            env.getStatusHandler().reportError( status );
+		            return status;
+		          }                    	  				
+			}
+			
 	  }
+ 
+	  // 3. If the selected server requires an EAR, and the sample project has
+		// not already been added to the EAR, add it.
+      if (serverNeedsEAR)
+      {
+  	    AssociateModuleWithEARCommand associateCommand = new AssociateModuleWithEARCommand();
+	    associateCommand.setProject(testInfo.getGenerationProject());
+	    associateCommand.setEARProject(sampleEARProject);
+	    associateCommand.setEar(sampleEARProject);
+		associateCommand.setEnvironment( env );
+	    IStatus status = associateCommand.execute( monitor, null );
+	    if (status.getSeverity()==Status.ERROR)
+	    {
+	      env.getStatusHandler().reportError(status);     
+	    }      	  
+      }
+	  
+
+      
+	  
+	  // 4. If server requires an EAR, and the sample EAR has not already been
+		// added to the server, add it.
+	  //   If no EAR is required, and sample project has not been added to the server add it.
+      if (serverNeedsEAR)
+      {
+    	//Add sampleEARIProject to the server if needed.
+  		AddModuleToServerCommand modToServer = new AddModuleToServerCommand();
+		modToServer.setModule(sampleEARProject);
+		modToServer.setProject(sampleEARProject);
+		modToServer.setServerInstanceId(testInfo.getClientExistingServer().getId());
+		modToServer.setEnvironment( env );
+		IStatus status = modToServer.execute( monitor, null );
+		if (status.getSeverity()==Status.ERROR)
+	    {
+	      env.getStatusHandler().reportError(status);     
+	    }         	  
+      }
+      else
+      {
+    	  //add sampleIProject directly to the server if needed.
+          AddModuleToServerCommand addToServer = new AddModuleToServerCommand();
+          addToServer.setModule(testInfo.getGenerationProject());
+          addToServer.setProject(testInfo.getGenerationProject());
+          addToServer.setServerInstanceId(testInfo.getClientExistingServer().getId());
+          addToServer.setEnvironment( env );
+          IStatus status = addToServer.execute( monitor, null );
+          if (status.getSeverity()==Status.ERROR)
+          {
+            env.getStatusHandler().reportError(status);     
+          }                  	      	  
+      }
+	  
+	  //5. Call StartServerCommand if this command had to create the sample project.
+      if (createdSampleProject)
+      {
+		StartServerCommand startServer = new StartServerCommand(true);
+		startServer.setServerInstanceId(testInfo.getClientExistingServer().getId());
+		startServer.setEnvironment( env );
+		IStatus status = startServer.execute( monitor, null );
+	    if (status.getSeverity()==Status.ERROR)
+	    {
+	      env.getStatusHandler().reportError(status);     
+	    }
+      }
+      
+      
+	  //6. Establish all necessary dependencies between client project, sample project, and EAR
+      
+	  clientIProject = ProjectUtilities.getProject(testInfo.getClientProject());
+
+		if (clientIProject != null && !J2EEUtils.isWebComponent(clientIProject)) {
+			if (J2EEUtils.isJavaComponent(clientIProject)) {				
+				addJavaProjectAsUtilityJar(clientIProject, sampleEARIProject, monitor);
+				addJavaProjectAsUtilityJar(clientIProject, sampleIProject,monitor);
+			}
+
+				try
+				{
+				  String uri = clientIProject.getName() + ".jar";
+				  addJAROrModuleDependency(sampleIProject, uri);
+				} catch (CoreException ce)
+				{
+					String errorMessage = NLS.bind(ConsumptionUIMessages.MSG_ERROR_MODULE_DEPENDENCY, new String[]{sampleIProject.getName(), clientIProject.getName()});
+					IStatus errorStatus = StatusUtils.errorStatus(errorMessage);
+					env.getStatusHandler().reportError(errorStatus);
+				} catch (IOException ioe)
+				{
+					String errorMessage = NLS.bind(ConsumptionUIMessages.MSG_ERROR_MODULE_DEPENDENCY, new String[]{sampleIProject.getName(), clientIProject.getName()});
+					IStatus errorStatus = StatusUtils.errorStatus(errorMessage);
+					env.getStatusHandler().reportError(errorStatus);					
+				}							
+			
+			try {		
+				addBuildPath(sampleIProject, clientIProject);
+			} catch (JavaModelException jme) {
+				// Do nothing in this catch block. The worst that
+				// will happen is that the sample Web project
+				// will show some compile errors. The sample will
+				// likely still launch successfully on the server
+				// and the user will be able to use it.
+			}
+		}      	  
     
     return Status.OK_STATUS;
   }
-
+  
+  private void addJAROrModuleDependency(IProject project, String uri) throws IOException, CoreException
+  {
+    if (J2EEUtils.isWebComponent(project))
+    {
+      ArchiveManifest manifest = J2EEProjectUtilities.readManifest(project);
+      manifest.mergeClassPath(new String[]{uri});
+      J2EEProjectUtilities.writeManifest(project, manifest);
+    }
+  }
+  
   private void addJavaProjectAsUtilityJar(IProject javaProject, IProject earProject,IProgressMonitor monitor)
   {
 	  try {
@@ -133,109 +288,5 @@
  
 
   public static final String DEFAULT_SAMPLE_EAR_PROJECT_EXT = "EAR";
-  
-  private void createSampleProjects(IEnvironment env, IProgressMonitor monitor )
-  {
-	  sampleIProject = ProjectUtilities.getProject(testInfo.getGenerationProject());
-	  clientIProject = ProjectUtilities.getProject(testInfo.getClientProject());
-	  
-	if (testInfo.getClientNeedEAR()) {
-	  if(testInfo.getClientEARProject() == null || testInfo.getClientEARProject().length() == 0){
-		  sampleEARProject = testInfo.getGenerationProject() + DEFAULT_SAMPLE_EAR_PROJECT_EXT;	
-	  }
-	  else{ 
-	      sampleEARProject = testInfo.getClientEARProject();
-	  }
-	  
-	  sampleEARIProject  = ProjectUtilities.getProject(sampleEARProject);
-	  if(sampleEARIProject == null || !sampleEARIProject.isOpen()){
-		  
-	    CreateModuleCommand createEAR = new CreateModuleCommand();
-	    createEAR.setProjectName(sampleEARProject);
-	    createEAR.setModuleName(sampleEARModule);
-	    createEAR.setServerInstanceId(testInfo.getClientExistingServer().getId());
-	    createEAR.setServerFactoryId(testInfo.getClientServerTypeID());
-	    createEAR.setModuleType(CreateModuleCommand.EAR);
-	    createEAR.setJ2eeLevel(J2EEUtils.getJ2EEVersionAsString(clientIProject));
-		createEAR.setEnvironment( env );
-		  IStatus status = createEAR.execute( monitor, null );
-	    if (status.getSeverity()==Status.ERROR)
-        {
-          env.getStatusHandler().reportError(status);     
-        }
-	  
-		AddModuleToServerCommand modToServer = new AddModuleToServerCommand();
-		modToServer.setModule(sampleEARModule);
-		modToServer.setProject(sampleEARProject);
-		modToServer.setServerInstanceId(testInfo.getClientExistingServer().getId());
-		modToServer.setEnvironment( env );
-		status = modToServer.execute( monitor, null );
-		if (status.getSeverity()==Status.ERROR)
-	    {
-	      env.getStatusHandler().reportError(status);     
-	    }     
-	  
-	  }
-	}
-	
-	  if (!sampleIProject.isOpen())
-      {
-        CreateModuleCommand createSample = new CreateModuleCommand();
-        createSample.setProjectName(testInfo.getGenerationProject());
-		createSample.setModuleType(CreateModuleCommand.WEB);
-		createSample.setServerInstanceId(testInfo.getClientExistingServer().getId());
-        createSample.setServerFactoryId(testInfo.getClientServerTypeID());
-        createSample.setJ2eeLevel(J2EEUtils.getJ2EEVersionAsString(clientIProject));
-        createSample.setEnvironment( env );
-		IStatus status = createSample.execute( monitor, null );
-      
-	   if (testInfo.getClientNeedEAR()) {
-//		Associate the client module and service EAR
-	    AssociateModuleWithEARCommand associateCommand = new AssociateModuleWithEARCommand();
-	    associateCommand.setProject(testInfo.getGenerationProject());
-	    associateCommand.setEARProject(sampleEARProject);
-	    associateCommand.setEar(sampleEARModule);
-		associateCommand.setEnvironment( env );
-	    status = associateCommand.execute( monitor, null );
-	    if (status.getSeverity()==Status.ERROR)
-	    {
-	      env.getStatusHandler().reportError(status);     
-	    }  
-	   }
-       else
-       {
-         // If no EAR is needed, the sample project needs to be added to
-         // to the server directly.
-        AddModuleToServerCommand addToServer = new AddModuleToServerCommand();
-        addToServer.setModule(testInfo.getGenerationProject());
-        addToServer.setProject(testInfo.getGenerationProject());
-        addToServer.setServerInstanceId(testInfo.getClientExistingServer().getId());
-        addToServer.setEnvironment( env );
-        status = addToServer.execute( monitor, null );
-        if (status.getSeverity()==Status.ERROR)
-        {
-          env.getStatusHandler().reportError(status);     
-        }              
-       }
-		
-		StartServerCommand startServer = new StartServerCommand(true);
-		startServer.setServerInstanceId(testInfo.getClientExistingServer().getId());
-		startServer.setEnvironment( env );
-		status = startServer.execute( monitor, null );
-	    if (status.getSeverity()==Status.ERROR)
-	    {
-	      env.getStatusHandler().reportError(status);     
-	    }     
-		
-	  }
-	  
-  }
-
-   
-
-  
-
- 
-
  
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/GSTCLaunchCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/GSTCLaunchCommand.java
index cdc5c59..15bfc8c 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/GSTCLaunchCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/GSTCLaunchCommand.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060418   134322 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060424   124368 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.test.wssample;
@@ -32,7 +33,6 @@
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.common.ServerUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
-import org.eclipse.jst.ws.internal.consumption.ui.command.PublishProjectCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.command.StartServerCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.plugin.WebServiceConsumptionUIPlugin;
 import org.eclipse.ui.PartInitException;
@@ -103,13 +103,6 @@
 	   // I'm assuming here that the autobuilder has actually completed its stuff. 
 	 }
 
-	PublishProjectCommand ppc = new PublishProjectCommand();
-    ppc.setServerTypeID(testInfo.getClientServerTypeID());
-    ppc.setExistingServer(testInfo.getClientExistingServer());
-    ppc.setProject(testInfo.getGenerationProject());
-    ppc.setEnvironment( env );
-	status = ppc.execute( monitor, null );
-
 	StartServerCommand serverCommand = new StartServerCommand( true );
 	serverCommand.setServerInstanceId( testInfo.getClientExistingServer().getId() );
 	serverCommand.setEnvironment( env );
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/GSTCWebServiceTester.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/GSTCWebServiceTester.java
index 29f1651..ea06856 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/GSTCWebServiceTester.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/GSTCWebServiceTester.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060608   145529 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.test.wssample;
@@ -29,7 +32,9 @@
   
   public ICommandFactory launch(TestInfo testInfo){
 	Vector commands = new Vector();
-    commands.add(new GSTCLaunchCommand(testInfo));
+	if (testInfo.getRunTestClient()) {
+		commands.add(new GSTCLaunchCommand(testInfo));
+	}
     return new SimpleCommandFactory(commands);	
   }
 	
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/WSSampleFinishCommand.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/WSSampleFinishCommand.java
index b0a0f58..9a7bc7e 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/WSSampleFinishCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/widgets/test/wssample/WSSampleFinishCommand.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   124368 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.widgets.test.wssample;
@@ -27,7 +30,6 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
-import org.eclipse.jst.ws.internal.consumption.ui.command.PublishProjectCommand;
 import org.eclipse.jst.ws.internal.consumption.command.common.StartProjectCommand;
 import org.eclipse.jst.ws.internal.consumption.sampleapp.codegen.InputFileGenerator;
 import org.eclipse.jst.ws.internal.consumption.sampleapp.codegen.MethodFileGenerator;
@@ -175,13 +177,6 @@
     IPath fDestinationFolderPath = new Path(jspFolder);
     fDestinationFolderPath = fDestinationFolderPath.makeAbsolute();    
 
-    PublishProjectCommand ppc = new PublishProjectCommand();
-    ppc.setServerTypeID(sampleServerTypeID);
-    ppc.setExistingServer(sampleExistingServer);
-    ppc.setProject(sampleProject);
-    ppc.setEnvironment( env );
-    status = ppc.execute( monitor, null );
-
     StartProjectCommand spc = new StartProjectCommand(false );
     spc.setServiceServerTypeID(sampleServerTypeID);
     spc.setSampleExistingServer(sampleExistingServer);
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wizard/RuntimeServerSelectionDialog.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wizard/RuntimeServerSelectionDialog.java
index 6387f89..206f597 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wizard/RuntimeServerSelectionDialog.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wizard/RuntimeServerSelectionDialog.java
@@ -11,14 +11,22 @@
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060327   131605 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060717   150577 makandre@ca.ibm.com - Andrew Mak
+ * 20060726   150865 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060726   150867 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060728	  151723 mahutch@ca.ibm.com - Mark Hutchinson
+ * 20060802   148731 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.wizard;
 
+import java.util.Arrays;
+import java.util.Comparator;
 import java.util.Hashtable;
 import java.util.Vector;
 
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jst.ws.internal.common.ServerUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
 import org.eclipse.jst.ws.internal.consumption.ui.plugin.WebServiceConsumptionUIPlugin;
@@ -27,7 +35,6 @@
 import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.GridData;
@@ -35,6 +42,7 @@
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
@@ -64,6 +72,9 @@
   private Button viewSelectionByRuntimeButton_;
   private Button viewSelectionByServerButton_;
   private Button viewSelectionByExploreButton_;
+  private ILabelProvider labelProvider_;
+  private Image serverTypesIcon;
+  private Image existingServersIcon;
 
   /*
    * CONTEXT_ID PWRS0001 for the selection of runtime, server and project combination
@@ -109,6 +120,8 @@
   private final String EXISTING_SERVERS_ICON = "icons/servers/existing_server_obj.gif";
   private String serverInstanceID_;
 
+  private boolean selectServerFirst_ = false;
+  
   public RuntimeServerSelectionDialog(Shell shell, byte mode, TypeRuntimeServer ids, String j2eeVersion) {
     super(shell);
     selectionMode_ = mode;
@@ -119,11 +132,16 @@
     setIsExistingServer(ids.getServerInstanceId() != null);
     serverLabels_ = new Hashtable();
     existingServersTable_ = new Hashtable();
+    labelProvider_ = ServerUICore.getLabelProvider();
+  }
+  
+  public void setSelectServerFirst(boolean selectServerFirst) {
+	  selectServerFirst_ = selectServerFirst;
   }
   
   protected Point getInitialSize()
   {
-	  return new Point( 550, 390 );
+	  return this.getShell().computeSize(550, SWT.DEFAULT, true);
   }
 
   public TypeRuntimeServer getTypeRuntimeServer() {
@@ -162,6 +180,14 @@
   protected Control createContents(Composite parent) {
     Composite comp = (Composite) super.createContents(parent);  
     comp.pack(); 
+    
+    if (selectServerFirst_) {
+    	viewSelectionByServerButton_.setSelection(true);  
+    	handleServerViewSelectionEvent();
+    }
+    else
+    	viewSelectionByRuntimeButton_.setSelection(true);
+        
     return comp;
   } 
 
@@ -214,7 +240,6 @@
     viewSelectionByServerButton_.setText(ConsumptionUIMessages.LABEL_SELECTION_VIEW_SERVER);
     viewSelectionByServerButton_.addListener(SWT.Selection, this);
     viewSelectionByServerButton_.setToolTipText(ConsumptionUIMessages.TOOLTIP_PWRS_RADIO_SERVER);
-    viewSelectionByServerButton_.setSelection(true);
     helpSystem.setHelp(viewSelectionByServerButton_, INFOPOP_PWRS_RADIO_SERVER);
     viewSelectionByRuntimeButton_ = new Button(viewSelectionGroup_, SWT.RADIO);
     viewSelectionByRuntimeButton_.setText(ConsumptionUIMessages.LABEL_SELECTION_VIEW_RUNTIME);
@@ -337,15 +362,13 @@
 
   private void setOKStatusMessage() {
     messageBanner_.setText(ConsumptionUIMessages.PAGE_DESC_WS_RUNTIME_SELECTION);
-    Color black = new Color(thisShell.getDisplay(), 0x00, 0, 0);
-    messageBanner_.setForeground(black);
+    messageBanner_.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
     enableOKButton();
   }
 
   private void setERRORStatusMessage(String message) {
     messageBanner_.setText(message);
-    Color red = new Color(thisShell.getDisplay(), 0xFF, 0, 0);
-    messageBanner_.setForeground(red);
+    messageBanner_.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
     disableOKButton();
   }
 
@@ -360,10 +383,27 @@
   }
 
   protected void okPressed() {
-    setReturnCode(OK);
+	if (labelProvider_!=null)
+	    labelProvider_.dispose();
+	if (existingServersIcon!=null)
+		existingServersIcon.dispose();
+	if (serverTypesIcon!=null)
+		serverTypesIcon.dispose();
+	setReturnCode(OK);
     close();
   }
 
+  protected void cancelPressed() {
+	if (labelProvider_!=null)
+		labelProvider_.dispose();
+	if (existingServersIcon!=null)
+		existingServersIcon.dispose();
+	if (serverTypesIcon!=null)
+		serverTypesIcon.dispose();	
+	setReturnCode(CANCEL);
+	close();
+  }
+  
   /**
    * Called when an event occurs on the page. Handles the event and revalidates the page.
    * 
@@ -404,6 +444,7 @@
     GridData gd = new GridData(GridData.FILL_BOTH);
     primaryGroup_.setLayout(gl);
     primaryGroup_.setLayoutData(gd);
+    runtimesGroup_.moveAbove(serversGroup_);
     primaryGroup_.layout();
 
     // TODO: Show all runtimes, and only servers supported by current type id
@@ -419,12 +460,9 @@
     GridData gd = new GridData(GridData.FILL_BOTH);
     primaryGroup_.setLayout(gl);
     primaryGroup_.setLayoutData(gd);
+    serversGroup_.moveAbove(runtimesGroup_);
     primaryGroup_.layout();
-    serversGroup_.setLocation(5, 5);
-    runtimesGroup_.setLocation(4, 100);
-    serversGroup_.layout();
-    runtimesGroup_.layout();
-
+    
     // TODO: Show all servers, and only runtimes supported by the current type id
   }
 
@@ -439,6 +477,7 @@
     GridData gd = new GridData(GridData.FILL_BOTH);
     primaryGroup_.setLayout(gl);
     primaryGroup_.setLayoutData(gd);
+    runtimesGroup_.moveAbove(serversGroup_);
     primaryGroup_.layout();
 
     // TODO: Show all servers and runtimes from the type id
@@ -509,6 +548,10 @@
 	  runtimes = WebServiceRuntimeExtensionUtils2.getRuntimesByClientType(typeId_);
     }
 
+    //sort the runtimes based on the runtime name (bug 151723)
+    Comparator comparator = new RuntimeNameComparator();
+    Arrays.sort(runtimes, comparator);
+    
     TreeItem[] runtimeName = new TreeItem[runtimes.length];
 
     if (runtimes != null) {
@@ -523,8 +566,28 @@
         }
       }
     }
-  }
+  }  
 
+  private class RuntimeNameComparator implements Comparator
+  {
+	public RuntimeNameComparator()
+	{		
+	}
+	//Compare to runtime ID strings by their labels.  Used for sorting.
+	public int compare(Object item1, Object item2) {
+		try {
+			String runtime1 = (String)item1;
+			String runtime2 = (String)item2;		
+			
+			return getRuntimeLabel(runtime1).compareToIgnoreCase(getRuntimeLabel(runtime2));
+		}
+		catch (Exception e)
+		{ //Just in case of class cast exception or NPE.  should never happen
+		}		
+		return 0;
+	}
+  }
+  
   private String getRuntimeLabel(String type) {
     return getRuntime(type).getLabel();
   }
@@ -561,8 +624,10 @@
       existingServersTree[0] = new TreeItem(serverList, SWT.NONE);
       existingServersTree[0].setText(ConsumptionUIMessages.LABEL_TREE_EXISTING_SERVERS);
       ImageDescriptor id = WebServiceConsumptionUIPlugin.getImageDescriptor(EXISTING_SERVERS_ICON);
-      if (id != null)
-        existingServersTree[0].setImage(id.createImage());
+      if (id != null) {
+    	existingServersIcon = id.createImage();
+        existingServersTree[0].setImage(existingServersIcon);
+      }
       for (int k = 0; k < serverIds.length; k++) {
         IServerType serverType = ServerCore.findServerType(((IServer) existingServersTable_.get(serverIds[k])).getServerType().getId());
         if (serverType != null) {
@@ -577,7 +642,7 @@
             selectedServerLabel_ = serverIds[k];
             selectedServerFactoryID_ = selectedServer_.getServerType().getId();
           }
-          existingServerItems[k].setImage(ServerUICore.getLabelProvider().getImage(serverType));
+          existingServerItems[k].setImage(labelProvider_.getImage(serverType));
         }
       }
     }
@@ -588,8 +653,10 @@
       serverTypesTree[0] = new TreeItem(serverList, SWT.NONE);
       serverTypesTree[0].setText(ConsumptionUIMessages.LABEL_TREE_SERVER_TYPES);
       ImageDescriptor id = WebServiceConsumptionUIPlugin.getImageDescriptor(SERVER_TYPES_ICON);
-      if (id != null)
-        serverTypesTree[0].setImage(id.createImage());
+      if (id != null) {
+    	serverTypesIcon = id.createImage();
+        serverTypesTree[0].setImage(serverTypesIcon);
+      }
       Hashtable categories_ = new Hashtable();
       Hashtable categoryTreeItem = new Hashtable();
       String[] serverIds = null;
@@ -618,7 +685,7 @@
               categories_.put(serverType, runtimeType);
               if (categoryTreeItem.get(runtimeType) == null) {
                 String categoryText = runtimeType.getName();
-                Image categoryImage = ServerUICore.getLabelProvider().getImage(runtimeType);
+                Image categoryImage = labelProvider_.getImage(runtimeType);
                 parent[i] = new TreeItem(serverTypesTree[0], SWT.NONE);
                 parent[i].setText(categoryText);
                 parent[i].setImage(categoryImage);
@@ -628,7 +695,7 @@
                 parent[i] = (TreeItem) categoryTreeItem.get(runtimeType);
               }
               String factoryText = serverType.getName();
-              Image factoryImage = ServerUICore.getLabelProvider().getImage(serverType);
+              Image factoryImage = labelProvider_.getImage(serverType);
               item[i] = new TreeItem(parent[i], SWT.NONE);
               item[i].setText(factoryText);
               item[i].setImage(factoryImage);
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wizard/TypeSelectionFilter2.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wizard/TypeSelectionFilter2.java
index b58fb52..f362fd2 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wizard/TypeSelectionFilter2.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wizard/TypeSelectionFilter2.java
@@ -6,7 +6,10 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060606   105045 mahutch@ca.ibm.com - Mark Hutchinson          
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.wizard;
@@ -129,10 +132,16 @@
               {
                 name = resource.getFullPath().toString();
               }
+              else if (initialObject instanceof String)
+              { //the initialObject could be a path name that is a string
+                //bug 105045
+            	name = (String)initialObject;
+              }
               else
               {
                 name = initialObject.getClass().getName();
-              }
+              }    
+              
               String[] extensions = {".wsdl", ".wsil", ".html", ".ServiceImpl", ".ServiceRefImpl", ".WSDLResourceImpl"};
               if (acceptsName(name, extensions))
               {
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/FacetMatchCache.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/FacetMatchCache.java
index c3e72ef..293d9f4 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/FacetMatchCache.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/FacetMatchCache.java
@@ -4,12 +4,14 @@
  * 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:
  * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060131 121071   rsinha@ca.ibm.com - Rupam Kuehner (initial creation)
+ * 20060426   138051 kathy@ca.ibm.com - Kathy Chan
+ * 20060427   126780 rsinha@ca.ibm.com - Rupam Kuehner
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.ui.wsrt;
 
@@ -32,25 +34,89 @@
 import org.eclipse.jst.ws.internal.consumption.common.RequiredFacetVersion;
 import org.eclipse.wst.common.project.facet.core.IFacetedProjectTemplate;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
 
+/**
+ * FacetMatchCache caches results of calculations made respecting
+ * the suitability of projects and project types for serviceRuntimes
+ * and clientRuntimes.
+ * 
+ * <br/><br/>
+ * Teminology used in the javadoc in this class:
+ * <ul>
+ * <li><b>serviceRuntime</b>: extension to org.eclipse.jst.ws.consumption.ui.serviceRuntimes.
+ * The Java representation of this is org.eclipse.jst.ws.internal.consumption.ui.wsrt.ServiceRuntimeDescriptor</li>
+ * <li><b>clientRuntime</b>: extension to org.eclipse.jst.ws.consumption.ui.clientRuntimes.
+ * The Java representation of this is org.eclipse.jst.ws.internal.consumption.ui.wsrt.ClientRuntimeDescriptor</li>
+ * </ul>
+ *
+ */
 public class FacetMatchCache implements IResourceChangeListener
 {
   //single instance per workbench
   private static FacetMatchCache instance_;
   
+  
   //Tables related to existing projects in the workspace
+  
+  //serviceFacetMatchTable_: 
+  //key: Object of type String.
+  //     Forward slash separated concatenation of a serviceRuntimeId and a projectName 
+  //     (e.g. org.eclipse.jst.ws.axis.creation.java/wp).
+  //value: Object of type org.eclipse.jst.ws.internal.consumption.common.FacetMatcher.
+  //       The FacetMatcher contains the matching characteristics calculated for the 
+  //       serviceRuntime and project in the key.
   private Hashtable serviceFacetMatchTable_;
+  
+  //serviceTableKeysByProjectName_: 
+  //key: Object of type String.
+  //     project name (e.g. wp)
+  //value: Set of elements of type String. The Strings in the Set are keys from the serviceFacetMatchTable_ 
+  //       that contain the project name (e.g. org.eclipse.jst.ws.axis.creation.java/wp). Used to rapidly
+  //       delete entries from serviceFacetMatchTable_ after a project is deleted from the workspace.
   private Hashtable serviceTableKeysByProjectName_;
   
+  //clientFacetMatchTable_;
+  //key: Object of type String.
+  //     forward slash separated concatenation of a clientRuntimeId and a projectName 
+  //     (e.g. org.eclipse.jst.ws.axis.consumption.java/wp)
+  //value: Object of type org.eclipse.jst.ws.internal.consumption.common.FacetMatcher
+  //       The FacetMatcher contains the matching characteristics calculated for the 
+  //       clientRuntime and project in the key.
   private Hashtable clientFacetMatchTable_;
+  
+  //clientTableKeysByProjectName_
+  //key: Object of type String.
+  //     project name (e.g. wp)
+  //value: Set of elements of type String. The Strings in the Set are keys from the clientFacetMatchTable_ 
+  //       that contain the project name (e.g. org.eclipse.jst.ws.axis.consumption.java/wp). Used to rapidly
+  //       delete entries from clientFacetMatchTable_ after a project is deleted from the workspace.
   private Hashtable clientTableKeysByProjectName_;
   
+  //projectEntriesToDelete_: elements of type String containing the names of projects that have
+  //been deleted from the workspace but their corresponding entries from serviceFacetMatchTable_ 
+  //and clientFacetMatchTable_ have yet to be deleted.
   private List projectEntriesToDelete_;
     
+  
+  
   //Tables related to templates  
+  
+  //templatesByServiceRuntimeId_:
+  //key: Object of type String.
+  //     serviceRuntime id
+  //value: Set of elements of type org.eclipse.wst.common.project.facet.core.IFacetedProjectTemplate   
+  //       This the set of templates that support the serviceRuntime identified by the key.
   private Hashtable templatesByServiceRuntimeId_;
+  
+  //templatesByClientRuntimeId_
+  //key: Object of type String.
+  //     clientRuntime id
+  //value: Set of elements of type org.eclipse.wst.common.project.facet.core.IFacetedProjectTemplate
+  //       This the set of templates that support the clientRuntime identified by the key.
   private Hashtable templatesByClientRuntimeId_;
   
+  
   /**
    * Returns a singleton instance of this class.
    * 
@@ -75,25 +141,28 @@
     projectEntriesToDelete_ = new ArrayList();
     templatesByClientRuntimeId_ = new Hashtable();
     templatesByServiceRuntimeId_ = new Hashtable();
+    
+    //Listen for deletions of projects in order to delete all entries in
+    //Hashtables for the deleted project.
     ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.PRE_DELETE);
   }
   
 
   /*
-   * Returns the FacetMatcher resulting from matching a service/client runtime with an existing project.
-   * @param isClient 
-   * @param runtimeId the id of a client runtime if isClient is true or the id of a service runtime if
+   * Returns the FacetMatcher resulting from matching a serviceRuntime or clientRuntime with an existing project.
+   * @param isClient true if runtimeId is a clientRuntimeId. false if runtimeId is a serviceRuntimeId.
+   * @param runtimeId the id of a clientRuntime if isClient is true or the id of a serviceRuntime if
    * isClient is false.
    * @param projectName the name of an existing project.
    * 
-   * @returns FacetMatcher resulting from calling FacetUtils.match(..) using the service/client runtime id
-   * and the project name. null if the project doesn't exist. Non-faceted existing projects will always result
-   * in a FacetMatcher with isMatch() equal to false (with the exception of Java projects are a special case 
+   * @returns FacetMatcher resulting from calling FacetUtils.match(..) using the serviceRuntime or clientRuntime id
+   * and the project name. Returns null if the project doesn't exist. Non-faceted existing projects will always result
+   * in a FacetMatcher with isMatch() equal to false (with the exception of Java projects which are a special case 
    * - see FacetUtils.getFacetsForProject()).
    */
   public synchronized FacetMatcher getMatchForProject(boolean isClient, String runtimeId, String projectName)
   {    
-    //Delete entries from table if there are deletions pending.
+    //Delete entries from tables if there are deletions pending.
     if (projectEntriesToDelete_.size() > 0)
     {
       Iterator projectItr = projectEntriesToDelete_.iterator();
@@ -165,6 +234,14 @@
     return fm;    
   }
   
+  /**
+   * Updates serviceTableKeysByProjectName_ or clientTableKeysByProjectName_ with
+   * the provided project name and key. This is called whenever a new entry is 
+   * added to serviceFacetMatchTable_ or clientFacetMatchTable_.
+   * @param isClient true if runtimeId is a clientRuntimeId. false if runtimeId is a serviceRuntimeId.
+   * @param key 
+   * @param projectName
+   */
   private void updateTableOfKeys(boolean isClient, String key, String projectName)
   {
     Set setOfKeysForProjectName = null;
@@ -198,6 +275,17 @@
     }
   }
   
+  /**
+   * Returns the {@link FacetMatcher} calculated for the given serviceRuntime or clientRuntime and project
+   * @param isClient true if runtimeId is a clientRuntimeId. false if runtimeId is a serviceRuntimeId.
+   * @param runtimeId the id of a clientRuntime if isClient is true or the id of a serviceRuntime if
+   * isClient is false.
+   * @param projectName the name of an existing project.
+   * @return FacetMatcher resulting from calling FacetUtils.match(..) using the serviceRuntime or clientRuntime id
+   * and the project name. Returns null if the project doesn't exist. Non-faceted existing projects will always result
+   * in a FacetMatcher with isMatch() equal to false (with the exception of Java projects which are a special case 
+   * - see FacetUtils.getFacetsForProject()).
+   */
   private FacetMatcher calculateFacetMatcher(boolean isClient, String runtimeId, String projectName)
   {
     FacetMatcher fm = null;
@@ -214,15 +302,37 @@
     }
     
     Set facetVersions = FacetUtils.getFacetsForProject(projectName);
-    if (facetVersions != null)
-    {
-      fm = FacetUtils.match(rfvs, facetVersions);
-    } else
+    if (facetVersions == null)
     {
       fm = new FacetMatcher();
       fm.setMatch(false);
+      return fm;
     }    
     
+    fm = FacetUtils.match(rfvs, facetVersions);
+    
+    // Check if the facet runtime required by the required facet is supported
+    // by the project without chaning it's current facet runtime
+    
+    IRuntime fProjectRuntime = FacetUtils.getFacetRuntimeForProject(projectName);
+    if (fProjectRuntime != null) {
+    	String fProjectRuntimeName = fProjectRuntime.getName();
+    	boolean projectSupportRequiredFacetRuntime = false;
+    	Set rts = FacetUtils.getRuntimes(rfvs);
+    	for (Iterator iterator = rts.iterator(); iterator.hasNext() && !projectSupportRequiredFacetRuntime;) {
+    		IRuntime fRequiredRuntime = (IRuntime) iterator.next();
+    		if (fRequiredRuntime != null) {
+    			if (fRequiredRuntime.getName().equals(fProjectRuntimeName)) {
+    				projectSupportRequiredFacetRuntime = true;
+    			}
+    		}
+    	}
+
+    	// if project does not support the required facet runtime, set FacetMatch match to false
+    	if (!projectSupportRequiredFacetRuntime) {
+    		fm.setMatch(false);
+    	}
+    }
     return fm;
   }
 
@@ -235,6 +345,11 @@
     return keysb.toString();    
   }  
   
+  /**
+   * Removes all table entries in this cache for the given project
+   * @param isClient true to remove entries from client side tables. false to remove entries from service side tables
+   * @param projectName
+   */
   private void removeTableEntriesForProject(boolean isClient, String projectName)
   {
     //First remove the entries from clientFacetMatchTable_ or serviceFacetMatchTable_
@@ -280,9 +395,10 @@
     
   }
 
-  /*
-   * Returns a set of templates supported by th given client runtime
-   * @returns Set (type: IFacetedProjectTemplate)
+  /**
+   * Returns a set of templates supported by the given clientRuntime
+   * @param clientRuntimeId id of a clientRuntime
+   * @returns Set (elementtype: IFacetedProjectTemplate)
    */
   public synchronized Set getTemplatesForClientRuntime(String clientRuntimeId)
   {
@@ -302,6 +418,11 @@
     }
   }
   
+  /**
+   * Returns a set of templates supported by the given serviceRuntime
+   * @param serviceRuntimeId id of a serviceRuntime
+   * @returns Set (elementtype: IFacetedProjectTemplate)
+   */  
   public synchronized Set getTemplatesForServiceRuntime(String serviceRuntimeId)
   {
     Set templates = (Set)templatesByServiceRuntimeId_.get(serviceRuntimeId);
@@ -319,11 +440,15 @@
       return validTemplates;
     }
   }
+ 
   
+  /**
+   * Returns the set of templates that supported the given required facet versions.
+   * @param requiredFacetVersions
+   * @return Set containing elemets of type {@link IFacetedProjectTemplate}.
+   */
   private Set getTemplates(RequiredFacetVersion[] requiredFacetVersions)
   {
-    
-    //Get the templates that support the actions
     Set templates = new HashSet();
     
     for( Iterator itr = ProjectFacetsManager.getTemplates().iterator(); itr.hasNext(); )
@@ -360,7 +485,9 @@
         String projectName = projectResource.getName();
         
         //Add this project name to the list of project entries
-        //to delete.
+        //to delete. Next time getMatchForProject is called all
+        //entries for this project from all tables in this cache 
+        //will be deleted.
         projectEntriesToDelete_.add(projectName);
       }
     }    
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/ServiceRuntimeDescriptor.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/ServiceRuntimeDescriptor.java
index fc5c871..97c58e1 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/ServiceRuntimeDescriptor.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/ServiceRuntimeDescriptor.java
@@ -6,7 +6,10 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060802   152150 mahutch@ca.ibm.com
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.wsrt;
@@ -73,21 +76,25 @@
       IConfigurationElement[] facetElems = elem.getChildren("required-facet-version");
       for (int i = 0; i < facetElems.length; i++)
       {
-        RequiredFacetVersion rfv = new RequiredFacetVersion();
-        IProjectFacet projectFacet = ProjectFacetsManager.getProjectFacet(facetElems[i].getAttribute("facet"));        
-        IProjectFacetVersion projectFacetVersion = projectFacet.getVersion(facetElems[i].getAttribute("version"));
-        rfv.setProjectFacetVersion(projectFacetVersion);
-        String allowNewerValue = facetElems[i].getAttribute("allow-newer");
-        if (allowNewerValue == null)
-        {
-          rfv.setAllowNewer(false);
-        }
-        else
-        {
-          rfv.setAllowNewer(Boolean.valueOf(allowNewerValue).booleanValue());
-        }
-        
-        requiredFacetVersionList.add(rfv);
+    	String facetID = facetElems[i].getAttribute("facet");
+    	if (ProjectFacetsManager.isProjectFacetDefined(facetID))
+    	{
+	        RequiredFacetVersion rfv = new RequiredFacetVersion();
+	        IProjectFacet projectFacet = ProjectFacetsManager.getProjectFacet(facetID);        
+	        IProjectFacetVersion projectFacetVersion = projectFacet.getVersion(facetElems[i].getAttribute("version"));
+	        rfv.setProjectFacetVersion(projectFacetVersion);
+	        String allowNewerValue = facetElems[i].getAttribute("allow-newer");
+	        if (allowNewerValue == null)
+	        {
+	          rfv.setAllowNewer(false);
+	        }
+	        else
+	        {
+	          rfv.setAllowNewer(Boolean.valueOf(allowNewerValue).booleanValue());
+	        }
+	        
+	        requiredFacetVersionList.add(rfv);
+    	}    	
       }
       
       requiredFacetVersions = (RequiredFacetVersion[])requiredFacetVersionList.toArray(new RequiredFacetVersion[]{});
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/WebServiceRuntimeExtensionRegistry2.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/WebServiceRuntimeExtensionRegistry2.java
index 1cec7ca..ab2df35 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/WebServiceRuntimeExtensionRegistry2.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/WebServiceRuntimeExtensionRegistry2.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   126780 rsinha@ca.ibm.com - Rupam Kuehner
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.wsrt;
@@ -24,19 +27,41 @@
 
   private static WebServiceRuntimeExtensionRegistry2 instance_;
 
-
+  //webServiceImpls_: 
+  //key: id attribute of extension to org.eclipse.jst.ws.consumption.ui.wsImpl
+  //value: org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceImpl 
   Hashtable webServiceImpls_;
 
+  //webServiceClientImpls_: 
+  //key: id attribute of extension to org.eclipse.jst.ws.consumption.ui.wsClientImpl
+  //value: org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceClientImpl  
   Hashtable webServiceClientImpls_;
 
+  //runtimes_: 
+  //key: id attribute of extension to org.eclipse.jst.ws.consumption.ui.runtimes
+  //value: org.eclipse.jst.ws.internal.consumption.ui.wsrt.RuntimeDescriptor
   Hashtable runtimes_;
   
+  //serviceRuntimes_: 
+  //key: id attribute of extension to org.eclipse.jst.ws.consumption.ui.serviceRuntimes
+  //value: org.eclipse.jst.ws.internal.consumption.ui.wsrt.ServiceRuntimeDescriptor
   Hashtable serviceRuntimes_;
   
+  //clientRuntimes_: 
+  //key: id attribute of extension to org.eclipse.jst.ws.consumption.ui.clientRuntimes
+  //value: org.eclipse.jst.ws.internal.consumption.ui.wsrt.ClientRuntimeDescriptor  
   Hashtable clientRuntimes_;
   
+  //webServiceTypesList_ contains a list of String values in this form: "scenario/webServiceImplId",
+  //where sceanrio the String representation of one of 
+  //org.eclipse.wst.ws.internal.wsrt.WebServiceScenario.BOTTOM_UP or 
+  //org.eclipse.wst.ws.internal.wsrt.WebServiceScenario.TOP_DOWN
+  //and webServiceImplId is the id attribute of an extension to org.eclipse.jst.ws.consumption.ui.wsImpl
+  //This list is used to determine the items displayed in the WebServiceType combo-box of page 1 of the 
+  //Web serivce wizard.
   ArrayList webServiceTypesList_;
   
+  //TODO: Not used. Remove this and all references to it in this class.
   ArrayList webServiceClientTypesList_;  
   
   
@@ -68,7 +93,7 @@
     
     IExtensionRegistry reg = Platform.getExtensionRegistry();
     
-    //Load WebServiceImpls
+//  Load WebServiceImpls by reading all extensions to org.eclipse.jst.ws.consumption.ui.wsImpl
     IConfigurationElement[] wsImplExts = reg.getConfigurationElementsFor(
         "org.eclipse.jst.ws.consumption.ui", "wsImpl");
     
@@ -82,7 +107,7 @@
         }        
     }
     
-    //Load WebServiceClientImpls
+    //Load WebServiceClientImpls by reading all extensions to org.eclipse.jst.ws.consumption.ui.wsClientImpl
     IConfigurationElement[] wsClientImplExts = reg.getConfigurationElementsFor(
         "org.eclipse.jst.ws.consumption.ui", "wsClientImpl");
     
@@ -97,7 +122,7 @@
         }        
     }
     
-    //Load runtimes
+    //Load runtimes by reading all extensions to org.eclipse.jst.ws.consumption.ui.runtimes
     IConfigurationElement[] runtimeExts = reg.getConfigurationElementsFor(
         "org.eclipse.jst.ws.consumption.ui", "runtimes");
     
@@ -112,7 +137,7 @@
         }        
     }
     
-    //Load serviceRuntimes
+    //Load serviceRuntimes by reading all extensions to org.eclipse.jst.ws.consumption.ui.serviceRuntimes
     IConfigurationElement[] serviceRuntimeExts = reg.getConfigurationElementsFor(
         "org.eclipse.jst.ws.consumption.ui", "serviceRuntimes");
     
@@ -128,7 +153,7 @@
         }        
     }
     
-    //Load serviceRuntimes
+    //Load clientRuntimes by reading all extensions to org.eclipse.jst.ws.consumption.ui.clientRuntimes
     IConfigurationElement[] clientRuntimeExts = reg.getConfigurationElementsFor(
         "org.eclipse.jst.ws.consumption.ui", "clientRuntimes");
     
@@ -146,6 +171,11 @@
     }
   }  
     
+  /**
+   * Updates the list of Web service types with the provided service runtime's contribution of
+   * scenario/webServiceImpl combination.
+   * @param descriptor
+   */
   private void updateWebServiceTypeList(ServiceRuntimeDescriptor descriptor)
   {
     String serviceImplId = descriptor.getServiceImplementationType().getId();
diff --git a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/WebServiceRuntimeExtensionUtils2.java b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/WebServiceRuntimeExtensionUtils2.java
index e654d22..c0047b1 100644
--- a/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/WebServiceRuntimeExtensionUtils2.java
+++ b/bundles/org.eclipse.jst.ws.consumption.ui/src/org/eclipse/jst/ws/internal/consumption/ui/wsrt/WebServiceRuntimeExtensionUtils2.java
@@ -13,6 +13,8 @@
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060227   124392 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060324   116750 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060427   126780 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20070119   159458 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.ui.wsrt;
@@ -40,6 +42,7 @@
 import org.eclipse.wst.common.project.facet.core.IFacetedProjectTemplate;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
 import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
+import org.eclipse.wst.server.core.IRuntimeType;
 import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.server.core.IServerType;
 import org.eclipse.wst.server.core.ServerCore;
@@ -47,10 +50,59 @@
 import org.eclipse.wst.ws.internal.wsrt.IWebServiceRuntime;
 import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
 
+/**
+ * This class contains numerous utility methods that
+ * process the information provided through extension points
+ * which are read in WebServiceRuntimeExtensionRegistry2:
+ * <ul>
+ * <li> org.eclipse.jst.ws.consumption.ui.wsImpl </li>
+ * <li> org.eclipse.jst.ws.consumption.ui.wsClientImpl </li>
+ * <li> org.eclipse.jst.ws.consumption.ui.runtimes </li>
+ * <li> org.eclipse.jst.ws.consumption.ui.serviceRuntimes </li>
+ * <li> org.eclipse.jst.ws.consumption.ui.clientRuntimes </li>
+ * </ul>
+ * 
+ * to provide answers to common questions regarding which servers,
+ * projects, and project types a particular Web service runtime
+ * supports.
+ * <br/><br/>
+ * Teminology used in the javadoc in this class:
+ * <ul>
+ * <li><b>Web service scenario</b>: One of WebServiceScenario.BOTTOM_UP or WebServiceScenario.TOP_DOWN.</li> 
+ * <li><b>Web service implementation type</b>: extension to org.eclipse.jst.ws.consumption.ui.wsImpl.
+ * The Java representation of this is org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceImpl.</li>
+ * <li><b>Web service type</b>: Forward slash separated concatenation of the String representation
+ * of a Web service scenario and a Web service implementation type id.
+ * For example, "0/org.eclipse.jst.ws.wsImpl.java", represents the bottom up Java bean Web service type.</li>
+ * <li><b>Web service client implementation type</b>: extension to org.eclipse.jst.ws.consumption.ui.wsClientImpl.
+ * The Java representation of this is org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceClientImpl.</li>
+ * <li><b>Web service runtime</b>: extension to org.eclipse.jst.ws.consumption.ui.runtimes. 
+ * The Java representation of this is org.eclipse.jst.ws.internal.consumption.ui.wsrt.RuntimeDescriptor</li> 
+ * <li><b>serviceRuntime</b>: extension to org.eclipse.jst.ws.consumption.ui.serviceRuntimes.
+ * The Java representation of this is org.eclipse.jst.ws.internal.consumption.ui.wsrt.ServiceRuntimeDescriptor</li>
+ * <li><b>clientRuntime</b>: extension to org.eclipse.jst.ws.consumption.ui.clientRuntimes.
+ * The Java representation of this is org.eclipse.jst.ws.internal.consumption.ui.wsrt.ClientRuntimeDescriptor</li>
+ * <li><b>server type</b>: This is a server tools artifact. You see a list of these when creating a new server
+ * in the tool.</li>
+ * <li><b>server runtime</b>: This is a server tools artifact. You see a list of these if you go to Preferences, 
+ * Server > Installed Runtimes in the tool. The Java representation of this is org.eclipse.wst.server.core.IRuntime</li>
+ * <li><b>facet runtime</b>: The facet equivalent of a server runtime. The Java representation of this is 
+ * org.eclipse.wst.common.project.facet.core.runtime.IRuntime. org.eclipse.jst.server.core.FacetUtil
+ * provides methods to translate from a server runtime to a facet runtime and vice-versa.</li>
+ * </ul>
+ */
 public class WebServiceRuntimeExtensionUtils2
 {
   private static WebServiceRuntimeExtensionRegistry2 registry = WebServiceRuntimeExtensionRegistry2.getInstance();
   
+  /**
+   * Returns the RuntimeDescriptor representing the Web service runtime
+   * with an id attribute equal to the provided id
+   * @param id
+   * @return RuntimeDescriptor representing the Web service runtime
+   * with an id attribute equal to the provided id. Returns null
+   * if such a RuntimeDescriptor cannot be found.
+   */  
   public static RuntimeDescriptor getRuntimeById(String id)
   {
     Object result = registry.runtimes_.get(id);
@@ -61,7 +113,11 @@
     return null;        
   }
   
-  
+  /**
+   * Returns the union of all project types supported by all serviceRuntimes. Used by the
+   * ProjectTopology preference page. 
+   * @return String[] array of template ids. The array may have 0 elements.
+   */
   public static String[] getAllServiceProjectTypes()
   {
     ArrayList finalTemplateIdList = new ArrayList();
@@ -72,7 +128,7 @@
     {
       ServiceRuntimeDescriptor desc = (ServiceRuntimeDescriptor)iter.next();
       
-      //Get the templates for this service runtime
+      //Get the templates for this serviceRuntime
       Set templates = FacetMatchCache.getInstance().getTemplatesForServiceRuntime(desc.getId());
       
       //Add the template ids to the list if they have not already been added
@@ -90,6 +146,11 @@
     return (String[])finalTemplateIdList.toArray(new String[]{});
   }
   
+  /**
+   * Returns the union of all project types supported by all clientRuntimes. Used by the
+   * ProjectTopology preference page. 
+   * @return String[] array of template ids. The array may have 0 elements.
+   */
   public static String[] getAllClientProjectTypes()
   {
     ArrayList finalTemplateIdList = new ArrayList();
@@ -100,7 +161,7 @@
     {
       ClientRuntimeDescriptor desc = (ClientRuntimeDescriptor)iter.next();
       
-      //Get the templates for this client runtime
+      //Get the templates for this clientRuntime
       Set templates = FacetMatchCache.getInstance().getTemplatesForClientRuntime(desc.getId());
       
       //Add the template ids to the list if they have not already been added
@@ -118,6 +179,12 @@
     return (String[])finalTemplateIdList.toArray(new String[]{});
   }
   
+  /**
+   * Returns the label of a Web service runtime given its id
+   * @param runtimeId id of a Web service runtime
+   * @return String the label of the Web service runtime with an id equal to runtimeId.
+   * Returns null if such a Web service runtime cannot be found.
+   */
   public static String getRuntimeLabelById(String runtimeId) 
   {
     RuntimeDescriptor desc = getRuntimeById(runtimeId);
@@ -127,6 +194,12 @@
     return desc.getLabel();
   }    
   
+  /**
+   * Returns the RuntimeDescriptor corresponding to the Web service runtime with the provided label
+   * @param label label of a Web service runtime
+   * @return RuntimeDescriptor corresponding to the Web service runtime with the provided label
+   * Returns null if such a Web service runtime cannot be found.
+   */
   public static RuntimeDescriptor getRuntimeByLabel(String label)
   {
     Iterator iter = registry.runtimes_.values().iterator();
@@ -141,6 +214,12 @@
     return null;      
   }      
 
+  /**
+   * Returns the label of an server type given its id
+   * @param serverFactoryId id of a server type
+   * @return String label of the server type with an id equal to serverFactoryId.
+   * Returns null if such a server type cannot be found.
+   */
   public static String getServerLabelById(String serverFactoryId)
   {
     IServerType serverType = ServerCore.findServerType(serverFactoryId);
@@ -151,12 +230,23 @@
     return serverLabel;
   }
   
+  /**
+   * Returns the label of an IServer given its id
+   * @param instanceId id of an IServer
+   * @return String label of the IServer with an id equal to instanceId.
+   */  
   public static String getServerInstanceLabelFromInstanceId( String instanceId )
   {
     IServer server = ServerCore.findServer( instanceId );    
     return server.getName();
   }  
 
+  /**
+   * Returns the union of all server type ids corresponding to the facet runtimes
+   * in the provided set.
+   * @param facetRuntimes a set containing elements of type {@link IRuntime}.
+   * @return an array of IServerType ids. The array may have 0 elements.
+   */
   private static String[] getServerFactoryIdsByFacetRuntimes(Set facetRuntimes)
   {
     
@@ -170,11 +260,15 @@
       for (int i=0; i<serverTypeIds.length; i++)
       {
         IServerType serverType = ServerCore.findServerType(serverTypeIds[i]);
-        String runtimeTypeId = serverType.getRuntimeType().getId();
-        if (runtimeTypeId.equals(sRuntime.getRuntimeType().getId()))
+        IRuntimeType runtimeType = serverType.getRuntimeType();
+        if (runtimeType != null)
         {
-          supportedServerFactoryIds.add(serverTypeIds[i]);          
-        }        
+	        String runtimeTypeId = runtimeType.getId();
+	        if (sRuntime != null && sRuntime.getRuntimeType() != null && runtimeTypeId.equals(sRuntime.getRuntimeType().getId()))
+	        {
+	          supportedServerFactoryIds.add(serverTypeIds[i]);          
+	        }      
+        }
       }
     }
     
@@ -185,6 +279,12 @@
   }
   
   //Service-side utilities
+  /**
+   * Returns a WebServiceImpl given the id of a Web service implementation type.
+   * @param id 
+   * @return WebServiceImpl with the given id
+   * Returns null if such a WebServiceImpl cannot be found.
+   */
   public static WebServiceImpl getWebServiceImplById(String id)
   {
     Object result = registry.webServiceImpls_.get(id);
@@ -195,6 +295,12 @@
     return null;    
   }
   
+  /**
+   * Returns a {@link ServiceRuntimeDescriptor} given the id of a servicRuntime.
+   * @param id of a serviceRuntime
+   * @return ServiceRuntimeDescriptor with the given id
+   * Returns null if such a ServiceRuntimeDescriptor cannot be found.
+   */
   public static ServiceRuntimeDescriptor getServiceRuntimeDescriptorById(String id)
   {
     Object result = registry.serviceRuntimes_.get(id);
@@ -205,6 +311,12 @@
     return null;        
   }  
   
+  /**
+   * Returns the {@link IWebServiceRuntime} of the given serviceRuntime. Extenders provide the fully 
+   * qualified name of a concrete IWebServiceRuntime in the class attribute of a serviceRuntimes extension.
+   * @param serviceRuntimeId id of a serviceRuntime
+   * @return IWebServiceRuntime
+   */
   public static IWebServiceRuntime getServiceRuntime( String serviceRuntimeId )
   {
     ServiceRuntimeDescriptor descriptor = getServiceRuntimeDescriptorById(serviceRuntimeId);
@@ -217,10 +329,24 @@
     return webserviceRuntime;
   }
   
+  /**
+   * Returns the id of a serviceRuntime that supports the provided Web service type, Web service runtime,
+   * server type/server instance (if present), project or project type.
+   * @param trs an instance of {@link TypeRuntimeServer} containing a Web service type id, Web service runtime id,
+   * server type id and server instance id. The Web service type id and Web service runtime id must be non-null 
+   * and non-empty. The server type id and server instance id may be null or empty.
+   * @param projectName the name of an IProject thay may or mat not exist in the workspace. Must be non-null and 
+   * non-empty.
+   * @param templateId the id of an {@link IFacetedProjectTemplate}. Must be non-null and non-empty if
+   * an IProject with the name projectName does not exist in the workspace. 
+   * @return String id of a serviceRuntime that supports the provided Web service type, Web service runtime,
+   * server type/server instance (if present), project or project type. Returns an empty String if no 
+   * such serviceRuntime could be found.
+   */
   public static String getServiceRuntimeId(TypeRuntimeServer trs, String projectName, String templateId)
   {
     boolean serverSelected = (trs.getServerId() != null) && (trs.getServerId().length() > 0); 
-    //Find the first service runtime that supports the implementation type, runtime, server, and project
+    //Find the first serviceRuntime that supports the implementation type, runtime, server, and project
     String[] descs = getServiceRuntimesByServiceType(trs.getTypeId());
     for (int i=0; i<descs.length; i++)
     {
@@ -259,36 +385,40 @@
     
   }  
   
-  /*
-   * @param typeId will be a String of the format "0/implId"
+  /**
+   * Returns the Web service scenario from the Web service type.
+   * @param typeId must be a String of the format "0/implId"
    * where the digit before the "/" represents the scenario
-   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the id
-   * of the WebServiceImpl
-   */    
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * @return int scenario (e.g. WebServiceScenario.BOTTOM_UP or WebServiceScenario.TOP_DOWN)
+   */        
   public static int getScenarioFromTypeId(String typeId)
   {
     return Integer.parseInt(typeId.substring(0,typeId.indexOf("/")));
   }
   
-  /*
-   * @param typeId will be a String of the format "0/implId"
+  /**
+   * Returns the Web service implemenation type id fron the Web service type id.
+   * @param typeId must be a String of the format "0/implId"
    * where the digit before the "/" represents the scenario
-   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the id
-   * of the WebServiceImpl
-   */    
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * @return String the WebServiceImpl id.
+   */        
   public static String getWebServiceImplIdFromTypeId(String typeId)
   {
     return typeId.substring(typeId.indexOf("/")+1);
   }    
   
-  /*
-   * @param typeId will be a String of the format "0/implId"
-   * where the digit before the "/" represents the scenario
-   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the id
-   * of the WebServiceImpl
+  /**
+   * Returns the ids of all Web service runtimes that support the given
+   * Web service type.
    * 
-   * @returns String[] containing the ids of all runtimes that
-   * support this type.
+   * @param typeId must be a String of the format "0/implId"
+   * where the digit before the "/" represents the scenario
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * 
+   * @return String[] array containing the ids of all Web service runtimes that
+   * support the given Web service type. The array may have 0 elements.
    */
   public static String[] getRuntimesByServiceType(String typeId) 
   {
@@ -332,14 +462,16 @@
     return (String[])ids.toArray(new String[]{});
   }
   
-  /*
-   * @param typeId will be a String of the format "0/implId"
-   * where the digit before the "/" represents the scenario
-   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the id
-   * of the WebServiceImpl
+  /**
+   * Returns the ids of all serviceRuntimes that support the given
+   * Web service type.
    * 
-   * @returns String[] containing the ids of all service runtimes that
-   * support this type.
+   * @param typeId must be a String of the format "0/implId"
+   * where the digit before the "/" represents the scenario
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * 
+   * @returns String[] array containing the ids of all serviceRuntimes that
+   * support the given Web service type. The array may have 0 elements.
    */
   public static String[] getServiceRuntimesByServiceType(String typeId) 
   {
@@ -376,13 +508,20 @@
     
     return (String[])ids.toArray(new String[]{});
   }  
-  /*
-   * @param typeId will be a String of the format "0/implId"
+  
+  /**
+   * Returns whether or not the given Web service runtime supports the given 
+   * Web service type.
+   * 
+   * @param typeId must be a String of the format "0/implId"
    * where the digit before the "/" represents the scenario
-   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the id
-   * of the WebServiceImpl
-   * @param runtimeId id of a Web service runtime (RuntimeDescriptor)
-   */  
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * 
+   * @param runtimeId id of a Web service runtime
+   * 
+   * @return boolean <code>true</code> if the given Web service runtime supports the given 
+   * Web service type. <code>false</code> otherwise.
+   */ 
   public static boolean isRuntimeSupportedForServiceType(String typeId, String runtimeId)
   {
     String[] serviceRuntimeIds = getServiceRuntimesByServiceType(typeId);
@@ -401,6 +540,17 @@
     return false;
   }  
   
+  /**
+   * Returns the ids of all server types that support the given
+   * Web service type.
+   * 
+   * @param typeId must be a String of the format "0/implId"
+   * where the digit before the "/" represents the scenario
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * 
+   * @returns String[] array containing the ids of all server types that
+   * support the given Web service type. The array may have 0 elements. 
+   */
   public static String[] getServerFactoryIdsByServiceType(String typeId)
   {
     ArrayList serverFactoryIds = new ArrayList();
@@ -409,7 +559,7 @@
     {
       for (int i = 0; i < srts.length; i++)
       {
-        //Get the runtimes that work for the facets required for this service runtime        
+        //Get the runtimes that work for the facets required for this serviceRuntime        
         String[] fIds = getServerFactoryIdsByServiceRuntime(srts[i]);
         for (int j=0; j<fIds.length; j++)
         {
@@ -427,11 +577,18 @@
     //return getAllServerFactoryIdsWithRuntimes();
   }
   
-  /*
-   * @param typeId will be a String of the format "0/implId"
+  /**
+   * Returns whether or not the given server type supports the given 
+   * Web service type.
+   * 
+   * @param typeId must be a String of the format "0/implId"
    * where the digit before the "/" represents the scenario
-   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the id
-   * of the WebServiceImpl
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * 
+   * @param serverFactoryId id of a server type
+   * 
+   * @return boolean <code>true</code> if the given server type supports the given 
+   * Web service type. <code>false</code> otherwise.
    */
   public static boolean isServerSupportedForChosenServiceType(String typeId, String serverFactoryId)
   {
@@ -452,6 +609,15 @@
     return false;
   }
   
+  /**
+   * Returns the ids of all server types that support the given
+   * serviceRuntime.
+   * 
+   * @param serviceRuntimeId id of a serviceRuntime
+   * 
+   * @returns String[] array containing the ids of all server types that
+   * support the given serviceRuntime. The array may have 0 elements. 
+   */   
   public static String[] getServerFactoryIdsByServiceRuntime(String serviceRuntimeId)
   {       
     ServiceRuntimeDescriptor desc = getServiceRuntimeDescriptorById(serviceRuntimeId);
@@ -464,7 +630,16 @@
   
 
   
-
+  /**
+   * Returns whether or not the given server type supports the given 
+   * serviceRuntime.
+   * 
+   * @param serviceRuntimeId id of a serviceRuntime
+   * @param serverFactoryId id of a server type
+   * 
+   * @return boolean <code>true</code> if the given server type supports the given 
+   * serviceRuntime. <code>false</code> otherwise.
+   */  
   public static boolean doesServiceRuntimeSupportServer(String serviceRuntimeId, String serverFactoryId)
   {
     String[] serverIds = getServerFactoryIdsByServiceRuntime(serviceRuntimeId);
@@ -479,7 +654,11 @@
     return false;
   }
     
-  
+  /**
+   * Returns the labels and ids of all Web service types. Used to populate the Web service type combo box on
+   * page 1 of the Web service wizard.
+   * @return {@link LabelsAndIds}
+   */
   public static LabelsAndIds getServiceTypeLabels()
   {   
     LabelsAndIds labelIds = new LabelsAndIds();
@@ -518,11 +697,15 @@
     return labelIds;
   }
   
-  /*
+  /**
+   * Returns the id of a Web service runtime that supports the given Web service type.
+   *  
    * @param typeId will be a String of the format "0/implId"
    * where the digit before the "/" represents the scenario
-   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the id
-   * of the WebServiceImpl
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * 
+   * @return String id of a Web service runtime that supports the given Web service type. 
+   * Returns null if such a Web service runtime cannot be found.
    */
   public static String getDefaultRuntimeValueFor(String typeId)
   {
@@ -535,7 +718,17 @@
     ServiceRuntimeDescriptor desc = getServiceRuntimeDescriptorById(srIds[0]);
     return desc.getRuntime().getId();
   }      
-  
+
+  /**
+   * Returns the id of a server type that supports the given Web service type.
+   *  
+   * @param typeId will be a String of the format "0/implId"
+   * where the digit before the "/" represents the scenario
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * 
+   * @return String id of a id of a server type that supports the given Web service type. 
+   * Returns null if such a server type cannot be found.
+   */    
   public static String getDefaultServerValueFor(String typeId)
   {
     String[] fIds = getServerFactoryIdsByServiceType(typeId);
@@ -545,17 +738,22 @@
     return fIds[0];
   }    
   
-  /*
+  /**
+   * Returns whether or not the given combination of server type, Web service runtime, and Web service type is
+   * supported. Used for validation.
+   * 
+   * @param serverFactoryId id of a server type
+   * @param runtimeId id of a Web service runtime
    * @param typeId will be a String of the format "0/implId"
    * where the digit before the "/" represents the scenario
-   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the id
-   * of the WebServiceImpl
-   * @param runtimeId is the id of a RuntimeDescriptor
-   * @param serverFactoryId server factory id
-   */    
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * 
+   * @return boolean <code>true</code> if the given combination of server type, Web service runtime, and Web service type is
+   * supported. <code>false</code> otherwise.
+   */
   public static boolean isServerRuntimeTypeSupported(String serverFactoryId, String runtimeId, String typeId)  
   {
-    //Ensure there is at least one service runtime that supports the given type
+    //Ensure there is at least one serviceRuntime that supports the given type
     String[] serviceRuntimes = getServiceRuntimesByServiceType(typeId);
     if (serviceRuntimes!=null && serviceRuntimes.length>0)
     {
@@ -583,6 +781,14 @@
     return false;
   }  
   
+  /**
+   * Returns an array of Web service type ids that are suitable for the provided selection.
+   * Used to default the Web service type combo box on page 1 of the Web service wizard
+   * based on the user's initial selection.
+   * @param selection
+   * @return String[] an array of Web service type ids that are suitable for the provided selection.
+   * Returns null if the selection is empty or no suitable Web service types are found.
+   */
   public static String[] getWebServiceTypeBySelection(IStructuredSelection selection)
   {
     TypeSelectionFilter2 tsf = new TypeSelectionFilter2();
@@ -590,9 +796,13 @@
     return wst == null ? null : wst;
   }    
   
-  /*
-   * @param runtimeId : id of a RuntimeDescriptor
+  /**
+   * Returns whether or not the given server type supports the given Web service runtime
+   * 
+   * @param runtimeId : id of a Web service runtime
    * @param factoryId : id of a server type
+   * @return boolean <code>true</code> if the given server type supports the given 
+   * Web service runtime for the service side. <code>false</code> otherwise.
    */
   public static boolean doesRuntimeSupportServerForServiceSide(String runtimeId, String factoryId)
   {
@@ -601,7 +811,7 @@
     while (iter.hasNext())   
     {
       ServiceRuntimeDescriptor desc = (ServiceRuntimeDescriptor)iter.next();
-      //check if this service runtime points to runtimeId
+      //check if this serviceRuntime points to runtimeId
       String thisRuntimeId = desc.getRuntime().getId();
       if (thisRuntimeId.equals(runtimeId))
       {
@@ -617,13 +827,17 @@
       }            
     }
     
-    //No service runtime matched. Return false.
+    //No serviceRuntime matched. Return false.
     return false;
   }
   
-  /*
-   * @param runtimeId: id of a RuntimeDescriptor
-   * @return: server factory id
+  /**
+   * Returns the id of a server type that supports the given Web service runtime
+   * on the service side.
+   * 
+   * @param runtimeId id of a Web service runtime
+   * @return String the id of a server type that supports the given Web service runtime.
+   * Returns null if such a server type cannot be found. 
    */
   public static String getFirstSupportedServerForServiceSide(String runtimeId)
   {
@@ -632,7 +846,7 @@
     while (iter.hasNext())   
     {
       ServiceRuntimeDescriptor desc = (ServiceRuntimeDescriptor)iter.next();
-      //check if this service runtime points to runtimeId
+      //check if this serviceRuntime points to runtimeId
       String thisRuntimeId = desc.getRuntime().getId();
       if (thisRuntimeId.equals(runtimeId))
       {
@@ -649,6 +863,15 @@
     return null;
   }  
   
+  /**
+   * Returns the names of all projects in the workspace which support the given Web service type
+   * and Web service runtime.
+   * @param typeId must be a String of the format "0/implId"
+   * where the digit before the "/" represents the scenario
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * @param runtimeId id of a Web service runtime
+   * @return String[] array of project names. The array may have 0 elements.
+   */
   public static String[] getProjectsForServiceTypeAndRuntime(String typeId, String runtimeId)
   {
     IProject[] projects = FacetUtils.getAllProjects();
@@ -666,6 +889,21 @@
     
   }
   
+  /**
+   * Returns whether or not the given project supports the given Web service type and Web service runtime.
+   * @param typeId must be a String of the format "0/implId"
+   * where the digit before the "/" represents the scenario
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * @param runtimeId id of a Web service runtime
+   * @param projectName name of an IProject in the workspace
+   * @return boolean <code>true</code> if the project supports the given Web service type and 
+   * Web service runtime. Returns <code>false</code>
+   * <ul> 
+   * <li>if the project does not support the given Web service type and Web service runtime or</li>
+   * <li>if the project does not exist or</li>
+   * <li>if projectName is null or empty</li>
+   * </ul>
+   */
   public static boolean doesServiceTypeAndRuntimeSupportProject(String typeId, String runtimeId, String projectName)
   {
     String[] descs = getServiceRuntimesByServiceType(typeId);
@@ -684,6 +922,19 @@
     return false;    
     
   }  
+  
+  /**
+   * Returns whether or not the given project supports the given serviceRuntime.
+   * @param serviceRuntimeId id of a serviceRuntime
+   * @param projectName name of an IProject in the workspace
+   * @return boolean <code>true</code> if the project supports the given
+   * serviceRuntime. Returns <code>false</code>
+   * <ul> 
+   * <li>if the project does not support the given serviceRuntime or</li>
+   * <li>if the project does not exist or</li>
+   * <li>if projectName is null or empty</li>
+   * </ul>
+   */  
   public static boolean doesServiceRuntimeSupportProject(String serviceRuntimeId, String projectName)
   {
     FacetMatcher fm = FacetMatchCache.getInstance().getMatchForProject(false, serviceRuntimeId, projectName);
@@ -697,12 +948,17 @@
     }    
   }  
   
-  /*
-   * Returns a list of valid faceted project template ids
-   * @param typeId id of the form "0/implId" on the service side.
-   * @param runtimeId id of a RuntimeDescriptor
-   * 
-   * @return String[] array of IFacetedProjectTemplate ids
+
+  /**
+   * Returns an array of {@link IFacetedProjectTemplate} ids that support the given Web service type
+   * and Web service runtime.
+   * @param typeId must be a String of the format "0/implId"
+   * where the digit before the "/" represents the scenario
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * @param runtimeId id of a Web service runtime
+   * @return String[] array of {@link IFacetedProjectTemplate} ids that support the given Web service type
+   * and Web service runtime. The array may have 0 elements. Returns null if no serviceRuntimes supporting
+   * the given Web service type could be found.
    */
   public static String[] getServiceProjectTemplates(String typeId, String runtimeId)
   {
@@ -719,7 +975,7 @@
       String thisRuntimeId = desc.getRuntime().getId();
       if (thisRuntimeId.equals(runtimeId))
       {
-        //Get the templates for this client runtime
+        //Get the templates for this serviceRuntime
         Set templates = FacetMatchCache.getInstance().getTemplatesForServiceRuntime(desc.getId());
         
         //Add the template ids to the list if they have not already been added
@@ -739,6 +995,17 @@
     return (String[])templateIdList.toArray(new String[]{});    
   }
 
+  /**
+   * Returns whether or not the given {@link IFacetedProjectTemplate} supports the given Web service type
+   * and Web service runtime.
+   * @param typeId must be a String of the format "0/implId"
+   * where the digit before the "/" represents the scenario
+   * (e.g. WebServiceScenario.BOTTOM_UP) and the implId is the Web service implementation type id.
+   * @param runtimeId id of a Web service runtime
+   * @param templateId id of a {@link IFacetedProjectTemplate}
+   * @return boolean <code>true</code> if the given {@link IFacetedProjectTemplate} supports the given 
+   * Web service type and Web service runtime. Returns <code>false</code> otherwise. 
+   */
   public static boolean doesServiceTypeAndRuntimeSupportTemplate(String typeId, String runtimeId, String templateId)
   {
     String[] srIds = getServiceRuntimesByServiceType(typeId);
@@ -753,7 +1020,7 @@
       String thisRuntimeId = desc.getRuntime().getId();
       if (thisRuntimeId.equals(runtimeId))
       {
-        //Get the templates for this service runtime
+        //Get the templates for this serviceRuntime
         Set templates = FacetMatchCache.getInstance().getTemplatesForServiceRuntime(srIds[i]);
         
         //Check if any of the template ids match the given one.
@@ -774,15 +1041,28 @@
     return false;    
   }
   
+  /**
+   * Returns whether or not the given {@link IFacetedProjectTemplate} supports the given serviceRuntime.
+   * @param serviceRuntimeId id of a serviceRuntime
+   * @param templateId id of a {@link IFacetedProjectTemplate}
+   * @return boolean <code>true</code> if the given {@link IFacetedProjectTemplate} supports the given 
+   * serviceRuntime. Returns <code>false</code> otherwise.
+   */
   public static boolean doesServiceRuntimeSupportTemplate(String serviceRuntimeId, String templateId)
   {
-    //Get the templates for this service runtime
+    //Get the templates for this serviceRuntime
     Set templates = FacetMatchCache.getInstance().getTemplatesForServiceRuntime(serviceRuntimeId);
     IFacetedProjectTemplate checkingTemplate = ProjectFacetsManager.getTemplate(templateId);
     return templates.contains(checkingTemplate);
   }  
   
   //Client-side utilities
+  /**
+   * Returns a WebServiceClientImpl given the id of a Web service client implementation type.
+   * @param id 
+   * @return {@link WebServiceClientImpl} with the given id
+   * Returns null if such a WebServiceClientImpl cannot be found.
+   */  
   public static WebServiceClientImpl getWebServiceClientImplById(String id)
   {
     Object result = registry.webServiceClientImpls_.get(id);
@@ -793,6 +1073,12 @@
     return null;    
   }
   
+  /**
+   * Returns a {@link ClientRuntimeDescriptor} given the id of a clientRuntime.
+   * @param id of a clientRuntime
+   * @return ClientRuntimeDescriptor with the given id
+   * Returns null if such a ClientRuntimeDescriptor cannot be found.
+   */  
   public static ClientRuntimeDescriptor getClientRuntimeDescriptorById(String id)
   {
     Object result = registry.clientRuntimes_.get(id);
@@ -803,6 +1089,12 @@
     return null;        
   }    
   
+  /**
+   * Returns the {@link IWebServiceRuntime} of the given clientRuntime. Extenders provide the fully 
+   * qualified name of a concrete IWebServiceRuntime in the class attribute of a clientRuntimes extension.
+   * @param clientRuntimeId id of a clientRuntime
+   * @return IWebServiceRuntime
+   */  
   public static IWebServiceRuntime getClientRuntime( String clientRuntimeId )
   {
     ClientRuntimeDescriptor descriptor = getClientRuntimeDescriptorById(clientRuntimeId);
@@ -815,10 +1107,24 @@
     return webserviceRuntime;
   }
   
+  /**
+   * Returns the id of a clientRuntime that supports the provided Web service client implementation type, Web service runtime,
+   * server type/server instance (if present), project or project type.
+   * @param trs an instance of {@link TypeRuntimeServer} containing a Web service client implementation type id, Web service runtime id,
+   * server type id and server instance id. The Web service client implementation type id and Web service runtime id must be non-null 
+   * and non-empty. The server type id and server instance id may be null or empty.
+   * @param projectName the name of an IProject thay may or mat not exist in the workspace. Must be non-null and 
+   * non-empty.
+   * @param templateId the id of an {@link IFacetedProjectTemplate}. Must be non-null and non-empty if
+   * an IProject with the name projectName does not exist in the workspace. 
+   * @return String id of a clientRuntime that supports the provided Web service client implementation type, Web service runtime,
+   * server type/server instance (if present), project or project type. Returns an empty String if no 
+   * such clientRuntime could be found.
+   */  
   public static String getClientRuntimeId(TypeRuntimeServer trs, String projectName, String templateId)
   {
     boolean serverSelected = (trs.getServerId()!=null) && (trs.getServerId().length()>0);
-    //Find the first client runtime that supports the implementation type, runtime, server, and project
+    //Find the first clientRuntime that supports the implementation type, runtime, server, and project
     String[] descs = getClientRuntimesByType(trs.getTypeId());
     for (int i=0; i<descs.length; i++)
     {
@@ -857,8 +1163,10 @@
     
   }
   
-  /*
-   * @return String[] array of ids of RuntimeDescriptors
+  /**
+   * Returns all Web service runtime ids for the client side.
+   * @return String[] array of Web service runtime ids for the client side.
+   * The array may have 0 elements. 
    */
   public static String[] getAllRuntimesForClientSide() 
   {
@@ -874,11 +1182,12 @@
     return (String[])runtimeIds.toArray(new String[]{});
   }
   
-  /*
-   * @param clientImpld The id of a client implementation type
-   * 
-   * @returns String[] containing the ids of all clientRuntimes that
-   * support this client implementation type
+  /**
+   * Returns the ids of all clientRuntimes that support the given
+   * Web service client implementation type.
+   * @param clientImplId id of a Web service client implementation type
+   * @returns String[] array containing the ids of all clientRuntimes that
+   * support the given Web service client implementation type. The array may have 0 elements.
    */
   public static String[] getClientRuntimesByType(String clientImplId) 
   {
@@ -897,9 +1206,12 @@
     return (String[])ids.toArray(new String[]{});
   }  
   
-  /*
-   * @param clientImplId id of a WebServiceClientImpl
-   * @return String[] array of RuntimeDescriptor ids
+  /**
+   * Returns the ids of all Web service runtimes that support the given
+   * Web service client implementation type.
+   * @param clientImplId id of a Web service client implementation type
+   * @return String[] array containing the ids of all Web service runtimes that
+   * support the given Web service client implementation type. The array may have 0 elements.
    */
   public static String[] getRuntimesByClientType(String clientImplId) 
   {
@@ -921,10 +1233,14 @@
     return (String[])runtimeIds.toArray(new String[]{});
   }
   
-  /*
-   * @param clientImplId The id of a client implementation type
-   * @param runtimeId id of a runtime (RuntimeDescriptor)
-   */  
+  /**
+   * Returns whether or not the given Web service runtime supports the given 
+   * Web service client implementation type.
+   * @param clientImplId id of a Web service client implementation type
+   * @param runtimeId id of a Web service runtime
+   * @return boolean <code>true</code> if the given Web service runtime supports the given 
+   * Web service client implementation type. <code>false</code> otherwise.
+   */
   public static boolean isRuntimeSupportedForClientType(String clientImplId, String runtimeId)
   {
     String[] clientRuntimeIds = getClientRuntimesByType(clientImplId);
@@ -943,6 +1259,10 @@
     return false;
   }
   
+  /**
+   * Returns all server type ids with configured server runtimes.
+   * @return String[] array of server type ids. The array may have 0 elements.
+   */
   public static String[] getAllClientServerFactoryIds() 
   {    
     //Iterator iter = registry.clientRuntimes_.values().iterator();
@@ -959,6 +1279,14 @@
     return getAllServerFactoryIdsWithRuntimes();    
   }
   
+  /**
+   * Returns the ids of all server types that support the given
+   * Web service client implementation type.
+   *  
+   * @param clientImplId id of a Web service client implementation type
+   * @return String[] array containing the ids of all server types that
+   * support the given Web service client implementation type. The array may have 0 elements.
+   */
   public static String[] getServerFactoryIdsByClientType(String clientImplId)
   {
     ArrayList serverFactoryIds = new ArrayList();
@@ -967,7 +1295,7 @@
     {
       for (int i = 0; i < crts.length; i++)
       {
-        //Get the runtimes that work for the facets required for this service runtime        
+        //Get the runtimes that work for the facets required for this serviceRuntime        
         String[] fIds = getServerFactoryIdsByClientRuntime(crts[i]);
         for (int j=0; j<fIds.length; j++)
         {
@@ -982,8 +1310,13 @@
     return (String[])serverFactoryIds.toArray(new String[]{});
   }  
   
-  /*
-   * 
+  /**
+   * Returns whether or not the given server type supports the given 
+   * Web service client implementation type.
+   * @param clientImplId id of a Web service client implementation type
+   * @param serverFactoryId id of a server type
+   * @return <code>true</code> if the given server type supports the given 
+   * Web service client implementation type. <code>false</code> otherwise.
    */
   public static boolean isServerSupportedForChosenClientType(String clientImplId, String serverFactoryId)
   {
@@ -1004,9 +1337,13 @@
     return false;
   }  
   
-  /*
-   * @prarm clientRuntimeId : id of a ClientRuntimeDescriptor
+  /**
+   * Returns the ids of all server types that support the given
+   * clientRuntime.
    * 
+   * @param clientRuntimeId id of a clientRuntime
+   * @return String[] array containing the ids of all server types that
+   * support the given clientRuntime. The array may have 0 elements.
    */
   public static String[] getServerFactoryIdsByClientRuntime(String clientRuntimeId)
   {       
@@ -1017,8 +1354,14 @@
     return fIds;    
   }    
 
-  /*
-   * @param clientRuntimeId id of a ClientRuntimeDescriptor
+  /**
+   * Returns whether or not the given server type supports the given 
+   * clientRuntime.
+   * 
+   * @param clientRuntimeId id of a clientRuntime
+   * @param serverFactoryId id of a server type
+   * @return boolean <code>true</code> if the given server type supports the given 
+   * clientRuntime. <code>false</code> otherwise.
    */
   public static boolean doesClientRuntimeSupportServer(String clientRuntimeId, String serverFactoryId)
   {
@@ -1034,9 +1377,13 @@
     return false;
   }
   
-  /*
-   * @param runtimeId : id of a RuntimeDescriptor
-   * @param factoryId : id of a server type
+  /**
+   * Returns whether or not the given server type supports the given Web service runtime
+   * 
+   * @param runtimeId id of a Web service runtime
+   * @param factoryId id of a server type
+   * @return boolean <code>true</code> if the given server type supports the given 
+   * Web service runtime for the client side. <code>false</code> otherwise.
    */
   public static boolean doesRuntimeSupportServerForClientSide(String runtimeId, String factoryId)
   {
@@ -1045,7 +1392,7 @@
     while (iter.hasNext())   
     {
       ClientRuntimeDescriptor desc = (ClientRuntimeDescriptor)iter.next();
-      //check if this client runtime points to runtimeId
+      //check if this clientRuntime points to runtimeId
       String thisRuntimeId = desc.getRuntime().getId();
       if (thisRuntimeId.equals(runtimeId))
       {
@@ -1065,9 +1412,13 @@
     return false;
   }    
   
-  /*
-   * @param runtimeId: id of a RuntimeDescriptor
-   * @return: server factory id
+  /**
+   * Returns the id of a server type that supports the given Web service runtime
+   * on the client side.
+   * 
+   * @param runtimeId id of a Web service runtime
+   * @return String the id of a server type that supports the given Web service runtime
+   * on the client side. Returns null if such a server type cannot be found.
    */
   public static String getFirstSupportedServerForClientSide(String runtimeId)
   {
@@ -1076,7 +1427,7 @@
     while (iter.hasNext())   
     {
       ClientRuntimeDescriptor desc = (ClientRuntimeDescriptor)iter.next();
-      //check if this service runtime points to runtimeId
+      //check if this clientRuntime points to runtimeId
       String thisRuntimeId = desc.getRuntime().getId();
       if (thisRuntimeId.equals(runtimeId))
       {
@@ -1094,14 +1445,20 @@
 
   }
   
-  /*
-   * @param clientImplId is the id of a WebServiceClientImpl
-   * @param runtimeId is the id of a RuntimeDescriptor
-   * @param serverFactoryId server factory id
-   */    
+
+  /**
+   * Returns whether or not the given combination of server type, Web service runtime, and 
+   * Web service client implementation type is supported. Used for validation.
+   * 
+   * @param serverFactoryId id of a server type
+   * @param runtimeId id of a Web service runtime
+   * @param clientImplId id of a Web service client implementation type
+   * @return boolean <code>true</code> if the given combination of server type, Web service runtime, 
+   * and Web service client implementation type is supported. <code>false</code> otherwise.
+   */
   public static boolean isServerClientRuntimeTypeSupported(String serverFactoryId, String runtimeId, String clientImplId)  
   {
-    //Ensure there is at least one client runtime that supports the given type
+    //Ensure there is at least one clientRuntime that supports the given type
     String[] clientRuntimes = getClientRuntimesByType(clientImplId);
     if (clientRuntimes!=null && clientRuntimes.length>0)
     {
@@ -1128,36 +1485,15 @@
     return false;
   }    
   
-  /*
-   * Returns a set of templates supported by th given client runtime
-   * @returns Set (type: IFacetedProjectTemplate)
-   */
-  /*
-  private static Set getTemplatesForClientRuntime(String clientRuntimeId)
-  {
-    Set templates = (Set)registry.templatesByClientRuntimeId_.get(clientRuntimeId);
-    if (templates != null)
-    {
-      //Return the cached set of templates.
-      return templates;
-    }
-    else
-    {
-      //Calculate the templates, cache them for later use, and return them.
-      ClientRuntimeDescriptor desc = getClientRuntimeDescriptorById(clientRuntimeId);
-      //Set validTemplates = FacetUtils.getTemplates(desc.getRequiredFacetVersions());
-      Set validTemplates = FacetMatchCache.getInstance().getTemplates(desc.getRequiredFacetVersions());
-      registry.templatesByClientRuntimeId_.put(clientRuntimeId, validTemplates);
-      return validTemplates;
-    }
-  }
-  */
-  /*
-   * Returns a list of valid faceted project template ids
-   * @param clientImplId id of a WebServiceClientImpl
-   * @param runtimeId id of a RuntimeDescriptor
+  /**
+   * Returns an array of {@link IFacetedProjectTemplate} ids that support the given Web service client implementation type
+   * and Web service runtime.
    * 
-   * @return String[] array of IFacetedProjectTemplate ids
+   * @param clientImplId id of a Web service client implementation type
+   * @param runtimeId id of a Web service runtime
+   * @return String[] array of {@link IFacetedProjectTemplate} ids that support the given Web service client implementation type
+   * and Web service runtime. The array may have 0 elements. Returns null if no clientRuntimes supporting
+   * the given Web service client implementation type could be found.
    */
   public static String[] getClientProjectTemplates(String clientImplId, String runtimeId)
   {
@@ -1174,7 +1510,7 @@
       String thisRuntimeId = desc.getRuntime().getId();
       if (thisRuntimeId.equals(runtimeId))
       {
-        //Get the templates for this client runtime
+        //Get the templates for this clientRuntime
         Set templates = FacetMatchCache.getInstance().getTemplatesForClientRuntime(desc.getId());
         
         //Add the template ids to the list if they have not already been added
@@ -1194,6 +1530,16 @@
     return (String[])templateIdList.toArray(new String[]{});    
   }  
   
+  /**
+   * Returns whether or not the given {@link IFacetedProjectTemplate} supports the given 
+   * Web service client implementation type and Web service runtime.
+   * 
+   * @param clientImplId id of a Web service client implementation type
+   * @param runtimeId id of a Web service runtime
+   * @param templateId id of a {@link IFacetedProjectTemplate}
+   * @return boolean <code>true</code> if the given {@link IFacetedProjectTemplate} supports the given 
+   * Web service client implementation type and Web service runtime. Returns <code>false</code> otherwise. 
+   */
   public static boolean doesClientTypeAndRuntimeSupportTemplate(String clientImplId, String runtimeId, String templateId)
   {
     String[] crIds = getClientRuntimesByType(clientImplId);
@@ -1208,7 +1554,7 @@
       String thisRuntimeId = desc.getRuntime().getId();
       if (thisRuntimeId.equals(runtimeId))
       {
-        //Get the templates for this client runtime
+        //Get the templates for this clientRuntime
         Set templates = FacetMatchCache.getInstance().getTemplatesForClientRuntime(crIds[i]);
         
         //Check if the template ids contains the template we're checking for
@@ -1229,17 +1575,29 @@
   }  
   
 
+  /**
+   * Returns whether or not the given {@link IFacetedProjectTemplate} 
+   * supports the given clientRuntime
+   *  
+   * @param clientRuntimeId id of a clientRuntime
+   * @param templateId id of a {@link IFacetedProjectTemplate}
+   * @return boolean <code>true</code> if the given {@link IFacetedProjectTemplate} supports the given 
+   * clientRuntime. Returns <code>false</code> otherwise.
+   */
   public static boolean doesClientRuntimeSupportTemplate(String clientRuntimeId, String templateId)
   {
-    //ClientRuntimeDescriptor desc = getClientRuntimeDescriptorById(clientRuntimeId);
-
-    //Get the templates for this client runtime
+    //Get the templates for this clientRuntime
     Set templates = FacetMatchCache.getInstance().getTemplatesForClientRuntime(clientRuntimeId);
     IFacetedProjectTemplate checkingTemplate = ProjectFacetsManager.getTemplate(templateId);
     return templates.contains(checkingTemplate);
   }
   
-    
+  /**
+   * Returns the labels and ids of all Web service client implementation types. 
+   * Used to populate the Web service client type combo box on
+   * page 1 of the Web service wizard and Web service client wizard.
+   * @return {@link LabelsAndIds}
+   */  
   public static LabelsAndIds getClientTypeLabels()
   {
     
@@ -1276,6 +1634,13 @@
 
   }  
   
+  /**
+   * Returns all server type ids for which there are configured server runtimes
+   * present in the workspace.
+   * 
+   * @return String[] array of server type ids for which there are configured server runtimes
+   * present in the workspace. The array may have 0 elements.
+   */
   public static String[] getAllServerFactoryIdsWithRuntimes()
   {
     ArrayList fids = new ArrayList();
@@ -1287,16 +1652,25 @@
       IServerType st = sts[i];
       for (int j=0; j<rts.length; j++)
       {
+    	if (st == null || st.getRuntimeType() == null) break;    	  
         org.eclipse.wst.server.core.IRuntime rt = rts[j];
         // If the server type has the same runtime type as this runtime, add it to the list
         String serverTypeRuntimeTypeId = st.getRuntimeType().getId();
-        String runtimeRuntimeTypeId = rt.getRuntimeType().getId();
-        if (serverTypeRuntimeTypeId.equals(runtimeRuntimeTypeId))
+        
+        if (rt != null)
         {
-          if (!fids.contains(st.getId()))
-          {
-            fids.add(st.getId());
-          }
+        	IRuntimeType rtType = rt.getRuntimeType();
+        	if (rtType != null)
+        	{
+		        String runtimeRuntimeTypeId = rtType.getId();
+		        if (serverTypeRuntimeTypeId.equals(runtimeRuntimeTypeId))
+		        {
+		          if (!fids.contains(st.getId()))
+		          {
+		            fids.add(st.getId());
+		          }
+		        }
+        	}
         }
       }
     }
@@ -1304,9 +1678,16 @@
     return (String[])fids.toArray(new String[0]);
   }
   
+  /**
+   * Returns the names of all projects in the workspace which support the given Web service client 
+   * implementation type and Web service runtime.
+   * 
+   * @param typeId id of a Web service client implementation type
+   * @param runtimeId id of a Web service runtime
+   * @return String[] array of project names. The array may have 0 elements.
+   */
   public static String[] getProjectsForClientTypeAndRuntime(String typeId, String runtimeId)
   {
-    //String[] descs = getClientRuntimesByType(typeId);
     IProject[] projects = FacetUtils.getAllProjects();
     ArrayList validProjects = new ArrayList();
     
@@ -1322,6 +1703,22 @@
     
   }  
   
+  /**
+   * Returns whether or not the given project supports the given Web service client implementation type 
+   * and Web service runtime.
+   * 
+   * @param typeId id of a Web service client implementation type
+   * @param runtimeId id of a Web service runtime
+   * @param projectName name of an IProject in the workspace
+   * @return boolean <code>true</code> if the project supports the given Web service type and 
+   * Web service runtime. Returns <code>false</code>
+   * <ul> 
+   * <li>if the project does not support the given Web service client implementation type and 
+   * Web service runtime or</li>
+   * <li>if the project does not exist or</li>
+   * <li>if projectName is null or empty</li>
+   * </ul>
+   */
   public static boolean doesClientTypeAndRuntimeSupportProject(String typeId, String runtimeId, String projectName)
   {
     String[] descs = getClientRuntimesByType(typeId);
@@ -1343,6 +1740,18 @@
   }  
   
   
+  /**
+   * Returns whether or not the given project supports the given clientRuntime.
+   * @param clientRuntimeId id of a clientRuntime
+   * @param projectName name of an IProject in the workspace
+   * @return boolean <code>true</code> if the project supports the given
+   * clientRuntime. Returns <code>false</code>
+   * <ul> 
+   * <li>if the project does not support the given clientRuntime or</li>
+   * <li>if the project does not exist or</li>
+   * <li>if projectName is null or empty</li>
+   * </ul>
+   */
   public static boolean doesClientRuntimeSupportProject(String clientRuntimeId, String projectName)
   {
     FacetMatcher fm = FacetMatchCache.getInstance().getMatchForProject(true, clientRuntimeId, projectName);
@@ -1362,6 +1771,26 @@
   private static Hashtable serverFactoryIdByLabel_;
   private static Hashtable runtimeIdByLabel_;
   
+  /**
+   * Returns the {@link SelectionListChoices} data structure representing the 
+   * server type > Web service runtime > J2EE cascading lists .
+   * {@link SelectionListChoices} is a data structure  which is like a cascading
+   * set of lists useful for populating a group of combo boxes in which the 
+   * selection in a given combo box determines the list of items used to populate
+   * the combo box below it. The Server Runtime preference page contains two combo
+   * boxes: one for server types and, below it, one for Web service runtimes.
+   * The server type combo box is meant to contain the list of all available server types
+   * that support at least one Web service runtime on either the client or service side. 
+   * The Web service runtime combo box is meant to contain the subset of Web service runtimes
+   * supported by the server type selected in the server type combo box.
+   * The SelectionListChoices returned by this method has three lists: server types, Web service runtimes,
+   * and J2EE levels. The first two lists correspond to the combo boxes on the preference
+   * page and are used to populate them. The J2EE levels list is a historical remnant from
+   * when J2EE levels used to be displayed on the preference page. It remains in this 
+   * data structure with some hard-coded values but is not rendered to the user. 
+   * 
+   * @return SelectionListChoices representing the server type > Web service runtime > J2EE cascading lists
+   */
   public static SelectionListChoices getServerToRuntimeToJ2EE()
   {
     if (serverToRuntimeToJ2EE_!=null)
@@ -1369,8 +1798,11 @@
       return serverToRuntimeToJ2EE_;
     }
     
-    //String[] servers = getStringArrayIntersection(getAllServerFactoryIds(), WebServiceClientTypeRegistry.getInstance().getAllClientServerFactoryIds());
+    //TODO (see bug 116025): Instead of all server type ids, we should be calculating the set of server
+    //types that support at least one Web service runtime on either the client or service side.
+    //Getting all server types for now.
     String[] servers = getAllServerFactoryIds();
+    
     SelectionList serversList = new SelectionList(servers, 0);
     Vector choices = new Vector();
     for (int i=0; i<servers.length; i++)
@@ -1384,18 +1816,18 @@
 
   private static SelectionListChoices getRuntimeChoices(String serverFactoryId)
   {
-    //Return all the runtimes for now.
+	//TODO (see bug 116025): Instead of all Web service runtimes, we should be 
+	//calculating the subset of Web service runtimes supported by the server type
+	//with id equal to serverFactoryId. Getting all the Web service runtimes for now.
     Set runtimes = registry.runtimes_.keySet();
     Iterator itr = registry.runtimes_.keySet().iterator();
-    String[] runtimeIds = new String[runtimes.size()];
-    //TODO String[] runtimeIds = getRuntimeIDsByServerFactoryID(serverFactoryId);    
+    String[] runtimeIds = new String[runtimes.size()];    
     int i = 0;
     while (itr.hasNext())
     {
       String runtimeId = (String)itr.next();
       runtimeIds[i] = runtimeId;
-      i++;
-     
+      i++;     
     }
 
     SelectionList runtimesList = new SelectionList(runtimeIds, 0);
@@ -1409,8 +1841,8 @@
   
   private static SelectionListChoices getJ2EEChoices(String runtimeId)
   {
-    //J2EE levels will be removed from the Server Runtime preference page.
-    //Return some hard coded values for now.
+    //J2EE levels have been removed from the Server Runtime preference page.
+    //Return some hard coded values. These will not be rendered on the preference page.
     String[] j2eeVersions = new String[]{"13", "14"};
     SelectionList j2eeVersionsList = new SelectionList(j2eeVersions, 0);
     return new SelectionListChoices(j2eeVersionsList, null);        
@@ -1418,8 +1850,9 @@
   
   private static String[] getAllServerFactoryIds()
   {
-    //Return all server type ids for now.
-    //TODO Only the servers that are appropriate for the Web service runtimes should be displayed.
+    //TODO (see bug 116025): Instead of all server type ids, we should be calculating the set of server
+	//types that support at least one Web service runtime on either the client or service side.
+	//Return all server type ids for now.
     ArrayList ids = new ArrayList();
     if (serverFactoryIdByLabel_ == null)
     {
@@ -1451,35 +1884,13 @@
     
     return null;
   }  
-  
-  //TODO this needs to be implemented once facet runtime to server runtime bridge is available.
-  /*
-  private static String[] getRuntimeIDsByServerFactoryID(String serverFactoryID) 
-  {
-    ArrayList ids = new ArrayList();
-    Iterator iter = registry.webServiceRuntimes_.values().iterator();
-    while (iter.hasNext())
-    {
-      WebServiceRuntimeInfo wsr = (WebServiceRuntimeInfo)iter.next();
-      if (doesRuntimeSupportServer(wsr.getId(), serverFactoryID))
-      {
-        ids.add(wsr.getId());
-      }
-      
-    }
     
-    if (ids.size() > 0)
-    {
-      String[] runtimeIds = (String[])ids.toArray(new String[0]);
-      return runtimeIds;
-    }
-    
-    return null;    
-    
-    
-  }
-  */
-  
+  /**
+   * Returns a server type id given the server type's label
+   * @param label server type label
+   * @return server type id or null if no server type with the given 
+   * label is found.
+   */
   public static String getServerFactoryId(String label)
   {
     if (label==null || label.length()==0)
@@ -1500,6 +1911,12 @@
     }       
   }  
   
+  /**
+   * Returns a Web service runtime's id given its label 
+   * @param label Web service runtime label
+   * @return Web service runtime id or null if no
+   * Web service runtime with the given label is found.
+   */
   public static String getRuntimeId(String label)
   {
     
@@ -1521,6 +1938,13 @@
   }    
   
     
+  /**
+   * Returns a set of facet runtimes that support the given
+   * required facet versions.
+   * @param requiredFacetVersions an array containing elements of type {@link RequiredFacetVersion}
+   * @return Set set of facet runtimes that support the given required facet versions.
+   * (element type: {@link IRuntime}) 
+   */
   private static Set getRuntimes(RequiredFacetVersion[] requiredFacetVersions)
   {
     return FacetUtils.getRuntimes(requiredFacetVersions);
diff --git a/bundles/org.eclipse.jst.ws.consumption/.project b/bundles/org.eclipse.jst.ws.consumption/.project
index 2a89cfa..0758941 100644
--- a/bundles/org.eclipse.jst.ws.consumption/.project
+++ b/bundles/org.eclipse.jst.ws.consumption/.project
@@ -3,10 +3,6 @@
 	<name>org.eclipse.jst.ws.consumption</name>
 	<comment></comment>
 	<projects>
-		<project>org.eclipse.wst.command.env</project>
-		<project>org.eclipse.wst.command.env.core</project>
-		<project>org.eclipse.jst.ws</project>
-		<project>org.eclipse.wst.wsdl</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/bundles/org.eclipse.jst.ws.consumption/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.consumption/META-INF/MANIFEST.MF
index 1baee5e..51c11da 100644
--- a/bundles/org.eclipse.jst.ws.consumption/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.consumption/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.consumption; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.103.qualifier
 Bundle-ClassPath: wsc.jar,
  webserviceutils.jar
 Bundle-Activator: org.eclipse.jst.ws.internal.consumption.plugin.WebServiceConsumptionPlugin
@@ -25,38 +25,36 @@
  org.eclipse.jst.ws.internal.consumption.sampleapp.common;x-internal:=true,
  org.eclipse.jst.ws.internal.consumption.wsfinder;x-internal:=true,
  org.eclipse.jst.ws.util
-Require-Bundle: org.eclipse.jem,
- org.eclipse.jem.workbench,
- org.eclipse.emf.common,
- org.eclipse.emf.ecore,
- org.eclipse.jdt.core,
- org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.xsd,
- org.eclipse.debug.core,
- org.eclipse.jst.ws,
- org.eclipse.jdt.launching,
- org.eclipse.wst.command.env.core,
- org.eclipse.wst.command.env,
- org.eclipse.jem.workbench,
- org.eclipse.jface,
- org.eclipse.wst.ws,
- org.eclipse.wst.ws.parser,
- org.eclipse.wst.server.core,
- org.eclipse.wst.wsdl,
- org.eclipse.wst.internet.monitor.core,
- org.eclipse.jst.j2ee.core,
- org.eclipse.jst.j2ee.ejb,
- org.eclipse.jst.j2ee,
- org.eclipse.jst.j2ee.web,
- org.eclipse.wst.common.emfworkbench.integration,
- org.eclipse.wst.common.frameworks,
- org.wsdl4j,
- org.eclipse.jem.util,
- org.eclipse.wst.common.uriresolver,
- org.eclipse.wst.common.environment,
- org.eclipse.wst.common.project.facet.core,
- org.eclipse.jst.server.core,
- com.ibm.icu,
- org.eclipse.ui
+Require-Bundle: org.eclipse.jem;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.emf.common;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.xsd;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jst.ws;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jdt.launching;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jface;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.ws.parser;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.internet.monitor.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.web;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.eclipse.jem.util;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.server.core;bundle-version="[1.0.102,1.1.0)",
+ com.ibm.icu;bundle-version="[3.4.4,3.5.0)",
+ org.eclipse.ui;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.jst.ws.consumption/about.html b/bundles/org.eclipse.jst.ws.consumption/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws.consumption/about.html
+++ b/bundles/org.eclipse.jst.ws.consumption/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/codegen/Generator.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/codegen/Generator.java
index a260ac0..8a2774b 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/codegen/Generator.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/codegen/Generator.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060811   153482 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.codegen;
@@ -105,18 +108,25 @@
     proxyBaseName = proxyBase;  
   }
 
-  private static final char[] BAD_SYMBOLS = {'-', ' '}; // symbols that can appear in the folder name but it is not allowed in a java bean name
-  private static final char UNDERSCORE = '_';	// replace the above ones by underscore
+  private static final char UNDERSCORE = '_';
   public String getSessionBeanId()
   {
     String name = getClientFolderPath();
     int index = name.lastIndexOf("/");
     index++;
-    String newName = name.substring(index);
-    for ( int i = 0; i < BAD_SYMBOLS.length; i++ ) {
-    	newName = newName.replace ( BAD_SYMBOLS[i], UNDERSCORE );
+    StringBuffer newName = new StringBuffer(name.substring(index));
+    
+    //We need to make this a valid java identifier
+    //To do this we will replace any character that is not valid with an underscore
+    for (int i = 0; i < newName.length(); i++)
+    {
+    	char c = newName.charAt(i);
+    	if (i == 0 && !Character.isJavaIdentifierStart(c) || !Character.isJavaIdentifierPart(c))
+    	{
+    		newName.setCharAt(i,UNDERSCORE);
+    	}
     }
-    return newName+ "id";
+    return newName + "id";
   }
 
   /*
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/AddModuleToServerCommand.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/AddModuleToServerCommand.java
index d25b4ec..79657e3 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/AddModuleToServerCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/AddModuleToServerCommand.java
@@ -1,21 +1,27 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060921 [158210] kathy@ca.ibm.com - Kathy Chan, Calling incremental build on the project before adding to server
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.command.common;
 
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
@@ -64,7 +70,30 @@
 	    IProject iproject = ProjectUtilities.getProject(project);
 	    if (!J2EEUtils.isJavaComponent(iproject))
 	    {      
-	      IModule imodule = ServerUtils.getModule(iproject);
+	    	IModule imodule = ServerUtils.getModule(iproject);
+	    	// TODO:  This workaround for 156768 should be removed once the defect is fixed
+	    	if (imodule == null) {
+	    	    // calling incremental build on the project before trying again
+	    		iproject.build(IncrementalProjectBuilder.INCREMENTAL_BUILD,null);
+	    		// wait for the incremental build to complete before trying again
+	    		try 
+	    		{
+	    			Platform.getJobManager().join(ResourcesPlugin.FAMILY_AUTO_BUILD, null);
+	    		} 
+	    		catch( InterruptedException exc ) 
+	    		{
+	    			// Assuming that the autobuilder has actually completed.	
+	    		}
+	    		imodule = ServerUtils.getModule(iproject);
+	    		if (imodule == null) {  
+	    			// return error if module is still null after 1 retry
+	    			status = StatusUtils.errorStatus( NLS.bind(ConsumptionMessages.MSG_ERROR_ADD_MODULE, new String[]{module}) );
+	    			env.getStatusHandler().reportError(status);
+	    			return status;
+	    		}
+	    	}
+	    	// end of workaround for 156768
+	    	
 	      if (!ServerUtil.containsModule(server, imodule, null))
 	      {
 	        IModule[] imodules = new IModule[]{imodule};
@@ -75,7 +104,7 @@
 	    }
 	    } catch (CoreException e)
 	    {
-	      status = StatusUtils.errorStatus( NLS.bind(ConsumptionMessages.MSG_ERROR_ADD_MODULE, new String[]{module}) );
+	      status = StatusUtils.errorStatus( NLS.bind(ConsumptionMessages.MSG_ERROR_ADD_MODULE, new String[]{module}), e);
 	      env.getStatusHandler().reportError(status);
 	      return status;      
 	    } finally
@@ -88,7 +117,7 @@
 	        }
 	      } catch (CoreException ce)
 	      {
-	        status = StatusUtils.errorStatus( NLS.bind(ConsumptionMessages.MSG_ERROR_ADD_MODULE, new String[] { module }) );
+	        status = StatusUtils.errorStatus( NLS.bind(ConsumptionMessages.MSG_ERROR_ADD_MODULE, new String[] { module }), ce);
 	        env.getStatusHandler().reportError(status);
 	        return status;
 	      }      
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/ComputeProxyEndpointCommand.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/ComputeProxyEndpointCommand.java
new file mode 100644
index 0000000..fd014e8
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/ComputeProxyEndpointCommand.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.consumption.command.common;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+
+public class ComputeProxyEndpointCommand extends AbstractDataModelOperation
+{
+  private Boolean monitorService;
+  private Integer monitoredPort;
+  private String proxyEndpoint;
+  private String endpoint;
+
+  public ComputeProxyEndpointCommand()
+  {
+  }
+
+  /**
+   * @param monitoredPort The monitoredPort to set.
+   */
+  public void setMonitoredPort(Integer monitoredPort)
+  {
+    this.monitoredPort = monitoredPort;
+  }
+  /**
+   * @param monitorService The monitorService to set.
+   */
+  public void setMonitorService(Boolean monitorService)
+  {
+    this.monitorService = monitorService;
+  }
+  
+  public String getEndpoint()
+  {
+  	if (monitorService != null && monitorService.booleanValue() && monitoredPort != null)
+  	{
+  		// Use the endpoint that matches with the proxy the extension passes to us if it is set
+  		if (proxyEndpoint != null) {
+  			String location = proxyEndpoint;
+  			try
+			{
+  				URL url = new URL(location);
+  				url = new URL(url.getProtocol(), url.getHost(), monitoredPort.intValue(), url.getFile());
+  				return url.toString();
+			}
+  			catch (MalformedURLException murle)
+			{
+  				int protocolIndex = location.indexOf("://");
+                if (protocolIndex != -1)
+                {
+                  String protocol = location.substring(0, protocolIndex+3);
+                  int hostPortIndex = location.indexOf('/', protocolIndex+3);
+                  String file;
+                  if (hostPortIndex == -1)
+                  {
+                    hostPortIndex = location.length();
+                    file = "";
+                  }
+                  else
+                    file = location.substring(hostPortIndex, location.length());
+                  String hostPort = location.substring(protocolIndex+3, hostPortIndex);
+                  int hostIndex = hostPort.indexOf(':');
+                  String host;
+                  if (hostIndex != -1)
+                    host = hostPort.substring(0, hostIndex+1);
+                  else
+                    host = hostPort + ':';
+                  String newPort = String.valueOf(monitoredPort.intValue());
+                  StringBuffer endpoint = new StringBuffer(protocol);
+                  endpoint.append(host);
+                  endpoint.append(newPort);
+                  endpoint.append(file);
+                  return endpoint.toString();
+                }
+			}
+  		} else {
+  			return endpoint;
+  		}
+  	}
+  	return null;
+  }
+
+  public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
+  {
+    return Status.OK_STATUS;
+  }
+  
+  /**
+   * @param proxyEndpoint The proxyEndpoint to set.
+   */
+  public void setProxyEndpoint(String proxyEndpoint) {
+  	this.proxyEndpoint = proxyEndpoint;
+  }
+  /**
+   * @param endpoint The endpoint to set.
+   */
+  public void setEndpoint(String endpoint) {
+  	this.endpoint = endpoint;
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CopyWSDLCommand.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CopyWSDLCommand.java
index c50a2a4..9834948 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CopyWSDLCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CopyWSDLCommand.java
@@ -1,21 +1,22 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20061213   165723 kathy@ca.ibm.com - Kathy Chan
+ * 20061213   165725 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.command.common;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -37,18 +38,20 @@
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.jst.ws.internal.consumption.ConsumptionMessages;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.common.environment.uri.URIException;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
-import org.eclipse.wst.common.uriresolver.internal.util.URIEncoder;
 import org.eclipse.wst.ws.internal.parser.discovery.NetUtils;
 import org.eclipse.wst.ws.internal.parser.wsil.WWWAuthenticationException;
 import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
@@ -78,24 +81,39 @@
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
     IEnvironment env = getEnvironment();
-    
+    CopyWSDLRunnable copyWSDLRunnable = new CopyWSDLRunnable(env);
     try
     {
-      ignoreList = new Vector();
-      if (def == null)
-        def = webServicesParser.getWSDLDefinition(wsdlURI);
-      copyWSDL(env, wsdlURI, getBaseURI(destinationURI), getLocalname(destinationURI), def);
+      ResourceUtils.getWorkspace().run(copyWSDLRunnable, null);
       return Status.OK_STATUS;
     }
-    catch (Throwable t)
+    catch (CoreException ce)
     {
-      t.printStackTrace();
-      IStatus status = StatusUtils.errorStatus( NLS.bind(ConsumptionMessages.MSG_ERROR_COPY_WSDL, new String[]{wsdlURI, destinationURI}), t);
-      env.getStatusHandler().reportError(status);
+        IStatus status = ce.getStatus();
+		env.getStatusHandler().reportError(status);
       return status;
     }
   }
 
+   
+  private class CopyWSDLRunnable implements IWorkspaceRunnable {
+  	
+  	private IEnvironment environment = null;
+  	
+  	protected CopyWSDLRunnable(IEnvironment env){
+  		environment = env;
+  	}
+  	public void run(IProgressMonitor pm) throws CoreException {
+  		ignoreList = new Vector();
+  		if (def == null)
+  			def = webServicesParser.getWSDLDefinition(wsdlURI);
+  		try {
+  			copyWSDL(environment, wsdlURI, getBaseURI(destinationURI), getLocalname(destinationURI), def);
+  		} catch (Throwable e) {
+  			throw new CoreException(StatusUtils.errorStatus( NLS.bind(ConsumptionMessages.MSG_ERROR_COPY_WSDL, new String[]{wsdlURI, destinationURI}), e));
+  		}
+  	}
+  }
   private void copyWSDL(IEnvironment env, String uri, String destURI, String destLocalname) throws WSDLException, IOException, WWWAuthenticationException, TransformerException, TransformerConfigurationException, URIException
   {
   	Definition definition;
@@ -110,10 +128,11 @@
 
   private void copyWSDL(IEnvironment env, String uri, String destURI, String destLocalname, Definition definition) throws WSDLException, IOException, WWWAuthenticationException, TransformerException, TransformerConfigurationException, URIException
   {
+	uri = normalize(uri);
 	if (!needToCopy(uri)) {
 	   	return;
 	}
-    
+	destURI = normalize(destURI);
     String baseURI = getBaseURI(uri);
     if (destLocalname == null || destLocalname.length() <= 0)
       destLocalname = getLocalname(uri);
@@ -228,10 +247,11 @@
 
   private void copyXMLSchema(IEnvironment env, String uri, String destURI) throws TransformerException, TransformerConfigurationException, IOException, URIException
   {
+	  uri = normalize(uri);
 	  if (!needToCopy(uri)) {
 	    	return;
 	    }
-	
+	  destURI = normalize(destURI);
     // load as a cached schema
     XSDSchema xsdSchema = XSDSchemaImpl.getSchemaForSchema(uri);
     // if schema is not cached, parse it
@@ -289,26 +309,35 @@
     }
   }
 
-  private boolean needToCopy (String uri) {
-	  String normalizedURI = normalize(uri);	
+  private boolean needToCopy (String normalizedURI) {	
 	  if (ignoreList.contains(normalizedURI))
 		  return false;
 	  ignoreList.add(normalizedURI);
 	  return true;
   }
   
+//normalize the uri to remove relative addressing "/.."
   private String normalize(String uri )
   {
-	  try {
-		  String encodedURI = URIEncoder.encode(uri,"UTF-8");
-		  URI normalizedURI = new URI(encodedURI);
-		  normalizedURI = normalizedURI.normalize();
-		  return normalizedURI.toString();
-	  } catch (URISyntaxException e) {
-		  return uri;
-	  } catch (UnsupportedEncodingException e) {
-		  return uri;
-	  }
+  	boolean normalized = false;
+  	while(!normalized){
+  	  int dir = uri.indexOf("/..");
+  	  if(dir == -1)
+  	  	normalized = true;
+  	  else{
+  	  	String first = uri.substring(0,dir);
+  	    String second = uri.substring(dir + 3);
+  	    int newIndex = first.lastIndexOf("/");
+  	    if(newIndex == -1){
+  	    	normalized = true;
+  	    } else {
+  	    	first = first.substring(0,newIndex);
+  	    	uri = first + second;
+  	    }
+  	  }
+  	}
+  	return uri;
+  
   }
 	  
   public void setWsdlURI(String wsdlURI)
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CopyWSDLTreeCommand.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CopyWSDLTreeCommand.java
new file mode 100644
index 0000000..03b9479
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CopyWSDLTreeCommand.java
@@ -0,0 +1,467 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2007 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070112   165721 makandre@ca.ibm.com - Andrew Mak, WSDL import cannot use relative import with to parent directories
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.consumption.command.common;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Vector;
+
+import javax.wsdl.Definition;
+import javax.wsdl.Import;
+import javax.wsdl.Types;
+import javax.wsdl.WSDLException;
+import javax.wsdl.extensions.ExtensibilityElement;
+import javax.wsdl.extensions.UnknownExtensibilityElement;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLWriter;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jst.ws.internal.common.ResourceUtils;
+import org.eclipse.jst.ws.internal.consumption.ConsumptionMessages;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.environment.uri.URIException;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.parser.discovery.NetUtils;
+import org.eclipse.wst.ws.internal.parser.wsil.WWWAuthenticationException;
+import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
+import org.eclipse.wst.wsdl.internal.impl.XSDSchemaExtensibilityElementImpl;
+import org.eclipse.wst.wsdl.internal.impl.wsdl4j.WSDLFactoryImpl;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSchemaDirective;
+import org.eclipse.xsd.impl.XSDSchemaImpl;
+import org.eclipse.xsd.util.XSDParser;
+import org.w3c.dom.Element;
+
+public class CopyWSDLTreeCommand extends AbstractDataModelOperation
+{
+  private String wsdlURI;
+  private WebServicesParser webServicesParser;
+  private String destinationURI;
+  private Definition def;
+  private Vector ignoreList;
+
+  private IPath pathPrefix;  
+  private String wsdlRelPath;
+  private Vector xmlObjectInfos;
+  
+  public CopyWSDLTreeCommand()
+  {
+  }
+
+  /**
+   * Execute the command
+   */
+  public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
+  {
+    IEnvironment env = getEnvironment();
+    CopyWSDLRunnable copyWSDLRunnable = new CopyWSDLRunnable(env);
+    try
+    {
+      ResourceUtils.getWorkspace().run(copyWSDLRunnable, null);
+      return Status.OK_STATUS;
+    }
+    catch (CoreException ce)
+    {
+        IStatus status = ce.getStatus();
+		env.getStatusHandler().reportError(status);
+      return status;
+    }
+  }
+
+   
+  private class CopyWSDLRunnable implements IWorkspaceRunnable {
+  	
+  	private IEnvironment environment = null;
+  	
+  	protected CopyWSDLRunnable(IEnvironment env){
+  		environment = env;
+  	}
+  	public void run(IProgressMonitor pm) throws CoreException {
+  		ignoreList = new Vector();
+  		xmlObjectInfos = new Vector();
+  		if (def == null)
+  			def = webServicesParser.getWSDLDefinition(wsdlURI);
+  		try {
+  			String baseDestinationURI = getBaseURI(destinationURI);
+  			
+  			// copy will record what files needs to be copy, but does not write the files yet
+  			copyWSDL(environment, wsdlURI, baseDestinationURI, getLocalname(destinationURI), def);
+  			
+  			// begin write
+  			
+  			Iterator iter = xmlObjectInfos.iterator();  			  			
+  			
+  			while (iter.hasNext()) {
+  				XMLObjectInfo info = (XMLObjectInfo) iter.next();  				
+  				IPath relPath = info.path.removeFirstSegments(pathPrefix.segmentCount());
+  				  				  				
+  				if (info.content instanceof Definition) {
+  					Definition definition = (Definition) info.content;
+  					
+  					// if this is the starting wsdl, check if it's at the root directory
+  					if (definition == def)
+  						wsdlRelPath = relPath.toString();
+
+  					writeXMLObj(environment, baseDestinationURI, relPath.toString(), definition);
+  				}
+  				else
+  					writeXMLObj(environment, baseDestinationURI, relPath.toString(), (XSDSchema) info.content);
+  			}
+  			
+  		} catch (Throwable e) {
+  			throw new CoreException(StatusUtils.errorStatus( NLS.bind(ConsumptionMessages.MSG_ERROR_COPY_WSDL, new String[]{wsdlURI, destinationURI}), e));
+  		}
+  	}
+  }
+  /**
+   * Helper class holding information about the files we need to write
+   */
+  private class XMLObjectInfo {
+  	
+  	public IPath  path;  	
+  	public Object content;
+  	  	
+  	/**
+  	 * Constructor.
+  	 * 
+  	 * @param uri The URI of the source file
+  	 * @param content A representation of the source file
+  	 */
+  	public XMLObjectInfo(String uri, Object content) {
+  		
+  		int colon = uri.lastIndexOf(":"); 
+  		
+  		// don't need protocol or device info
+  		if (colon != -1)
+  			uri = uri.substring(colon + 1, uri.length());
+  		
+  		this.path    = new Path(uri);  		
+  		this.content = content;
+  	}
+  }
+  
+  /**
+   * Update the path prefix, which is the shortest parent path
+   * common to all files we need to write.
+   * 
+   * @param info Contains info on file to write.
+   */
+  private void updatePathPrefix(XMLObjectInfo info) {
+  	if (pathPrefix == null)
+        pathPrefix = info.path.removeLastSegments(1);
+    else {
+    	int matching = pathPrefix.matchingFirstSegments(info.path);
+    	
+    	if (matching < pathPrefix.segmentCount())
+    		pathPrefix = pathPrefix.uptoSegment(matching);
+    }
+  }    
+  
+  // write a wsdl file
+  private void writeXMLObj(IEnvironment env, String destURI, String destLocalname, Definition definition) 
+	throws WSDLException, IOException, URIException {
+	
+	StringBuffer destinationFileURI = new StringBuffer(addTrailingSeparator(destURI));
+    destinationFileURI.append(destLocalname);   
+  
+    WSDLFactory wsdlFactory = new WSDLFactoryImpl();
+    WSDLWriter wsdlWriter = wsdlFactory.newWSDLWriter();
+    OutputStream os = env.getURIFactory().newURI(destinationFileURI.toString()).getOutputStream();
+    wsdlWriter.writeWSDL(definition, os);
+    os.close();
+  }
+  
+  // write an xsd file
+  private void writeXMLObj(IEnvironment env, String destURI, String destLocalname, XSDSchema xsdSchema) 
+	throws TransformerConfigurationException, URIException, TransformerException, IOException {
+		
+	StringBuffer destinationFileURI = new StringBuffer(addTrailingSeparator(destURI));
+	destinationFileURI.append(destLocalname);
+		
+	Element e = xsdSchema.getElement();
+	DOMSource domSource = new DOMSource(e);
+	Transformer serializer = TransformerFactory.newInstance().newTransformer();
+	serializer.setOutputProperty(OutputKeys.INDENT, "yes");
+	serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
+	serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
+	OutputStream os = env.getURIFactory().newURI(destinationFileURI.toString()).getOutputStream();
+	serializer.transform(domSource, new StreamResult(os));
+	os.close();
+  }  
+  
+  private void copyWSDL(IEnvironment env, String uri, String destURI, String destLocalname) throws WSDLException, IOException, WWWAuthenticationException, TransformerException, TransformerConfigurationException, URIException
+  {
+  	Definition definition;
+	
+	try {
+		definition = webServicesParser.getWSDLDefinitionVerbose(uri);
+		copyWSDL(env, uri, destURI, destLocalname, definition);	
+	} catch (WSDLException e) {
+		copyXMLSchema(env, uri, destURI);
+	}
+  }
+
+  private void copyWSDL(IEnvironment env, String uri, String destURI, String destLocalname, Definition definition) throws WSDLException, IOException, WWWAuthenticationException, TransformerException, TransformerConfigurationException, URIException
+  {
+	uri = normalize(uri);
+	if (!needToCopy(uri)) {
+	   	return;
+	}
+	destURI = normalize(destURI);
+    String baseURI = getBaseURI(uri);
+    if (destLocalname == null || destLocalname.length() <= 0)
+      destLocalname = getLocalname(uri);
+    
+    // copy WSDL
+    
+    XMLObjectInfo info = new XMLObjectInfo(baseURI + destLocalname, definition);
+    updatePathPrefix(info);
+    xmlObjectInfos.add(info);
+
+    // copy <wsdl:import>s
+    Map imports = definition.getImports();
+    for (Iterator it = imports.values().iterator(); it.hasNext();)
+    {
+      List list = (List)it.next();
+      for (Iterator listIt = list.iterator(); listIt.hasNext();)
+      {
+        Import wsdlImport = (Import)listIt.next();
+        String wsdlImportURI = wsdlImport.getLocationURI();
+        if (isRelative(wsdlImportURI))
+        {
+          String importBaseURI = (new StringBuffer(baseURI)).append(wsdlImportURI).toString();
+          String wsdlImportBaseURI = getBaseURI(wsdlImportURI);
+          StringBuffer importDestURI = new StringBuffer(destURI);
+          if (wsdlImportBaseURI != null)
+            importDestURI.append(wsdlImportBaseURI);
+          copyWSDL(env, importBaseURI, importDestURI.toString(), getLocalname(wsdlImportURI));
+        }
+      }
+    }
+    Types types = definition.getTypes();
+    if (types != null)
+    {
+      List schemas = types.getExtensibilityElements();
+      for (Iterator it = schemas.iterator(); it.hasNext();)
+      {
+        ExtensibilityElement extElement = (ExtensibilityElement)it.next();
+        if (extElement instanceof UnknownExtensibilityElement)
+        {
+          UnknownExtensibilityElement schemaElement = (UnknownExtensibilityElement)extElement;
+          XSDSchema xsdSchema = null;
+          try
+          {
+            xsdSchema = XSDSchemaImpl.createSchema(schemaElement.getElement());
+          }
+          catch (Throwable t)
+          {
+            // ignore any extensibility elements that cannot be parsed into a
+            // XSDSchema instance
+          }
+          copyXMLSchema(env, xsdSchema, baseURI, destURI);
+        }
+        else if (extElement instanceof XSDSchemaExtensibilityElementImpl)
+        {
+          XSDSchemaExtensibilityElementImpl schemaElement = (XSDSchemaExtensibilityElementImpl)extElement;
+          XSDSchema xsdSchema = null;
+          try
+          {
+            xsdSchema = XSDSchemaImpl.createSchema(schemaElement.getElement());
+          }
+          catch (Throwable t)
+          {
+            // ignore any extensibility elements that cannot be parsed into a
+            // XSDSchema instance
+          }
+          copyXMLSchema(env, xsdSchema, baseURI, destURI);
+        }
+      }
+    }
+  }
+
+  private String getBaseURI(String uri)
+  {
+    int index = uri.lastIndexOf('/');
+    if (index == -1)
+      index = uri.lastIndexOf('\\');
+    if (index != -1)
+      return uri.substring(0, index + 1);
+    else
+      return null;
+  }
+
+  private String getLocalname(String uri)
+  {
+    int index = uri.lastIndexOf('/');
+    if (index == -1)
+      index = uri.lastIndexOf('\\');
+    if (index != -1)
+      return uri.substring(index + 1);
+    else
+      return uri;
+  }
+
+  private String addTrailingSeparator(String s)
+  {
+    if (!(s.endsWith("/") || s.endsWith("\\")))
+    {
+      StringBuffer sb = new StringBuffer(s);
+      sb.append('/');
+      return sb.toString();
+    }
+    else
+      return s;
+  }
+
+  private boolean isRelative(String uri)
+  {
+    return (uri.indexOf(':') == -1);
+  }
+
+  private void copyXMLSchema(IEnvironment env, String uri, String destURI) throws TransformerException, TransformerConfigurationException, IOException, URIException
+  {
+	  uri = normalize(uri);
+	  if (!needToCopy(uri)) {
+	    	return;
+	    }
+	  destURI = normalize(destURI);
+    // load as a cached schema
+    XSDSchema xsdSchema = XSDSchemaImpl.getSchemaForSchema(uri);
+    // if schema is not cached, parse it
+    if (xsdSchema == null)
+    {
+      XSDParser p = new XSDParser();
+      InputStream is = NetUtils.getURLInputStream(uri);
+      if (is != null)
+      {
+        p.parse(is);
+        xsdSchema = p.getSchema();
+      }
+    }
+    if (xsdSchema != null)
+    {
+      // copy schema
+        
+      XMLObjectInfo info = new XMLObjectInfo(uri, xsdSchema);
+      updatePathPrefix(info);
+      xmlObjectInfos.add(info);
+      
+      // copy <xsd:import>s and <xsd:include>s
+      copyXMLSchema(env, xsdSchema, getBaseURI(uri), destURI);
+    }
+  }
+
+  private void copyXMLSchema(IEnvironment env, XSDSchema xsdSchema, String baseURI, String destURI) throws TransformerException, TransformerConfigurationException, IOException, URIException
+  {
+    if (xsdSchema != null)
+    {
+      // copy <xsd:import>s and <xsd:include>s
+      EList xsdSchemaContents = xsdSchema.getContents();
+      for (Iterator it = xsdSchemaContents.iterator(); it.hasNext();)
+      {
+        Object content = it.next();
+        if (content instanceof XSDSchemaDirective)
+        {
+          XSDSchemaDirective xsdSchemaDirective = (XSDSchemaDirective)content;
+          String xsdSchemaDirectiveLocation = xsdSchemaDirective.getSchemaLocation();
+          if (xsdSchemaDirectiveLocation != null && isRelative(xsdSchemaDirectiveLocation))
+          {
+            String directiveURI = (new StringBuffer(baseURI)).append(xsdSchemaDirectiveLocation).toString();
+            String directiveBaseURI = getBaseURI(xsdSchemaDirectiveLocation);
+            StringBuffer directiveDestURI = new StringBuffer(destURI);
+            if (directiveBaseURI != null)
+              directiveDestURI.append(directiveBaseURI);
+            copyXMLSchema(env, directiveURI, directiveDestURI.toString());
+          }
+        }
+      }
+    }
+  }
+
+  private boolean needToCopy (String normalizedURI) {	
+	  if (ignoreList.contains(normalizedURI))
+		  return false;
+	  ignoreList.add(normalizedURI);
+	  return true;
+  }
+  
+//normalize the uri to remove relative addressing "/.."
+  private String normalize(String uri )
+  {
+  	boolean normalized = false;
+  	while(!normalized){
+  	  int dir = uri.indexOf("/..");
+  	  if(dir == -1)
+  	  	normalized = true;
+  	  else{
+  	  	String first = uri.substring(0,dir);
+  	    String second = uri.substring(dir + 3);
+  	    int newIndex = first.lastIndexOf("/");
+  	    if(newIndex == -1){
+  	    	normalized = true;
+  	    } else {
+  	    	first = first.substring(0,newIndex);
+  	    	uri = first + second;
+  	    }
+  	  }
+  	}
+  	return uri;
+  
+  }
+	  
+  public void setWsdlURI(String wsdlURI)
+  {
+    this.wsdlURI = wsdlURI;
+  }
+
+  public void setWebServicesParser(WebServicesParser webServicesParser)
+  {
+    this.webServicesParser = webServicesParser;
+  }
+
+  public void setDestinationURI(String destinationURI)
+  {
+    this.destinationURI = destinationURI;
+  }
+
+  public void setDefinition(Definition def)
+  {
+    this.def = def;
+  }
+  
+  public String getWSDLRelPath() {
+    return wsdlRelPath;
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CreateFacetedProjectCommand.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CreateFacetedProjectCommand.java
index 27ebdab..72b5da7 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CreateFacetedProjectCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/CreateFacetedProjectCommand.java
@@ -13,6 +13,9 @@
  * 20060204 124408   rsinha@ca.ibm.com - Rupam Kuehner      
  * 20060217 126757   rsinha@ca.ibm.com - Rupam Kuehner
  * 20060221 119111   rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060427 126780   rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060517 126965   kathy@ca.ibm.com - Kathy Chan
+ * 20060905   156230 kathy@ca.ibm.com - Kathy Chan, Handling projects with no target runtime
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.command.common;
@@ -49,13 +52,25 @@
 public class CreateFacetedProjectCommand extends AbstractDataModelOperation
 {
 
-  private String   projectName;
+  //name of the project to be created
+  private String   projectName; 
+
+  //id of the IFacetedProjectTemplate to be used to create this project.
   private String   templateId;
+  
+  //required facet versions that must be satisfied when creating the project (this comes from
+  //the selected serverRuntime or clientRuntime in the calling scenario)
   private RequiredFacetVersion[]   requiredFacetVersions;
-  //private FacetMatcher facetMatcher;
+
+  //server type id - used to determine the facet runtime the created project will be bound to
+  //if serverInstanceId is null or empty
   private String   serverFactoryId;
+
+  //server id - used to determine the facet runtime the created project will be bound to. May
+  //be null or empty.
   private String   serverInstanceId;
   
+  //facet runtime determined from the serverInstanceId or serverFactoryId
   private org.eclipse.wst.common.project.facet.core.runtime.IRuntime facetRuntime;
   
   
@@ -84,15 +99,17 @@
         IProject createdProject = ProjectUtilities.getProject(projectName);
         IFacetedProject fproject = ProjectFacetsManager.create(createdProject);
         
-        //Decide which facets to install based on the templateId and the selected server. 
+        //Get the facet versions to install. 
         Set facetsToAdd = getFacetsToAdd();
         
+        //Install the facet versions
         status = FacetUtils.addFacetsToProject(fproject, facetsToAdd);
         if (status.getSeverity() == IStatus.ERROR)
         {
           return status;
         }        
         
+        //Set the installed facet versions as fixed.
         Set newFacetVersions = fproject.getProjectFacets();
         Set fixedFacets = new HashSet();
         for (Iterator iter = newFacetVersions.iterator(); iter.hasNext();) {
@@ -112,7 +129,51 @@
           status = FacetUtils.setFacetRuntimeOnProject(fproject, facetRuntime);
         }
 
- 
+        // add facets required by Web service runtime
+        if (requiredFacetVersions.length != 0) {
+        	status = FacetUtils.addRequiredFacetsToProject(project, requiredFacetVersions, monitor);
+        	if (status.getSeverity() == Status.ERROR)
+        	{
+        		return status;
+        	}      
+        }
+             
+        if (facetRuntime != null)
+        {
+        	// add the default facets that's not in conflict with the existing facets
+        	Set projectFacetVersionSet = fproject.getProjectFacets();
+        	Set projectFacetSet = new HashSet();
+        	// get the project facet from the project facet version we calculated
+        	for (Iterator iter = projectFacetVersionSet.iterator(); iter.hasNext();) {
+        		IProjectFacetVersion pfv = (IProjectFacetVersion) iter.next();
+        		projectFacetSet.add(pfv.getProjectFacet());
+        	}
+        	try {
+        		Set defaultProjectFacetVersionSet = facetRuntime.getDefaultFacets(projectFacetSet);
+        		// The returned defaultFacetSet contains the original projectFacetSet passed into getDefaultFacets
+        		// plus any default facets that are not in conflict with the original projectFacetSet.
+        		// Add to facetsToAdd if the the default facet is not in the original set.
+        		Set defaultFacetsToAdd = new HashSet();
+        		for (Iterator iter = defaultProjectFacetVersionSet.iterator(); iter.hasNext();) {
+        			IProjectFacetVersion defaultProjFacetVersion = (IProjectFacetVersion) iter.next();
+        			if( ! projectFacetSet.contains( defaultProjFacetVersion.getProjectFacet() ) )
+        			{
+        				defaultFacetsToAdd.add(defaultProjFacetVersion);
+        			}
+        		}
+        		if (!defaultFacetsToAdd.isEmpty()) {
+        			status = FacetUtils.addFacetsToProject(fproject, defaultFacetsToAdd);
+        			if (status.getSeverity() == IStatus.ERROR)
+        			{
+        				return status;
+        			}    
+        		}
+        	} catch (CoreException e) {
+        		// If there's any exception when trying to get the default facet, just ignore the default facet
+        		// and return the original facetsToAdd.
+        	}
+        	// end of adding default facets
+        }
       } catch (CoreException ce)
       {
         return StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }));
@@ -132,9 +193,11 @@
     return Status.OK_STATUS;
   }
   
-  /*
-   * @return Set Returns the Set of facets to add to the new project, 
-   * choosing the highest level of each facet that works on the selected server.
+  /**
+   * Returns the set of facets to install on the new project. The set will consist
+   * of the highest version of each of the template's fixed facets that satifies
+   * both the required facet versions and the facet runtime.
+   * @return Set a Set containing elements of type IProjectFacetVersion.
    */
   private Set getFacetsToAdd()
   {
@@ -142,14 +205,16 @@
     
     //Set the facet runtime.
     setFacetRuntime();
+    //Get all facet version combinations for the template in order of ascending version numbers.
     Set[] allCombinations = FacetSetsByTemplateCache.getInstance().getFacetVersionCombinationsFromTemplate(templateId);
     int n = allCombinations.length;
     if (facetRuntime != null)
     {
+      //Walk the facet version combinations in order of descending version numbers.
       for (int i=n-1; i>=0; i--)
       {
         //Check this template combination to see if it is compatible with both the 
-        //service/client runtime and the server runtime. If it is, choose it.
+        //required facet versions and the server runtime. If it is, choose it.
         Set combination = allCombinations[i];
         FacetMatcher fm = FacetUtils.match(requiredFacetVersions, combination);
         if (fm.isMatch())
@@ -163,6 +228,7 @@
           }
         }                
       }
+      
     }
     else
     {
@@ -181,6 +247,8 @@
       }      
     }
    
+    //Unlikely to get to this point in the code, but if we do, choose the highest version
+    //of each fixed facet in the template.
     if (facets == null)
     {
       facets = FacetUtils.getInitialFacetVersionsFromTemplate(templateId);
@@ -189,6 +257,10 @@
     return facets;
   }
 
+  /**
+   * Sets the facetRuntime attribute based on the serverInstanceId or serverFactoryId
+   * Preference is given to non-stub facet runtimes.
+   */
   private void setFacetRuntime()
   {
     
@@ -226,14 +298,7 @@
 			  }
 		  }
 	  }
-  }
-  
-  /*
-  public void setFacetMatcher(FacetMatcher facetMatcher)
-  {
-    this.facetMatcher = facetMatcher;
-  }
-  */
+  }  
   
   public void setProjectName(String projectName)
   {
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/GetMonitorCommand.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/GetMonitorCommand.java
index 423b1eb..840cd64 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/GetMonitorCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/GetMonitorCommand.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060612   146564 kathy@ca.ibm.com - Kathy Chan
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.command.common;
 
@@ -31,6 +35,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.ws.internal.consumption.ConsumptionMessages;
+import org.eclipse.jst.ws.internal.consumption.common.WSDLParserFactory;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.common.environment.IEnvironment;
@@ -49,6 +54,7 @@
   private WebServicesParser webServicesParser;
   private String wsdlURI;
   private List endpoints;
+  private String proxyEndpoint;
 
   public GetMonitorCommand()
   {
@@ -61,8 +67,9 @@
     IEnvironment env = getEnvironment();
     
     endpoints = new Vector();
-    if (monitorService && webServicesParser != null && wsdlURI != null && wsdlURI.length() > 0)
+    if (monitorService && wsdlURI != null && wsdlURI.length() > 0)
     {
+    	webServicesParser = WSDLParserFactory.getWSDLParser();
       Definition definition = webServicesParser.getWSDLDefinition(wsdlURI);
       if (definition != null)
       {
@@ -147,14 +154,24 @@
                   {
                     try
                     {
-                      if (!m.isRunning())
-                        m.start();
-                      StringBuffer sb = new StringBuffer(endpointURL.getProtocol());
-                      sb.append("://localhost:");
-                      sb.append(String.valueOf(m.getLocalPort()));
-                      sb.append(endpointURL.getFile());
-                      endpoints.add(sb.toString());
-                    }
+                      		if (!m.isRunning())
+                      			m.start();
+                      		// Use the endpoint that matches with the proxy the extension passes to us if it is set
+                      		if (proxyEndpoint != null) {
+                      			try {
+                      				endpointURL = new URL(proxyEndpoint);
+                      			} catch (MalformedURLException murle)
+    			                { 
+                      				// ignore proxy endpoint 
+    			                }
+                      		}
+                      		StringBuffer sb = new StringBuffer(endpointURL.getProtocol());
+                      		sb.append("://localhost:");
+                      		sb.append(String.valueOf(m.getLocalPort()));
+                      		sb.append(endpointURL.getFile());
+                      		endpoints.add(sb.toString());
+    					}
+                     
                     catch (Throwable t)
                     {
                       IStatus warning = StatusUtils.warningStatus( NLS.bind(ConsumptionMessages.MSG_ERROR_UNABLE_TO_START_MONITOR, new Object[]{String.valueOf(port), endpoint}), t);
@@ -206,4 +223,11 @@
   {
     return endpoints;
   }
-}
\ No newline at end of file
+  
+  /**
+   * @param proxyEndpoint The proxyEndpoint to set.
+   */
+  public void setProxyEndpoint(String proxyEndpoint) {
+  	this.proxyEndpoint = proxyEndpoint;
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/PublishProjectCommand.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/PublishProjectCommand.java
deleted file mode 100644
index 3e86dd4..0000000
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/PublishProjectCommand.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jst.ws.internal.consumption.command.common;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jst.ws.internal.common.ResourceUtils;
-import org.eclipse.jst.ws.internal.common.ServerUtils;
-import org.eclipse.jst.ws.internal.consumption.ConsumptionMessages;
-import org.eclipse.wst.command.internal.env.core.common.ProgressUtils;
-import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
-import org.eclipse.wst.common.environment.IEnvironment;
-import org.eclipse.wst.common.environment.ILog;
-import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
-import org.eclipse.wst.server.core.IServer;
-
-public class PublishProjectCommand extends AbstractDataModelOperation 
-{
-
-
-private String project;
-private String serverTypeID;
-private IServer existingServer;
-
-
-/**
- * Default CTOR;
- */
-public PublishProjectCommand() {
-}
-
-/**
- * Execute the command
- */
-public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
-{
-  IEnvironment env = getEnvironment();
-  
-  IStatus status = Status.OK_STATUS;
-  try
-  {
-    ProgressUtils.report( monitor, ConsumptionMessages.PROGRESS_INFO_PUBLISH_WEB_PROJECT );
-    
-    if (project == null){
-      status = StatusUtils.errorStatus( ConsumptionMessages.MSG_ERROR_PROJECT_NOT_FOUND ); 
-      env.getStatusHandler().reportError(status);
-      return status;
-    }
-	
-    IProject iProject = (IProject)ResourceUtils.findResource(project);
-    IServer instance = ServerUtils.getServerForModule(ServerUtils.getModule(iProject), serverTypeID, existingServer, true, monitor);
-    if (instance == null)
-    {
-      status = StatusUtils.errorStatus(ConsumptionMessages.MSG_ERROR_INSTANCE_NOT_FOUND);
-      env.getStatusHandler().reportError(status);
-      return status;
-    }
-
-      IStatus returnedStatus = instance.publish(IServer.PUBLISH_INCREMENTAL, monitor);
-      status = returnedStatus;
-      
-      //getStatusMonitor().reportStatus (instance.publish(getProgressMonitor()));
-      env.getLog().log(ILog.OK, 5026, this, "execute", new String("project="+project+" successfully published"));
-      //ILog.write(PublishProjectCommand.class,"execute",ILog.OK,"project="+project+" successfully published");
-      return status;
-  }
-  catch (Exception e) {
-    status = StatusUtils.errorStatus(ConsumptionMessages.MSG_ERROR_PUBLISH, e);
-    env.getStatusHandler().reportError(status);
-    return status;
-
-  }
-}
-
-
-public void setProject(String project)
-{
-  this.project = project;
-}
-
-public void setServerTypeID(String serverTypeID)
-{
-  this.serverTypeID = serverTypeID;
-}
-
-public void setExistingServer(IServer existingServer)
-{
-  this.existingServer = existingServer;
-}
-
-
-
-}
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/SkeletonMergeCommand.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/SkeletonMergeCommand.java
index 8223e0d..30f1da3 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/SkeletonMergeCommand.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/command/common/SkeletonMergeCommand.java
@@ -11,12 +11,14 @@
  * -------- -------- -----------------------------------------------------------
  * 20060330 128827   kathy@ca.ibm.com - Kathy Chan
  * 20060403 128827   kathy@ca.ibm.com - Kathy Chan
+ * 20060524   141925 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.command.common;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IPath;
@@ -24,6 +26,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jst.ws.internal.consumption.ConsumptionMessages;
 import org.eclipse.jst.ws.internal.plugin.WebServicePlugin;
 import org.eclipse.osgi.util.NLS;
@@ -39,9 +42,11 @@
 public class SkeletonMergeCommand extends AbstractDataModelOperation
 {
   private String[] urls_;
+  private String projectName_;
 
-  public SkeletonMergeCommand()
+  public SkeletonMergeCommand(String projectName)
   {
+	  projectName_ = projectName;
   }
 
   public void setUrls(String[] urls)
@@ -75,7 +80,18 @@
 					  if (mergedContent != null) {
 						  // write the merged content back into the file, respecting file overwrite preference
 						  IPath targetPath = new Path(filename);
-						  inStream = new ByteArrayInputStream(mergedContent.getBytes());
+						  IProject project = ProjectUtilities.getProject(projectName_);
+						  byte[] buf = null;
+						  if (project != null) {
+							  try {
+							  buf = mergedContent.getBytes(project.getDefaultCharset());
+							  } catch (Throwable e) {
+								  buf = mergedContent.getBytes();
+							  }
+						  } else {
+							  buf = mergedContent.getBytes();
+						  }
+						  inStream = new ByteArrayInputStream(buf);
 
 						  if (inStream != null) {
 							  try {
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/FacetSetsByTemplateCache.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/FacetSetsByTemplateCache.java
index f6f9e44..7922db8 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/FacetSetsByTemplateCache.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/FacetSetsByTemplateCache.java
@@ -4,12 +4,13 @@
  * 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:
  * IBM Corporation - initial API and implementation
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060131 121071   rsinha@ca.ibm.com - Rupam Kuehner (creation)
+ * 20060427   126780 rsinha@ca.ibm.com - Rupam Kuehner
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.common;
 
@@ -27,10 +28,17 @@
 import org.eclipse.wst.common.project.facet.core.VersionFormatException;
 
 
+/**
+ * FacetSetsByTemplateCache caches the sets of facet version combinations for templates.
+ */
 public class FacetSetsByTemplateCache
 {
+  // single instance per workbench
   private static FacetSetsByTemplateCache instance_;
   
+  //facetSetsByTemplateId_: 
+  //key: Object of type String. String id of an IFacetedProjectTemplate.
+  //value: Object of Set[]. An array of Sets where each set contains elements of type IProjectFacetVersion.
   private Hashtable facetSetsByTemplateId_;
   /**
    * Returns a singleton instance of this class.
@@ -52,8 +60,24 @@
     facetSetsByTemplateId_ = new Hashtable();
   }  
   
+  /**
+   * Returns all the valid facet version combinations that can be derived from the fixed facets
+   * of the given template. For example, if the template has two fixed facets, A and B,
+   * and A has versions 1.0 and 2.0, B has versions 1.1, 2.1,
+   * the following array of Sets will be returned (assuming for the sake of the example
+   * that all the combinations are valid):<br/>
+   * {Set1, Set2, Set3, Set4}, where<br/>
+   * Set1 = [A1.0, B1.1]<br/>
+   * Set2 = [A2.0, B1.1]<br/>
+   * Set3 = [A1.0, B2.1]<br/>
+   * Set4 = [A2.0, B2.1]<br/>
+   * <br/>
+   * @param templateId id of an {@link IFacetedProjectTemplate}
+   * @return Set[] An array of Sets where each set contains elements of type {@link IProjectFacetVersion}.
+   */
   public synchronized Set[] getFacetVersionCombinationsFromTemplate(String templateId)
   {
+	//Return the cached combinations if present.
     Set[] cachedCombinations = (Set[])facetSetsByTemplateId_.get(templateId);
     if (cachedCombinations != null)
     {
@@ -61,8 +85,8 @@
     }
     else
     {
-      //ArrayList allValidCombinations = new ArrayList();
-      
+      //Combinations have not yet been cached for the given template. 
+      //Determine the combinations and cache them.
       IFacetedProjectTemplate template = ProjectFacetsManager.getTemplate(templateId);
       Set fixedFacets = template.getFixedProjectFacets();
       
@@ -77,6 +101,7 @@
         List versions = null;
         try
         {
+          // Get the facet versions in ascending order.
           versions = facet.getSortedVersions(true);
         } catch (VersionFormatException e) {
             Set versionSet = facet.getVersions();
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/FacetUtils.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/FacetUtils.java
index 1c8d2ce..9414654 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/FacetUtils.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/common/FacetUtils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2007 IBM 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
@@ -12,6 +12,11 @@
  * 20060131 121071   rsinha@ca.ibm.com - Rupam Kuehner     
  * 20060217   126757 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060419   137548 kathy@ca.ibm.com - Kathy Chan
+ * 20060427   126780 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060503   126819 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060523   133714 joan@ca.ibm.com - Joan Haggarty
+ * 20060920   158061 kathy@ca.ibm.com - Kathy Chan, Do not add module to EAR when adding J2EE facets to project
+ * 20070124   162326 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.common;
@@ -33,12 +38,24 @@
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jst.j2ee.internal.ejb.project.operations.EjbFacetInstallDataModelProvider;
+import org.eclipse.jst.j2ee.internal.ejb.project.operations.IEjbFacetInstallDataModelProperties;
+import org.eclipse.jst.j2ee.project.facet.AppClientFacetInstallDataModelProvider;
+import org.eclipse.jst.j2ee.project.facet.IAppClientFacetInstallDataModelProperties;
+import org.eclipse.jst.j2ee.project.facet.IUtilityFacetInstallDataModelProperties;
+import org.eclipse.jst.j2ee.project.facet.UtilityFacetInstallDataModelProvider;
+import org.eclipse.jst.j2ee.web.project.facet.IWebFacetInstallDataModelProperties;
+import org.eclipse.jst.j2ee.web.project.facet.WebFacetInstallDataModelProvider;
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
+import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.jst.ws.internal.consumption.ConsumptionMessages;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.project.facet.core.IFacetedProject;
 import org.eclipse.wst.common.project.facet.core.IFacetedProjectTemplate;
 import org.eclipse.wst.common.project.facet.core.IProjectFacet;
@@ -49,13 +66,29 @@
 import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action.Type;
 import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
 import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager;
+
 import com.ibm.icu.util.StringTokenizer;
 
+/**
+ * FacetUtils contains utility methods related to facets and templates.
+ * <br/><br/>
+ * Terminology used in the Javadoc in this class
+ * <ul>
+ * <li><b>facet</b>: An {@link IProjectFacet}</li>
+ * <li><b>facet version</b>: An {@link IProjectFacetVersion} </li>
+ * <li><b>facet runtime</b>: An {@link IRuntime}</li>
+ * <li><b>faceted project</b>: An {@link IFacetedProject}. A faceted project may be obtained
+ * from an IProject (@see ProjectFacetsManager#create)</li>
+ * <li><b>template</b>: An {@link IFacetedProjectTemplate}. Conceptually this is similar to a project type.</li>
+ * <li><b>required facet version</b>: A {@link RequiredFacetVersion}. Used by serviceRuntimes and clientRuntimes
+ * to identify what they require in terms of facet versions.</li>
+ * </ul>
+ */
 public class FacetUtils
 {
 
   /**
-   * Returns a list of valid projects. Valid projects include projects with the facets nature or
+   * Returns an array of valid projects. Valid projects include projects with the facets nature or
    * projects with the Java nature.
    * @return IProject[] an array of valid projects
    */
@@ -77,14 +110,10 @@
         }
         else
         {
-          //Check if it's a Java project        
-          IJavaProject javaProject = null;    
-          javaProject = JavaCore.create(projects[i]);    
-          if (javaProject != null)
-          {
-            //Add it to the list
-            validProjects.add(projects[i]);
-          }
+        	if (ResourceUtils.isJavaProject(projects[i]))
+        	{
+              validProjects.add(projects[i]);
+        	}
         }
       }
       catch (CoreException ce)
@@ -94,10 +123,17 @@
     return (IProject[])validProjects.toArray(new IProject[]{});
   }
   
-  /*
-   * @returns the set of project facets currently installed on this project. If the project
-   * is not a faceted project but is a Java project, facets are inferred from the Java project. 
-   *   (element type: {@see IProjectFacetVersion}) 
+  /**
+   * Returns the facet versions on the given project.
+   * @param projectName name of an existing project.
+   * @returns Set containing elements of type {@link IProjectFacetVersion}. 
+   * These are the facet versions currently installed on this project. If the project
+   * is a Java project, facets are inferred from the Java project. Returns null 
+   * <ul>
+   * <li>if the project is not a faceted project or a Java project or</li>
+   * <li>if the project does not exist or</li>
+   * <li>if the project is null</li>
+   * </ul>  
    */
   public static Set getFacetsForProject(String projectName)
   {
@@ -115,23 +151,34 @@
         {
           //If this is not a faceted project, it may still be okay if it is a Java project
           //and the client runtime supports a Java project.
-          IJavaProject javaProject = null;
-          javaProject = JavaCore.create(project);    
-          if (javaProject != null)
+          IJavaProject javaProject = null;              
+          if (ResourceUtils.isJavaProject(project))
           {
+        	javaProject = JavaCore.create(project);
             facetVersions = FacetUtils.getFacetsForJavaProject(javaProject);
           }
         }
       } catch (CoreException ce)
       {
-
+    	  //Leaving the catch block empty. This method will return null if there
+    	  //were any blow-ups in the facet API being called.
       }      
     }
     
     return facetVersions;
     
   }
-  
+
+  /**
+   * Returns the facet runtime the given project is bound to.
+   * @param projectName name of an existing project
+   * @return {@link IRuntime} the project is bound to. Returns null
+   * <ul>
+   * <li>if the project is not bound to a facet runtime</li> 
+   * <li>if the project does not exist</li>
+   * <li>if the project is null</li>
+   * </ul>
+   */
   public static IRuntime getFacetRuntimeForProject(String projectName)
   {
     IProject project = ProjectUtilities.getProject(projectName);
@@ -146,6 +193,8 @@
         }
       } catch (CoreException ce)
       {
+    	  //Leaving the catch block empty. This method will return null if there
+    	  //were any blow-ups in the facet API being called.
       }
     }
     
@@ -153,22 +202,26 @@
   }
   
   
-  /*
-   * Return the set of all possible combinations of IProjectFacetVersions. For example,
-   * If arrayOfProjectFacetVersionArrays represents an array of IProjectFacetVersions that has
-   * a structure like this:
-   * FacetA_version1, FacetA_version2
-   * FacetB_version1
-   * FacetC_version1, FacetC_version2
-   * 
-   * Then the following 4 combinations of IProjectFacetVersions will be returned:
-   * [FacetA_version1, FacetB_version1, FacetC_version1]
-   * [FacetA_version2, FacetB_version1, FacetC_version1]
-   * [FacetA_version1, FacetB_version1, FacetC_version2]
-   * [FacetA_version2, FacetB_version1, FacetC_version2]
-   * 
-   * If returnValidOnly is false, all combinations are returned. Otherwise, only valid combinations
-   * are returned.
+  /**
+   * Returns a set of combinations of facet versions derived from the facet versions
+   * in the provided arrayOfProjectFacetVersionArrays. For example, if 
+   * arrayOfProjectFacetVersionArrays is a two dimenstional array of facet versions that has
+   * a structure like this:<br/>
+   * {{FacetA_version1, FacetA_version2},<br/>
+   *  {FacetB_version1},<br/>
+   *  {FacetC_version1, FacetC_version2}}<br/>
+   * the following array of Sets will be returned:<br/>
+   * {Set1, Set2, Set3, Set4}, where<br/>
+   * Set1 = [FacetA_version1, FacetB_version1, FacetC_version1]<br/>
+   * Set2 = [FacetA_version2, FacetB_version1, FacetC_version1]<br/>
+   * Set3 = [FacetA_version1, FacetB_version1, FacetC_version2]<br/>
+   * Set4 = [FacetA_version2, FacetB_version1, FacetC_version2]<br/>
+   * <br/>
+   * @param arrayOfProjectFacetVersionArrays a two dimensional array containing elements 
+   * of type {@link IProjectFacetVersion}
+   * @param returnValidOnly false if all combinations of facet versions are to be returned. 
+   * true if only valid combinations of facet versions are to be returned.  
+   * @return Set[] an array of Sets, where each Set contains elements of type {@link IProjectFacetVersion}. 
    */
   public static Set[] getFacetCombinations(IProjectFacetVersion[][] arrayOfProjectFacetVersionArrays, boolean returnValidOnly)  
   {
@@ -240,6 +293,14 @@
     return allCombinationsArray;    
   }
   
+  /**
+   * Returns a set of facet versions given a template. The highest facet version of every fixed 
+   * facet in the template is returned, with the exception of the jst.java facet, where the 1.4 
+   * facet version is returned.
+   * 
+   * @param templateId id of a {@link IFacetedProjectTemplate}
+   * @return Set containing elements of type {@link IProjectFacetVersion}
+   */
   public static Set getInitialFacetVersionsFromTemplate(String templateId)
   {
     IFacetedProjectTemplate template = ProjectFacetsManager.getTemplate(templateId);
@@ -265,6 +326,11 @@
     return initial;
   }
   
+  /**
+   * Returns the template lables corresponding to the provided templateIds.
+   * @param templateIds array of valid template ids. Each id must correspond to a {@link IFacetedProjectTemplate}.
+   * @return String[] array of template labels.
+   */
   public static String[] getTemplateLabels(String[] templateIds)
   {
     String[] labels = new String[templateIds.length];
@@ -277,6 +343,13 @@
     
   }
   
+  /**
+   * Returns the id of a template given its label. 
+   * 
+   * @param templateLabel label of a template
+   * @return template id or empty String if no {@link IFacetedProjectTemplate} with the
+   * given templateLabel could be found.
+   */
   public static String getTemplateIdByLabel(String templateLabel)
   {
     for( Iterator itr = ProjectFacetsManager.getTemplates().iterator(); itr.hasNext(); )
@@ -292,12 +365,25 @@
     return "";
   }
   
+  /**
+   * Returns the label of a template given its id 
+   * 
+   * @param templateId id of a {@link IFacetedProjectTemplate}
+   * @return template label
+   */  
   public static String getTemplateLabelById(String templateId)
   {
     IFacetedProjectTemplate template = ProjectFacetsManager.getTemplate(templateId);
     return template.getLabel();
   }
   
+  /**
+   * Returns a set of install actions for the provided facet version
+   * 
+   * @param projectFacetVersions Set containing elements of type {@link IProjectFacetVersion}
+   * @return Set containing elements of type {@link Action} with the type attribute set to Type.INSTALL
+   * The set contains one Action for each {@link IProjectFacetVersion} in projectFacetVersions.
+   */
   public static Set getInstallActions(Set projectFacetVersions)
   {
     HashSet actions = new HashSet();
@@ -306,14 +392,70 @@
     
     while(facets.hasNext())
     {
-      IProjectFacetVersion fv = (IProjectFacetVersion)facets.next();
-      Action action = new Action(Type.INSTALL, fv, null);
-      actions.add(action);
+    	IProjectFacetVersion fv = (IProjectFacetVersion)facets.next();
+    	if (fv != null) {
+    		IProjectFacet pf = fv.getProjectFacet();
+    		Action action = new Action(Type.INSTALL, fv, getConfigObject(pf));
+    		actions.add(action);
+    	}
     }
     
     return actions;
   }
   
+  /**
+   * Returns the data model config object for the given project facet
+   * For J2EE facets, set Add_TO_EAR properties of the data model to false, 
+   * for other facets, just return null
+   * @param facetID
+   * @return data model config object
+   */
+  public static Object getConfigObject(IProjectFacet projectFacet)
+  {
+	  
+	  IDataModel dm = null;
+	  if (projectFacet != null) {
+		  String facetId = projectFacet.getId();
+		  if (facetId != null) {
+			  // set Add to EAR to false
+			  if (facetId.equals(IModuleConstants.JST_WEB_MODULE)) { 
+				  dm = DataModelFactory.createDataModel(new WebFacetInstallDataModelProvider());
+				  dm.setBooleanProperty(IWebFacetInstallDataModelProperties.ADD_TO_EAR, false);
+			  } else if (facetId.equals(IModuleConstants.JST_EJB_MODULE)) {
+				  dm = DataModelFactory.createDataModel(new EjbFacetInstallDataModelProvider());
+				  dm.setBooleanProperty(IEjbFacetInstallDataModelProperties.ADD_TO_EAR, false);
+			  } else if (facetId.equals(IModuleConstants.JST_APPCLIENT_MODULE)) {
+				  dm = DataModelFactory.createDataModel(new AppClientFacetInstallDataModelProvider());
+				  dm.setBooleanProperty(IAppClientFacetInstallDataModelProperties.ADD_TO_EAR, false);
+			  } else if (facetId.equals(IModuleConstants.JST_UTILITY_MODULE)) {
+				  dm = DataModelFactory.createDataModel(new UtilityFacetInstallDataModelProvider());
+				  dm.setBooleanProperty(IUtilityFacetInstallDataModelProperties.ADD_TO_EAR, false);
+			  }
+		  }
+	  }
+	  return dm;
+  }
+  /**
+   * Returns the {@link FacetMatcher} calculated when checking the required facet versions 
+   * against the facet versions.
+   * 
+   * @param requiredFacetVersions array of required facet versions
+   * @param projectFacetVersions facet versions to check against. Set containing elements of type 
+   * {@link IProjectFacetVersion}
+   * @return FacetMatcher with the following characteristics:
+   * <ul>
+   * <li><b>isMatch</b>: returns true if the required facet versions already exist in the facet versions
+   * or can be added to the facet versions. isMatch will return false otherwise.</li>
+   * <li><b>getFacetsTested</b>: returns the same set of facet versions as the input parameter, projectFacetVersions</li>
+   * <li><b>getFacetsThatMatched</b>: if isMatch returns false, getFacetsThatMatched returns null. If isMatch returns true, 
+   * getFacetsThatMatched returns the subset of facet versions in the input parameter, projectFacetVersions, 
+   * that matched one of the required facet versions. This may be an empty set.</li>
+   * <li><b>getFacetsToAdd</b>: if isMatch returns false, getFacetsToAdd returns null. If isMatch returns true, 
+   * getFacetsToAdd returns the subset of facet versions that would need to be added to the facet versions in
+   * projectFacetVersions in order to satisfy the requirements of the required facet versions. This may be
+   * an empty set.</li>
+   * </ul>
+   */
   public static FacetMatcher match(RequiredFacetVersion[] requiredFacetVersions, Set projectFacetVersions)
   {
     FacetMatcher fm = new FacetMatcher();
@@ -431,6 +573,21 @@
     return fm;
   }
     
+  /**
+   * Adds facet versions to the provided project if required based on checking provided 
+   * required facet versions against the facet versions already installed on project.
+   * 
+   * @param project IProject which exists in the workspace
+   * @param rfvs array of required facet versions.
+   * @param monitor progress monitor
+   * @return IStatus with severity IStatus.ERROR
+   * <ul>
+   * <li>if the project does not exist or</li>
+   * <li>if the project is not open or</li>
+   * <li>an attempt to add facet versions to the project resulted in an error.</li>
+   * </ul> 
+   * Otherwise, returns an IStatus with severity IStatus.OK    
+   */
   public static IStatus addRequiredFacetsToProject(IProject project, RequiredFacetVersion[] rfvs, IProgressMonitor monitor)
   {
     IStatus status = Status.OK_STATUS;
@@ -563,11 +720,11 @@
   
 
   /**
-   * Adds the set of project facet versions to the faceted project
+   * Adds the provided set of facet versions to the provided faceted project
    * 
    * @param fproject A faceted project which exists in the workspace
    * @param projectFacetVersions A set containing elements of type {@link IProjectFacetVersion}
-   * @return An IStatus with a severity of IStatus.OK if the project facet 
+   * @return An IStatus with a severity of IStatus.OK if the facet 
    * versions were added successfully. Otherwise, an IStatus with a severity of
    * IStatus.ERROR. 
    */
@@ -592,23 +749,36 @@
       }
     };    
         
-    // Run the runnable in another thread.
-    try
-    {
-      PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);
-    } catch (InvocationTargetException ite)
-    {
-      status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, ite);
-    } catch (InterruptedException ie)
-    {
-      status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, ie);
-    }    
+    // Run the runnable in another thread unless there is no UI thread (Ant scenarios)
+    if (Display.getCurrent() != null)
+    {    	
+	    try
+	    {
+	      PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);
+	    } catch (InvocationTargetException ite)
+	    {
+	      status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, ite);
+	    } catch (InterruptedException ie)
+	    {
+	      status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, ie);
+	    }
+	}
+	else
+	{
+		try
+        {
+          fproject.modify(actions, null);
+        } catch (CoreException e)
+        {
+          status[0] = getErrorStatusForAddingFacets(fproject.getProject().getName(), projectFacetVersions, e);
+        }
+	}
     
     return status[0];
   }
   
   /**
-   * Returns an error status indicating that the project facet versions could not be
+   * Returns an error status indicating that the facet versions could not be
    * added to the faceted project
    * 
    * @param projectName a project name to insert in the error message in the IStatus
@@ -641,6 +811,7 @@
   
   /**
    * Creates a new faceted project with the provided name
+   * 
    * @param projectName A String containing the name of the project to be created
    * @return An IStatus with a severity of IStatus.OK if the faceted project
    * was created successfully or if a project of the provided name already
@@ -673,10 +844,27 @@
         }
       };
 
-      // Run the runnable in another thread.
+    // Run the runnable in another thread unless there is no UI thread (Ant scenarios)    	  
       try
       {
-        PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);
+    	  if (Display.getCurrent() != null)
+    	  {
+    		  PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);    		  
+    	  }
+    	  else
+    	  {
+    		  try
+              {
+                IFacetedProject fProject = ProjectFacetsManager.create(projectName, null, null);
+                if (fProject == null)
+                {
+                  status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }));
+                }
+              } catch (CoreException e)
+              {
+                status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), e);
+              }  
+    	  }        
       } catch (InvocationTargetException ite)
       {
         status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_PROJECT_CREATION, new String[] { projectName }), ite);
@@ -690,11 +878,11 @@
   }
   
   /**
-   * Sets the provided set of project facets as fixed on the faceted project
+   * Sets the provided set of facets as fixed on the faceted project
    * 
    * @param fProject A faceted project which exists in the workspace
    * @param fixedFacets A set containing elements of type {@link IProjectFacet}
-   * @return An IStatus with a severity of IStatus.OK if the project facets 
+   * @return An IStatus with a severity of IStatus.OK if the facets 
    * were successfully set as fixed facets on the faceted project. 
    * Otherwise, an IStatus with a severity of IStatus.ERROR.
    * 
@@ -720,23 +908,36 @@
       }
     };
 
-    // Run the runnable in another thread.
-    try
+    // Run the runnable in another thread unless there is no UI thread (Ant scenarios)
+    if (Display.getCurrent() != null)
     {
-      PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);
-    } catch (InvocationTargetException ite)
+    	try
+        {
+          PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);
+        } catch (InvocationTargetException ite)
+        {
+          status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, ite);
+        } catch (InterruptedException ie)
+        {
+          status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, ie);
+        }	
+    }
+    else
     {
-      status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, ite);
-    } catch (InterruptedException ie)
-    {
-      status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, ie);
-    }    
+    	try
+        {
+          fProject.setFixedProjectFacets(fixedFacets);
+        } catch (CoreException e)
+        {
+          status[0] = getErrorStatusForSettingFixedFacets(fProject.getProject().getName(), fixedFacets, e);
+        }
+    }       
     
     return status[0];
   }
   
   /**
-   * Returns an error status indicating that the project facets could not be
+   * Returns an error status indicating that the facets could not be
    * set as fixed facets on the faceted project
    * 
    * @param projectName a project name to insert in the error message in the IStatus
@@ -788,17 +989,31 @@
       }
     };
 
-    // Run the runnable in another thread.
-    try
+    // Run the runnable in another thread unless there is no UI thread (Ant scenarios)
+    if (Display.getCurrent() != null)
     {
-      PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);
-    } catch (InvocationTargetException ite)
+    	try
+        {
+          PlatformUI.getWorkbench().getProgressService().run(true, false, runnable);
+        } catch (InvocationTargetException ite)
+        {
+          status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), ite);
+        } catch (InterruptedException ie)
+        {
+          status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), ie);
+        }	
+    }
+    else 
     {
-      status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), ite);
-    } catch (InterruptedException ie)
-    {
-      status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), ie);
-    }    
+    	try
+        {
+          fProject.setRuntime(fRuntime, null); //jvh - happens here...
+        } catch (CoreException e)
+        {
+          status[0] = StatusUtils.errorStatus(NLS.bind(ConsumptionMessages.MSG_ERROR_SETTING_RUNTIME, new String[] { fProject.getProject().getName(), fRuntime.getName() }), e);
+        }
+    }
+        
     
     return status[0];
   }
@@ -833,6 +1048,13 @@
     return facetListMessage;
   }
   
+  
+  /**
+   * Returns the set of facet versions which can be inferred from the provided Java project
+   * 
+   * @param javaProject a Java project that exists in the workspace. Must not be null.
+   * @return Set containing elements of type {@link IProjectFacetVersion}
+   */
   public static Set getFacetsForJavaProject(IJavaProject javaProject)
   {
     Set facets = new HashSet();
@@ -842,7 +1064,7 @@
       jdkComplianceLevel = javaProject.getOption("org.eclipse.jdt.core.compiler.compliance", false);
       if (jdkComplianceLevel == null)
       {
-        jdkComplianceLevel = (String)JavaCore.getDefaultOptions().get("org.eclipse.jdt.core.compiler.compliance");
+        jdkComplianceLevel = JavaCore.getOption(JavaCore.COMPILER_COMPLIANCE);
         if (jdkComplianceLevel == null)
         {
           jdkComplianceLevel = "1.4";
@@ -890,6 +1112,13 @@
   
   //Methods related to facet runtimes.
   
+  /**
+   * Returns a set of facet runtimes that support the given
+   * required facet versions.
+   * @param requiredFacetVersions an array containing elements of type {@link RequiredFacetVersion}
+   * @return Set set of facet runtimes that support the given required facet versions.
+   * (element type: {@link IRuntime}) 
+   */
   public static Set getRuntimes(RequiredFacetVersion[] requiredFacetVersions)
   {
     //Form the sets of IProjectFacetVersions these RequiredFacetVersions represent.
@@ -961,6 +1190,15 @@
     
   }  
   
+  /**
+   * Returns whether or not the provided facet runtime supports the provided
+   * required facet versions.
+   * 
+   * @param requiredFacetVersions an array containing elements of type {@link RequiredFacetVersion}
+   * @param fRuntimeName name of a {@link IRuntime}
+   * @return boolean <code>true</code> if the facet runtime supports the required facet versions.
+   * Returns <code>false</code> otherwise.
+   */
   public static boolean isFacetRuntimeSupported(RequiredFacetVersion[] requiredFacetVersions, String fRuntimeName)
   {
     Set fRuntimes = getRuntimes(requiredFacetVersions);
@@ -977,6 +1215,12 @@
     return false;
   }
     
+  /**
+   * Returns the union of facet runtimes that support the provided sets of facet versions.
+   * 
+   * @param facetSets array of Sets, where each Set contains elements of type {@link IProjectFacetVersion}.
+   * @return Set containing elements of type {@link IRuntime}
+   */
   public static Set getRuntimes(Set[] facetSets)  
   {
     HashSet unionSet = new HashSet();
@@ -997,6 +1241,14 @@
     return unionSet;
   }
   
+  /**
+   * Returns whether or not the provided facet runtime supports the provided set of facet versions.
+   * 
+   * @param facetRuntime a facet runtime
+   * @param projectFacetVersions set containing elements of type {@link IProjectFacetVersion}
+   * @return boolean <code>true</code> if the facet runtime supports the provided set of facet versions.
+   * Returns <code>false</code> otherwise.
+   */
   public static boolean doesRuntimeSupportFacets(IRuntime facetRuntime, Set projectFacetVersions)
   {
     Set runtimes = RuntimeManager.getRuntimes(projectFacetVersions);
@@ -1013,10 +1265,12 @@
     return false;
   }
   
-  /*
+  /**
+   * Returns whether versionA is greater than versionB
+   * 
    * @param versionA version number of the form 1.2.3
    * @param versionA version number of the form 1.2.3
-   * @return boolean returns whether versionA is greater than versionB
+   * @return boolean <code>true</code> if versionA is greater than versionB, <code>false</code> otherwise.
    */
   public static boolean greaterThan(String versionA, String versionB)
   {
@@ -1047,6 +1301,11 @@
     return sizeA > sizeB;
   }
   
+  /**
+   * Returns whether the provided facet has an id of "jst.java"
+   * @param pf facet
+   * @return <code>true</code> if facet has an id of "jst.java", <code>false</code> otherwise.
+   */
   public static boolean isJavaFacet(IProjectFacet pf)
   {
     if (pf.getId().equals("jst.java"))
@@ -1055,6 +1314,13 @@
       return false;
   }
   
+  /**
+   * Returns whether or not the provided project is a faceted Java utility project or a non-faceted Java project.
+   * 
+   * @param project an IProject
+   * @return boolean <code>true</code> if the provided project is a faceted Java utility project 
+   * or a non-faceted Java project, <code>false</code> otherwise.
+   */
   public static boolean isJavaProject(IProject project)
   {
     //Check if it's a faceted project
@@ -1084,9 +1350,7 @@
       }
       else
       {
-        IJavaProject javaProject = null;    
-        javaProject = JavaCore.create(project);    
-        if (javaProject != null)
+        if (ResourceUtils.isJavaProject(project))
         {
           return true;
         }        
@@ -1099,6 +1363,13 @@
     return false;
   }
   
+  /**
+   * Returns whether or not the provided template id is equal to "template.jst.utility"
+   * 
+   * @param templateId template id
+   * @return boolean <code>true</code> if the provided template id is equal to "template.jst.utility", 
+   * <code>false</code> otherwise.
+   */
   public static boolean isUtilityTemplate(String templateId)
   {
     if (ProjectFacetsManager.isTemplateDefined(templateId))
@@ -1111,5 +1382,5 @@
     
     return false;
   }
-  
+      
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/BeanElement.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/BeanElement.java
index fc9c4f0..3b842ab 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/BeanElement.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/BeanElement.java
@@ -6,7 +6,10 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060612   145433 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.datamodel.beanmodel;
@@ -27,7 +30,12 @@
   public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002.";
   public static String STATELESS_BEAN = "10101010statelessbean10101010";
   public static String REL_METHODS = "relmethods";
- 
+  public static int READONLY = 0;
+  public static int WRITEONLY = 1;
+  public static int READWRITE = 2;
+  private int attrib = 2;
+  
+  
   /**
   * Constructor 
   * @param projectElement The project this Bean belongs to.
@@ -70,9 +78,15 @@
   {
     super(name,attributeElement,TypeElement.REL_OWNER,TypeElement.REL_TYPE,TypeElement.BEAN);
     fOwnerType = TypeElement.ATTRIBUTE_OWNER;
-  
+    attribFunction(attributeElement);
   }
-
+ 
+  private void attribFunction(AttributeElement attributeElement){
+	if(attributeElement.getGetterMethod() != null && attributeElement.getSetterMethod() != null) attrib = READWRITE;
+	else if(attributeElement.getGetterMethod() == null && attributeElement.getSetterMethod() != null) attrib = WRITEONLY;
+	else if(attributeElement.getGetterMethod() != null && attributeElement.getSetterMethod() == null) attrib = READONLY;
+  }
+  
    /**
   * Constructor for the case when this is not the root object
   * here it represents complex types
@@ -110,6 +124,16 @@
     return getName();
   }
 
+  public int getAttrib()
+  {
+    return attrib;
+  }
+  
+  public void setAttrib(int attrib)
+  {
+    this.attrib = attrib;
+  }
+  
   public boolean isStateLess()
   {
     Enumeration ea = getElements(TypeElement.REL_ATTRIBUTES);
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/ObjectType.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/ObjectType.java
new file mode 100644
index 0000000..37e8bd7
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/ObjectType.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060823	  145643 mahutch@ca.ibm.com - Mark Hutchinson (created class)
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.consumption.datamodel.beanmodel;
+
+
+/**
+* objects of this class represent a type
+* 
+*/
+public class ObjectType extends SimpleType 
+{
+
+  // Copyright
+  public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002.";
+
+  
+  /**
+  *Constructor
+  *
+  */
+  public ObjectType()
+  {
+    super(TypeFactory.OBJECT_NAME);
+  }
+ 
+  /**
+  * StringToType gets the string taken by the 
+  * user into proxy form
+  * @return String convert the string to type .
+  */
+  public String StringToType(String name)
+  { 
+	//We can't deserialize a String to an Object
+	//this should never actually be called since
+	//methods with Objects as input are omitted.
+    return "new java.lang.Object();";
+  }
+
+  /**
+  * The stringConversion function nails out specific conversion methods used among simple types 
+  * This method is to be implemented by SimpleType subclasses
+  * @param String the name of string after the request call
+  * @return String the actual conversion string containing the name.
+  */
+  public String TypeToString(String name)
+  {
+    return name + ".toString()";
+  }
+ 
+ }
+
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/TypeFactory.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/TypeFactory.java
index f7a1760..7bed616 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/TypeFactory.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/datamodel/beanmodel/TypeFactory.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060726   145676 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060823	  145643 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.datamodel.beanmodel;
@@ -40,6 +44,7 @@
   public static final String LONG_NAME                  = "java.lang.Long";
   public static final String SHORT_NAME                 = "java.lang.Short";
   public static final String CHARACTER_NAME            = "java.lang.Character";
+  public static final String OBJECT_NAME			   = "java.lang.Object";
   public static final String PRIM_BOOLEAN_NAME         = "boolean";
   public static final String PRIM_BYTE_NAME            = "byte";
   public static final String PRIM_DOUBLE_NAME          = "double";
@@ -98,7 +103,8 @@
         type.equals(DATE_NAME)                ||
         type.equals(GREGORIAN_CALENDAR_NAME) ||
         type.equals(CALENDAR_NAME)           || 
-        type.equals(URL_NAME)                 ||    
+        type.equals(URL_NAME)                 ||
+        type.equals(OBJECT_NAME)			 ||
         type.equals(STRING_NAME))  return true;      
      return false; 
   
@@ -114,9 +120,12 @@
   public static boolean isUnSupportedType(JavaHelpers javaHelpers)
   {
     //we also dont support arrays
+	//java.lang.Objects are ok for return types but not for input type
     if (javaHelpers.isArray()||
     		javaHelpers.getJavaName().equals(MAP_NAME)||
     		javaHelpers.getJavaName().equals(VECTOR_NAME)||
+    		javaHelpers.getJavaName().equals(DATA_HANDLER)||
+    		javaHelpers.getJavaName().equals(OBJECT_NAME) ||
     		javaHelpers.getJavaName().equals("java.lang.class")	) return true;
     
     return false;
@@ -127,16 +136,19 @@
   public static String VECTOR_NAME = "java.util.Vector";
   public static String ARRAY_NAME = ArrayElement.ARRAY_NAME;
   public static String PRIMITIVE_ARRAY_NAME = "primitivearray";
+  public static String DATA_HANDLER = "javax.activation.DataHandler";
 
   public static boolean isRecognizedReturnType(JavaHelpers javaHelpers)
   {
     //arrays 
     //Hashtable
     //Vectors
+	//java.lang.Objects are ok for return types
     if (javaHelpers.isArray()) return true;
     else if (javaHelpers.getJavaName().equals(HASHTABLE_NAME))return true;
     else if (javaHelpers.getJavaName().equals(VECTOR_NAME))return true;
     else if (javaHelpers.getJavaName().equals(MAP_NAME))return true;
+    else if (javaHelpers.getJavaName().equals(OBJECT_NAME))return true;
     else return false;
   }
 
@@ -145,10 +157,12 @@
     //arrays 
     //Hashtable
     //Vectors
+	//java.lang.Objects are ok for return types
     if (type.startsWith(ARRAY_NAME)) return true;
     else if (type.equals(HASHTABLE_NAME))return true;
     else if (type.equals(VECTOR_NAME))return true;
     else if (type.equals(MAP_NAME))return true;
+    else if (type.equals(OBJECT_NAME)) return true;
     else return false;
   }
 
@@ -213,6 +227,7 @@
     else if (type.equals(HASHTABLE_NAME))            datatype = new HashtableType();
     else if (type.equals(VECTOR_NAME))               datatype = new VectorType();
     else if (type.equals(MAP_NAME))                  datatype = new MapType();
+    else if (type.equals(OBJECT_NAME))				datatype = new ObjectType();
 
     // need to see if it is an object array
     //or a primitive
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/plugin/WebServiceConsumptionPlugin.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/plugin/WebServiceConsumptionPlugin.java
index ac20679..3d4062a 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/plugin/WebServiceConsumptionPlugin.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/plugin/WebServiceConsumptionPlugin.java
@@ -1,19 +1,20 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   115690 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.plugin;
 
-import java.text.MessageFormat;
 import org.eclipse.core.runtime.Plugin;
-import org.eclipse.wst.command.internal.env.core.common.MessageUtils;
 
 /**
 * This is the plugin class for the Web Services plugin.
@@ -24,9 +25,6 @@
 */
 public class WebServiceConsumptionPlugin extends Plugin
 {
-  // Copyright
-  public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002.";
-
   /**
   * The identifier of the descriptor of this plugin in plugin.xml.
   */
@@ -56,35 +54,4 @@
     return instance_;
   }
 
-    /**
-  * Returns the message string identified by the given key from
-  * plugin.properties.
-  * @return The String message.
-  */
-  public static String getMessage ( String key )
-  {
-    MessageUtils msgUtils = new MessageUtils( "org.eclipse.jst.ws.consumption.plugin", instance_ );
-    
-    if( key.startsWith("%"))
-    {
-      key = key.substring( 1, key.length() );
-    }
-    
-    return msgUtils.getMessage(key);
-  }
-
-  /**
-  * Returns the message string identified by the given key from
-  * plugin.properties. Substitution sequences in the message string
-  * are replaced by the given array of substitution objects (which
-  * are most frequently strings). See the JDK's
-  * {@link java.text.MessageFormat java.text.MessageFormat}
-  * class for further details on substitution.
-  * @return The String message.
-  */
-  public static String getMessage ( String key, Object[] args )
-  {
-    return MessageFormat.format(getMessage(key),args);
-  }
-
 }
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/InputFileAttributeGenerator.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/InputFileAttributeGenerator.java
index e485e04..391fa5e 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/InputFileAttributeGenerator.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/InputFileAttributeGenerator.java
@@ -6,7 +6,10 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060612   145433 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.sampleapp.codegen;
 
@@ -50,7 +53,7 @@
      AttributeElementType attributeElementType = (AttributeElementType)object;
      //if it is a bean is it stateless
      attributeElementType.getTypeElement(); 
-        
+     if(attributeElementType.getSetterMethod() == null) return Status.OK_STATUS;
      if(attributeElementType.getTypeElement().isBean()){
        BeanElement bean = (BeanElement)attributeElementType.getTypeElement();
        fStateLess = bean.isStateLess();
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/InputFileTypeGenerator.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/InputFileTypeGenerator.java
index f6d45c3..af2d94e 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/InputFileTypeGenerator.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/InputFileTypeGenerator.java
@@ -6,7 +6,10 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060612   145433 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.sampleapp.codegen;
 
@@ -42,6 +45,7 @@
   private boolean fStateLessBean;
   private Vector fGetters;
   private Vector fTypes;
+  private boolean fWrite = true;
 
   /**
   * Constructor.
@@ -165,6 +169,7 @@
      if (element instanceof BeanElement ){
         BeanElement bean = (BeanElement)element;
         if (bean.isStateLess()) fStateLessBean = true;
+        if (bean.getAttrib() == BeanElement.READONLY) fWrite = false;
      }
 
 
@@ -191,17 +196,21 @@
      if(getReturnParam() &&  element.getOwningElement() instanceof AttributeElementType &&(((AttributeElementType)element.getOwningElement()).getGetterMethod() == null) ) return Status.OK_STATUS;
 
      //Code gen for all elements
-     fbuffer.append("<TR>" + StringUtils.NEWLINE);
-     for (int i = 0; i < fCurrentLevel;i++){
-        fbuffer.append("<TD WIDTH=\"5%\"></TD>" + StringUtils.NEWLINE);
+     if(fWrite){
+       fbuffer.append("<TR>" + StringUtils.NEWLINE);
+       for (int i = 0; i < fCurrentLevel;i++){
+          fbuffer.append("<TD WIDTH=\"5%\"></TD>" + StringUtils.NEWLINE);
+       }
+       fbuffer.append("<TD COLSPAN=\"" + fColspan + "\" ALIGN=\"LEFT\">" + element.getOwningElement().getName() + ":</TD>" + StringUtils.NEWLINE);   
      }
-     fbuffer.append("<TD COLSPAN=\"" + fColspan + "\" ALIGN=\"LEFT\">" + element.getOwningElement().getName() + ":</TD>" + StringUtils.NEWLINE);   
      if(fIsSimple || TypeFactory.recognizedBean(element.getName()) 
                 || (getReturnParam() && fStateLessBean) 
                 || (getReturnParam() && TypeFactory.isRecognizedReturnType(element.getTypeName()))){
         if(getInstanceName().equals("")){
-           DataType dataType = TypeFactory.createType(element.getName(),element.getOwningElement().getMUID());
-           fbuffer.append(dataType.inputForm(element.getOwningElement().getMUID()));
+           if(fWrite){
+             DataType dataType = TypeFactory.createType(element.getName(),element.getOwningElement().getMUID());
+             fbuffer.append(dataType.inputForm(element.getOwningElement().getMUID()));
+           }
         }
         else{
            if(getReturnParam() && (TypeFactory.isRecognizedReturnType(element.getTypeName()) || fStateLessBean)){
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileAttributeGenerator.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileAttributeGenerator.java
index 34e7a4d..cf8e564 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileAttributeGenerator.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileAttributeGenerator.java
@@ -6,7 +6,10 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060612   145433 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.consumption.sampleapp.codegen;
@@ -58,6 +61,7 @@
   public IStatus visit (Object object)
   {
      AttributeElementType attributeElementType = (AttributeElementType)object;
+     if(attributeElementType.getSetterMethod() == null) return Status.OK_STATUS;
      BasicElement element = (BasicElement)object;
      if(attributeElementType.getTypeElement().isSimple() || TypeFactory.recognizedBean(attributeElementType.getTypeElement().getName())){      
         //start the codegen
@@ -78,7 +82,6 @@
      typeVisitor.run(attributeElementType,resultFileTypeGenerator);
      setNumberFactory(resultFileTypeGenerator.getNumberFactory());
      Vector setterInputs = resultFileTypeGenerator.getResidentVector(); 
-     if(attributeElementType.getSetterMethod() == null) return Status.OK_STATUS; 
      putResidentVector(attributeElementType.getSetterSignature((String)setterInputs.firstElement()));
      
      return Status.OK_STATUS;
diff --git a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileGenerator.java b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileGenerator.java
index 586bba9..0427721 100644
--- a/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileGenerator.java
+++ b/bundles/org.eclipse.jst.ws.consumption/src/org/eclipse/jst/ws/internal/consumption/sampleapp/codegen/ResultFileGenerator.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060523   142296 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.consumption.sampleapp.codegen;
 
@@ -52,7 +55,8 @@
   {
       Element beanElement = (Element)object;
       BeanElement bean = (BeanElement)beanElement;
-      fbuffer.append("<%@page contentType=\"text/html;charset=UTF-8\"%>");
+      fbuffer.append("<%@page contentType=\"text/html;charset=UTF-8\"%>"+ StringUtils.NEWLINE);
+      fbuffer.append("<% request.setCharacterEncoding(\"UTF-8\"); %>"+ StringUtils.NEWLINE);
       fbuffer.append("<HTML>" + StringUtils.NEWLINE);
       fbuffer.append("<HEAD>" + StringUtils.NEWLINE);
       fbuffer.append("<TITLE>Result</TITLE>" + StringUtils.NEWLINE);
diff --git a/bundles/org.eclipse.jst.ws.creation.ejb.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.creation.ejb.ui/META-INF/MANIFEST.MF
index c5b9599..60bfabb 100644
--- a/bundles/org.eclipse.jst.ws.creation.ejb.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.creation.ejb.ui/META-INF/MANIFEST.MF
@@ -5,5 +5,5 @@
 Bundle-Version: 1.0.0.qualifier
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
-Require-Bundle: org.eclipse.jst.ws.consumption.ui,
- org.eclipse.wst.command.env.ui
+Require-Bundle: org.eclipse.jst.ws.consumption.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.ui;bundle-version="[1.0.101,1.1.0)"
diff --git a/bundles/org.eclipse.jst.ws.creation.ejb.ui/about.html b/bundles/org.eclipse.jst.ws.creation.ejb.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws.creation.ejb.ui/about.html
+++ b/bundles/org.eclipse.jst.ws.creation.ejb.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/.cvsignore b/bundles/org.eclipse.jst.ws.creation.ui/.cvsignore
index abf11a4..8e6edef 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/.cvsignore
+++ b/bundles/org.eclipse.jst.ws.creation.ui/.cvsignore
@@ -4,3 +4,4 @@
 wss-ui.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/.project b/bundles/org.eclipse.jst.ws.creation.ui/.project
index ef454e4..b9c8bfc 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/.project
+++ b/bundles/org.eclipse.jst.ws.creation.ui/.project
@@ -3,12 +3,6 @@
 	<name>org.eclipse.jst.ws.creation.ui</name>
 	<comment></comment>
 	<projects>
-		<project>org.eclipse.wst.command.env</project>
-		<project>org.eclipse.wst.command.env.core</project>
-		<project>org.eclipse.jst.ws</project>
-		<project>org.eclipse.jst.ws.consumption</project>
-		<project>org.eclipse.jst.ws.consumption.ui</project>
-		<project>org.eclipse.jst.ws.ui</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.creation.ui/META-INF/MANIFEST.MF
index 1a1c7cf..5ddf1d2 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.creation.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.creation.ui; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.104.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.creation.ui.plugin.WebServiceCreationUIPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -16,32 +16,33 @@
  org.eclipse.jst.ws.internal.creation.ui.widgets.binding;x-internal:=true,
  org.eclipse.jst.ws.internal.creation.ui.widgets.runtime;x-internal:=true,
  org.eclipse.jst.ws.internal.creation.ui.widgets.test;x-internal:=true
-Require-Bundle: org.eclipse.wst.command.env,
- org.eclipse.wst.command.env.ui,
- org.eclipse.wst.command.env.core,
- org.eclipse.wst.wsdl,
- org.eclipse.wst.ws,
- org.eclipse.wst.ws.explorer,
- org.eclipse.jst.ws,
- org.eclipse.jst.ws.consumption,
- org.eclipse.wst.ws.parser,
- org.eclipse.jst.ws.ui,
- org.eclipse.jst.ws.consumption.ui,
- org.eclipse.jdt.core,
- org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.emf.common,
- org.eclipse.jem.util,
- org.eclipse.jem.workbench,
- org.eclipse.wst.server.core,
- org.eclipse.wst.common.emfworkbench.integration,
- org.eclipse.jst.j2ee,
- org.eclipse.jst.j2ee.core,
- org.eclipse.jst.j2ee.ejb,
- org.wsdl4j,
- org.eclipse.wst.common.frameworks,
- org.eclipse.wst.common.environment,
- org.eclipse.wst.common.project.facet.core,
- org.eclipse.ui.forms
+Require-Bundle: org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.ws.explorer;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws.consumption;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.ws.parser;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.ws.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.ws.consumption.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.emf.common;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.jem.util;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.common.emfworkbench.integration;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.0,1.2.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.ui.forms;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.ws.ui;bundle-version="[1.0.101,1.1.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/about.html b/bundles/org.eclipse.jst.ws.creation.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/about.html
+++ b/bundles/org.eclipse.jst.ws.creation.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/icons/full/wizban/webservices_wiz.gif b/bundles/org.eclipse.jst.ws.creation.ui/icons/full/wizban/webservices_wiz.gif
deleted file mode 100644
index abd1f9c..0000000
--- a/bundles/org.eclipse.jst.ws.creation.ui/icons/full/wizban/webservices_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/icons/full/wizban/webservices_wiz.png b/bundles/org.eclipse.jst.ws.creation.ui/icons/full/wizban/webservices_wiz.png
new file mode 100644
index 0000000..45f876a
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.creation.ui/icons/full/wizban/webservices_wiz.png
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale0_bground.jpg b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale0_bground.jpg
index c6304a1..4eb1880 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale0_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale0_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale1_bground.jpg b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale1_bground.jpg
index 8f682d6..9f11732 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale1_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale1_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale2_bground.jpg b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale2_bground.jpg
index 9576875..27caf5e 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale2_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale2_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale3_bground.jpg b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale3_bground.jpg
index b71b3a5..12d48b1 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale3_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale3_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale4_bground.jpg b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale4_bground.jpg
index 77ae6f4..0d9a438 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale4_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale4_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale5_bground.jpg b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale5_bground.jpg
index 33cd760..4e7d448 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale5_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale5_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale6_bground.jpg b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale6_bground.jpg
index 40ed2e9..04c0943 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/icons/scale6_bground.jpg
+++ b/bundles/org.eclipse.jst.ws.creation.ui/icons/scale6_bground.jpg
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/plugin.xml b/bundles/org.eclipse.jst.ws.creation.ui/plugin.xml
index 386150c..6d304de 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/plugin.xml
+++ b/bundles/org.eclipse.jst.ws.creation.ui/plugin.xml
@@ -26,7 +26,7 @@
    <extension
          point="org.eclipse.wst.command.env.dynamicWizard">
       <dynamicWizard
-            iconbanner="icons/full/wizban/webservices_wiz.gif"
+            iconbanner="icons/full/wizban/webservices_wiz.png"
             title="%WIZARD_TITLE_WSS"
             class="org.eclipse.jst.ws.internal.creation.ui.widgets.binding.ServerWidgetBinding"
             id="org.eclipse.jst.ws.creation.ui.wizard.serverwizard">
@@ -35,9 +35,17 @@
 
    <extension
          point="org.eclipse.ui.exportWizards">
+      <category
+             id="org.eclipse.jst.ws.creation.ui.wsexport.category"
+             name="%PLUGIN_NEW_CATEGORY_NAME_WS"/>
+   </extension>
+   
+   <extension
+         point="org.eclipse.ui.exportWizards">
       <wizard
             name="%PLUGIN_EXPORT_WIZARD_NAME_WS"
             icon="icons/export_ws.gif"
+            category="org.eclipse.jst.ws.creation.ui.wsexport.category"
             class="org.eclipse.wst.command.internal.env.ui.widgets.DynamicWizard"
             id="org.eclipse.jst.ws.consumption.ui.wsexport">
          <description>
@@ -222,6 +230,42 @@
          </action>
       </objectContribution>
 
+       <objectContribution
+            objectClass="org.eclipse.wst.wsdl.Service"
+            nameFilter="*"
+            id="org.eclipse.jst.ws.creation.ui.wizard.publish">
+         <action
+               label="%ACTION_PUBLISH_WSDL"
+               class="org.eclipse.wst.command.internal.env.ui.widgets.popup.DynamicPopupWizard"
+                  menubarPath="additions"
+               id="org.eclipse.jst.ws.creation.ui.wizard.publish">
+         </action>
+      </objectContribution>
+      
+       <objectContribution
+            objectClass="org.eclipse.wst.wsdl.util.WSDLResourceImpl"
+            nameFilter="*"
+            id="org.eclipse.jst.ws.creation.ui.wizard.publish">
+         <action
+               label="%ACTION_PUBLISH_WSDL"
+               class="org.eclipse.wst.command.internal.env.ui.widgets.popup.DynamicPopupWizard"
+                  menubarPath="additions"
+               id="org.eclipse.jst.ws.creation.ui.wizard.publish">
+         </action>
+      </objectContribution>
+      
+       <objectContribution
+            objectClass="org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef"
+            nameFilter="*"
+            id="org.eclipse.jst.ws.creation.ui.wizard.publish">
+         <action
+               label="%ACTION_PUBLISH_WSDL"
+               class="org.eclipse.wst.command.internal.env.ui.widgets.popup.DynamicPopupWizard"
+                  menubarPath="additions"
+               id="org.eclipse.jst.ws.creation.ui.wizard.publish">
+         </action>
+      </objectContribution>
+
    </extension>
    
    <!-- Preference Pages -->
@@ -266,7 +310,7 @@
               key="Project"
               operation="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.ObjectSelectionOutputCommand"
               property="Project"
-              transform="org.eclipse.jst.ws.internal.common.String2IProjectTransformer"/>
+              transform="org.eclipse.jst.ws.internal.common.StringToIProjectTransformer"/>
         <map
               key="ComponentName"
               operation="org.eclipse.jst.ws.internal.consumption.ui.widgets.object.ObjectSelectionOutputCommand"
@@ -305,6 +349,12 @@
               operation="org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ServerExtensionDefaultingCommand"
               property="ServiceTypeRuntimeServer"
               transform="org.eclipse.jst.ws.internal.common.String2TypeRuntimeServerModifier"/>
+              
+      <map
+              key="ServiceProjectName"
+              operation="org.eclipse.jst.ws.internal.creation.ui.widgets.runtime.ServerRuntimeSelectionWidgetDefaultingCommand"
+              property="ServiceProjectName"/>
+              
       <map
               key="ServiceProjectName"
               operation="org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ServerExtensionDefaultingCommand"
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/ant/AntServiceRootCommandFragment.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/ant/AntServiceRootCommandFragment.java
index f26be75..f35a509 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/ant/AntServiceRootCommandFragment.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/ant/AntServiceRootCommandFragment.java
@@ -10,15 +10,20 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060530   144358 kathy@ca.ibm.com - Kathy Chan
+ * 20060530   144350 kathy@ca.ibm.com - Kathy Chan
+ * 20060823   154938 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060825   155114 pmoogk@ca.ibm.com - Peter Moogk
+ * 20061011   159283 makandre@ca.ibm.com - Andrew Mak, project not associated to EAR when using ant on command-line
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.creation.ui.ant;
 
-import org.eclipse.jst.ws.internal.consumption.common.ScenarioCleanupCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.command.AntDefaultingOperation;
+import org.eclipse.jst.ws.internal.consumption.ui.command.AntRestoringCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.command.ListOptionsCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.common.FinishFragment;
+import org.eclipse.jst.ws.internal.consumption.ui.common.ScenarioCleanupCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.selection.SelectionTransformer;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.CheckWSDLValidationCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ServerExtensionDefaultingCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ServerExtensionFragment;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ServerExtensionOutputCommand;
@@ -56,12 +61,12 @@
     add( new SimpleFragment( new ServerWizardWidgetDefaultingCommand(), ""));
     add( new SimpleFragment( new ServerWizardWidgetOutputCommand(), "" ));    
     add( new ObjectSelectionFragment() );
-    add( new SimpleFragment( new CheckWSDLValidationCommand(), ""));
     add( new SimpleFragment( new ServerRuntimeSelectionWidgetDefaultingCommand(), ""));
     add( new SimpleFragment( new ServerExtensionDefaultingCommand(), ""));   
     add( new ServiceRootFragment() );
     add( new SimpleFragment( new ServerExtensionOutputCommand(), "" ));
     add(new FinishFragment());
+    add( new SimpleFragment( new AntRestoringCommand(), "" ));
     add( new SimpleFragment( new ScenarioCleanupCommand(), "" ));
   }
   
@@ -80,7 +85,11 @@
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "GenerateProxy", ServerWizardWidgetOutputCommand.class);
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "GenerateProxy", ServerWizardWidgetOutputCommand.class);
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "ResourceContext", ServerWizardWidgetOutputCommand.class);
-    	
+    
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DevelopService", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "AssembleService", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DeployService", ServerWizardWidgetOutputCommand.class);
+        	
     // Map ServerWizardWidgetOutputCommand.
     dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "ServiceTypeRuntimeServer", ObjectSelectionFragment.class, "TypeRuntimeServer", null);
     dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "ClientTypeRuntimeServer", ServerRuntimeSelectionWidgetDefaultingCommand.class);
@@ -88,6 +97,10 @@
     dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "StartService", ServerExtensionDefaultingCommand.class);
     dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "GenerateProxy", ServerRuntimeSelectionWidgetDefaultingCommand.class);
     
+    dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "DevelopService", ServerExtensionDefaultingCommand.class);
+    dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "AssembleService", ServerExtensionDefaultingCommand.class);
+    dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "DeployService", ServerExtensionDefaultingCommand.class);
+        
     //Map AntDefaultingFragment
     dataRegistry.addMapping(AntDefaultingOperation.class, "ServiceIdsFixed", ServerRuntimeSelectionWidgetDefaultingCommand.class);
     dataRegistry.addMapping(AntDefaultingOperation.class, "ClientIdsFixed", ServerRuntimeSelectionWidgetDefaultingCommand.class);
@@ -114,6 +127,7 @@
     dataRegistry.addMapping( ServerWizardWidgetOutputCommand.class, "ResourceContext", PreServiceDevelopCommand.class);			
 	
 	dataRegistry.addMapping( ServerRuntimeSelectionWidgetDefaultingCommand.class, "ServiceComponentType", PreServiceDevelopCommand.class, "ModuleType", null);
+	dataRegistry.addMapping( ServerRuntimeSelectionWidgetDefaultingCommand.class, "ServiceComponentType", ServerExtensionDefaultingCommand.class );
     dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ServiceRuntimeId", ServerExtensionDefaultingCommand.class);
 	dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "ServiceTypeRuntimeServer", PreServiceDevelopCommand.class );
 	dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "ServiceRuntimeId", PreServiceDevelopCommand.class );
@@ -121,12 +135,19 @@
     dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "ServerProject", PreServiceDevelopCommand.class, "Module", null );
     dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "ServerProjectEAR", PreServiceDevelopCommand.class, "Ear", null );
     
+    dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "DevelopService", PreServiceDevelopCommand.class);
+    dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "AssembleService", PreServiceDevelopCommand.class);
+    
+    
+    
 	dataRegistry.addMapping( ObjectSelectionOutputCommand.class, "ObjectSelection", PreServiceDevelopCommand.class, "Selection", new SelectionTransformer() );
 	dataRegistry.addMapping( PreServiceDevelopCommand.class, "WebService", ServerExtensionOutputCommand.class );
 
     // Map ServerExtensionOutputCommand for ServerStart()
     dataRegistry.addMapping(ServerExtensionDefaultingCommand.class, "ServerProjectEAR", ServerExtensionOutputCommand.class, "EarProjectName", null);
     
+    dataRegistry.addMapping(AntDefaultingOperation.class, "RendererValidation", AntRestoringCommand.class);
+    
   }
 
 }
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/extension/PreServiceAssembleCommand.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/extension/PreServiceAssembleCommand.java
index 90c375f..b8f0170 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/extension/PreServiceAssembleCommand.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/extension/PreServiceAssembleCommand.java
@@ -11,6 +11,8 @@
  * -------- -------- -----------------------------------------------------------
  * 20060131 121071   rsinha@ca.ibm.com - Rupam Kuehner     
  * 20060330 128827   kathy@ca.ibm.com - Kathy Chan
+ * 20060524   141925 kathy@ca.ibm.com - Kathy Chan
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.creation.ui.extension;
@@ -42,7 +44,7 @@
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
 	  IEnvironment environment = getEnvironment();
-	  IStatus status;
+	  IStatus status = Status.OK_STATUS;
 	  
 	  // For top down scenarios, merge the content of the skeleton files with the previous version stored.	  
 	  // The Web service extensions triggers the storing of the content of the old skeleton file by 
@@ -50,7 +52,7 @@
 	  // develop() method.
 	  
 	  if (context_.getScenario().getValue() == WebServiceScenario.TOPDOWN) {
-		  SkeletonMergeCommand skeletonMergeCommand = new SkeletonMergeCommand();
+		  SkeletonMergeCommand skeletonMergeCommand = new SkeletonMergeCommand(project_);
 		  skeletonMergeCommand.setUrls(webService_.getWebServiceInfo().getImplURLs());
 		  skeletonMergeCommand.setEnvironment(environment);
 		  status = skeletonMergeCommand.execute( monitor, adaptable );
@@ -59,46 +61,49 @@
 				return status;
 			}			  
 	  }
-    	
-		// Check if EAR module is req'd, ie. !=null
-		if (earProject_==null)
-			return Status.OK_STATUS;
 	  
-	  
-        
-		//Create the service EAR module
-        
-        CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
-        command.setProjectName(earProject_);
-        command.setTemplateId(IJ2EEModuleConstants.JST_EAR_TEMPLATE);
-        
-        // RequiredFacetVersions is set to an empty array because we don't need to impose any additional constraints.
-        // We just want to create the highest level of EAR project that the selected server supports.
-        command.setRequiredFacetVersions(new RequiredFacetVersion[0]); 
-        
-        command.setServerFactoryId(webService_.getWebServiceInfo().getServerFactoryId());
-        command.setServerInstanceId(webService_.getWebServiceInfo().getServerInstanceId());
-        status = command.execute( monitor, adaptable );
-        if (status.getSeverity() == Status.ERROR)
-        {
-          environment.getStatusHandler().reportError( status );
-          return status;
-        }                
-		
-		//Associate the service module and service EAR
-		AssociateModuleWithEARCommand associateCommand = new AssociateModuleWithEARCommand();
-		associateCommand.setProject(project_);
-		associateCommand.setModule(module_);
-		associateCommand.setEARProject(earProject_);
-		associateCommand.setEar(ear_);
-    associateCommand.setEnvironment( environment );
-		status = associateCommand.execute( monitor, null );
-		if (status.getSeverity()==Status.ERROR)
-		{
-			environment.getStatusHandler().reportError(status);		  
-		}			
-		
-		return status;	  
+	  if (context_.getAssemble()) {
+
+		  // Check if EAR module is req'd, ie. !=null
+		  if (earProject_==null)
+			  return Status.OK_STATUS;
+
+
+
+		  //Create the service EAR module
+
+		  CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
+		  command.setProjectName(earProject_);
+		  command.setTemplateId(IJ2EEModuleConstants.JST_EAR_TEMPLATE);
+
+		  // RequiredFacetVersions is set to an empty array because we don't need to impose any additional constraints.
+		  // We just want to create the highest level of EAR project that the selected server supports.
+		  command.setRequiredFacetVersions(new RequiredFacetVersion[0]); 
+
+		  command.setServerFactoryId(webService_.getWebServiceInfo().getServerFactoryId());
+		  command.setServerInstanceId(webService_.getWebServiceInfo().getServerInstanceId());
+		  status = command.execute( monitor, adaptable );
+		  if (status.getSeverity() == Status.ERROR)
+		  {
+			  environment.getStatusHandler().reportError( status );
+			  return status;
+		  }                
+
+		  //Associate the service module and service EAR
+		  AssociateModuleWithEARCommand associateCommand = new AssociateModuleWithEARCommand();
+		  associateCommand.setProject(project_);
+		  associateCommand.setModule(module_);
+		  associateCommand.setEARProject(earProject_);
+		  associateCommand.setEar(ear_);
+		  associateCommand.setEnvironment( environment );
+		  status = associateCommand.execute( monitor, null );
+		  if (status.getSeverity()==Status.ERROR)
+		  {
+			  environment.getStatusHandler().reportError(status);		  
+		  }			
+
+	  }
+	  return status;	  
   }
 	
   public void setProject( String project )
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/extension/PreServiceDevelopCommand.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/extension/PreServiceDevelopCommand.java
index 98380f8..3cebfaf 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/extension/PreServiceDevelopCommand.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/extension/PreServiceDevelopCommand.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2005, 2007 IBM 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
@@ -11,6 +11,9 @@
  * -------- -------- -----------------------------------------------------------
  * 20060131 121071   rsinha@ca.ibm.com - Rupam Kuehner
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060516   126965 kathy@ca.ibm.com - Kathy Chan
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20070123   167487 makandre@ca.ibm.com - Andrew Mak
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.creation.ui.extension;
@@ -22,13 +25,13 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jst.ws.internal.consumption.command.common.CreateFacetedProjectCommand;
-import org.eclipse.jst.ws.internal.consumption.common.FacetUtils;
 import org.eclipse.jst.ws.internal.consumption.common.RequiredFacetVersion;
 import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
 import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
 import org.eclipse.wst.command.internal.env.core.context.ResourceContext;
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.common.HTTPUtility;
 import org.eclipse.wst.ws.internal.wsrt.IContext;
 import org.eclipse.wst.ws.internal.wsrt.ISelection;
 import org.eclipse.wst.ws.internal.wsrt.IWebService;
@@ -54,6 +57,8 @@
   private String            j2eeLevel_;
   private ResourceContext   resourceContext_;
   
+  private boolean develop_;
+  private boolean assemble_;
   private boolean deploy_;
   private boolean install_;
   private boolean run_;
@@ -64,92 +69,87 @@
 
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {
-    IEnvironment environment = getEnvironment();
-	  
-    // Split up the project and module
-    int index = module_.indexOf("/");
-    if (index!=-1){
-      project_ = module_.substring(0,index);
-      module_ = module_.substring(index+1);
-    }
+	  IStatus status = Status.OK_STATUS;
+	  if (develop_) {
+		  IEnvironment environment = getEnvironment();
 
-    if (ear_!=null && ear_.length()>0)
-    {
-      int earIndex = ear_.indexOf("/");
-      if (earIndex!=-1) {
-        earProject_ = ear_.substring(0,earIndex);
-        ear_ = ear_.substring(earIndex+1);
-      }
-    }
-    
-    
-	  IWebServiceRuntime wsrt   = WebServiceRuntimeExtensionUtils2.getServiceRuntime( serviceRuntimeId_ );
-	  WebServiceInfo     wsInfo = new WebServiceInfo();
+		  // Split up the project and module
+		  int index = module_.indexOf("/");
+		  if (index!=-1){
+			  project_ = module_.substring(0,index);
+			  module_ = module_.substring(index+1);
+		  }
 
-	  wsInfo.setServerFactoryId( typeRuntimeServer_.getServerId() );
-      wsInfo.setServerInstanceId( typeRuntimeServer_.getServerInstanceId());
-	  wsInfo.setState( WebServiceState.UNKNOWN_LITERAL );
-	  wsInfo.setWebServiceRuntimeId( typeRuntimeServer_.getRuntimeId() );
-    
-		webService_  = wsrt.getWebService( wsInfo );
-	
-		//Set up the IContext
-		WebServiceScenario scenario = null;
-    int scenarioInt = WebServiceRuntimeExtensionUtils2.getScenarioFromTypeId(typeRuntimeServer_.getTypeId());
-    if (scenarioInt == WebServiceScenario.BOTTOMUP)
-		{
-			scenario = WebServiceScenario.BOTTOMUP_LITERAL;
-      String impl = (String)(selection_.getSelection())[0];
-      wsInfo.setImplURL(impl);
-		}
-    else if (scenarioInt == WebServiceScenario.TOPDOWN)
-		{
-		  scenario = WebServiceScenario.TOPDOWN_LITERAL;
-      String wsdlURL = (String)(selection_.getSelection())[0];
-      wsInfo.setWsdlURL(wsdlURL);      
-		}
-	
-		context_     = new SimpleContext(true, true, deploy_, install_, run_, client_, test_, publish_, 
-																		scenario, 
-																		resourceContext_.isOverwriteFilesEnabled(),
-																		resourceContext_.isCreateFoldersEnabled(),
-																		resourceContext_.isCheckoutFilesEnabled());
+		  if (ear_!=null && ear_.length()>0)
+		  {
+			  int earIndex = ear_.indexOf("/");
+			  if (earIndex!=-1) {
+				  earProject_ = ear_.substring(0,earIndex);
+				  ear_ = ear_.substring(earIndex+1);
+			  }
+		  }
 
-        IStatus status = Status.OK_STATUS;
 
-        // Create the service module if needed.
-        IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(project_);
-        if (!project.exists())
-        {
-          boolean matches = WebServiceRuntimeExtensionUtils2.doesServiceRuntimeSupportTemplate(serviceRuntimeId_, moduleType_);
-          if (matches)
-          {
-            RequiredFacetVersion[] rfv = WebServiceRuntimeExtensionUtils2.getServiceRuntimeDescriptorById(serviceRuntimeId_).getRequiredFacetVersions();
-            CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
-            command.setProjectName(project_);
-            command.setTemplateId(moduleType_);
-            command.setRequiredFacetVersions(rfv);
-            command.setServerFactoryId(typeRuntimeServer_.getServerId());
-            command.setServerInstanceId(typeRuntimeServer_.getServerInstanceId());
-            status = command.execute( monitor, adaptable );
-            if (status.getSeverity() == Status.ERROR)
-            {
-              environment.getStatusHandler().reportError( status );
-              return status;
-            }        
-          }            
-        }
+		  IWebServiceRuntime wsrt   = WebServiceRuntimeExtensionUtils2.getServiceRuntime( serviceRuntimeId_ );
+		  WebServiceInfo     wsInfo = new WebServiceInfo();
 
-        //The project should now exist. Add facets if needed.        
-        RequiredFacetVersion[] rfvs = WebServiceRuntimeExtensionUtils2.getServiceRuntimeDescriptorById(serviceRuntimeId_).getRequiredFacetVersions();
-        status = FacetUtils.addRequiredFacetsToProject(project, rfvs, monitor);
-        if (status.getSeverity() == Status.ERROR)
-        {
-          environment.getStatusHandler().reportError( status );
-          return status;
-        }                      
+		  wsInfo.setServerFactoryId( typeRuntimeServer_.getServerId() );
+		  wsInfo.setServerInstanceId( typeRuntimeServer_.getServerInstanceId());
+		  wsInfo.setState( WebServiceState.UNKNOWN_LITERAL );
+		  wsInfo.setWebServiceRuntimeId( typeRuntimeServer_.getRuntimeId() );
 
-	  return status;				
+		  webService_  = wsrt.getWebService( wsInfo );
+
+		  //Set up the IContext
+		  WebServiceScenario scenario = null;
+		  int scenarioInt = WebServiceRuntimeExtensionUtils2.getScenarioFromTypeId(typeRuntimeServer_.getTypeId());
+		  if (scenarioInt == WebServiceScenario.BOTTOMUP)
+		  {
+			  scenario = WebServiceScenario.BOTTOMUP_LITERAL;
+			  String impl = (String)(selection_.getSelection())[0];
+			  wsInfo.setImplURL(impl);
+		  }
+		  else if (scenarioInt == WebServiceScenario.TOPDOWN)
+		  {
+			  scenario = WebServiceScenario.TOPDOWN_LITERAL;
+			  String wsdlURL = (String)(selection_.getSelection())[0];
+			  
+			  // check for redirection in the wsdl
+			  HTTPUtility httpUtil = new HTTPUtility();
+			  wsInfo.setWsdlURL(httpUtil.handleRedirect(wsdlURL));      
+		  }
+
+		  context_     = new SimpleContext(develop_, assemble_, deploy_, install_, run_, client_, test_, publish_, 
+				  scenario, 
+				  resourceContext_.isOverwriteFilesEnabled(),
+				  resourceContext_.isCreateFoldersEnabled(),
+				  resourceContext_.isCheckoutFilesEnabled());
+
+		  // Create the service module if needed.
+		  IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(project_);
+		  if (!project.exists())
+		  {
+			  boolean matches = WebServiceRuntimeExtensionUtils2.doesServiceRuntimeSupportTemplate(serviceRuntimeId_, moduleType_);
+			  if (matches)
+			  {
+				  RequiredFacetVersion[] rfv = WebServiceRuntimeExtensionUtils2.getServiceRuntimeDescriptorById(serviceRuntimeId_).getRequiredFacetVersions();
+				  CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
+				  command.setProjectName(project_);
+				  command.setTemplateId(moduleType_);
+				  command.setRequiredFacetVersions(rfv);
+				  command.setServerFactoryId(typeRuntimeServer_.getServerId());
+				  command.setServerInstanceId(typeRuntimeServer_.getServerInstanceId());
+				  status = command.execute( monitor, adaptable );
+				  if (status.getSeverity() == Status.ERROR)
+				  {
+					  environment.getStatusHandler().reportError( status );
+					  return status;
+				  }        
+			  }            
+		  }                    
+	  }
+	  return status;
+
   }
   
   public void setServiceTypeRuntimeServer( TypeRuntimeServer typeRuntimeServer )
@@ -237,10 +237,17 @@
 		install_ = installService;
 	}
 
-  public void setDeployService(boolean deployService)
-    {
-        deploy_ = deployService;
-    }
+	public void setDevelopService(boolean developService) {
+		develop_ = developService;
+	}	
+	
+	public void setAssembleService(boolean assembleService) {
+		assemble_ = assembleService;
+	}
+
+	public void setDeployService(boolean deployService) {
+		deploy_ = deployService;
+	}
   
 	public void setStartService(boolean startService)
 	{
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/plugin/WebServiceCreationUIPlugin.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/plugin/WebServiceCreationUIPlugin.java
index 2a18e14..47b8a0b 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/plugin/WebServiceCreationUIPlugin.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/plugin/WebServiceCreationUIPlugin.java
@@ -1,21 +1,25 @@
 /*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
+ * Copyright (c) 2002, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   115690 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060504   138118 joan@ca.ibm.com - Joan Haggarty
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.creation.ui.plugin;
 
-import java.net.MalformedURLException;
 import java.net.URL;
-import java.text.MessageFormat;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.wst.command.internal.env.core.common.MessageUtils;
 
 
 /**
@@ -61,52 +65,20 @@
   }
 
   /**
-  * Returns the message string identified by the given key from
-  * plugin.properties.
-  * @return The String message.
-  */
-  public static String getMessage ( String key )
-  {
-    MessageUtils msgUtils = new MessageUtils( "org.eclipse.jst.ws.creation.ui.plugin", instance_ );
-    
-    if( key.startsWith("%"))
-    {
-      key = key.substring( 1, key.length() );
-    }
-    
-    return msgUtils.getMessage(key);
-  }
-
-  /**
-  * Returns the message string identified by the given key from
-  * plugin.properties. Substitution sequences in the message string
-  * are replaced by the given array of substitution objects (which
-  * are most frequently strings). See the JDK's
-  * {@link java.text.MessageFormat java.text.MessageFormat}
-  * class for further details on substitution.
-  * @return The String message.
-  */
-  public static String getMessage ( String key, Object[] args )
-  {
-    return MessageFormat.format(getMessage(key),args);
-  }
-
-  /**
-  * Returns an image descriptor for the named resource
-  * as relative to the plugin install location.
-  * @return An image descriptor, possibly null.
-  */
-  public static ImageDescriptor getImageDescriptor ( String name )
-  {
-    try
-    {
-      URL installURL = instance_.getBundle().getEntry("/");
-      URL imageURL = new URL(installURL,name);
-      return ImageDescriptor.createFromURL(imageURL);
-    }
-    catch (MalformedURLException e)
-    {
-      return null;
-    }
-  }
+   * Returns an image descriptor for the named resource
+   * as relative to the plugin install location.
+   * @return An image descriptor, possibly null.
+   */
+   public static ImageDescriptor getImageDescriptor ( String name )
+   {
+ 	try
+     {	
+     	URL imageURL = FileLocator.find(instance_.getBundle(), new Path("$nl$/"+name), null);
+     	return ImageDescriptor.createFromURL(imageURL);
+     }
+     catch (Exception e)
+     {
+       return null;
+     }
+   }
 }
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/preferences/ScenarioDefaultsPreferencePage.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/preferences/ScenarioDefaultsPreferencePage.java
index 0e63014..34e09f1 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/preferences/ScenarioDefaultsPreferencePage.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/preferences/ScenarioDefaultsPreferencePage.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060417   136391 joan@ca.ibm.com - Joan Haggarty
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.creation.ui.preferences;
 
@@ -53,6 +54,7 @@
                                        } );      
 	  initializeValues();
 	  serverWidget_.disableNonPreferenceWidgets();
+	  applyDialogFont(page);
 	  return page;
 	}
 
@@ -75,6 +77,7 @@
       serverWidget_.setInstallClient( new Boolean(context.getInstallClient()) );
       serverWidget_.setStartService( new Boolean(context.getStartWebService()) );
       serverWidget_.setTestService( new Boolean(context.getTestWebService()) );
+      serverWidget_.setTestClient( new Boolean(context.getTestWebService()) );
       serverWidget_.setMonitorService(new Boolean(context.getMonitorWebService()));
       serverWidget_.setServiceGeneration(context.getGenerateWebService());  //jvh      
       serverWidget_.setClientGeneration(context.getGenerateClient());  //jvh
@@ -108,6 +111,7 @@
       serverWidget_.setInstallClient( new Boolean(context.getInstallClientDefault()) );
       serverWidget_.setStartService( new Boolean(context.getStartWebServiceDefault()) );
       serverWidget_.setTestService( new Boolean(context.getTestWebServiceDefault()) );
+      serverWidget_.setTestClient( new Boolean(context.getTestWebServiceDefault()) );
       serverWidget_.setMonitorService(new Boolean(context.getMonitorWebServiceDefault()));
       serverWidget_.setServiceGeneration(context.getGenerateWebServiceDefault()); //jvh
       serverWidget_.setClientGeneration(context.getGenerateClientDefault()); //jvh
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/server/StartServerWidgetFactory.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/server/StartServerWidgetFactory.java
index 942845f..fcf2f83 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/server/StartServerWidgetFactory.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/server/StartServerWidgetFactory.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.creation.ui.server;
@@ -29,7 +32,7 @@
   {
     IServer server = null;
     
-    if( webservice_ != null && context_.getInstall())
+    if( webservice_ != null && context_.getRun())
     {
       server = ServerCore.findServer(webservice_.getWebServiceInfo().getServerInstanceId() );
     }
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidget.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidget.java
index 672124a..f0df662 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidget.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidget.java
@@ -17,28 +17,59 @@
  * 20060411   136167 kathy@ca.ibm.com - Kathy Chan
  * 20060417   136390/136391/136159 joan@ca.ibm.com - Joan Haggarty
  * 20060413   135581 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   136158 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   136705 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   136182 kathy@ca.ibm.com - Kathy Chan
+ * 20060420   137820 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060420   135912 joan@ca.ibm.com - Joan Haggarty
+ * 20060421   136761 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060424   138052 kathy@ca.ibm.com - Kathy Chan
+ * 20060425   137831 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060426   138519 joan@ca.ibm.com - Joan Haggarty
+ * 20060427   138058 joan@ca.ibm.com - Joan Haggarty
+ * 20060504   138035 joan@ca.ibm.com - Joan Haggarty
+ * 20060524   142276 joan@ca.ibm.com - Joan Haggarty
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060605   145081 joan@ca.ibm.com - Joan Haggarty
+ * 20060607   144826 joan@ca.ibm.com - Joan Haggarty
+ * 20060607   144049 joan@ca.ibm.com - Joan Haggarty
+ * 20060614   146270 joan@ca.ibm.com - Joan Haggarty
+ * 20060616   147317 joan@ca.ibm.com - Joan Haggarty
+ * 20060717   150577 makandre@ca.ibm.com - Andrew Mak
+ * 20060726   150865 sengpl@ca.ibm.com -  Seng Phung-Lu
+ * 20060803   152486 makandre@ca.ibm.com - Andrew Mak, Typing WSDL in Service definition field is very slow
+ * 20060817   140017 makandre@ca.ibm.com - Andrew Mak, longer project or server/runtime strings do not resize wizard
+ * 20060825   135570 makandre@ca.ibm.com - Andrew Mak, Service implementation URL not displayed properly on first page
+ * 20060829   155441 makandre@ca.ibm.com - Andrew Mak, web service wizard hangs during resize
+ * 20060830   155114 pmoogk@ca.ibm.com - Peter Moogk, Updated patch for this defect.
+ * 20060831   155441 makandre@ca.ibm.com - Andrew Mak, Small tweak for this bug
+ * 20061003   159142 kathy@ca.ibm.com - Kathy Chan
+ * 20061212   164177 makandre@ca.ibm.com - Andrew Mak, Incorrect validation error complaining about runtime not supporting a project type
+ * 20061212   159911 makandre@ca.ibm.com - Andrew Mak, changing service definition resets some configuration fields
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.creation.ui.widgets;
 
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.window.Window;
-import org.eclipse.jst.ws.internal.common.ResourceUtils;
-import org.eclipse.jst.ws.internal.consumption.common.FacetUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.consumption.ui.common.DefaultingUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.common.ValidationUtils;
+import org.eclipse.jst.ws.internal.consumption.ui.plugin.WebServiceConsumptionUIPlugin;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.IObjectSelectionLaunchable;
+import org.eclipse.jst.ws.internal.consumption.ui.widgets.IPackable;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.ProjectSelectionDialog;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.WebServiceClientTypeWidget;
+import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.IObjectSelectionWidget;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.ObjectSelectionOutputCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.ObjectSelectionRegistry;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.ObjectSelectionWidget;
+import org.eclipse.jst.ws.internal.consumption.ui.widgets.object.Timer;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.ProjectSelectionWidget;
 import org.eclipse.jst.ws.internal.consumption.ui.wizard.RuntimeServerSelectionDialog;
 import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceImpl;
@@ -52,9 +83,17 @@
 import org.eclipse.jst.ws.internal.ui.common.UIUtils;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.accessibility.Accessible;
+import org.eclipse.swt.accessibility.AccessibleAdapter;
+import org.eclipse.swt.accessibility.AccessibleControlAdapter;
+import org.eclipse.swt.accessibility.AccessibleControlEvent;
+import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -66,12 +105,13 @@
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Scale;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.forms.HyperlinkGroup;
 import org.eclipse.ui.forms.HyperlinkSettings;
 import org.eclipse.ui.forms.events.HyperlinkEvent;
 import org.eclipse.ui.forms.events.IHyperlinkListener;
 import org.eclipse.ui.forms.widgets.Hyperlink;
-import org.eclipse.ui.internal.Workbench;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.command.internal.env.core.context.ResourceContext;
 import org.eclipse.wst.command.internal.env.ui.widgets.PageInfo;
@@ -82,7 +122,7 @@
 import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
 import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
 
-public class ServerWizardWidget extends SimpleWidgetDataContributor {
+public class ServerWizardWidget extends SimpleWidgetDataContributor implements Runnable, IPackable {
 	
 	//INFOPOPS
     /* CONTEXT_ID WSWSCEN0001 for the Scenario Page */
@@ -108,7 +148,9 @@
 	 
 	private ScaleSelectionListener scaleSelectionListener = new ScaleSelectionListener();
 	private Listener statusListener_;
+	private ModifyListener objectModifyListener_ ;
 	private int validationState_;
+	boolean validObjectSelection_ = true;
 
 	private ImageRegistry imageReg_;
 	
@@ -118,9 +160,12 @@
 	private String serviceEarProjectName_;
 	private String serviceComponentType_;
 	private WebServicesParser parser_;
-	private String serviceRuntimeId_;
 	private boolean needEar_;
 		 
+	private boolean developService_;
+	private boolean assembleService_;
+	private boolean deployService_;
+	
 	private IStructuredSelection objectSelection_;
 	private Boolean testService_;
 	private Boolean startService_;
@@ -130,7 +175,7 @@
 	private boolean preferencesPage_;
 
 	private Composite groupComposite_;
-	private Composite hCompService_;
+	private Composite hCompService_;	
 	private WebServiceClientTypeWidget clientWidget_;
     private Label serviceLabel_;
 	private Combo webserviceType_;
@@ -152,6 +197,12 @@
 	
 	private ResourceContext resourceContext_;
 	
+	private Timer timer_ = null;
+		
+	private UIUtils utils_ = new UIUtils("org.eclipse.jst.ws.creation.ui");
+	
+	private boolean forceRefreshRuntime = false;
+	
 	private String GRAPHIC_SERVICE_0="icons/service_test.jpg"; //$NON-NLS-N$
 	private String GRAPHIC_SERVICE_1="icons/service_run.jpg";  //$NON-NLS-N$
 	private String GRAPHIC_SERVICE_2="icons/service_install.jpg"; //$NON-NLS-N$
@@ -183,17 +234,65 @@
 		validationState_ = ValidationUtils.VALIDATE_ALL;
 	}
 	
+	private Composite serviceComposite_;
+	
+	/**
+	 * Run this ServerWizardWidget, which validates the entry field values.
+	 */
+	public void run() {
+		
+		// do minimal check here, this call will determine if we at least
+		// have a "validObjectSelection_"
+		checkServiceImplTextStatus();
+		
+		if (validObjectSelection_)
+		{
+			boolean refreshRuntime = (getWebServiceScenario() != WebServiceScenario.TOPDOWN); 
+			
+			if (objectSelectionWidget_ instanceof IObjectSelectionLaunchable)
+		       {
+				IObjectSelectionLaunchable launchable = (IObjectSelectionLaunchable)objectSelectionWidget_;
+				callObjectTransformation(launchable.getObjectSelection(), launchable.getProject(), launchable.getComponentName(), refreshRuntime);								
+		       }
+			else 
+			{
+				IObjectSelectionWidget widget = (IObjectSelectionWidget)objectSelectionWidget_;
+				callObjectTransformation(widget.getObjectSelection(), widget.getProject(), widget.getComponentName(), refreshRuntime);
+		    }	
+		}
+		else
+			setObjectSelection(null);
+		
+		// do full validation after all transformations and calculations have occurred
+		validationState_ = ValidationUtils.VALIDATE_ALL;
+		statusListener_.handleEvent(null);		
+	}
+	
+	/**
+	 * Pack this widget and the client-side widget as well. 
+	 */
+	private void packSelf() {
+		// don't need to call packIt(), since clientWidget_ has a callback to packIt() already.
+		clientWidget_.packIt();
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.consumption.ui.widgets.IPackable#packIt()
+	 */
+	public void packIt() {		
+		groupComposite_.pack(true);
+		utils_.horizontalResize(groupComposite_.getShell(), groupComposite_, UIUtils.DEFAULT_PADDING);
+	}
+	
 	public WidgetDataEvents addControls(Composite parent,
 			Listener statusListener) {
-		
-		String createPluginId = "org.eclipse.jst.ws.creation.ui";
-		UIUtils utils = new UIUtils(createPluginId);
+				
 		statusListener_ = statusListener;
-		utils.createInfoPop(parent, INFOPOP_WSWSCEN_PAGE);
+		utils_.createInfoPop(parent, INFOPOP_WSWSCEN_PAGE);
 		
-		Composite typeComposite = utils.createComposite(parent, 3);
+		Composite typeComposite = utils_.createComposite(parent, 3);
 
-		webserviceType_ = utils.createCombo(typeComposite,
+		webserviceType_ = utils_.createCombo(typeComposite,
 				ConsumptionUIMessages.LABEL_WEBSERVICETYPE,
 				ConsumptionUIMessages.TOOLTIP_PWPR_COMBO_TYPE,
 				INFOPOP_WSWSCEN_COMBO_SERVICETYPE, SWT.SINGLE | SWT.BORDER
@@ -206,12 +305,62 @@
 			public void widgetDefaultSelected(SelectionEvent e) {}
 			
 			public void widgetSelected(SelectionEvent e) {
-			   objectSelectionWidget_ = getSelectionWidget();
+				String oldTypeId = ids_.getTypeId();
+				int currentSelectionIdx = webserviceType_.getSelectionIndex();
+				String currentTypeId = labelIds_.getIds_()[currentSelectionIdx];
+				int oldScenario = WebServiceRuntimeExtensionUtils2.getScenarioFromTypeId(oldTypeId);
+				int currentScenario = WebServiceRuntimeExtensionUtils2.getScenarioFromTypeId(currentTypeId);
+				if (!oldTypeId.equals(currentTypeId)) {					
+					ids_.setTypeId(currentTypeId);
+
+			      objectSelectionWidget_ = getSelectionWidget();
+					// change the label for the service
+					// implementation/definition based on the web service type
+					handleTypeChange();					
+
+					// After bug 159911, we will not refresh the runtime in TOPDOWN scenario unless we absolutely
+					// have to.  Therefore, if we are switching from another scenario type, we should check if the 
+					// current selections are valid for this TOPDOWN scenario, if not, try to pick a more suitable 
+					// runtime.
+					if (currentScenario == WebServiceScenario.TOPDOWN) {
+						validationState_ = ValidationUtils.VALIDATE_SERVER_RUNTIME_CHANGES;
+						
+						// this will force a refresh the next time the wsdl is changed
+						forceRefreshRuntime = !checkErrorStatus().isOK();
+					}
+					
+					//if the web service type change is from one top-down type to another
+					//top-down type leave the object selection field in tact and refresh
+					//the server/runtime project defaulting.
+					//Otherwise clear the object selection field since it's value is not valid anymore
+					if (oldScenario==WebServiceScenario.TOPDOWN && currentScenario==WebServiceScenario.TOPDOWN)						
+					{
+						// if switching from one TOPDOWN scenario to another TOPDOWN scenario and
+						// we've determined that the current runtime selection is not suitable, we 
+						// can refresh the runtime now (don't need to wait for the next time the
+						// wsdl is changed).
+						if (forceRefreshRuntime) {
+							refreshServerRuntimeSelection();
+							forceRefreshRuntime = false;
+						}
+					}
+					else
+					{
+						//clear the object selection field
+						// serviceImpl may be null if on the preferences page
+						if (serviceImpl_ != null)
+						{
+							serviceImpl_.removeModifyListener(objectModifyListener_);
+							serviceImpl_.setText("");
+							setObjectSelection(null);
+							serviceImpl_.addModifyListener(objectModifyListener_);
+						}						   
+					}					
 			   validationState_ = ValidationUtils.VALIDATE_ALL;
-			   statusListener_.handleEvent(null);
-			   //change the label for the service implementation/definition based on the web service type
-			   handleTypeChange();
+			   statusListener_.handleEvent(null);			   
+					
 			}
+		  }
 			
 		});
 		
@@ -223,16 +372,30 @@
 			serviceLabel_.setText(ConsumptionUIMessages.LABEL_WEBSERVICEIMPL);
 			serviceLabel_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_TEXT_IMPL);
 
-			serviceImpl_ = new Text(typeComposite, SWT.LEFT | SWT.BORDER | SWT.READ_ONLY);
+			serviceImpl_ = new Text(typeComposite, SWT.LEFT | SWT.BORDER );
 			GridData griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);		    
 			serviceImpl_.setLayoutData( griddata );
 			serviceImpl_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_TEXT_IMPL);
-			utils.createInfoPop(serviceImpl_, INFOPOP_WSWSCEN_TEXT_SERVICE_IMPL);
+			utils_.createInfoPop(serviceImpl_, INFOPOP_WSWSCEN_TEXT_SERVICE_IMPL);
+			
+			objectModifyListener_ = new ModifyListener(){
+				public void modifyText(ModifyEvent e) {
+				    if (serviceImpl_.getText().indexOf(':') > 0) {
+				        timer_ = Timer.newInstance(timer_, Display.getCurrent(), ServerWizardWidget.this);
+				        timer_.startTimer();
+				    }
+				    else
+				        run();
+				}
+			};
+			
+			serviceImpl_.addModifyListener(objectModifyListener_);
 
-			browseButton_ = utils.createPushButton(typeComposite,
+			browseButton_ = utils_.createPushButton(typeComposite,
 					ConsumptionUIMessages.BUTTON_BROWSE, ConsumptionUIMessages.TOOLTIP_WSWSCEN_BUTTON_BROWSE_IMPL, null);
 
-			browseDialog_ = new ServiceImplSelectionDialog(Workbench.getInstance().getActiveWorkbenchWindow().getShell(), 
+			IWorkbench workbench = PlatformUI.getWorkbench();
+			browseDialog_ = new ServiceImplSelectionDialog(workbench.getActiveWorkbenchWindow().getShell(), 
 					new PageInfo(ConsumptionUIMessages.DIALOG_TITILE_SERVICE_IMPL_SELECTION, "", 
 							new WidgetContributorFactory()
 					{	
@@ -252,23 +415,34 @@
 		gclayout.marginHeight=0;		
 		gclayout.marginBottom=5;
 		groupComposite_.setLayout( gclayout );
-	    GridData gcGridData = new GridData(SWT.BEGINNING, SWT.BEGINNING, true, true); 
-	    groupComposite_.setLayoutData(gcGridData);
-		
-		Composite serviceComposite =  new Composite(groupComposite_, SWT.NONE);
+	    GridData gcGridData = new GridData(SWT.BEGINNING, SWT.BEGINNING, true, true);
+	    groupComposite_.setLayoutData(gcGridData);		
+	    
+	    groupComposite_.addControlListener(new ControlListener()
+		{
+			public void controlMoved(ControlEvent e) {
+				// TODO Auto-generated method stub
+				
+			}
+			public void controlResized(ControlEvent e) {
+				groupComposite_.pack(true);				
+			}
+		});
+	    
+		serviceComposite_ =  new Composite(groupComposite_, SWT.NONE);
 		GridLayout gridlayout   = new GridLayout();
 	    gridlayout.numColumns   = 2;
 	    gridlayout.horizontalSpacing=0;
 	    gridlayout.marginHeight=0;
-	    serviceComposite.setLayout( gridlayout );
-	    GridData scGridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
-	    serviceComposite.setLayoutData(scGridData);    
+	    serviceComposite_.setLayout( gridlayout );
+	    GridData scGridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+	    serviceComposite_.setLayoutData(scGridData);    
 	    
-		serviceComposite.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_SERVICE);
+		serviceComposite_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_SERVICE);
 	
 		
-		serviceScale_ = new Scale(serviceComposite, SWT.VERTICAL | SWT.BORDER | SWT.CENTER);
-	    utils.createInfoPop(serviceScale_, INFOPOP_WSWSCEN_SCALE_SERVICE);
+		serviceScale_ = new Scale(serviceComposite_, SWT.VERTICAL | SWT.BORDER);
+	    utils_.createInfoPop(serviceScale_, INFOPOP_WSWSCEN_SCALE_SERVICE);
 		serviceScale_.setMinimum(0);
 		serviceScale_.setMaximum(6);
 		serviceScale_.setIncrement(1);
@@ -276,16 +450,55 @@
 		serviceScale_.setSelection(getServiceGeneration());
 		serviceScale_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_SERVICE);
 		
+		Accessible accessibleScale = serviceScale_.getAccessible();
+		accessibleScale.addAccessibleListener(new AccessibleAdapter(){
+			//	return a string that describes what to do with the slider
+			//  this is read by the screen reader when the slider first gets focus
+			public void getName(AccessibleEvent e) {
+				e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_SERVICE;			
+			}			
+		});
+		accessibleScale.addAccessibleControlListener(new AccessibleControlAdapter(){
+			// return a meaningful string when the screen reader
+			// attempts to get the value from the service scale
+			public void getValue(AccessibleControlEvent e) {
+				int selection = serviceScale_.getSelection();
+				switch (selection) {
+				case 0:
+					e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_TEST;
+					break;
+				case 1:
+					e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_RUN;
+					break;
+				case 2:
+					e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_INSTALL;
+					break;
+				case 3:
+					e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_DEPLOY;
+					break;
+				case 4:
+					e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_ASSEMBLE;
+					break;
+				case 5:					
+				case 6:
+					e.result = ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_DEVELOP;
+					break;
+				default:
+					break;
+				}								
+			}
+		});	
+		
 		GridData layoutData1 = new GridData();
-		layoutData1.horizontalAlignment=SWT.BEGINNING;
+		layoutData1.horizontalAlignment=SWT.CENTER;
 		layoutData1.verticalAlignment = SWT.BEGINNING;
 		Rectangle scaleR = (imageReg_.get(ICON_SCALE_BG_0)).getBounds();
 		layoutData1.heightHint=scaleR.height;
-		layoutData1.widthHint=scaleR.width;
+		layoutData1.widthHint=scaleR.width+1;
 		serviceScale_.setLayoutData(layoutData1);		
 		
-		topologySpot_ = new Label(serviceComposite, SWT.BORDER | SWT.TOP );
-		topologySpot_.setBackground(new Color(Display.getCurrent(), 255, 255, 255));
+		topologySpot_ = new Label(serviceComposite_, SWT.BORDER | SWT.TOP );
+		topologySpot_.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
 		topologySpot_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_SERVICE);
 		
 		GridData layoutData2 = new GridData();		
@@ -298,24 +511,24 @@
 				
 		setGraphics(getServiceGeneration());
 		
-		hCompService_ = utils.createComposite(groupComposite_, 1);
+		hCompService_ = utils_.createComposite(groupComposite_, 1);
 		
 		Label serviceDetailsLabel = new Label(hCompService_, SWT.NONE);
 		serviceDetailsLabel.setText(ConsumptionUIMessages.LABEL_SUMMARY);
 		
 		hLinkServiceServer_= new Hyperlink(hCompService_, SWT.NULL);
-		utils.createInfoPop(hLinkServiceServer_, INFOPOP_WSWSCEN_HYPERLINK_SERVER);
+		utils_.createInfoPop(hLinkServiceServer_, INFOPOP_WSWSCEN_HYPERLINK_SERVER);
 		hLinkServiceServer_.setToolTipText(ConsumptionUIMessages.TOOLTIP_PWRS_TEXT_SERVER);
 		hLinkServiceServer_.addHyperlinkListener(new IHyperlinkListener(){
 			public void linkActivated(HyperlinkEvent e){				
-				launchRuntimeSelectionDialog(false);				
+				launchRuntimeSelectionDialog(false, true);				
 			}
 			public void linkEntered(HyperlinkEvent e){}
 			public void linkExited(HyperlinkEvent e){}			
 		});
 
 		hLinkServiceRuntime_ = new Hyperlink(hCompService_, SWT.NULL);
-		utils.createInfoPop(hLinkServiceRuntime_, INFOPOP_WSWSCEN_HYPERLINK_RUNTIME);
+		utils_.createInfoPop(hLinkServiceRuntime_, INFOPOP_WSWSCEN_HYPERLINK_RUNTIME);
 		hLinkServiceRuntime_.setToolTipText(ConsumptionUIMessages.TOOLTIP_PWRS_TEXT_RUNTIME);
 		hLinkServiceRuntime_.addHyperlinkListener(new IHyperlinkListener(){
 			public void linkActivated(HyperlinkEvent e){
@@ -325,7 +538,8 @@
 			public void linkExited(HyperlinkEvent e){}			
 		});
 		
-		projectDialog_ = new ProjectSelectionDialog(Workbench.getInstance().getActiveWorkbenchWindow().getShell(), 
+		IWorkbench workbench = PlatformUI.getWorkbench();
+		projectDialog_ = new ProjectSelectionDialog(workbench.getActiveWorkbenchWindow().getShell(), 
 				new PageInfo(ConsumptionUIMessages.DIALOG_TITILE_SERVICE_PROJECT_SETTINGS, "", 
                         new WidgetContributorFactory()
   						{	
@@ -336,7 +550,7 @@
   						}));
 		
 		hLinkServiceProject_= new Hyperlink(hCompService_, SWT.NULL);
-		utils.createInfoPop(hLinkServiceRuntime_, INFOPOP_WSWSCEN_HYPERLINK_PROJECTS);
+		utils_.createInfoPop(hLinkServiceRuntime_, INFOPOP_WSWSCEN_HYPERLINK_PROJECTS);
 		hLinkServiceProject_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SERVICEPROJECT_LINK);
 		hLinkServiceProject_.addHyperlinkListener(new IHyperlinkListener(){
 			public void linkActivated(HyperlinkEvent e){
@@ -347,7 +561,7 @@
 		});
 		
 		hLinkServiceEAR_= new Hyperlink(hCompService_, SWT.NULL);
-		utils.createInfoPop(hLinkServiceRuntime_, INFOPOP_WSWSCEN_HYPERLINK_PROJECTS);
+		utils_.createInfoPop(hLinkServiceRuntime_, INFOPOP_WSWSCEN_HYPERLINK_PROJECTS);
 		hLinkServiceEAR_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SERVICEPROJECT_LINK);
 		hLinkServiceEAR_.addHyperlinkListener(new IHyperlinkListener(){
 			public void linkActivated(HyperlinkEvent e){
@@ -370,34 +584,35 @@
 		serverRuntimeGroup.add(hLinkServiceEAR_);
 		serverRuntimeGroup.setHyperlinkUnderlineMode(HyperlinkSettings.UNDERLINE_ALWAYS);
     
-		utils.createHorizontalSeparator(parent, 1);		
+		utils_.createHorizontalSeparator(parent, 1);		
 		
 		// Add client widgets...
 		clientWidget_ = new WebServiceClientTypeWidget(false);
 	    clientWidget_.addControls(parent, statusListener );
+	    clientWidget_.setPackable(this);
 	    clientWidget_.enableClientSlider(serviceScale_.getSelection()<=ScenarioContext.WS_START);
 		
 		// Advanced buttons section
-		utils.createHorizontalSeparator(parent, 3);
+		utils_.createHorizontalSeparator(parent, 3);
 		
-		Composite advancedButtonPanel = utils.createComposite(parent, 1);
+		Composite advancedButtonPanel = utils_.createComposite(parent, 1);
 		
-		publishButton_ = utils.createCheckbox(advancedButtonPanel,
+		publishButton_ = utils_.createCheckbox(advancedButtonPanel,
 				ConsumptionUIMessages.BUTTON_WSWSCEN_PUBLISH, ConsumptionUIMessages.TOOLTIP_PWPR_CHECKBOX_LAUNCH_WS, INFOPOP_WSWSCEN_CHECKBOX_LAUNCH_WS);		
-		monitorButton_ = utils.createCheckbox(advancedButtonPanel,
+		monitorButton_ = utils_.createCheckbox(advancedButtonPanel,
 				ConsumptionUIMessages.CHECKBOX_MONITOR_WEBSERVICE, ConsumptionUIMessages.TOOLTIP_PWPR_CHECKBOX_MONITOR_SERVICE, INFOPOP_WSWSCEN_CHECKBOX_MONITOR_SERVICE);
 
 		if (displayPreferences_ && getResourceContext().isOverwriteFilesEnabled()) {
-			utils.createHorizontalSeparator(parent, 1);			
-			Composite prefButtonPanel = utils.createComposite(parent, 1);
-			overwriteButton_ = utils.createCheckbox(prefButtonPanel,
+			utils_.createHorizontalSeparator(parent, 1);			
+			Composite prefButtonPanel = utils_.createComposite(parent, 1);
+			overwriteButton_ = utils_.createCheckbox(prefButtonPanel,
 					ConsumptionUIMessages.CHECKBOX_OVERWRITE_FILES, ConsumptionUIMessages.TOOLTIP_WSWSCEN_BUTTON_OVERWRITE_FILES, INFOPOP_WSWSCEN_CHECKBOX_OVERWRITE);
 			overwriteButton_.setSelection(getResourceContext()
 					.isOverwriteFilesEnabled());
 		}
 
 		return this;
-	}
+	}	
 	
 	private void launchProjectDialog()
 	{
@@ -427,23 +642,43 @@
 				setServiceProjectName(newProjectName);
 				setServiceEarProjectName(newEarProjectName);
 				setServiceComponentType(newProjectType);
-				setServiceNeedEAR(newNeedEar);
-				validationState_ = ValidationUtils.VALIDATE_PROJECT_CHANGES;
+				setServiceNeedEAR(newNeedEar);				
+				validationState_ = (new ValidationUtils()).getNewValidationState(validationState_, ValidationUtils.VALIDATE_PROJECT_CHANGES);
 				statusListener_.handleEvent(null);
 			}
+			
+			/*check to see if text has changed for project and EAR
+			if so, repaint links */
+			if (!newProjectName.equals(currentProjectName))
+			{
+				hLinkServiceProject_.pack(true);
+				packSelf();	 
+			}
+			if (!newEarProjectName.equals(currentEarProjectName))
+			{
+				hLinkServiceEAR_.pack(true);
+				packSelf();	  					
+			}
 		}
 	}
-	
+		
 	private void launchRuntimeSelectionDialog(boolean clientContext)
 	{
+		launchRuntimeSelectionDialog(clientContext, false);
+	}
+		
+	private void launchRuntimeSelectionDialog(boolean clientContext, boolean selectServerFirst) 	
+	{	
 		byte mode = clientContext ? (byte)1 : (byte)0;
 		
 		//TODO: jvh - investigate - don't think j2ee version shouldn't be hard coded (last parm) 
 		//  question - where to pick it up from?
 		//Remember the current values
 		TypeRuntimeServer currentServiceTRS = getServiceTypeRuntimeServer();
+		IWorkbench workbench = PlatformUI.getWorkbench();
 		RuntimeServerSelectionDialog rssd = new RuntimeServerSelectionDialog(
-				Workbench.getInstance().getActiveWorkbenchWindow().getShell(), mode, currentServiceTRS, "14");	
+				workbench.getActiveWorkbenchWindow().getShell(), mode, currentServiceTRS, "14");	
+		rssd.setSelectServerFirst(selectServerFirst);		
 		int result = rssd.open();		
 		if (result == Window.OK)
 		{
@@ -451,8 +686,8 @@
 			if (!currentServiceTRS.equals(newServiceTRS))
 			{
 				setServiceTypeRuntimeServer(newServiceTRS);	
-				refreshClientServerRuntimeSelection();		
-				validationState_ = ValidationUtils.VALIDATE_SERVER_RUNTIME_CHANGES;
+				refreshClientServerRuntimeSelection();	
+				validationState_ = (new ValidationUtils()).getNewValidationState(validationState_, ValidationUtils.VALIDATE_SERVER_RUNTIME_CHANGES);
 				clientWidget_.setValidationState(ValidationUtils.VALIDATE_SERVER_RUNTIME_CHANGES);
 				statusListener_.handleEvent(null); //Revalidate the page since server/runtime selections changed.
 			}
@@ -475,12 +710,51 @@
 	public Boolean getInstallClient() {		
 		return clientWidget_.getInstallClient();
 	}
+	
+	public void setStartClient(Boolean startClient) {
+		clientWidget_.setStartClient( startClient );
+	}
 
-	private void handleTypeChange()
+	public Boolean getStartClient() {		
+		return clientWidget_.getStartClient();
+	}
+	
+	public void setTestClient(Boolean testClient) {
+		clientWidget_.setTestClient( testClient );
+	}
+
+	public Boolean getTestClient() {		
+		return clientWidget_.getTestClient();
+	}
+	
+	public void setDevelopClient(boolean develop) {
+		clientWidget_.setDevelopClient( develop );
+	}
+
+	public boolean getDevelopClient() {		
+		return clientWidget_.getDevelopClient();
+	}
+	
+	public void setAssembleClient(boolean assemble) {
+		clientWidget_.setAssembleClient( assemble );
+	}
+
+	public boolean getAssembleClient() {		
+		return clientWidget_.getAssembleClient();
+	}
+	
+	public void setDeployClient(boolean deploy) {
+		clientWidget_.setDeployClient( deploy );
+	}
+
+	public boolean getDeployClient() {		
+		return clientWidget_.getDeployClient();
+	}
+
+private void handleTypeChange()
 	{
-		   int index = webserviceType_.getSelectionIndex();	
-		   String typeId = labelIds_.getIds_()[index];
-		   int scenario = WebServiceRuntimeExtensionUtils2.getScenarioFromTypeId(typeId);
+		if (!preferencesPage_) {
+		   int scenario = getWebServiceScenario();
 		   
 		   if (scenario == WebServiceScenario.BOTTOMUP)
 		   {
@@ -490,7 +764,8 @@
 		   {
 			   serviceLabel_.setText(ConsumptionUIMessages.LABEL_WEBSERVICEDEF);
 		   }
-     }
+		}
+	}
 
 	public void setServiceTypeRuntimeServer(TypeRuntimeServer ids) {
 		LabelsAndIds labelIds = WebServiceRuntimeExtensionUtils2
@@ -515,24 +790,89 @@
 		
 		if (ids_ != null)
 		{
-			String serviceServerText = WebServiceRuntimeExtensionUtils2.getServerLabelById(ids_.getServerId());
+			String serviceServerText = "";
+			String serverId = ids_.getServerId();
+			if (serverId != null && serverId.length()>0)
+			{
+			  serviceServerText = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverId);
+			}
 			String serviceRuntimeText = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById(ids_.getRuntimeId());
-			hLinkServiceServer_.setText(SERVICE_SERVER_PREFIX + " " + serviceServerText);
-			hLinkServiceRuntime_.setText(SERVICE_RUNTIME_PREFIX + " " + serviceRuntimeText);
-			groupComposite_.pack(true);
+			
+			String currentServerText = hLinkServiceServer_.getText();
+			String currentRuntimeText = hLinkServiceRuntime_.getText();
+			String newServerText = SERVICE_SERVER_PREFIX + " " + serviceServerText;
+			String newRuntimeText = SERVICE_RUNTIME_PREFIX + " " + serviceRuntimeText;
+			hLinkServiceServer_.setText(newServerText);
+			hLinkServiceRuntime_.setText(newRuntimeText);		
+			
+			/*check to see if text has changed for server or runtime
+			if so, repaint links */
+			if (!newServerText.equals(currentServerText))
+			{
+				hLinkServiceServer_.pack(true);
+				packSelf();
+			}			
+			
+			if (!newRuntimeText.equals(currentRuntimeText))
+			{
+				hLinkServiceRuntime_.pack(true);
+				packSelf();
+			} 
 		}				
 		labelIds_ = labelIds;
 		handleTypeChange();
 		
 		if (projectDialog_ != null)
 			projectDialog_.setTypeRuntimeServer(ids_);
+		
+		
+		//When the server changes, the state of needEar could change.
+		//If the the server change results in a change in the state of needEar,
+		//update needEar and serviceEarProjectName.
+		ValidationUtils vu = new ValidationUtils();
+		boolean oldNeedEar = getServiceNeedEAR();
+		boolean serviceProjectOrProjectTypeNeedsEar;
+
+		if (!oldNeedEar)
+		{
+			//If an EAR was not needed previously it could have been because of the project/project type or the server.
+			//If it was because of the project/project type, changing the server should have no impact
+			//on the state of needEar.
+			serviceProjectOrProjectTypeNeedsEar = vu.projectOrProjectTypeNeedsEar(getServiceProjectName(), getServiceComponentType());
+		}
+		else
+		{
+			serviceProjectOrProjectTypeNeedsEar = true;
+		}
+		
+		//boolean serviceProjectOrProjectTypeNeedsEar = vu.projectOrProjectTypeNeedsEar(getServiceProjectName(), getServiceComponentType());
+		if (serviceProjectOrProjectTypeNeedsEar)
+		{
+			//Could not rule out need for an Ear from the project/project type so changing the server
+			//may impact the need for an Ear.
+
+			boolean currentServiceServerNeedsEar = vu.serverNeedsEAR(getServiceTypeRuntimeServer().getServerId());
+			if (oldNeedEar != currentServiceServerNeedsEar)
+			{
+				//Update needEar and serviceEarProjectName.
+				if (currentServiceServerNeedsEar)
+				{
+					//Calculate a reasonable default for the Ear project name
+					String earProjectName = DefaultingUtils.getDefaultEARProjectName(getServiceProjectName());
+					setServiceNeedEAR(currentServiceServerNeedsEar);
+					setServiceEarProjectName(earProjectName);
+				}
+				else
+				{
+					setServiceNeedEAR(currentServiceServerNeedsEar);
+					setServiceEarProjectName("");					
+				}
+				
+			}
+		}		
 	}
 
 	public TypeRuntimeServer getServiceTypeRuntimeServer() {
-		int selectionIndex = webserviceType_.getSelectionIndex();
-
-		ids_.setTypeId(labelIds_.getIds_()[selectionIndex]);
-
 		return ids_;
 	}
 
@@ -540,11 +880,13 @@
 	{
 		serviceScale_.setSelection(value);
 		setGraphics(value);
-		setTestService(new Boolean(value <= ScenarioContext.WS_TEST));
-		setInstallService(new Boolean(value <= ScenarioContext.WS_INSTALL));
-		setStartService(new Boolean(value <= ScenarioContext.WS_START));
+		
 		//enable client widget based on service scale setting
 		clientWidget_.enableClientSlider(value<=ScenarioContext.WS_START);
+		
+		/*for popup case need to make sure that the UI is refreshed based on 
+		changes to data*/
+		packSelf();
 	}	
 
 	public int getServiceGeneration()
@@ -552,6 +894,30 @@
 		return serviceScale_.getSelection();
 	}
 	
+	public boolean getDevelopService() {
+		return developService_;
+	}
+
+	public void setDevelopService(boolean developService) {
+		this.developService_ = developService;
+	}	
+	
+	public boolean getAssembleService() {
+		return assembleService_;
+	}
+
+	public void setAssembleService(boolean assembleService) {
+		this.assembleService_ = assembleService;
+	}
+
+	public boolean getDeployService() {
+		return deployService_;
+	}
+
+	public void setDeployService(boolean deployService) {
+		this.deployService_ = deployService;
+	}
+	
 	public Boolean getStartService(){
 		return startService_;
 	}
@@ -593,15 +959,15 @@
 	}
 
 	public Boolean getGenerateProxy() {
-		int clientSelection = clientWidget_.getClientGeneration();
-		if (clientSelection <= ScenarioContext.WS_DEVELOP)
-		  return new Boolean(true);
-		return new Boolean(false);		
+		return new Boolean(clientWidget_.getGenerateProxy());		
 	}
 
 	public void setClientGeneration(int value)
 	{
 		clientWidget_.setClientGeneration(value);
+		/*for popup case need to make sure that the UI is refreshed based on 
+			changes to data*/
+		packSelf();
 	}
 	
 	public String getClientEarProjectName()
@@ -636,21 +1002,9 @@
 		return objectSelection_;		
 	}
 	
-	
 	public void setObjectSelection(IStructuredSelection selection )
 	{
-        objectSelection_ = selection;
-        if (selection != null && selection.size()==1)
-        {
-        	//Update the serviceImpl_ field.
-        	Object[] selectionArray = selection.toArray();
-        	Object selectedObject = selectionArray[0];
-        	if (selectedObject instanceof String)
-        	{
-        		serviceImpl_.setText((String)selectedObject);
-	}
-        }
-	
+		objectSelection_ = selection;
 	}
 	
 	public WebServicesParser getWebServicesParser()
@@ -665,50 +1019,126 @@
 	}
 	
 	public void internalize() {		
+		
+		if (preferencesPage_)
+			return;
+		
+		if (objectSelectionWidget_ == null)
+			objectSelectionWidget_ = getSelectionWidget();
+		
+		String displayable = null;
+		
+		if (objectSelectionWidget_ instanceof IObjectSelectionLaunchable) {		
+			IObjectSelectionLaunchable launchable = (IObjectSelectionLaunchable) objectSelectionWidget_;
+			launchable.setInitialSelection(objectSelection_);
+			objectSelection_ = launchable.getObjectSelection();
+			displayable = launchable.getObjectSelectionDisplayableString();
+		}
+		else {
+			IObjectSelectionWidget selectionWidget = (IObjectSelectionWidget) objectSelectionWidget_;
+			selectionWidget.setInitialSelection(objectSelection_);
+		    displayable = selectionWidget.getObjectSelectionDisplayableString();
+		}
+		
+		if (displayable == null || displayable.length() == 0)
+			return;
+			
+		serviceImpl_.removeModifyListener(objectModifyListener_);
+		serviceImpl_.setText(displayable);
+		serviceImpl_.addModifyListener(objectModifyListener_);
 	}
 
 	public IStatus getStatus() {
 		IStatus status = Status.OK_STATUS;
 
-		try {
-			IStatus missingFieldStatus = checkMissingFieldStatus();
-			if (missingFieldStatus.getSeverity() == IStatus.ERROR) {
-				return missingFieldStatus;
-			}
-
-			IStatus possibleErrorStatus = checkErrorStatus();
-			if (possibleErrorStatus.getSeverity() == IStatus.ERROR) {
-				return possibleErrorStatus;
-			}
-
-			IStatus possibleWarningStatus = checkWarningStatus();
-			if (possibleWarningStatus.getSeverity() == IStatus.WARNING) {
-				return possibleWarningStatus;
-			}
-		} finally {
-			// Clear validation state on service side and client side (if
-			// enabled)
-			validationState_ = ValidationUtils.VALIDATE_NONE;
-			if (clientWidget_.getGenerateProxy()) {
-				clientWidget_.setValidationState(ValidationUtils.VALIDATE_NONE);
-			}
+		IStatus missingFieldStatus = checkMissingFieldStatus();
+		if (missingFieldStatus.getSeverity() == IStatus.ERROR) {
+			return missingFieldStatus;
 		}
+
+		IStatus invalidServiceImplStatus = checkServiceImplTextStatus();
+		if (invalidServiceImplStatus.getSeverity() == IStatus.ERROR) {
+			return invalidServiceImplStatus;
+		}
+
+		IStatus possibleErrorStatus = checkErrorStatus();
+		if (possibleErrorStatus.getSeverity() == IStatus.ERROR) {
+			return possibleErrorStatus;
+		}
+
+		IStatus possibleWarningStatus = checkWarningStatus();
+		if (possibleWarningStatus.getSeverity() == IStatus.WARNING) {
+			return possibleWarningStatus;
+		}
+
+		// If no warnings/errors were reported, clear validation state on
+		// service side and client side (if enabled)
+		validationState_ = ValidationUtils.VALIDATE_NONE;
+		if (clientWidget_.getGenerateProxy()) {
+			clientWidget_.setValidationState(ValidationUtils.VALIDATE_NONE);
+		}
+
 		return status;
 	}
+	
+	/*
+	 * call validation code in the object selection widget to ensure any
+	 * modifications to the serviceImpl_ field are valid
+	 */
+	private IStatus checkServiceImplTextStatus() {
+		
+		String fieldText = serviceImpl_.getText().trim();
 
+		if (objectSelectionWidget_ == null)
+		{
+			objectSelectionWidget_ = getSelectionWidget();
+		}
+		
+		if (objectSelectionWidget_ instanceof IObjectSelectionLaunchable)
+		    {      	
+				IObjectSelectionLaunchable launchable = (IObjectSelectionLaunchable)objectSelectionWidget_;
+				validObjectSelection_ = launchable.validate(fieldText);
+			}
+			else 
+			{
+				IObjectSelectionWidget widget = (IObjectSelectionWidget)objectSelectionWidget_;
+				validObjectSelection_ = widget.validate(fieldText);
+			}
+		
+		if (!validObjectSelection_)
+		{
+			int scenario = getWebServiceScenario();
+			
+			if (scenario == WebServiceScenario.BOTTOMUP)
+				return StatusUtils.errorStatus(ConsumptionUIMessages.MSG_INVALID_SERVICE_IMPL);
+			else
+				return StatusUtils.errorStatus(ConsumptionUIMessages.MSG_INVALID_SERVICE_DEF);			
+		}		
+		
+		return Status.OK_STATUS;
+	}
+
+	private int getWebServiceScenario()
+	{
+		   int index = webserviceType_.getSelectionIndex();	
+		   String typeId = labelIds_.getIds_()[index];
+		   return WebServiceRuntimeExtensionUtils2.getScenarioFromTypeId(typeId);		
+	}
+	
 	private IStatus checkMissingFieldStatus() {
 
 		// 1. Check for missing fields on service side
 		ValidationUtils valUtils = new ValidationUtils();
 		String serviceImpl = serviceImpl_.getText().trim();
+		String typeId = getServiceTypeRuntimeServer().getTypeId();
 		String runtimeId = getServiceTypeRuntimeServer().getRuntimeId();
 		String serverId = getServiceTypeRuntimeServer().getServerId();
 		String projectName = getServiceProjectName();
 		boolean needEar = getServiceNeedEAR();
 		String earProjectName = getServiceEarProjectName();
 		String projectTypeId = getServiceComponentType();
-
-		IStatus serviceMissingFieldStatus = valUtils.checkMissingFieldStatus(validationState_, serviceImpl,
+		
+		IStatus serviceMissingFieldStatus = valUtils.checkMissingFieldStatus(validationState_, typeId, serviceImpl,
 				runtimeId, serverId, projectName, needEar, earProjectName, projectTypeId, false);
 		if (serviceMissingFieldStatus.getSeverity() == IStatus.ERROR) {
 			return serviceMissingFieldStatus;
@@ -724,7 +1154,6 @@
 		}
 
 		return Status.OK_STATUS;
-
 	}
 
 	private IStatus checkErrorStatus() {
@@ -812,19 +1241,19 @@
 	{
 		imageReg_ = new ImageRegistry(Display.getCurrent());
 		
-		imageReg_.put(ICON_SCALE_BG_0, WebServiceCreationUIPlugin
+		imageReg_.put(ICON_SCALE_BG_0, WebServiceConsumptionUIPlugin
 				.getImageDescriptor(ICON_SCALE_BG_0));
-		imageReg_.put(ICON_SCALE_BG_1, WebServiceCreationUIPlugin
+		imageReg_.put(ICON_SCALE_BG_1, WebServiceConsumptionUIPlugin
 				.getImageDescriptor(ICON_SCALE_BG_1));
-		imageReg_.put(ICON_SCALE_BG_2, WebServiceCreationUIPlugin
+		imageReg_.put(ICON_SCALE_BG_2, WebServiceConsumptionUIPlugin
 				.getImageDescriptor(ICON_SCALE_BG_2));
-		imageReg_.put(ICON_SCALE_BG_3, WebServiceCreationUIPlugin
+		imageReg_.put(ICON_SCALE_BG_3, WebServiceConsumptionUIPlugin
 				.getImageDescriptor(ICON_SCALE_BG_3));
-		imageReg_.put(ICON_SCALE_BG_4, WebServiceCreationUIPlugin
+		imageReg_.put(ICON_SCALE_BG_4, WebServiceConsumptionUIPlugin
 				.getImageDescriptor(ICON_SCALE_BG_4));
-		imageReg_.put(ICON_SCALE_BG_5, WebServiceCreationUIPlugin
+		imageReg_.put(ICON_SCALE_BG_5, WebServiceConsumptionUIPlugin
 				.getImageDescriptor(ICON_SCALE_BG_5));
-		imageReg_.put(ICON_SCALE_BG_6, WebServiceCreationUIPlugin
+		imageReg_.put(ICON_SCALE_BG_6, WebServiceConsumptionUIPlugin
 				.getImageDescriptor(ICON_SCALE_BG_6));
 		
 		imageReg_.put(GRAPHIC_SERVICE_0, WebServiceCreationUIPlugin
@@ -851,7 +1280,8 @@
 	  {
 		serviceProjectName_= name;
 		hLinkServiceProject_.setText(SERVICE_PROJECT_PREFIX + " " + serviceProjectName_);
-		hLinkServiceProject_.pack(true);		
+		hLinkServiceProject_.pack(true);
+		packSelf();	
 	  }
 	
 	 public void setServiceEarProjectName(String name)
@@ -862,11 +1292,12 @@
 	 
 	  public void refreshEARLink()
 	  {
-		  hLinkServiceEAR_.setVisible(needEar_);
+		  hLinkServiceEAR_.setVisible(needEar_); 
 		  if (needEar_)
 		  {			 
 			  hLinkServiceEAR_.setText(SERVICE_EAR_PREFIX + " " + serviceEarProjectName_);
 			  hLinkServiceEAR_.pack(true);
+			  packSelf();
 		  }
 	  }
 	 public void setServiceComponentType( String type )
@@ -884,19 +1315,8 @@
 	    clientWidget_.setClientEarProjectName(name);  
 	  }
 	  
-	  String componentName_;
 	  IProject project_;
 	  
-	  public void setComponentName(String name)
-	  {
-		  componentName_ = name;
-	  }
-	  
-	  public String getComponentName()
-	  {
-		  return componentName_;
-	  }
-	  
 	  public String getServiceComponentType()
 	  {
 		  return serviceComponentType_;
@@ -942,19 +1362,10 @@
 		  return project_;
 	  }
 	  
-	  public void setServiceRuntimeId(String runtimeId)
-	  {
-		  serviceRuntimeId_ = runtimeId;
-	  }
-	  
 	  public String getServiceRuntimeId()
 	  {
-		  return serviceRuntimeId_;
-	  }
-	  
-	  public void setClientRuntimeId(String id)
-	  {
-		  clientWidget_.setClientRuntimeId(id);
+		  // calculate the most appropriate serviceRuntimeId based on current settings.
+		  return WebServiceRuntimeExtensionUtils2.getServiceRuntimeId(getServiceTypeRuntimeServer(), getServiceProjectName(), getServiceComponentType());    
 	  }
 	  
 	  public String getClientRuntimeId()
@@ -986,38 +1397,33 @@
 	  // looks through extensions and returns the appropriate selection widget
 	  private Object getSelectionWidget()
 	  {
-			String wst = getServiceTypeRuntimeServer().getTypeId();
-			int scenario = WebServiceRuntimeExtensionUtils2.getScenarioFromTypeId(wst);
-			String implId = WebServiceRuntimeExtensionUtils2.getWebServiceImplIdFromTypeId(wst);
-		    WebServiceImpl wsimpl = WebServiceRuntimeExtensionUtils2.getWebServiceImplById(implId);
+			String         wst      = getServiceTypeRuntimeServer().getTypeId();
+			int            scenario = WebServiceRuntimeExtensionUtils2.getScenarioFromTypeId(wst);
+			String         implId   = WebServiceRuntimeExtensionUtils2.getWebServiceImplIdFromTypeId(wst);
+		  WebServiceImpl wsimpl   = WebServiceRuntimeExtensionUtils2.getWebServiceImplById(implId);
+      Object         result   = null;
+        
 		    
-		      if (wsimpl != null)
-		      {
-		        String objectSelectionWidgetId = null;
-		        if (scenario == WebServiceScenario.TOPDOWN)
-		        {
-		          objectSelectionWidgetId = "org.eclipse.jst.ws.internal.consumption.ui.widgets.object.WSDLSelectionWidget";
-		        }
-		        else
-		        {
-		          objectSelectionWidgetId = wsimpl.getObjectSelectionWidget();
-		        }
-			
-	        IConfigurationElement[] elements = ObjectSelectionRegistry.getInstance().getConfigurationElements();
-			   for (int i = 0; i < elements.length; i++)
-		          {
-		            if (objectSelectionWidgetId.equals(elements[i].getAttribute("id")))
-		            {
-                        try
-		            	{
-		            	   Object object = elements[i].createExecutableExtension("class");		                	
-		                   return object;
-		                }
-		            	catch (Throwable t){ }
-		            }
-		         }
-	        }
-		    return null;
+		  if (wsimpl != null)
+		  {
+		    String objectSelectionWidgetId = null;
+		    if (scenario == WebServiceScenario.TOPDOWN)
+		    {
+		      objectSelectionWidgetId = "org.eclipse.jst.ws.internal.consumption.ui.widgets.object.WSDLSelectionWidget";
+		    }
+		    else
+		    {
+		      objectSelectionWidgetId = wsimpl.getObjectSelectionWidget();
+		    }
+        
+        ObjectSelectionRegistry registry = ObjectSelectionRegistry.getInstance();
+        boolean editable = registry.getExternalModify( objectSelectionWidgetId );
+                
+        serviceImpl_.setEditable( editable );
+        result = registry.getSelectionWidget( objectSelectionWidgetId );
+      }
+      
+		  return result;
 	  }
 	 
 	// for the purposes of disabling the service implementation controls from the preferences dialog
@@ -1079,7 +1485,6 @@
 		  //call setters of new defaulting command:
 	      serverRTDefaultCmd.setInitialSelection(getObjectSelection());
 	      serverRTDefaultCmd.setInitialProject(getProject());
-	      serverRTDefaultCmd.setInitialComponentName(getComponentName());      
 	      serverRTDefaultCmd.setGenerateProxy(clientWidget_.getGenerateProxy());
 	      serverRTDefaultCmd.setServiceTypeRuntimeServer(getServiceTypeRuntimeServer());
 		  serverRTDefaultCmd.setWebServicesParser(getWebServicesParser());     
@@ -1091,7 +1496,6 @@
 		  serverRTDefaultCmd.execute(null, null);
 		  
 		  //perform mappings from the defaulting command to the project settings...	
-		  setServiceRuntimeId(serverRTDefaultCmd.getServiceRuntimeId());
 		  setServiceProjectName(serverRTDefaultCmd.getServiceProjectName());
 		  setServiceEarProjectName(serverRTDefaultCmd.getServiceEarProjectName());
 		  setServiceComponentType(serverRTDefaultCmd.getServiceComponentType());
@@ -1101,7 +1505,6 @@
           setClientTypeRuntimeServer(serverRTDefaultCmd.getClientTypeRuntimeServer());
           setServiceNeedEAR(serverRTDefaultCmd.getServiceNeedEAR());
           setClientNeedEAR(serverRTDefaultCmd.getClientNeedEAR());
-          setClientRuntimeId(serverRTDefaultCmd.getClientRuntimeId());
           setClientComponentType(serverRTDefaultCmd.getClientComponentType());
 	}
 	
@@ -1115,48 +1518,30 @@
 		clientTypeRuntimeserver.setServerId(getServiceTypeRuntimeServer().getServerId());
 		clientTypeRuntimeserver.setServerInstanceId(getServiceTypeRuntimeServer().getServerInstanceId());
 		setClientTypeRuntimeServer(clientTypeRuntimeserver);
-		setClientNeedEAR(clientProjectNeedEAR());
 	}	
 		
-	/**
-	 *  Check if client project need EAR based on service side, project and client type
-	 */
-	private boolean clientProjectNeedEAR()
-	{	
-		// if client did not need EAR originally, check if it's because it's because 
-		// either the project is Java utility project or type is Java utility
-		if (!getClientNeedEAR()) {
-			// If the project is a simple Java project or the project type is 
-			// Java utility return false.
-			String projectName = getClientProjectName();
-			if (projectName != null && projectName.length()>0)
-			{
-				IProject project = ResourceUtils.getWorkspaceRoot().getProject(projectName);
-				if (project.exists())
-				{
-					if (FacetUtils.isJavaProject(project))
-					{
-						return false;
-					}
-				}
-			}
-
-			//Project didn't rule out the need for an EAR
-			//so check the project type
-			String templateId = getClientComponentType();
-			if (templateId != null && templateId.length()>0)
-			{
-				if (FacetUtils.isUtilityTemplate(templateId))
-				{
-					return false;
-				}
-			}
-		} // end of !clientNeedEAR
-		
-		// have clientNeedEAR follows server side
-		return getServiceNeedEAR();
-		
+	
+	private void callObjectTransformation(IStructuredSelection objectSelection,
+			IProject project, String componentName, boolean refreshRuntime)
+	{
+		ObjectSelectionOutputCommand objOutputCommand = new ObjectSelectionOutputCommand();
+		   objOutputCommand.setTypeRuntimeServer(getServiceTypeRuntimeServer());
+		   objOutputCommand.setObjectSelection(objectSelection);
+	       objOutputCommand.setProject(project);
+	       objOutputCommand.setComponentName(componentName);			   
+	       
+	       objOutputCommand.execute(null, null);
+        
+	       setWebServicesParser(objOutputCommand.getWebServicesParser());
+	       setObjectSelection(objOutputCommand.getObjectSelection());
+	       setProject(objOutputCommand.getProject());      		       
+	       
+	       if (refreshRuntime || forceRefreshRuntime)
+	    	   refreshServerRuntimeSelection();  
+	       
+	       forceRefreshRuntime = false;
 	}
+	
 	private class ScaleSelectionListener implements SelectionListener
 	{
 		public void widgetSelected(SelectionEvent e) {			
@@ -1164,14 +1549,7 @@
 			    Scale scale = (Scale)e.widget;
 				int selection = scale.getSelection();
 				
-				setTestService(new Boolean(selection <= ScenarioContext.WS_TEST));
-				setInstallService(new Boolean(selection <= ScenarioContext.WS_INSTALL));
-				setStartService(new Boolean(selection <= ScenarioContext.WS_START));
-				setAdvancedOptions(selection <= ScenarioContext.WS_INSTALL);
-				clientWidget_.enableClientSlider(selection <= ScenarioContext.WS_START);
-				
-				setGraphics(selection);
-				
+				//TODO: change the hard coded integers here to the the ScenarioContext.WS_xxx when in less critical phase
 				switch (selection) {
 				case 0:
 					serviceScale_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_TEST);
@@ -1190,15 +1568,29 @@
 					break;
 				case 5:					
 				case 6:
-					scale.setSelection(5); //"no selection" is not allowed...must develop service @ minimum
+					serviceScale_.setSelection(ScenarioContext.WS_DEVELOP); //"no selection" is not allowed...must develop service @ minimum
 					serviceScale_.setToolTipText(ConsumptionUIMessages.TOOLTIP_WSWSCEN_SCALE_DEVELOP);
+					//reset local selection so that setters get correct value below
+					selection = ScenarioContext.WS_DEVELOP;
 					break;
 				default:
 					break;
 				}
 				
+				setDevelopService(selection <= ScenarioContext.WS_DEVELOP);
+				setAssembleService(selection <= ScenarioContext.WS_ASSEMBLE);
+				setDeployService(selection <= ScenarioContext.WS_DEPLOY);
+				
+				setTestService(new Boolean(selection <= ScenarioContext.WS_TEST));
+				setInstallService(new Boolean(selection <= ScenarioContext.WS_INSTALL));
+				setStartService(new Boolean(selection <= ScenarioContext.WS_START));
+				setAdvancedOptions(selection <= ScenarioContext.WS_INSTALL);
+				clientWidget_.enableClientSlider(selection <= ScenarioContext.WS_START);
+				
+				setGraphics(selection);
+				
 				//Validate the page
-				validationState_ = ValidationUtils.VALIDATE_SCALE_CHANGES;
+				validationState_ = (new ValidationUtils()).getNewValidationState(validationState_, ValidationUtils.VALIDATE_SCALE_CHANGES);
 				statusListener_.handleEvent(null);
 				
 			}		
@@ -1217,9 +1609,8 @@
 		public void widgetSelected(SelectionEvent e) {     
 			   
 			  if (objectSelectionWidget_ == null)
-				   objectSelectionWidget_ = getSelectionWidget();			
-			   
-			   ObjectSelectionOutputCommand objOutputCommand = new ObjectSelectionOutputCommand();
+				   objectSelectionWidget_ = getSelectionWidget();
+			  
 			   IStructuredSelection objectSelection = null;
 			   IProject project = null;
 			   String componentName="";
@@ -1229,10 +1620,13 @@
 		       {      	
 				 IObjectSelectionLaunchable launchable = ((IObjectSelectionLaunchable)objectSelectionWidget_);
 				 launchable.setInitialSelection(getObjectSelection());
-		         result = launchable.launch(Workbench.getInstance().getActiveWorkbenchWindow().getShell());
+				 IWorkbench workbench = PlatformUI.getWorkbench();
+		         result = launchable.launch(workbench.getActiveWorkbenchWindow().getShell());
 		         if (result == Dialog.OK)
 		         {
+		        	 serviceImpl_.removeModifyListener(objectModifyListener_);
 			         serviceImpl_.setText(launchable.getObjectSelectionDisplayableString());
+			         serviceImpl_.addModifyListener(objectModifyListener_);
 			         objectSelection = launchable.getObjectSelection();
 			         project = launchable.getProject();
 			         componentName= launchable.getComponentName();
@@ -1245,7 +1639,9 @@
 			       result = browseDialog_.open();
 			       if (result == Dialog.OK)
 			       {
-				       serviceImpl_.setText(browseDialog_.getDisplayableSelectionString());
+			    	   serviceImpl_.removeModifyListener(objectModifyListener_);
+				       serviceImpl_.setText(browseDialog_.getDisplayableSelectionString()); 
+				       serviceImpl_.addModifyListener(objectModifyListener_);
 				       objectSelection = browseDialog_.getObjectSelection();
 				       project = browseDialog_.getProject();
 				       componentName= browseDialog_.getComponentName();			       
@@ -1255,22 +1651,13 @@
 			   // call ObjectSelectionOutputCommand to carry out any transformation on the objectSelection
 			   if (result == Dialog.OK)
 			   {
-				   objOutputCommand.setTypeRuntimeServer(getServiceTypeRuntimeServer());
-				   objOutputCommand.setObjectSelection(objectSelection);
-			       objOutputCommand.setProject(project);
-			       objOutputCommand.setComponentName(componentName);			   
-			       
-			       objOutputCommand.execute(null, null);
-	               
-			       setWebServicesParser(objOutputCommand.getWebServicesParser());
-			       setObjectSelection(objOutputCommand.getObjectSelection());
-			       setComponentName(objOutputCommand.getComponentName());
-			       setProject(objOutputCommand.getProject());	       		       
-			       refreshServerRuntimeSelection();  
+				   callObjectTransformation(objectSelection, project, componentName, getWebServiceScenario() != WebServiceScenario.TOPDOWN);				   
 			       validationState_ = ValidationUtils.VALIDATE_ALL;
 			       statusListener_.handleEvent(null); // validate the page
 			   }			   
 	    }
-	}	
+	}
+
+	
 }
 
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidgetDefaultingCommand.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidgetDefaultingCommand.java
index f9b8933..2e9f622 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidgetDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidgetDefaultingCommand.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.creation.ui.widgets;
 
@@ -21,12 +25,17 @@
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.ClientWizardWidgetDefaultingCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
+import org.eclipse.jst.ws.internal.context.ScenarioContext;
 import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
 
 public class ServerWizardWidgetDefaultingCommand extends ClientWizardWidgetDefaultingCommand
 {    
   private TypeRuntimeServer typeRuntimeServer_;
   private IStructuredSelection initialSelection_;
+  private int serviceGeneration_;
+  private boolean developService_;
+  private boolean assembleService_;
+  private boolean deployService_;
   
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {    
@@ -49,6 +58,14 @@
       typeRuntimeServer_.setTypeId(typeIds[0]);
     }
     
+    serviceGeneration_ = getScenarioContext().getGenerateWebService();
+    	
+	developService_ = serviceGeneration_ <= ScenarioContext.WS_DEVELOP;
+	assembleService_ = serviceGeneration_ <= ScenarioContext.WS_ASSEMBLE;
+	deployService_ = serviceGeneration_ <= ScenarioContext.WS_DEPLOY;
+    
+	defaultClientScale();
+	
     return Status.OK_STATUS;
   }
   
@@ -112,6 +129,11 @@
     return new Boolean( getScenarioContext().getStartWebService() );  
   }
   
+  public Boolean getTestService()
+  {
+    return new Boolean( getScenarioContext().getTestWebService() );  
+  }
+  
   public Boolean getPublishService()
   {
     return new Boolean( getScenarioContext().getLaunchWebServiceExplorer() );
@@ -122,6 +144,11 @@
     return new Boolean( getScenarioContext().getGenerateProxy() );  
   }
   
+  public boolean getRunTestClient()
+  {
+    return  getScenarioContext().isLaunchSampleEnabled();  
+  }
+  
   public Boolean getMonitorService()
   {
     return new Boolean(getScenarioContext().getMonitorWebService());
@@ -129,11 +156,24 @@
   
   public int getServiceGeneration()
   {
-	  return getScenarioContext().getGenerateWebService();
+	  return serviceGeneration_;
   }
   
   public int getClientGeneration()
   {
 	  return getScenarioContext().getGenerateClient();
   }
-}
\ No newline at end of file
+  
+  public boolean getDevelopService() {
+	  return developService_;
+  }
+  
+  public boolean getAssembleService() {
+	  return assembleService_;
+  }
+  
+  public boolean getDeployService() {
+	  return deployService_;
+  }
+  
+}
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidgetOutputCommand.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidgetOutputCommand.java
index ff2e968..6252ca6 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidgetOutputCommand.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/ServerWizardWidgetOutputCommand.java
@@ -1,12 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060727   144354 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.creation.ui.widgets;
 
@@ -22,8 +27,14 @@
   private boolean           installService_;
   private boolean           startService_;
   private boolean           testService_;
+  private boolean           testClient_;
+  private boolean           runTestClient_;
   private boolean           publishService_;
   private boolean           generateProxy_;
+  private boolean           developService_;
+  private boolean           assembleService_;
+  private boolean           deployService_; 
+  
 	private ResourceContext   resourceContext_;
 	private IStructuredSelection selection_; 
     
@@ -48,6 +59,11 @@
     return testService_;
   }
   
+  public boolean getRunTestClient()
+  {
+    return runTestClient_;
+  }
+  
   public boolean getPublishService()
   {
     return publishService_;
@@ -98,6 +114,15 @@
   {
     this.testService_ = testService_;
   }
+  
+  /**
+   * @param testService_ The testService_ to set.
+   */
+  public void setRunTestClient(boolean runTestClient_)
+  {
+    this.runTestClient_ = runTestClient_;
+  }
+  
   /**
    * @param typeRuntimeServer_ The typeRuntimeServer_ to set.
    */
@@ -120,4 +145,37 @@
 	{
 	   return selection_;
 	}
-}
\ No newline at end of file
+	
+	public boolean getDevelopService() {
+		return developService_;
+	}
+
+	public void setDevelopService(boolean developService) {
+		this.developService_ = developService;
+	}	
+	
+	public boolean getAssembleService() {
+		return assembleService_;
+	}
+
+	public void setAssembleService(boolean assembleService) {
+		this.assembleService_ = assembleService;
+	}
+
+	public boolean getDeployService() {
+		return deployService_;
+	}
+
+	public void setDeployService(boolean deployService) {
+		this.deployService_ = deployService;
+	}
+
+	public boolean getTestClient() {
+		return testClient_;
+	}
+
+	public void setTestClient(boolean testClient_) {
+		this.testClient_ = testClient_;
+	}
+
+}
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/binding/ServerWidgetBinding.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/binding/ServerWidgetBinding.java
index a3ee647..968288b 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/binding/ServerWidgetBinding.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/binding/ServerWidgetBinding.java
@@ -15,21 +15,32 @@
  * 20060407   135415 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060410   135562 joan@ca.ibm.com - Joan Haggarty
  * 20060417   136391 joan@ca.ibm.com - Joan Haggarty
+ * 20060425   138052 kathy@ca.ibm.com - Kathy Chan
+ * 20060524   142635 gilberta@ca.ibm.com - Gilbert Andrews
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
+ * 20060530   144358 kathy@ca.ibm.com - Kathy Chan
+ * 20060608   145529 kathy@ca.ibm.com - Kathy Chan
+ * 20060609    86421 kathy@ca.ibm.com - Kathy Chan
+ * 20060727   144354 kathy@ca.ibm.com - Kathy Chan
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
+ * 20060810   135395 makandre@ca.ibm.com - Andrew Mak, Enable WTP Web service framework opening Java editor
+ * 20060821   153833 makandre@ca.ibm.com - Andrew Mak, Allow the Web Service Test extension point to specify the supported client runtime
+ * 20060825   155114 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.creation.ui.widgets.binding;
 
 import org.eclipse.jst.ws.internal.common.StringToIProjectTransformer;
 import org.eclipse.jst.ws.internal.consumption.command.common.ComputeEndpointCommand;
+import org.eclipse.jst.ws.internal.consumption.command.common.ComputeProxyEndpointCommand;
 import org.eclipse.jst.ws.internal.consumption.command.common.CreateMonitorCommand;
 import org.eclipse.jst.ws.internal.consumption.command.common.ManageServerStartUpCommand;
-import org.eclipse.jst.ws.internal.consumption.common.ScenarioCleanupCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
 import org.eclipse.jst.ws.internal.consumption.ui.command.data.ServerInstToIServerTransformer;
 import org.eclipse.jst.ws.internal.consumption.ui.common.FinishFragment;
+import org.eclipse.jst.ws.internal.consumption.ui.common.ScenarioCleanupCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.extension.ClientRootFragment;
 import org.eclipse.jst.ws.internal.consumption.ui.extension.PreClientDevelopCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.selection.SelectionTransformer;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.CheckWSDLValidationCommand;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.PublishToPrivateUDDICommandFragment;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.PublishWSWidget;
 import org.eclipse.jst.ws.internal.consumption.ui.widgets.extensions.ClientExtensionDefaultingCommand;
@@ -71,6 +82,7 @@
 import org.eclipse.wst.command.internal.env.ui.widgets.WidgetContributorFactory;
 import org.eclipse.wst.command.internal.env.ui.widgets.WidgetRegistry;
 import org.eclipse.wst.ws.internal.explorer.WSExplorerLauncherCommand;
+import org.eclipse.wst.ws.internal.ui.command.OpenEditorCommand;
 
 public class ServerWidgetBinding implements CommandWidgetBinding
 {
@@ -121,11 +133,24 @@
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "MonitorService", ServerWizardWidget.class);
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "MonitorService", CreateMonitorCommand.class);
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "MonitorService", ComputeEndpointCommand.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "MonitorService", ComputeProxyEndpointCommand.class);
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "PublishService", ServerWizardWidget.class);    
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "ClientGeneration", ServerWizardWidget.class);
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "InstallClient", ServerWizardWidget.class);
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "ClientTypeRuntimeServer", ServerWizardWidget.class);    
     dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "ResourceContext", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DevelopService", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "AssembleService", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DeployService", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "InstallService", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "StartService", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "TestService", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DevelopClient", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "AssembleClient", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DeployClient", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "StartClient", ServerWizardWidget.class);
+    dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "TestClient", ServerWizardWidget.class);
+
     
     // After ServerWizardWidget
     dataRegistry.addMapping(ServerWizardWidget.class, "ServiceTypeRuntimeServer", ServerWizardWidgetOutputCommand.class );
@@ -135,17 +160,25 @@
     dataRegistry.addMapping(ServerWizardWidget.class, "TestService", ServerWizardWidgetOutputCommand.class);
     dataRegistry.addMapping(ServerWizardWidget.class, "MonitorService", CreateMonitorCommand.class);
     dataRegistry.addMapping(ServerWizardWidget.class, "MonitorService", ComputeEndpointCommand.class);
+    dataRegistry.addMapping(ServerWizardWidget.class, "MonitorService", ComputeProxyEndpointCommand.class);
     dataRegistry.addMapping(ServerWizardWidget.class, "PublishService", ServerWizardWidgetOutputCommand.class);
     dataRegistry.addMapping(ServerWizardWidget.class, "GenerateProxy", ServerWizardWidgetOutputCommand.class);
     dataRegistry.addMapping(ServerWizardWidget.class, "ClientTypeRuntimeServer", ServerWizardWidgetOutputCommand.class);
     dataRegistry.addMapping(ServerWizardWidget.class, "ResourceContext", ServerWizardWidgetOutputCommand.class);
     dataRegistry.addMapping(ServerWizardWidget.class, "ObjectSelection", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidget.class, "DevelopService", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidget.class, "AssembleService", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidget.class, "DeployService", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidget.class, "DevelopClient", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidget.class, "AssembleClient", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidget.class, "DeployClient", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidget.class, "StartClient", ServerWizardWidgetOutputCommand.class);
+    dataRegistry.addMapping(ServerWizardWidget.class, "TestClient", ServerWizardWidgetOutputCommand.class);
         
     // Before ObjectSelectionWidget    
     dataRegistry.addMapping(ServerExtensionDefaultingCommand.class, "TestService", ClientTestWidget.class );
     dataRegistry.addMapping(ServerExtensionDefaultingCommand.class, "TestService",FinishTestFragment.class);
     
-	dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "GenerateProxy", TestDefaultingFragment.class);
 	dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "GenerateProxy", ClientFragment.class);
     dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "GenerateProxy", ServerWizardWidget.class);
     dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ServiceProjectName", ServerWizardWidget.class);
@@ -154,9 +187,7 @@
     dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ClientProjectName", ServerWizardWidget.class);
     dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ClientEarProjectName", ServerWizardWidget.class);
     dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ServiceTypeRuntimeServer", ServerWizardWidget.class);
-    dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ServiceRuntimeId", ServerWizardWidget.class);
-    dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ClientTypeRuntimeServer", ServerWizardWidget.class);
-    dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ClientRuntimeId", ServerWizardWidget.class);    
+    dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ClientTypeRuntimeServer", ServerWizardWidget.class);    
     dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ServiceNeedEAR", ServerWizardWidget.class);
     dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ClientNeedEAR", ServerWizardWidget.class);
     dataRegistry.addMapping(ServerRuntimeSelectionWidgetDefaultingCommand.class, "ClientComponentType", ServerWizardWidget.class); //jvh
@@ -182,10 +213,18 @@
     
     // CreateMonitorCommand
     dataRegistry.addMapping(CreateMonitorCommand.class, "MonitoredPort", ComputeEndpointCommand.class);
+    dataRegistry.addMapping(CreateMonitorCommand.class, "MonitoredPort", ComputeProxyEndpointCommand.class);
     
     // ComputeEndpointCommand
     dataRegistry.addMapping(ComputeEndpointCommand.class, "Endpoint", ServiceTestWidget.class);
     dataRegistry.addMapping(ComputeEndpointCommand.class, "Endpoint", ClientTestDelegateCommand.class);
+    dataRegistry.addMapping(ComputeEndpointCommand.class, "Endpoint", ComputeProxyEndpointCommand.class);
+    
+    //  ComputeProxyEndpointCommand
+    dataRegistry.addMapping(ComputeProxyEndpointCommand.class, "Endpoint", ClientTestDelegateCommand.class);
+    
+    // 145426
+    dataRegistry.addMapping(ClientExtensionOutputCommand.class, "ProxyEndpoint", ComputeProxyEndpointCommand.class);
 
     //ServiceTestWidget mappings    
     dataRegistry.addMapping(ServerExtensionDefaultingCommand.class, "ServiceTypeRuntimeServer", ServiceTestWidget.class);
@@ -213,7 +252,7 @@
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "JspFolder",ClientTestWidget.class);
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "RunClientTest",ClientTestWidget.class);
     dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "Methods",ClientTestWidget.class);
-    
+    dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "RunTestClient",ClientTestWidget.class);
     
     // After ClientTestWidget    
     dataRegistry.addMapping(ClientTestWidget.class, "SampleProjectEAR",FinishDefaultCommand.class);
@@ -221,7 +260,7 @@
     dataRegistry.addMapping(ClientTestWidget.class, "TestFacility",ClientTestDelegateCommand.class);
     dataRegistry.addMapping(ClientTestWidget.class, "Folder",ClientTestDelegateCommand.class);
     dataRegistry.addMapping(ClientTestWidget.class, "JspFolder",ClientTestDelegateCommand.class);
-    dataRegistry.addMapping(ClientTestWidget.class, "RunClientTest",ClientTestDelegateCommand.class);
+    dataRegistry.addMapping(ClientTestWidget.class, "RunTestClient",ClientTestDelegateCommand.class);
     dataRegistry.addMapping(ClientTestWidget.class, "Methods",ClientTestDelegateCommand.class);
     dataRegistry.addMapping(ClientTestWidget.class, "TestService",FinishTestFragment.class);
     dataRegistry.addMapping(ClientTestWidget.class, "TestID",FinishTestFragment.class);
@@ -341,9 +380,11 @@
       dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "TestService", PreClientDevelopCommand.class);
       
       dataRegistry.addMapping( ServerWizardWidgetOutputCommand.class, "ResourceContext", PreClientDevelopCommand.class);
+      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "DevelopClient", PreClientDevelopCommand.class);
+      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "AssembleClient", PreClientDevelopCommand.class);
       dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "DeployClient", PreClientDevelopCommand.class );
       dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "InstallClient", PreClientDevelopCommand.class );
-      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "InstallClient", PreClientDevelopCommand.class, "StartService", null);      
+      dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "StartClient", PreClientDevelopCommand.class, "StartService", null);      
       dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "ClientTypeRuntimeServer", PreClientDevelopCommand.class );
       dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "ClientRuntimeId", PreClientDevelopCommand.class );      
       dataRegistry.addMapping( ClientExtensionDefaultingCommand.class, "ClientJ2EEVersion", PreClientDevelopCommand.class);
@@ -366,18 +407,19 @@
       add( new SimpleFragment( new ServerRuntimeSelectionWidgetDefaultingCommand(), ""));  
       add( new SimpleFragment( "ServerWizardWidget" ) );
       add( new SimpleFragment( new ServerWizardWidgetOutputCommand(), "" ));
-      add( new SimpleFragment( new CheckWSDLValidationCommand(), ""));
       add( new SimpleFragment( new ServerExtensionDefaultingCommand(), ""));
       add( new ServiceRootFragment() );
       add( new SimpleFragment( new ServerExtensionOutputCommand(), "" ));
       add(new SimpleFragment(new CreateMonitorCommand(), ""));
       add(new SimpleFragment(new ComputeEndpointCommand(), ""));
       add( new ServiceTestFragment( "TestService") );
-      add( new SimpleFragment(new TestDefaultingFragment(),""));
       add( new ClientFragment() );
+      add( new SimpleFragment(new TestDefaultingFragment(),"")); 
+      add( new SimpleFragment(new ComputeProxyEndpointCommand(), ""));
       add( new ClientTestFragment( "ClientTestWidget") );
       add( new SimpleFragment( "Publish") );
       add(publishToPrivateUDDICmdFrag);
+      add( new SimpleFragment( new OpenEditorCommand(), "") );
       add(new LaunchFragment());
       add(new FinishFragment());
       
@@ -390,7 +432,7 @@
     public void registerDataMappings(DataMappingRegistry dataRegistry)
     {
       publishToPrivateUDDICmdFrag.registerDataMappings(dataMappingRegistry_);   
-
+      
       dataRegistry.addMapping(SelectionCommand.class, "InitialSelection", ServerWizardWidgetDefaultingCommand.class );            
 
       // Map ServerWizardWidgetDefaultingCommand to ObjectSelectionOutputCommand
@@ -401,9 +443,19 @@
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "ClientTypeRuntimeServer", ServerWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "ServiceTypeRuntimeServer", ServerWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "GenerateProxy", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DevelopService", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "AssembleService", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DeployService", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DevelopClient", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "AssembleClient", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "DeployClient", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "InstallClient", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "StartClient", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "TestClient", ServerWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "InstallService", ServerWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "StartService", ServerWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "TestService", ServerWizardWidgetOutputCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "RunTestClient", ServerWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "PublishService", ServerWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "GenerateProxy", ServerWizardWidgetOutputCommand.class);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "ResourceContext", ServerWizardWidgetOutputCommand.class);      
@@ -420,10 +472,21 @@
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "PublishService", PublishWSWidget.class, "PublishToPublicUDDI", null);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "GenerateProxy", ServerRuntimeSelectionWidgetDefaultingCommand.class);
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "InstallClient", ClientExtensionDefaultingCommand.class);
-      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "TestService", ClientExtensionDefaultingCommand.class); // KSC
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "RunTestClient", ClientExtensionDefaultingCommand.class); 
       dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "GenerateProxy", ClientExtensionDefaultingCommand.class); // KSC
       dataRegistry.addMapping(ServerWizardWidgetDefaultingCommand.class, "ResourceContext", ClientExtensionDefaultingCommand.class);
       
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "DevelopService", ServerExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "AssembleService", ServerExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "DeployService", ServerExtensionDefaultingCommand.class);
+      
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "InstallClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "StartClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "DevelopClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "AssembleClient", ClientExtensionDefaultingCommand.class);
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "DeployClient", ClientExtensionDefaultingCommand.class);
+
+      
       //Map ObjectSelectionOutputCommand to ServerRuntimeSelectionWidgetDefaultingCommand
       dataRegistry.addMapping(ObjectSelectionOutputCommand.class, "ObjectSelection", ServerRuntimeSelectionWidgetDefaultingCommand.class, "InitialSelection", null);
       dataRegistry.addMapping(ObjectSelectionOutputCommand.class, "ObjectSelection", ServerRuntimeSelectionWidgetDefaultingCommand.class, "ClientInitialSelection", null);
@@ -477,6 +540,8 @@
       dataRegistry.addMapping(ServerExtensionDefaultingCommand.class, "ServiceTypeRuntimeServer", ClientTestDelegateCommand.class);
 	  
 	    // Setup the PreServiceDevelopCommand.
+      dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "DevelopService", PreServiceDevelopCommand.class);
+      dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "AssembleService", PreServiceDevelopCommand.class);
       dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "DeployService", PreServiceDevelopCommand.class);
       dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "InstallService", PreServiceDevelopCommand.class);
       dataRegistry.addMapping( ServerExtensionDefaultingCommand.class, "StartService", PreServiceDevelopCommand.class);      
@@ -503,6 +568,7 @@
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientTypeRuntimeServer", FinishDefaultCommand.class);
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "TestService", ClientTestFragment.class );
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "TestService", ClientTestWidget.class );
+      dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "RunTestClient", ClientTestWidget.class );
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientProject",ClientTestDelegateCommand.class);
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientNeedEAR", ClientTestDelegateCommand.class);
 	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientEarProjectName", ClientTestDelegateCommand.class);
@@ -511,9 +577,17 @@
 	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientProjectEAR", WebServiceClientTestArrivalCommand.class);
 	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "LaunchedServiceTestName", WebServiceClientTestArrivalCommand.class);
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientServer", ClientTestDelegateCommand.class);
-      dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "GenerateProxy", ClientTestFragment.class);
-
+      dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "RunTestClient",ClientTestDelegateCommand.class); 
       
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "RunTestClient", ClientTestDelegateCommand.class);
+      
+      dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "TestClient", ClientExtensionDefaultingCommand.class, "TestService", null);
+   	  dataRegistry.addMapping(ServerWizardWidgetOutputCommand.class, "TestClient", TestDefaultingFragment.class, "GenerateProxy", null);
+   	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "TestService", TestDefaultingFragment.class, "GenerateProxy", null);
+   	  dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientRuntimeId", TestDefaultingFragment.class);
+      dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "TestService", ClientTestFragment.class, "GenerateProxy", null);
+      dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "TestService", FinishTestFragment.class, "GenerateProxy", null);
+
       dataRegistry.addMapping(ServerExtensionDefaultingCommand.class, "ServerProject", ClientTestDelegateCommand.class);
       dataRegistry.addMapping(ServerExtensionOutputCommand.class, "WsdlURI", ClientTestDelegateCommand.class);
            
@@ -527,9 +601,6 @@
       dataRegistry.addMapping(ClientExtensionDefaultingCommand.class, "ClientServerInstance", ClientExtensionOutputCommand.class, "ExistingServerId", null);
       
       // Map ClientExtensionOutputCommand
-      dataRegistry.addMapping(ClientExtensionOutputCommand.class, "GenerateProxy", ClientTestFragment.class);
-      dataRegistry.addMapping(ClientExtensionOutputCommand.class, "GenerateProxy", ClientTestDelegateCommand.class);
-      dataRegistry.addMapping(ClientExtensionOutputCommand.class, "GenerateProxy", FinishTestFragment.class);
       dataRegistry.addMapping(ClientExtensionOutputCommand.class, "ProxyBean", WebServiceClientTestArrivalCommand.class);
       dataRegistry.addMapping(ClientExtensionOutputCommand.class, "ProxyBean", ClientTestDelegateCommand.class);
       dataRegistry.addMapping(ClientExtensionOutputCommand.class, "SetEndpointMethod", ClientTestDelegateCommand.class);
@@ -555,7 +626,10 @@
       dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "SampleProject",ClientTestDelegateCommand.class);
       dataRegistry.addMapping(WebServiceClientTestArrivalCommand.class, "SampleProjectEAR",ClientTestDelegateCommand.class);    
     
-    
+      // Map OpenEditorCommand
+      dataRegistry.addMapping( PreServiceDevelopCommand.class, "WebService", OpenEditorCommand.class );
+      dataRegistry.addMapping( PreServiceDevelopCommand.class, "Context",    OpenEditorCommand.class );      
+      
       //Map Finish Command 
       
       
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/runtime/ServerRuntimeSelectionWidget.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/runtime/ServerRuntimeSelectionWidget.java
deleted file mode 100644
index db7264b..0000000
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/runtime/ServerRuntimeSelectionWidget.java
+++ /dev/null
@@ -1,448 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2006 IBM 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:
- * IBM Corporation - initial API and implementation
- * yyyymmdd bug      Email and other contact information
- * -------- -------- -----------------------------------------------------------
- * 20060204 124408   rsinha@ca.ibm.com - Rupam Kuehner 
- * 20060221   100190 pmoogk@ca.ibm.com - Peter Moogk         
- * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
- *******************************************************************************/
-package org.eclipse.jst.ws.internal.creation.ui.widgets.runtime;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jst.ws.internal.consumption.common.FacetUtils;
-import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
-import org.eclipse.jst.ws.internal.consumption.ui.common.ValidationUtils;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.ClientRuntimeSelectionWidget;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.ProjectSelectionWidget;
-import org.eclipse.jst.ws.internal.consumption.ui.widgets.runtime.RuntimeServerSelectionWidget;
-import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
-import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
-import org.eclipse.jst.ws.internal.ui.common.UIUtils;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
-import org.eclipse.wst.command.internal.env.ui.widgets.SimpleWidgetDataContributor;
-import org.eclipse.wst.command.internal.env.ui.widgets.WidgetDataEvents;
-
-/*
- *
- * ServerRuntimeSelectionWidget
- * This widget is the parent widget for server and client deployment/environment settings 
- * 
- */
-public class ServerRuntimeSelectionWidget extends SimpleWidgetDataContributor
-{
-  private String createPluginId_ = "org.eclipse.jst.ws.creation.ui";
-  
-  /* CONTEXT_ID PWRS0002 for the Wizard Scenario Service configuration of the Runtime Selection Page */
-  private String INFOPOP_PWRS_GROUP_SERVICE =  "PWRS0002";
-  
-  private RuntimeServerSelectionWidget runtimeWidget_;
-  private ProjectSelectionWidget       projectWidget_;
-  private ClientRuntimeSelectionWidget clientWidget_;
-  private TextModifyListener           textListener_;
-
-  private boolean isClientWidgetVisible_ = true;
-  
-  public WidgetDataEvents addControls( Composite parent, Listener statusListener )
-  {
-    UIUtils      uiUtils  = new UIUtils( createPluginId_ ); 
-    
-    ScrolledComposite scroller = new ScrolledComposite( parent, SWT.H_SCROLL | SWT.V_SCROLL );
-    scroller.setExpandHorizontal(true);
-    scroller.setExpandVertical(true);
-    
-    Composite root = uiUtils.createComposite( scroller, 1 );
-    scroller.setContent( root );
-    
-    Composite textComposite = uiUtils.createComposite( root, 1, 0, 0 );
-    createMessageText( textComposite, NLS.bind(ConsumptionUIMessages.MSG_GENERAL_PROJECT_AND_EAR, new String[] {ConsumptionUIMessages.MSG_SERVICE_SUB}));
-    createMessageText( textComposite, ConsumptionUIMessages.MSG_EAR_PROJECT_WILL_BE_CREATED );
-    
-    Composite serverComp = uiUtils.createComposite( root, 1, 5, 0 );
-    
-    Group serverGroup = uiUtils.createGroup( serverComp, ConsumptionUIMessages.LABEL_SELECTION_VIEW_TITLE,
-                                             null, INFOPOP_PWRS_GROUP_SERVICE,
-											 2, 5, 5);
-    
-    runtimeWidget_ = new RuntimeServerSelectionWidget( false );
-    runtimeWidget_.addControls( serverGroup, statusListener );
-    textListener_ = new TextModifyListener();
-    runtimeWidget_.addModifyListener( textListener_ );
-             
-    projectWidget_ = new ProjectSelectionWidget();
-    projectWidget_.addControls( serverGroup, statusListener );
-    
-    clientWidget_ = new ClientRuntimeSelectionWidget();
-    clientWidget_.addControls( root, statusListener );
-    
-    Point size = root.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-    scroller.setMinSize( size ); 
-    root.setSize( size );
-     
-    scroller.setLayoutData( new GridData( GridData.FILL_BOTH ) );
-    
-    return this;
-  }
-  
-  //If generate proxy is not selected, don't show the client portion of the page.
-  public void setGenerateProxy( Boolean value )
-  {
-    clientWidget_.setVisible( value.booleanValue() ); 
-    isClientWidgetVisible_ = value.booleanValue();
-  }
-  
-  public TypeRuntimeServer getServiceTypeRuntimeServer()
-  {
-    return runtimeWidget_.getTypeRuntimeServer();  
-  }
-   
-  public void setServiceTypeRuntimeServer( TypeRuntimeServer ids )
-  {
-    runtimeWidget_.removeModifyListener( textListener_ );
-    runtimeWidget_.setTypeRuntimeServer( ids );  
-    projectWidget_.setTypeRuntimeServer(ids);
-    projectWidget_.refreshProjectItems();
-    runtimeWidget_.addModifyListener( textListener_ );
-  }
-  
-  public TypeRuntimeServer getClientTypeRuntimeServer()
-  {
-    return clientWidget_.getClientTypeRuntimeServer();  
-  }
-   
-  public void setClientTypeRuntimeServer( TypeRuntimeServer ids )
-  {
-    clientWidget_.setClientTypeRuntimeServer( ids );  
-  }
-  
-  public void setServiceRuntimeId(String id)
-  {
-	//TODO This method and any mappings to it
-	// should be deleted if no longer required.
-  }
-  
-  public String getServiceRuntimeId()
-  {
-    //calculate the most appropriate clientRuntimeId based on current settings.
-    String projectName = projectWidget_.getProjectName();
-    String templateId = projectWidget_.getComponentType();
-    
-    //Find the service runtime that fits this profile best.
-    return WebServiceRuntimeExtensionUtils2.getServiceRuntimeId(runtimeWidget_.getTypeRuntimeServer(), projectName, templateId);    
-  }  
-  
-  public void setClientRuntimeId(String id)
-  {
-    //TODO This method and any mappings to it
-	// should be deleted if no longer required.
-  }
-  
-  public String getClientRuntimeId()
-  {
-    //calculate the most appropriate clientRuntimeId based on current settings.
-    return clientWidget_.getClientRuntimeId();
-  } 
-  
-  public boolean getServiceNeedEAR()
-  {
-    return projectWidget_.getNeedEAR();
-  }
-  
-  public void setServiceNeedEAR(boolean b)
-  {
-    projectWidget_.setNeedEAR(b);
-  }
-  
-  public boolean getClientNeedEAR()
-  {
-    return clientWidget_.getClientNeedEAR();
-  }
-  
-  public void setClientNeedEAR(boolean b)
-  {
-    clientWidget_.setClientNeedEAR(b);
-  }  
-  
-  public String getServiceComponentType()
-  {
-    return projectWidget_.getComponentType();
-  }
-  
-  public void setServiceComponentType( String type )
-  {
-	projectWidget_.setComponentType( type );  
-  }
-  
-  public String getClientComponentType()
-  {
-    return clientWidget_.getClientComponentType();
-  }  
-  
-  public void setClientComponentType( String type )
-  {
-	clientWidget_.setClientComponentType( type );  
-  }
-  
-  public String getServiceProjectName()
-  {
-    return projectWidget_.getProjectName();  
-  }
-  
-  public void setServiceProjectName(String name)
-  {
-    projectWidget_.setProjectName(name);  
-  }
-  
-  public String getServiceEarProjectName()
-  {
-	return projectWidget_.getEarProjectName();  
-  }
-  
-  public void setServiceEarProjectName(String name)
-  {
-    projectWidget_.setEarProjectName(name);  
-  }  
-  
-  public String getClientProjectName()
-  {
-    return clientWidget_.getClientProjectName();  
-  }
-  
-  public void setClientProjectName(String name)
-  {
-    clientWidget_.setClientProjectName(name);  
-  }  
-  
-  public String getClientEarProjectName()
-  {
-	return clientWidget_.getClientEarProjectName();  
-  }
-  
-  public void setClientEarProjectName(String name)
-  {
-    clientWidget_.setClientEarProjectName(name);  
-  }    
-  
-  public void setInstallService(boolean b)
-  {
-    runtimeWidget_.setInstall(b);
-  }  
-  
-  public void setInstallClient(boolean b)
-  {
-    clientWidget_.setInstallClient(b);
-  }  
-  
-  private class TextModifyListener implements ModifyListener 
-  {
-  	public void modifyText(ModifyEvent e)
-  	{
-		if( clientWidget_.isVisible() )
-  		{  	  
-		  TypeRuntimeServer serviceIds = runtimeWidget_.getTypeRuntimeServer();
-  		  TypeRuntimeServer clientIds  = clientWidget_.getClientTypeRuntimeServer();
-  		
-  		  clientIds.setRuntimeId( serviceIds.getRuntimeId() );
-  		  clientIds.setServerId( serviceIds.getServerId() );
-  		  clientIds.setServerInstanceId( serviceIds.getServerInstanceId() );
-
-  		  clientWidget_.setClientTypeRuntimeServer( clientIds );
-  		  //clientWidget_.setJ2EEVersion(runtimeWidget_.getJ2EEVersion());  	
-  		}
-		
-		//Set the current server selection and J2EE level on the ProjectSelectionWidget
-		projectWidget_.setTypeRuntimeServer(runtimeWidget_.getTypeRuntimeServer());
-        projectWidget_.refreshProjectItems();
-  	}
-  }
- 
-  
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.command.env.ui.widgets.WidgetContributor#getStatus()
-   */
-  public IStatus getStatus() 
-  {
-    IStatus serviceStatus = runtimeWidget_.getStatus();
-    IStatus projectStatus = projectWidget_.getStatus();
-    IStatus clientStatus  = isClientWidgetVisible_ ? clientWidget_.getStatus() : Status.OK_STATUS;    
-    IStatus finalStatus   = Status.OK_STATUS;
-    
-    
-    // call child widgets' getStatus()
-    if( serviceStatus.getSeverity() == Status.ERROR )
-    {
-      finalStatus = serviceStatus;
-    }
-    else if( clientStatus.getSeverity() == Status.ERROR )
-    {
-      finalStatus = clientStatus;
-    }
-    else if ( projectStatus.getSeverity()== Status.ERROR) {
-      finalStatus = projectStatus;
-    }    
-    
-    String projectName = projectWidget_.getProjectName();
-    if (projectName != null && projectName.length()>0)
-    {
-      //If the project exists, ensure that it is suitable for the selected runtime
-      //and server.
-      ValidationUtils valUtils = new ValidationUtils();
-      IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
-      String typeId = getServiceTypeRuntimeServer().getTypeId();
-      String runtimeId = getServiceTypeRuntimeServer().getRuntimeId();
-      String serverFactoryId = getServiceTypeRuntimeServer().getServerId();
-      
-      if (project.exists())
-      {
-        //Check if the runtime supports it.
-        if (!WebServiceRuntimeExtensionUtils2.doesServiceTypeAndRuntimeSupportProject(typeId, runtimeId, projectName))
-        {
-          String runtimeLabel = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById(runtimeId);
-          finalStatus = StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_SERVICE_RUNTIME_DOES_NOT_SUPPORT_PROJECT, new String[]{runtimeLabel, projectName}));
-        }
-        
-        //Check if the server supports it.
-
-        if (serverFactoryId!=null && serverFactoryId.length()>0)
-        {
-          if (!valUtils.doesServerSupportProject(serverFactoryId, projectName))
-          {
-            String serverLabel = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverFactoryId);
-            finalStatus = StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_SERVICE_SERVER_DOES_NOT_SUPPORT_PROJECT, new String[]{serverLabel, projectName}));
-          }
-        }          
-      }
-      else
-      {
-        //Non-existing project is only permitted if there is a server selected.
-        if (serverFactoryId==null || serverFactoryId.length()==0)
-        {
-          finalStatus = StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_PROJECT_MUST_EXIST, new String[]{projectName}));
-        }
-        else
-        {
-          // Look at the project type to ensure that it is suitable for the
-          // selected runtime and server.
-          String templateId = getServiceComponentType();
-
-          if (templateId != null && templateId.length() > 0)
-          {
-            // Check if the runtime supports it.
-            if (!WebServiceRuntimeExtensionUtils2.doesServiceTypeAndRuntimeSupportTemplate(typeId, runtimeId, templateId))
-            {
-              String runtimeLabel = WebServiceRuntimeExtensionUtils2.getRuntimeLabelById(runtimeId);
-              String templateLabel = FacetUtils.getTemplateLabelById(templateId);
-              finalStatus = StatusUtils.errorStatus(NLS.bind(ConsumptionUIMessages.MSG_SERVICE_RUNTIME_DOES_NOT_SUPPORT_TEMPLATE,
-                  new String[] { runtimeLabel, templateLabel }));
-            }
-
-            // Check if the server supports it.
-            if (serverFactoryId != null && serverFactoryId.length() > 0)
-            {
-              if (!valUtils.doesServerSupportTemplate(serverFactoryId, templateId))
-              {
-                String serverLabel = WebServiceRuntimeExtensionUtils2.getServerLabelById(serverFactoryId);
-                String templateLabel = FacetUtils.getTemplateLabelById(templateId);
-                finalStatus = StatusUtils.errorStatus(NLS.bind(
-                    ConsumptionUIMessages.MSG_SERVICE_SERVER_DOES_NOT_SUPPORT_TEMPLATE,
-                    new String[] { serverLabel, templateLabel }));
-              }
-            }
-          }
-        }
-        
-        
-      }
-    }    
-
-    if (isClientWidgetVisible_) 
-    {
-	    String clientEARName   = clientWidget_.getClientEarProjectName();
-	    String clientProjName  = clientWidget_.getClientProjectName();
-        String serviceProjName = projectWidget_.getProjectName();
-	    String serviceEarName  = projectWidget_.getEarProjectName();
-  		//String clientComponentName = clientWidget_.getClientComponentName();
-		
-	    // check same EAR-ness -----
-	    String warning_msg = getEARProjectWarningMessage(serviceEarName, clientEARName);
-	    
-		//if (serviceComponentName.equalsIgnoreCase(clientComponentName)){
-			  //String err_msg = NLS.bind(ConsumptionUIMessages.MSG_SAME_CLIENT_AND_SERVICE_COMPONENTS, new String[]{ "WEB" } );
-			  //finalStatus = StatusUtils.errorStatus( err_msg );				
-		//}
-		
-	    if( clientProjName != null && serviceProjName != null && 
-	        clientProjName.equalsIgnoreCase( serviceProjName ))
-	    {
-		  String error_msg =ConsumptionUIMessages.MSG_SAME_CLIENT_AND_SERVICE_PROJECTS;
-		  finalStatus = StatusUtils.errorStatus( error_msg );
-	    }
-	    
-		if (warning_msg != null)
-	    {
-	      if (finalStatus.getSeverity()!=Status.ERROR)
-	      	return StatusUtils.warningStatus( warning_msg );          
-	    }         
-      
-    }
-
-    //If finalStatus is still OK, check if there are any warnings.
-    if (finalStatus.getSeverity()!=Status.ERROR)
-    {
-      if( serviceStatus.getSeverity() == Status.WARNING )
-      {
-        finalStatus = serviceStatus;
-      }
-      else if (clientStatus.getSeverity() == Status.WARNING)
-      {
-        finalStatus = serviceStatus;
-      }        
-    }
-
-    return finalStatus;
-  }
-  
-  private void createMessageText( Composite parent, String value )
-  {
-    Text     messageText = new Text( parent, SWT.WRAP | SWT.MULTI | SWT.READ_ONLY );    
-	GridData gridData    = new GridData( GridData.FILL_BOTH );
-	
-	gridData.horizontalIndent = 10;    
-	messageText.setLayoutData( gridData );
-	messageText.setText( value );
-  }
-  
-  private String getEARProjectWarningMessage(String serviceEARName, String clientEARName ) {
-
-    // check if service and client share the same EAR
-    if (serviceEARName!=null && clientEARName!=null) {
-    
-      if (clientEARName.equalsIgnoreCase(serviceEARName) && clientEARName.length()>0) {
-        return NLS.bind(ConsumptionUIMessages.MSG_SAME_CLIENT_AND_SERVICE_EARS, new String[]{ "EAR" });
-      }
-    }
-
-    return null;
-
-  }
-}
diff --git a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/runtime/ServerRuntimeSelectionWidgetDefaultingCommand.java b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/runtime/ServerRuntimeSelectionWidgetDefaultingCommand.java
index 4047f9f..89cecb4 100644
--- a/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/runtime/ServerRuntimeSelectionWidgetDefaultingCommand.java
+++ b/bundles/org.eclipse.jst.ws.creation.ui/src/org/eclipse/jst/ws/internal/creation/ui/widgets/runtime/ServerRuntimeSelectionWidgetDefaultingCommand.java
@@ -14,6 +14,11 @@
  * 20060227   124392 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060315   131963 rsinha@ca.ibm.com - Rupam Kuehner
  * 20060418   129688 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060427   126780 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060427   138058 joan@ca.ibm.com - Joan Haggarty
+ * 20060523   133714 joan@ca.ibm.com - Joan Haggarty
+ * 20060525   143843 joan@ca.ibm.com - Joan Haggarty
+ * 20060905   156230 kathy@ca.ibm.com - Kathy Chan, Handling projects with no target runtime
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.creation.ui.widgets.runtime;
 
@@ -27,13 +32,13 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
 import org.eclipse.jst.ws.internal.common.ServerUtils;
 import org.eclipse.jst.ws.internal.consumption.common.FacetMatcher;
 import org.eclipse.jst.ws.internal.consumption.common.FacetUtils;
 import org.eclipse.jst.ws.internal.consumption.common.RequiredFacetVersion;
 import org.eclipse.jst.ws.internal.consumption.ui.ConsumptionUIMessages;
+import org.eclipse.jst.ws.internal.consumption.ui.common.DefaultingUtils;
 import org.eclipse.jst.ws.internal.consumption.ui.plugin.WebServiceConsumptionUIPlugin;
 import org.eclipse.jst.ws.internal.consumption.ui.preferences.PersistentServerRuntimeContext;
 import org.eclipse.jst.ws.internal.consumption.ui.preferences.ProjectTopologyContext;
@@ -45,7 +50,6 @@
 import org.eclipse.jst.ws.internal.data.TypeRuntimeServer;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.server.core.IServer;
 import org.eclipse.wst.server.core.IServerType;
@@ -72,6 +76,22 @@
   }
   
   
+  /**
+   * Defaults the following bits of information in the following order:
+   * serviceRuntimeId_ : the serviceRuntimeId. Must be defaulted to non-empty String.
+   * serviceIds_.runtimeId_: the Web service runtime id. Must be defaulted to non-empty String.
+   * serviceProjectName_ : the name of the service project. Must be non-empty. May or may not exist.
+   * serviceComponentType_: the id of the service project template. Must be empty if the service
+   *                        project exists. Must be non-empty of the service project does not exist.
+   * serviceIds_.serverId_: the server type id. May be an empty String if the defaulted Web service runtime
+   *                        does not require a server.
+   * serviceIds_.serverInstanceId_: the server id. May be null or an empty String.
+   * serviceNeedEAR_: true if an EAR is needed. False otherwise.
+   * serviceEarProjectName_: the service EAR project. Must be empty if the serviceNeedEAR_ is false.
+   *                         Must be non-empty if the serviceNeedEAR_ is true.
+   * Defaults the parallel information on the client-side if needed 
+   * (@see ClientRuntimeSelectionWidgetDefaultingCommand#execute).                                                 
+   */
   public IStatus execute( IProgressMonitor monitor, IAdaptable adaptable )
   {    
     IEnvironment env = getEnvironment();
@@ -79,13 +99,35 @@
     try
     {    	
      
+     //**Step 1** Default the serviceRuntime and the Web service runtime.
+     //serviceIdsFixed_ is set to true for the Ant scenario. It's always false for the wizard
+     //scenarios.    	
      if (serviceIdsFixed_)
      {
-       //Set the serviceRuntime based on the runtime, server, and initial selection. 
-        DefaultRuntimeTriplet drt = getDefaultServiceRuntimeForFixedRuntimeAndServer(initialProject_);
-        serviceFacetMatcher_ = drt.getFacetMatcher();
-        serviceProjectName_ = drt.getProjectName();
-        serviceRuntimeId_ = drt.getRuntimeId(); 
+       //Set the serviceRuntime based on the runtime and server.
+       //If user set a service project use that as initial project otherwise default from initial selection.
+    	 if (serviceProjectName_ != null) 
+    	 {
+    		 initialProject_ = ResourcesPlugin.getWorkspace().getRoot().getProject(serviceProjectName_);
+    		 
+    		 DefaultRuntimeTriplet drt = getDefaultRuntime(initialProject_, serviceIds_.getTypeId(), false);
+             serviceFacetMatcher_ = drt.getFacetMatcher();
+    	     serviceProjectName_ = drt.getProjectName();
+    	     serviceRuntimeId_ = drt.getRuntimeId();       
+
+    	       if (serviceRuntimeId_ != null)
+    	       {
+    	    	   serviceIds_.setRuntimeId(WebServiceRuntimeExtensionUtils2.getServiceRuntimeDescriptorById(serviceRuntimeId_).getRuntime()
+    	      	         .getId());
+    	       }
+    	 }
+    	 else
+    	 {
+    		 DefaultRuntimeTriplet drt = getDefaultServiceRuntimeForFixedRuntimeAndServer(initialProject_);  
+    	     serviceFacetMatcher_ = drt.getFacetMatcher();
+    	     serviceProjectName_ = drt.getProjectName();
+    	     serviceRuntimeId_ = drt.getRuntimeId();	 
+    	 }   
      }
      else
      {
@@ -95,22 +137,23 @@
        serviceProjectName_ = drt.getProjectName();
        serviceRuntimeId_ = drt.getRuntimeId();       
 
-       if (serviceRuntimeId_ == null)
+       if (serviceRuntimeId_ != null)
        {
-         // return and error.
-       }
-       serviceIds_.setRuntimeId(WebServiceRuntimeExtensionUtils2.getServiceRuntimeDescriptorById(serviceRuntimeId_).getRuntime()
-         .getId());
+    	   serviceIds_.setRuntimeId(WebServiceRuntimeExtensionUtils2.getServiceRuntimeDescriptorById(serviceRuntimeId_).getRuntime()
+    		         .getId()); 
+       } 
      }
      
-     // Set the project
+     //**Step 2** Default the service project if it was not already defaulted 
+     //as part of defaulting the Web service runtime.
      if (serviceProjectName_ == null)
      {
        // Project name did not get set when the runtime was set, so set it now
        serviceProjectName_ = getDefaultServiceProjectName();
      }
 
-     IProject serviceProject = ResourcesPlugin.getWorkspace().getRoot().getProject(serviceProjectName_);
+     //**Step 3** Default the service project type.
+     IProject serviceProject = ResourcesPlugin.getWorkspace().getRoot().getProject(serviceProjectName_); 
      if (!serviceProject.exists())
      {
        // Set the project template
@@ -121,7 +164,7 @@
        //Set it to an empty String
        serviceComponentType_ = "";
      }
-
+     //**Step 4** Default the server if this is not an Ant scenario.
      if (!serviceIdsFixed_)
      {
        // Set the server
@@ -133,6 +176,7 @@
        }
      }
      
+     //**Step 5** Default clientNeedEAR and client EAR if an EAR is needed
      setDefaultServiceEarProject();
      
      // jvh - for now comment out generate proxy
@@ -231,65 +275,20 @@
             serviceNeedEAR_ = false;
           }
         }
+      } else { // serverId == null, assume that it does not need EAR
+    	  serviceNeedEAR_ = false;
       }
     }
     
     if (serviceNeedEAR_)
     {
-      serviceEarProjectName_ = getDefaultServiceEarProjectName();
+      serviceEarProjectName_ = DefaultingUtils.getDefaultEARProjectName(serviceProjectName_);
     }
     else
     {
       serviceEarProjectName_ = "";
     }   
   }
-
-  private String getDefaultServiceEarProjectName()
-  {
-    //Choose an appropriate default.
-    
-    IProject serviceProject = ResourcesPlugin.getWorkspace().getRoot().getProject(serviceProjectName_);
-    if (serviceProject != null && serviceProject.exists())
-    {
-      IVirtualComponent[] earComps = J2EEUtils.getReferencingEARComponents(serviceProject);
-      if (earComps.length > 0)
-      {
-        //pick the first one.
-        return earComps[0].getName();
-
-      }
-    }
-    
-
-    IVirtualComponent[] allEarComps = J2EEUtils.getAllEARComponents();
-      
-
-    if (allEarComps.length > 0)
-    {
-      if (serviceProject != null && serviceProject.exists())
-      {
-        for (int i=0; i < allEarComps.length; i++)
-        {
-          IProject earProject = allEarComps[i].getProject();
-          IStatus associationStatus = J2EEUtils.canAssociateProjectToEAR(serviceProject, earProject);
-          if (associationStatus.getSeverity()==IStatus.OK)
-          {
-            return allEarComps[i].getName(); 
-          }
-        }
-      }
-      else
-      {
-        return allEarComps[0].getName();
-      }
-    }
-
-
-    
-    // there are no suitable existing EARs
-    return ResourceUtils.getDefaultServiceEARProjectName();
-    
-  }
   
   private IStatus setServiceDefaultServer()
   {
@@ -496,7 +495,7 @@
         if (WebServiceRuntimeExtensionUtils2.doesServiceRuntimeSupportServer(desc.getId(), serviceIds_.getServerId()))
         {
           validServiceRuntimes.add(desc.getId());
-          if (project != null && project.exists())
+          if (project != null && project.exists())  
           {
             Set facetVersions = FacetUtils.getFacetsForProject(project.getName());
             if (facetVersions != null)
@@ -606,4 +605,11 @@
     return serviceNeedEAR_;
   }
   
+  // This is for the Ant scenario where the service project name can be set in the property file.
+  // If the user has set the ServiceProjectName use it for defaulting purposes
+  public void setServiceProjectName(String name)
+  {
+	  serviceProjectName_ = name;
+  }
+  
 }
diff --git a/bundles/org.eclipse.jst.ws.uddiregistry/.cvsignore b/bundles/org.eclipse.jst.ws.uddiregistry/.cvsignore
index 5306ed2..b7853ea 100644
--- a/bundles/org.eclipse.jst.ws.uddiregistry/.cvsignore
+++ b/bundles/org.eclipse.jst.ws.uddiregistry/.cvsignore
@@ -4,3 +4,4 @@
 uddiregistry.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.jst.ws.uddiregistry/.project b/bundles/org.eclipse.jst.ws.uddiregistry/.project
index cd999f6..662562d 100644
--- a/bundles/org.eclipse.jst.ws.uddiregistry/.project
+++ b/bundles/org.eclipse.jst.ws.uddiregistry/.project
@@ -3,12 +3,6 @@
 	<name>org.eclipse.jst.ws.uddiregistry</name>
 	<comment></comment>
 	<projects>
-		<project>org.eclipse.wst.command.env</project>
-		<project>org.eclipse.wst.command.env.core</project>
-		<project>org.eclipse.jst.ws</project>
-		<project>org.eclipse.jst.ws.consumption</project>
-		<project>org.eclipse.jst.ws.consumption.ui</project>
-		<project>org.eclipse.jst.ws.ui</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/bundles/org.eclipse.jst.ws.uddiregistry/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.uddiregistry/META-INF/MANIFEST.MF
index 13aa0f9..e89356f 100644
--- a/bundles/org.eclipse.jst.ws.uddiregistry/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.uddiregistry/META-INF/MANIFEST.MF
@@ -11,12 +11,12 @@
  org.eclipse.jst.ws.internal.uddiregistry.widgets;x-internal:=true,
  org.eclipse.jst.ws.internal.uddiregistry.widgets.binding;x-internal:=true,
  org.eclipse.jst.ws.internal.uddiregistry.wizard;x-internal:=true
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.jst.ws.ui,
- org.eclipse.wst.command.env.core,
- org.eclipse.wst.command.env,
- org.eclipse.wst.command.env.ui,
- org.eclipse.wst.common.frameworks,
- com.ibm.icu
+Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,3.4.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.jst.ws.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ com.ibm.icu;bundle-version="[3.4.4,3.5.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.jst.ws.uddiregistry/about.html b/bundles/org.eclipse.jst.ws.uddiregistry/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws.uddiregistry/about.html
+++ b/bundles/org.eclipse.jst.ws.uddiregistry/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws.ui/.cvsignore b/bundles/org.eclipse.jst.ws.ui/.cvsignore
index 1d99ec9..5deffe5 100644
--- a/bundles/org.eclipse.jst.ws.ui/.cvsignore
+++ b/bundles/org.eclipse.jst.ws.ui/.cvsignore
@@ -4,3 +4,4 @@
 ws-ui.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.jst.ws.ui/.project b/bundles/org.eclipse.jst.ws.ui/.project
index 17ef9ac..d401669 100644
--- a/bundles/org.eclipse.jst.ws.ui/.project
+++ b/bundles/org.eclipse.jst.ws.ui/.project
@@ -3,9 +3,6 @@
 	<name>org.eclipse.jst.ws.ui</name>
 	<comment></comment>
 	<projects>
-		<project>org.eclipse.wst.command.env</project>
-		<project>org.eclipse.wst.command.env.core</project>
-		<project>org.eclipse.jst.ws</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/bundles/org.eclipse.jst.ws.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.ui/META-INF/MANIFEST.MF
index 79d2cd0..3c44f8d 100644
--- a/bundles/org.eclipse.jst.ws.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.ui; singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.101.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.ui.plugin.WebServiceUIPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -13,21 +13,22 @@
  org.eclipse.jst.ws.internal.ui.plugin;x-internal:=true,
  org.eclipse.jst.ws.internal.ui.preferences;x-internal:=true,
  org.eclipse.jst.ws.internal.ui.uddi;x-internal:=true
-Require-Bundle: org.eclipse.wst.command.env,
- org.eclipse.wst.command.env.ui,
- org.eclipse.wst.command.env.core,
- org.eclipse.jst.ws,
- org.eclipse.jdt.core,
- org.eclipse.jdt.ui,
- org.eclipse.ui.ide,
- org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.emf.ecore,
- org.eclipse.jem.util,
- org.eclipse.wst.server.core,
- org.eclipse.jst.j2ee,
- org.eclipse.wst.ws.explorer,
- org.eclipse.jst.j2ee.core,
- org.eclipse.wst.ws
+Require-Bundle: org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.ws;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jdt.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.jem.util;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.ws.explorer;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.jst.ws.ui/about.html b/bundles/org.eclipse.jst.ws.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws.ui/about.html
+++ b/bundles/org.eclipse.jst.ws.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws.ui/plugin.xml b/bundles/org.eclipse.jst.ws.ui/plugin.xml
index 375662a..dc5fd1d 100644
--- a/bundles/org.eclipse.jst.ws.ui/plugin.xml
+++ b/bundles/org.eclipse.jst.ws.ui/plugin.xml
@@ -69,9 +69,9 @@
             id="org.eclipse.jst.ws.internal.consumption.ui.action.WSDLFileMenu">
          <action
                label="%POPUP_TEST_WSDL"
-               class="org.eclipse.wst.ws.internal.explorer.popup.PopupTestWSDL"
+               class="org.eclipse.jst.ws.internal.ui.popup.PopupTestService"
                menubarPath="additions"
-               id="org.eclipse.wst.ws.internal.explorer.popup.PopupTestWSDL">
+               id="org.eclipse.jst.ws.internal.ui.popup.PopupTestService">
          </action>
       </objectContribution>
    </extension>
diff --git a/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/WSUIPlugin.properties b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/WSUIPlugin.properties
index 5e48612..29f6f2f 100644
--- a/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/WSUIPlugin.properties
+++ b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/WSUIPlugin.properties
@@ -42,6 +42,8 @@
 BUTTON_LAUNCH_SAMPLE=&Launch the sample when generated
 LABEL_MOVE_UP=Move &up
 LABEL_MOVE_DOWN=Move &down
+LABEL_MOVE_UP_2=Move u&p
+LABEL_MOVE_DOWN_2=Move dow&n
 
 #
 # Preferences Tooltips
diff --git a/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/WSUIPluginMessages.java b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/WSUIPluginMessages.java
index b24cb2a..f5fb8f4 100644
--- a/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/WSUIPluginMessages.java
+++ b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/WSUIPluginMessages.java
@@ -13,6 +13,7 @@
  * 20060329   128827 kathy@ca.ibm.com - Kathy Chan
  * 20060329   124667 kathy@ca.ibm.com - Kathy Chan
  * 20060331   128827 kathy@ca.ibm.com - Kathy Chan
+ * 20060515   141398 cbrealey@ca.ibm.com - Chris Brealey
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.ui;
 
@@ -38,6 +39,8 @@
 	public static String BUTTON_LAUNCH_SAMPLE;
 	public static String LABEL_MOVE_UP;
 	public static String LABEL_MOVE_DOWN;
+	public static String LABEL_MOVE_UP_2;
+	public static String LABEL_MOVE_DOWN_2;
 	public static String TOOLTIP_PPSD_PAGE;
 	public static String TOOLTIP_PPSD_CHECKBOX_LAUNCH_SAMPLE;
 	public static String TOOLTIP_CLIENT_TYPE_TABLE_VIEWER;
diff --git a/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/common/UIUtils.java b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/common/UIUtils.java
index cf42b80..24793c4 100644
--- a/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/common/UIUtils.java
+++ b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/common/UIUtils.java
@@ -1,16 +1,21 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060817   140017 makandre@ca.ibm.com - Andrew Mak, longer project or server/runtime strings do not resize wizard
+ * 20060829   155441 makandre@ca.ibm.com - Andrew Mak, web service wizard hangs during resize
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.ui.common;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -27,6 +32,11 @@
 
 public class UIUtils 
 {
+	/**
+	 * A default padding value for horizontalResize().
+	 */
+	public final static int DEFAULT_PADDING = 35;
+	
   String       infoPopid_;
   
   public UIUtils( String infoPopid )
@@ -213,4 +223,22 @@
 	  if( infopop != null ) PlatformUI.getWorkbench().getHelpSystem().setHelp( ctrl, infoPopid_ + "." + infopop );
   }
   
+  /**
+   * Resizes the width of the target composite so that it is as wide as the
+   * reference composite plus a padding value.  
+   * 
+   * @param target The composite to resize.
+   * @param reference The reference composite
+   * @param padding The padding value
+   */
+  public void horizontalResize(Composite target, Composite reference, int padding) {
+		
+		Point originalSize  = target.getSize();
+		Point referenceSize = reference.getSize();
+		
+		padding = padding >= 0 ? padding : DEFAULT_PADDING;
+		
+		if (referenceSize.x + padding > originalSize.x)
+			target.setSize(referenceSize.x + padding, originalSize.y);
+  }  
 }
diff --git a/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/plugin/WebServiceUIPlugin.java b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/plugin/WebServiceUIPlugin.java
index 368f4a6..6e51a55 100644
--- a/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/plugin/WebServiceUIPlugin.java
+++ b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/plugin/WebServiceUIPlugin.java
@@ -1,21 +1,23 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
+ * Copyright (c) 2003, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   115690 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.ui.plugin;
 
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.text.MessageFormat;
+
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.wst.command.internal.env.core.common.MessageUtils;
 
 
 /**
@@ -55,47 +57,6 @@
   }
 		
   /**
-  * Returns the message string identified by the given key from
-  * the plugin.properties file for the appropriate locale.
-  * @param key The message key string prefixed by a "%" symbol.
-  * That is, the string passed in must be of the form "%KEY"
-  * where the plugin.properties file contains a line of the
-  * form: "KEY = value".
-  * @return The locale-specific message.
-  */
-	public static String getMessage(String key) 
-	{
-	    MessageUtils msgUtils = new MessageUtils( "org.eclipse.jst.ws.ui.plugin", instance_ );
-	    
-	    if( key.startsWith("%"))
-	    {
-	      key = key.substring( 1, key.length() );
-	    }
-	    
-	    return msgUtils.getMessage(key);
-    }
-
-  /**
-  * Returns the message string identified by the given key from
-  * the plugin.properties file for the appropriate locale.
-  * Substitution sequences in the message string
-  * are replaced by the given array of substitution objects (which
-  * are most frequently strings). See java.text.MessageFormat for
-  * further details on substitution.
-  * @param key The message key string prefixed by a "%" symbol.
-  * That is, the string passed in must be of the form "%KEY"
-  * where the plugin.properties file contains a line of the
-  * form: "KEY = value".
-  * @param args The substitution values for the message
-  * as required by the message in plugin.properties and
-  * by the rules of class java.text.MessageFormat.
-  * @return The locale-specific message.
-  */
-	public static String getMessage(String key, Object[] args) {
-		return MessageFormat.format(getMessage(key), args);
-  }
-
-  /**
   * Returns an image descriptor for the named resource
   * as relative to the plugin install location.
   * @return An image descriptor, possibly null.
diff --git a/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/popup/PopupTestService.java b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/popup/PopupTestService.java
new file mode 100644
index 0000000..25a0d11
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.ui/src/org/eclipse/jst/ws/internal/ui/popup/PopupTestService.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2002, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060803   152790 mahutch@ca.ibm.com - Mark Hutchinson (created class)
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.ui.popup;
+
+import java.util.Iterator;
+import java.util.Vector;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef;
+import org.eclipse.jst.ws.internal.common.J2EEActionAdapterFactory;
+import org.eclipse.wst.ws.internal.explorer.LaunchOption;
+import org.eclipse.wst.ws.internal.explorer.WSExplorerLauncherCommand;
+import org.eclipse.wst.ws.internal.explorer.plugin.ExplorerPlugin;
+import org.eclipse.wst.ws.internal.explorer.popup.PopupTestWSDL;
+
+
+public class PopupTestService extends PopupTestWSDL
+{
+  public PopupTestService()
+  {
+	  super();
+  }
+
+  public void run()
+  {
+	String stateLocation = ExplorerPlugin.getInstance().getPluginStateLocation();
+	String defaultFavoritesLocation = ExplorerPlugin.getInstance().getDefaultFavoritesLocation();
+  	WSExplorerLauncherCommand command = new WSExplorerLauncherCommand();
+    command.setForceLaunchOutsideIDE(false);
+    IStructuredSelection selection = getWorkbenchSelection();
+    Vector launchOptions = new Vector();
+    if (selection != null)
+    {      
+      for (Iterator it = selection.iterator(); it.hasNext();)
+      {
+        String wsdlURL = null;
+        Object object = it.next();
+        
+        if (object instanceof ServiceRef)
+        {
+          ServiceRef serviceImpl = (ServiceRef)object;
+          wsdlURL = J2EEActionAdapterFactory.getWSDLURI(serviceImpl);
+        }
+        
+        addLaunchOptions(launchOptions, wsdlURL, stateLocation, defaultFavoritesLocation);
+      }
+    }
+    command.setLaunchOptions((LaunchOption[])launchOptions.toArray(new LaunchOption[0]));
+    command.execute();
+  }
+}
diff --git a/bundles/org.eclipse.jst.ws/.cvsignore b/bundles/org.eclipse.jst.ws/.cvsignore
index 9854114..5e01b0f 100644
--- a/bundles/org.eclipse.jst.ws/.cvsignore
+++ b/bundles/org.eclipse.jst.ws/.cvsignore
@@ -4,3 +4,4 @@
 ws.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.jst.ws/.project b/bundles/org.eclipse.jst.ws/.project
index b309184..6414517 100644
--- a/bundles/org.eclipse.jst.ws/.project
+++ b/bundles/org.eclipse.jst.ws/.project
@@ -3,9 +3,6 @@
 	<name>org.eclipse.jst.ws</name>
 	<comment></comment>
 	<projects>
-		<project>org.eclipse.wst.command.env</project>
-		<project>org.eclipse.wst.command.env.core</project>
-		<project>org.eclipse.wst.wsdl</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/bundles/org.eclipse.jst.ws/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws/META-INF/MANIFEST.MF
index 0c274ab..9f7ebd1 100644
--- a/bundles/org.eclipse.jst.ws/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws/META-INF/MANIFEST.MF
@@ -2,50 +2,45 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.103.qualifier
 Bundle-Activator: org.eclipse.jst.ws.internal.plugin.WebServicePlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
 Export-Package: org.eclipse.jst.ws.internal;x-internal:=true,
  org.eclipse.jst.ws.internal.command;x-internal:=true,
  org.eclipse.jst.ws.internal.common;x-internal:=true,
+ org.eclipse.jst.ws.internal.conformance;x-internal:=true,
+ org.eclipse.jst.ws.internal.conformance.rules;x-internal:=true,
  org.eclipse.jst.ws.internal.context;x-internal:=true,
  org.eclipse.jst.ws.internal.data;x-internal:=true,
  org.eclipse.jst.ws.internal.dialog;x-internal:=true,
  org.eclipse.jst.ws.internal.ext;x-internal:=true,
  org.eclipse.jst.ws.internal.ext.test;x-internal:=true,
- org.eclipse.jst.ws.internal.plugin;x-internal:=true
-Require-Bundle: org.eclipse.wst.command.env,
- org.eclipse.wst.command.env.ui,
- org.eclipse.wst.command.env.core,
- org.eclipse.jem.util,
- org.eclipse.jem.workbench,
- org.eclipse.jem,
- org.eclipse.jdt.core,
- org.eclipse.emf.common,
- org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.jface,
- org.eclipse.emf.ecore,
- org.eclipse.debug.core,
- org.eclipse.jem.workbench,
- org.eclipse.wst.server.core,
- org.eclipse.wst.server.ui,
- org.eclipse.wst.wsdl,
- org.eclipse.jst.j2ee.core,
- org.eclipse.jst.j2ee.ejb,
- org.eclipse.jst.j2ee,
- org.eclipse.jst.j2ee.web,
- org.eclipse.wst.common.emfworkbench.integration,
- org.eclipse.wst.web,
- org.eclipse.wst.common.modulecore,
- org.uddi4j,
- org.eclipse.wst.common.frameworks,
- org.eclipse.wst.common.emf,
- org.eclipse.emf.ecore.xmi,
- org.eclipse.jem.util,
- org.eclipse.jst.common.frameworks,
- org.eclipse.wst.common.environment,
- org.eclipse.wst.common.project.facet.core,
- com.ibm.icu
+ org.eclipse.jst.ws.internal.plugin;x-internal:=true,
+ org.eclipse.jst.ws.internal.wsrt
+Require-Bundle: org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.jem.util;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jem;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.jface;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.jem.workbench;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.jem.util;bundle-version="[1.2.0,1.3.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,1.2.0)",
+ com.ibm.icu;bundle-version="[3.4.4,3.5.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.jst.ws/about.html b/bundles/org.eclipse.jst.ws/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.jst.ws/about.html
+++ b/bundles/org.eclipse.jst.ws/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/WSPlugin.properties b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/WSPlugin.properties
index 97d4fc1..0ffee3f 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/WSPlugin.properties
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/WSPlugin.properties
@@ -6,16 +6,26 @@
 # http://www.eclipse.org/legal/epl-v10.html
 #
 # Contributors:
-#     IBM Corporation - initial API and implementation
+# IBM Corporation - initial API and implementation
 ###############################################################################
 
-#
-# Messages in plugin.xml.
-#
-
 MSG_ERROR_SERVER=IWAB0213E Error in starting server.
 
 ANY_FILTER_NAME=All files
 ANY_FILTER_DESC=This is a kind of Filter that accepts all objects.
 
 ERROR_SELECTION_TRANSFORM=Specified selection does not match a resource.
+
+MSG_JAXRPC11_NOT_COMPLIANT=The service class "{0}" does not comply to one or more requirements of the JAX-RPC 1.1 specification, and may not deploy or function correctly.
+MSG_JAXRPC11_UNRESOLVED_CLASS=The class "{0}" cannot be loaded via project "{1}". Check that the project contains the class, or that the class is loadable according to the Java Build Path of the project.
+MSG_JAXRPC11_UNRESOLVED_TYPE=A data type, "{0}", could not be resolved while analyzing the service class. Check your project classpath.
+MSG_JAXRPC11_RULE_0001=The service class "{0}" does not have a public default constructor. Chapter 10.1 of the JAX-RPC 1.1 specification requires a service class to have a public default constructor, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the service class to handle an incoming request message. 
+MSG_JAXRPC11_RULE_0002=The value type "{0}" used via the service class "{1}" does not have a public default constructor. Chapter 5.4 of the JAX-RPC 1.1 specification requires a value type to have a public default constructor, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the value type during deserialization.
+MSG_JAXRPC11_RULE_0003=The method "{0}" on the service class "{1}" is overloaded. Overloaded methods are allowed by chapter 5.5.5 of the JAX-RPC 1.1 specification, however, some JAX-RPC 1.1 compliant tools may not allow overloaded methods or may generate WSDL with overloaded operations as contrary to rule R2304 of the WS-I Basic Profile.
+MSG_JAXRPC11_RULE_0004=The service specific exception class "{0}" does not have a public constructor with parameters corresponding in number and type to the getter methods on the class. Chapter 5.5.5 of the JAX-RPC 1.1 specification requires a service specific exception to have a public constructor with the same number of parameters as there are getter methods, and of matching data types, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the exception during deserialization of a fault message.
+MSG_JAXRPC11_RULE_0005=The method "{0}" on the service class "{1}" uses a data type, "{2}", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.
+MSG_JAXRPC11_RULE_0006=The field or property "{0}" on the value type "{1}" used via the service class "{2}" has a data type, "{3}", that is not supported by the JAX-RPC 1.1 specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.
+MSG_JAXRPC11_RULE_0007=The primitive type "{0}" is not supported by the JAX-RPC 1.1 specification. As stated in chapter 5.1.1 of the specification, the supported primitive types are "boolean", "byte", "short", "int", "long", "float" and "double".
+MSG_JAXRPC11_RULE_0008=The wrapper type "{0}" is not supported by the JAX-RPC 1.1 specification. As stated in chapter 5.1.1 of the specification, the supported wrapper types are those corresponding to "boolean", "byte", "short", "int", "long", "float" and "double".
+MSG_JAXRPC11_RULE_0009=The Java type "{0}" is not supported by the JAX-RPC 1.1 specification. As stated in chapter 5.1.3 of the specification, the supported standard types are "java.lang.String", "java.util.Date", "java.util.Calendar", "java.math.BigInteger", "java.math.BigDecimal", "javax.xml.namespace.QName" and "java.net.URI".
+MSG_JAXRPC11_RULE_0010=Support for collection and map classes such as "{0}" is not required by JAX-RPC 1.1. Due to their non-type safe nature, a JAX-RPC 1.1 compliant Web service engine may not handle collections, or may represent them in WSDL documents and SOAP messages in a manner that impairs interoperability. The use of arrays instead of collections is strongly recommended.
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/WSPluginMessages.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/WSPluginMessages.java
index 9cffbd3..58874f2 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/WSPluginMessages.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/WSPluginMessages.java
@@ -6,7 +6,11 @@
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060420   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ * 20060607   145604 cbrealey@ca.ibm.com - Chris Brealey          
  *******************************************************************************/
 package org.eclipse.jst.ws.internal;
 
@@ -24,6 +28,19 @@
 	public static String ANY_FILTER_NAME;
 	public static String ANY_FILTER_DESC;
 	public static String ERROR_SELECTION_TRANSFORM;
+	public static String MSG_JAXRPC11_NOT_COMPLIANT;
+	public static String MSG_JAXRPC11_UNRESOLVED_CLASS;
+	public static String MSG_JAXRPC11_UNRESOLVED_TYPE;
+	public static String MSG_JAXRPC11_RULE_0001;
+	public static String MSG_JAXRPC11_RULE_0002;
+	public static String MSG_JAXRPC11_RULE_0003;
+	public static String MSG_JAXRPC11_RULE_0004;
+	public static String MSG_JAXRPC11_RULE_0005;
+	public static String MSG_JAXRPC11_RULE_0006;
+	public static String MSG_JAXRPC11_RULE_0007;
+	public static String MSG_JAXRPC11_RULE_0008;
+	public static String MSG_JAXRPC11_RULE_0009;
+	public static String MSG_JAXRPC11_RULE_0010;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, WSPluginMessages.class);
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/J2EEUtils.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/J2EEUtils.java
index ab131bc..e513d73 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/J2EEUtils.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/J2EEUtils.java
@@ -11,6 +11,8 @@
  * -------- -------- -----------------------------------------------------------
  * 20060204  124143   rsinha@ca.ibm.com - Rupam Kuehner     
  * 20060329   128069 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060503   126819 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060524   131132 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.common;
@@ -33,8 +35,6 @@
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationDataModelProvider;
@@ -1101,9 +1101,20 @@
 	public static IPath getWebInfPath(IProject project){
 		
 		IVirtualComponent component = ComponentCore.createComponent(project);
+		
+		//should WEB-INF location be pulled in from the .component file rather than hardcoded here?
 		IVirtualFolder webInfDir = component.getRootFolder().getFolder(new Path("/WEB-INF"));
 		IPath modulePath = webInfDir.getWorkspaceRelativePath();
-	
+		
+		if (!webInfDir.exists())
+		{	
+			try 
+			{	
+				webInfDir.create(0,null);				
+			}
+			catch (CoreException e)
+			{}
+		}		
 		return modulePath;
 	}
 	
@@ -1322,10 +1333,8 @@
             }
             else
             {
-              //This is not a faceted project. Check if this is a simple Java project.
-              IJavaProject javaProject = null;    
-              javaProject = JavaCore.create(project);    
-              if (javaProject != null)
+              //This is not a faceted project. Check if this is a simple Java project.    
+              if (ResourceUtils.isJavaProject(project))
               {
                 return true;
               }        
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ResourceUtils.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ResourceUtils.java
index f206f26..650af5a 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ResourceUtils.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ResourceUtils.java
@@ -10,6 +10,9 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060330   124667 kathy@ca.ibm.com - Kathy Chan
+ * 20060421   136761 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060424   115690 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20060503   126819 rsinha@ca.ibm.com - Rupam Kuehner
  *******************************************************************************/
 package org.eclipse.jst.ws.internal.common;
 
@@ -126,6 +129,8 @@
     private static final String DEFAULT_SERVICE_EAR_COMPONENT_NAME = "WebServiceProjectEAR";
 	private static final String DEFAULT_CLIENT_EAR_PROJECT_NAME = "WebServiceProjectClientEAR";
     private static final String DEFAULT_CLIENT_EAR_COMPONENT_NAME = "WebServiceProjectClientEAR";
+    
+    private static final String DEFAULT_EAR_EXT = "EAR";
 
 	/**
 	 * Returns the IWorkspaceRoot object.
@@ -362,7 +367,15 @@
 	 * @return True if the project is a Java Project.
 	 */
 	public static boolean isJavaProject(IProject project) {
-		return (JavaCore.create(project) != null);
+		try
+		{
+		  return project.hasNature(JavaCore.NATURE_ID);
+		}
+		catch (CoreException ce)
+		{
+			//Return false if CoreException occurs while checking nature.
+			return false;
+		}
 	}
 
 	/**
@@ -577,25 +590,6 @@
 	}
 	
 	/**
-	 * 
-	 * @param project
-	 * @return
-	 * 
-	 * @deprecated not used
-	 */
-	public static String getProjectTypeAsString(IProject project) {
-		if (ResourceUtils.isEJBProject(project))
-			return WebServicePlugin.getMessage("%LABEL_EJB");
-		else if (ResourceUtils.isWebProject(project))
-			return WebServicePlugin.getMessage("%LABEL_WEB");
-		else if (ResourceUtils.isJavaProject(project))
-			return WebServicePlugin.getMessage("%LABEL_JAVA");
-		else
-			return "";
-	}
-	
-
-	/**
 	 * Returns WebModule Deployable of the <code>project</code> as an
 	 * <code>IDeployable</code>, or null if the project has no Web nature.
 	 * 
@@ -1888,5 +1882,9 @@
   public static String getDefaultClientEARComponentName() {
     return DEFAULT_CLIENT_EAR_COMPONENT_NAME;
   }
+  
+  public static String getDefaultEARExtension() {
+	    return DEFAULT_EAR_EXT;
+	  }
 }
 
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ServerUtils.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ServerUtils.java
index f7320da..e079b36 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ServerUtils.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/ServerUtils.java
@@ -11,6 +11,8 @@
  * -------- -------- -----------------------------------------------------------
  * 20060204  124408   rsinha@ca.ibm.com - Rupam Kuehner          
  * 20060330   124667 kathy@ca.ibm.com - Kathy Chan
+ * 20061004   159356 kathy@ca.ibm.com - Kathy Chan, Get correct module root URL based on server chosen
+ * 20070119   159458 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.common;
@@ -27,7 +29,6 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
@@ -407,67 +408,61 @@
   
 	/**
 	 * Returns the URL string corresponding to the web server module root of the
-	 * component in a server instance or null if the project has no Web nature
-	 * or has no association to a server instance.
+	 * component based on a server factory ID or null if the project has no Web nature
+	 * or the module root cannot be determined (e.g. For some types of 
+	 * servers, we would not be able to get module root URL if the server has not been started).
+	 * Note that we are not relying on which server the module is currently associated with to determine
+	 * the correct module server root because the project might be associated with a server but we need the
+	 * module root based on another server factory ID.
 	 * 
 	 * @param project
 	 *            The project.
-	 * @return The web server module root URL or null if the project has no Web
-	 *         nature or has no association to a server instance.
+	 * @param serverFactoryId server factory ID
+	 * @return The web server module root URL or null 
 	 */
 	public static String getWebComponentURL(IProject project, String serverFactoryId) {
 		String webProjectURL = null;
 		IModule module = getModule(project);
 		if (module != null) {
-			IServer serverInstance = getServerForModule(module);
-			if (serverInstance != null) {
-				IURLProvider urlProvider = (IURLProvider) serverInstance.loadAdapter(IURLProvider.class, null);
-				if (urlProvider!=null) {
-					URL url = urlProvider.getModuleRootURL(module);
-					if (url != null) {
-						String s = url.toString();
-						webProjectURL = (s.endsWith("/") ? s.substring(0, s.length() - 1) : s);
+			IServerType serverType = ServerCore.findServerType(serverFactoryId);               
+			if (serverType!=null)
+			{
+				try {
+					//Choose a Runtime which is not a stub
+					IRuntime nonStubRuntime = null;
+					IRuntime[] runtimes = ServerUtil.getRuntimes(null, null);
+					String serverRuntimeTypeId = serverType.getRuntimeType().getId();
+					for (int i = 0; i < runtimes.length; i++) {
+						IRuntime runtime = runtimes[i];
+						IRuntimeType runtimeType = runtime.getRuntimeType();
+						if (runtimeType != null)
+						{
+							String thisRuntimeTypeId = runtimeType.getId();
+							if (thisRuntimeTypeId.equals(serverRuntimeTypeId) && !runtime.isStub()) {
+								//Found an appropriate IRuntime that is not a stub
+								nonStubRuntime = runtime;
+								break;
+							}
+						}
 					}
-				}
-			}
-			else {
-				//IRuntime projectTarget = ServerCore.getProjectProperties(project).getRuntimeTarget();
-                IServerType serverType = ServerCore.findServerType(serverFactoryId);               
-				if (serverType!=null)
-				{
-					try {
-                        //Choose a Runtime which is not a stub
-                        IRuntime nonStubRuntime = null;
-                        IRuntime[] runtimes = ServerUtil.getRuntimes(null, null);
-                        String serverRuntimeTypeId = serverType.getRuntimeType().getId();
-                        for (int i = 0; i < runtimes.length; i++) {
-                            IRuntime runtime = runtimes[i];
-                            String thisRuntimeTypeId = runtime.getRuntimeType().getId();
-                            if (thisRuntimeTypeId.equals(serverRuntimeTypeId) && !runtime.isStub()) {
-                                //Found an appropriate IRuntime that is not a stub
-                                nonStubRuntime = runtime;
-                                break;
-                            }
-                        }
-                        
-                        if (nonStubRuntime != null)
-                        {
-					      IServerWorkingCopy serverWC = serverType.createServer(null, null, nonStubRuntime, null);
-						  IURLProvider urlProvider = (IURLProvider) serverWC.loadAdapter(IURLProvider.class, null);
-						  if (urlProvider!=null) {
-						     URL url = urlProvider.getModuleRootURL(module);							
-							 if (url != null) {
+
+					if (nonStubRuntime != null)
+					{
+						IServerWorkingCopy serverWC = serverType.createServer(null, null, nonStubRuntime, null);
+						IURLProvider urlProvider = (IURLProvider) serverWC.loadAdapter(IURLProvider.class, null);
+						if (urlProvider!=null) {
+							URL url = urlProvider.getModuleRootURL(module);							
+							if (url != null) {
 								String s = url.toString();
 								webProjectURL = (s.endsWith("/") ? s.substring(0, s.length() - 1) : s);
-							 }				
-						  }
-                        }
-
-					} catch(CoreException ce){
-                        Logger.getLogger().log(ce);
+							}				
+						}
 					}
-					
+
+				} catch(CoreException ce){
+					Logger.getLogger().log(ce);
 				}
+
 			}
 		}
 		return webProjectURL;
@@ -475,13 +470,18 @@
 
 	/**
 	 * Returns the URL string corresponding to the web server module root of the
-	 * project in a server instance or null if the project has no Web nature or
-	 * has no association to a server instance.
+	 * component based on a server factory ID and server.  Returns null if the project has no Web nature
+	 * or the module root cannot be determined (e.g. For some types of 
+	 * servers, we would not be able to get module root URL if the server has not been started).
+	 * Note that we are not relying on which server the module is currently associated with to determine
+	 * the correct module server root because the project might be associated with a server but we need the
+	 * module root based on another server / server factory ID.
 	 * 
 	 * @param project
 	 *            The project.
-	 * @return The web server module root URL or null if the project has no Web
-	 *         nature or has no association to a server instance.
+	 * @param serverFactoryId server factory ID
+	 * @param server Server id
+	 * @return The web server module root URL or null 
 	 */
 	public static String getWebComponentURL(IProject project,
 			String serverFactoryId, IServer server) {
@@ -489,9 +489,8 @@
 		String webProjectURL = null;
 		IModule module = getModule(project);
 		if (module != null) {
-			IServer serverInstance = ServerUtils.getServerForModule(module, serverFactoryId, server, true, new NullProgressMonitor());
-			if (serverInstance != null) {
-                IURLProvider urlProvider = (IURLProvider) serverInstance.loadAdapter(IURLProvider.class, null);
+			if (server != null) {
+                IURLProvider urlProvider = (IURLProvider) server.loadAdapter(IURLProvider.class, null);
                 if (urlProvider!=null) {
                     URL url = urlProvider.getModuleRootURL(module);              
 					if (url != null) {
@@ -499,6 +498,8 @@
 					  webProjectURL = (s.endsWith("/") ? s.substring(0, s.length() - 1) : s);
                     }
 				}
+			} else {
+				webProjectURL = getWebComponentURL(project, serverFactoryId);
 			}
 		}
 		return webProjectURL;
@@ -621,9 +622,13 @@
         List runtimes = Arrays.asList(ServerUtil.getRuntimes(moduleType, stJ2EEVersion));    
 		for (int i = 0; i < runtimes.size(); i++) {
 			IRuntime runtime = (IRuntime) runtimes.get(i);
-			String thisRuntimeTypeId = runtime.getRuntimeType().getId();
-			if (thisRuntimeTypeId.equals(serverRuntimeTypeId) && !runtime.isStub()) {
-				return runtime.getId();
+			IRuntimeType runtimeType = runtime.getRuntimeType();
+			if (runtimeType != null)
+			{
+				String thisRuntimeTypeId = runtimeType.getId();
+				if (thisRuntimeTypeId.equals(serverRuntimeTypeId) && !runtime.isStub()) {
+					return runtime.getId();
+				}
 			}
 		}
 
@@ -686,9 +691,13 @@
         List runtimes = Arrays.asList(ServerUtil.getRuntimes(earModuleType, stJ2EEVersion));
 		for (int i = 0; i < runtimes.size(); i++) {
 			IRuntime runtime = (IRuntime) runtimes.get(i);
-			String thisId = runtime.getRuntimeType().getId();
-			if (thisId.equals(runtimeTargetId))
-				return true;
+			IRuntimeType runtimeType = runtime.getRuntimeType();
+			if (runtimeType != null)
+			{
+				String thisId = runtimeType.getId();
+				if (thisId.equals(runtimeTargetId))
+					return true;
+			}
 		}
 
 		return false;
@@ -711,9 +720,13 @@
         List runtimes = Arrays.asList(ServerUtil.getRuntimes(projectType, stJ2EEVersion));    
 		for (int i = 0; i < runtimes.size(); i++) {
 			IRuntime runtime = (IRuntime) runtimes.get(i);
-			String thisId = runtime.getRuntimeType().getId();
-			if (thisId.equals(runtimeTargetId))
-				return true;
+			IRuntimeType runtimeType = runtime.getRuntimeType();
+			if (runtimeType != null)
+			{
+				String thisId = runtimeType.getId();
+				if (thisId.equals(runtimeTargetId))
+					return true;
+			}
 		}
 
 		return false;
@@ -776,14 +789,18 @@
       for (int i = 0; i < runtimes.length; i++)
       {
         IRuntime runtime = runtimes[i];
-        String thisRuntimeTypeId = runtime.getRuntimeType().getId();
-        if (thisRuntimeTypeId.equals(serverRuntimeTypeId) && !runtime.isStub())
-        {
-          // Found an appropriate IRuntime that is not a stub
-          //foundNonStubRuntime = true;
-          nonStubRuntime = runtime;
-          break;
-        }
+        IRuntimeType runtimeType = runtime.getRuntimeType();
+    	if (runtimeType != null)
+    	{
+    		String thisRuntimeTypeId = runtimeType.getId();
+	        if (thisRuntimeTypeId.equals(serverRuntimeTypeId) && !runtime.isStub())
+	        {
+	          // Found an appropriate IRuntime that is not a stub
+	          //foundNonStubRuntime = true;
+	          nonStubRuntime = runtime;
+	          break;
+	        }
+    	}
       }
     }
     
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/UniversalPathTransformer.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/UniversalPathTransformer.java
new file mode 100644
index 0000000..a5e6c31
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/UniversalPathTransformer.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060825   135570 makandre@ca.ibm.com - Andrew Mak, Service implementation URL not displayed properly on first page
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.common;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+
+/**
+ * <p>A utility class for transforming a path to and from the following formats:</p>
+ * <ul>
+ * <li>An absolute eclipse path (i.e. starts with /ProjectName/...)</li>
+ * <li>An absolute filesystem URI path (i.e. file:/C:/MyWorkspace/ProjectName/...)</li>
+ * <li>A platform URI path (i.e. platform:/resource/ProjectName/...)</li> 
+ * </ul> 
+ * <p>In all cases, if the transformer could not convert the path, it is returned unchanged.</p>
+ */
+public class UniversalPathTransformer {
+	
+	/**
+	 * Prefix of platform URIs.
+	 */
+	public static final String PLATFORM_PREFIX = "platform:/resource/";
+	
+	/**
+	 * Prefix of filesystem URIs.
+	 */
+	public static final String LOCATION_PREFIX = "file:/";
+
+	private static String PROTOCOL_MARKER = ":";
+	private static char PATH_SEPARATOR    = '/';
+	
+	/**
+	 * Determines if a URI string starts with the given prefix.  This method is case-insensitive. 
+	 * 
+	 * @param uri The URI string to check.
+	 * @param prefix The prefix.
+	 * @return true iff prefix is a strict prefix of the URI string (i.e. prefix != uri), false
+	 * is returned otherwise.
+	 */
+	private boolean isPrefix(String uri, String prefix) {
+		if (prefix.length() >= uri.length())
+			return false;
+		
+		return uri.substring(0, prefix.length()).equalsIgnoreCase(prefix);
+	}
+
+	/**
+	 * Transform the given path to an eclipse path.  If the given path is a filesystem URI, it must map to
+	 * a real resource in the workspace.
+	 * 
+	 * @param str The path to transform.
+	 * @return Returns an eclipse path equivalent of the given path.
+	 */
+	public String toPath(String str) {
+		
+		if (str == null || str.length() == 0)
+			return str;
+		
+		if (isPrefix(str, PLATFORM_PREFIX)) {
+			str = str.substring(PLATFORM_PREFIX.length() - 1);
+		}
+		else if (isPrefix(str, LOCATION_PREFIX)) {
+			String s = str.substring(LOCATION_PREFIX.length());
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(s));
+			if (file != null)
+				str = file.getFullPath().makeAbsolute().toString();
+		}
+		
+		return str;
+	}
+
+	/**
+	 * Transform the given path to a platform URI path.  If the given path is a filesystem URI, it must map to
+	 * a real resource in the workspace.
+	 * 
+	 * @param str The path to transform.
+	 * @return Returns a platform URI path equivalent of the given path.
+	 */
+	public String toPlatformPath(String str) {
+
+		if (str == null || str.length() == 0)
+			return str;		
+		
+		if (isPrefix(str, LOCATION_PREFIX)) {
+			String s = str.substring(LOCATION_PREFIX.length());
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(s));
+			if (file != null)
+				str = PLATFORM_PREFIX + file.getFullPath().makeRelative();
+		}			
+		else if (str.indexOf(PROTOCOL_MARKER) == -1) {
+			if (str.charAt(0) == PATH_SEPARATOR)
+				str = PLATFORM_PREFIX + str.substring(1);
+			else
+				str = PLATFORM_PREFIX + str;
+		}
+		
+		return str;
+	}
+	
+	/**
+	 * Transform the given path to a filesystem URI path.  The path must be a valid
+	 * eclipse resource.
+	 * 
+	 * @param str The path to transform.
+	 * @return Returns a filesystem URI path equivalent of the given path.
+	 */
+	public String toLocation(String str) {
+		
+		if (str == null || str.length() == 0)
+			return str;
+		
+		String s = str;
+		
+		if (isPrefix(s, PLATFORM_PREFIX))
+			s = toPath(s);
+		
+		if (s.indexOf(PROTOCOL_MARKER) == -1) {			
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(s));
+			if (file != null)
+				str = file.getLocationURI().toString();
+		}
+				
+		return str;
+	}	
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/IJavaBeanProperty.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/IJavaBeanProperty.java
new file mode 100644
index 0000000..9cfe27d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/IJavaBeanProperty.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance;
+
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+
+/**
+ * @author cbrealey
+ * This object represents a simple or indexed property
+ * as defined by the Java Bean specification. Every
+ * IJavaBeanProperty is characterized by four things:
+ * <ol>
+ * <li>The name of the property.</li>
+ * <li>Whether or not the property is indexed.</li>
+ * <li>The JDT IMethod of the getter, if any.</li>
+ * <li>The JDT IMethod of the setter, if any.</li>
+ * </ol>
+ */
+public interface IJavaBeanProperty
+{
+	/**
+	 * Returns the name of the property.
+	 * @return The name of the property.
+	 */
+	public String getName ();
+
+	/**
+	 * Returns true if and only if the property is indexed.
+	 * @return True if and only if the property is indexed.
+	 */
+	public boolean isIndexed ();
+
+	/**
+	 * Returns the JDT IMethod of the getter.
+	 * For indexed properties,
+	 * the return type of the getter will be an array.
+	 * For simple properties,
+	 * the return type of the getter will not be an array.
+	 * @return The JDT IMethod of the getter,
+	 * or null if this is a write-only property.
+	 */
+	public IMethod getGetter ();
+	
+	/**
+	 * Returns the JDT IMethod of the indexed getter,
+	 * or null if this is either not an indexed property,
+	 * or is an indexed property but has only the array-
+	 * based getter.
+	 * @return The JDT IMethod of the indexed getter,
+	 * or null if this is not an indexed property or
+	 * if there is no indexed getter.
+	 */
+	public IMethod getIndexedGetter ();
+
+	/**
+	 * Returns the JDT IMethod of the setter.
+	 * For indexed properties,
+	 * the parameter type of the setter will be an array.
+	 * For simple properties,
+	 * the parameter type of the setter will not be an array.
+	 * @return The JDT IMethod of the setter,
+	 * or null if this is a read-only property.
+	 */
+	public IMethod getSetter ();
+	
+	/**
+	 * Returns the JDT IMethod of the indexed setter,
+	 * or null if this is either not an indexed property,
+	 * or is an indexed property but has only the array-
+	 * based setter.
+	 * @return The JDT IMethod of the indexed setter,
+	 * or null if this is not an indexed property or
+	 * if there is no indexed setter.
+	 */
+	public IMethod getIndexedSetter ();
+	
+	/**
+	 * Returns the type within which the getter and/or setter
+	 * of this property is declared, or null if none.
+	 * @return The type within which the getter and/or setter
+	 * of this property is declared.
+	 */
+	public IType getDeclaringType ();
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/IJavaWebServiceRule.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/IJavaWebServiceRule.java
new file mode 100644
index 0000000..0912c9d
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/IJavaWebServiceRule.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance;
+
+import java.util.Stack;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+
+/**
+ * @author cbrealey
+ * A Java Web service conformance Rule tests some collection
+ * of Java resources that implement, or are meant to implement,
+ * a Web service against a single, concise requirement as is
+ * typically defined by a specification (eg. JAX-RPC, JSR 109)
+ * or a runtime (eg. Apache Axis).
+ * <p>
+ * Every rule must have a namespace and a unique ID under that
+ * that namespace. Every rule may have a short name and a long
+ * description, both of which are recommended but optional.
+ * <p>
+ * Every rule follows a lifecycle of initialization, analysis
+ * and completion. A Java Web service rule engine will drive
+ * the <code>init()</code> method to initialize the rule, then
+ * drive the various <code>visit...()</code> methods as it
+ * navigates some collection of JDT resources, then drive the
+ * <code>getResults()</code> method to indicate analysis is done
+ * and retrieve a status object with the results of the analysis.
+ */
+public interface IJavaWebServiceRule
+{
+	/**
+	 * Returns the unique identifier of the rule
+	 * within the namespace to which the rule belongs.
+	 * @return The unique identifier of the rule.
+	 * Valid rule identifiers must not be negative.
+	 */
+	public int getId ();
+	
+	/**
+	 * Returns the namespace to which this rule belongs.
+	 * @return The namespace to which this rule belongs.
+	 * Never returns null.
+	 */
+	public String getNamespace ();
+
+	/**
+	 * Returns the translatable short name of this rule.  
+	 * @return The translatable short name of this rule,
+	 * or null if the rule has no name.
+	 */
+	public String getName ();
+
+	/**
+	 * Returns the translatable description of this rule.
+	 * @return The translatable description of this rule,
+	 * or null if the rule has no description.
+	 */
+	public String getDescription ();
+
+	/**
+	 * Called by the rule engine to give this rule a chance
+	 * to initialize itself prior to visiting JDT objects.
+	 * @param engine The engine initializing this rule.
+	 */
+	public void init ( IJavaWebServiceRuleEngine engine );
+
+	/**
+	 * Called by the rule engine when it decides to visit
+	 * a Java class (ie. primitive types are excluded).
+	 * @param jdtClass The class to visit.
+	 * @param peanutTrail The trail of objects back to the root.
+	 */
+	public void visitClass ( IType jdtClass, Stack peanutTrail );
+
+	/**
+	 * Called by the rule engine when it decides to visit
+	 * a Java class found on the throws clause of a method.
+	 * @param jdtClass The exception class to visit.
+	 * @param peanutTrail The trail of objects back to the root.
+	 */
+	public void visitException ( IType jdtClass, Stack peanutTrail );
+
+	/**
+	 * Called by the rule engine when it decides to visit
+	 * a field belonging to a class.
+	 * @param jdtField The field to visit.
+	 * @param peanutTrail The trail of objects back to the root.
+	 */
+	public void visitField ( IField jdtField, Stack peanutTrail );
+
+	/**
+	 * Called by the rule engine when it decides to visit
+	 * a Java Bean property (ie. represented by a "get" and/or
+	 * "set" method) beloning to a class.
+	 * @param beanProperty The property to visit.
+	 * @param peanutTrail The trail of objects back to the root.
+	 */
+	public void visitProperty ( IJavaBeanProperty beanProperty, Stack peanutTrail );
+
+	/**
+	 * Called by the rule engine when it decides to visit a method.
+	 * @param jdtMethod The method to visit.
+	 * @param peanutTrail The trail of objects back to the root.
+	 */
+	public void visitMethod ( IMethod jdtMethod, Stack peanutTrail );
+
+	/**
+	 * Called by the rule engine after all JDT objects have
+	 * been visited so that the rule can return a status
+	 * object (usually a multi-status) with a summary of
+	 * any violations by JDT objects detected by this rule.
+	 * @return The results of the rule's analysis.
+	 */
+	public IStatus getResults ();
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/IJavaWebServiceRuleEngine.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/IJavaWebServiceRuleEngine.java
new file mode 100644
index 0000000..23ef0b6
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/IJavaWebServiceRuleEngine.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jdt.core.IType;
+
+/**
+ * @author cbrealey
+ * This is an engine that walks a JDT model and runs rules.
+ */
+public interface IJavaWebServiceRuleEngine
+{
+	/**
+	 * Analyzes the given class in the context of the given 
+	 * project for compliance to a set of JAX-RPC rules.
+	 * @param project The project context of the analysis.
+	 * @param rootClass The IType of the class to analyze.
+	 * @param rules The rules to use for the analysis.
+	 * @return An IStatus summarizing the results of the analysis.
+	 */
+	public IStatus analyze ( IProject project, IType rootClass, JavaWebServiceRuleSet rules );
+	
+	/**
+	 * Returns the JDTResolver in use by this analyzer.
+	 * The JDTResolver is guaranteed not to be null only
+	 * after the analyze method has been invoked and before
+	 * the first rule is visited. This method is intended
+	 * for use by implementations of IJavaWebServiceRule.
+	 * @return The JDTResolver in use by this analyzer.
+	 */
+	public JDTResolver getJDTResolver ();
+	
+	/**
+	 * Returns the progress monitor in use by this analyzer,
+	 * or null if no progress monitor is in use.
+	 * This method is intended for use by implementations
+	 * of IJavaWebServiceRule.
+	 * @return The progress monitor in use by this analyzer,
+	 * or null for none.
+	 */
+	public IProgressMonitor getProgressMonitor ();
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JAXRPCWebServiceAnalyzer.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JAXRPCWebServiceAnalyzer.java
new file mode 100644
index 0000000..115efb7
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JAXRPCWebServiceAnalyzer.java
@@ -0,0 +1,214 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ * 20060607   145604 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IClassFile;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.ws.internal.WSPluginMessages;
+import org.eclipse.jst.ws.internal.conformance.rules.JAXRPCRuleSetFactory;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * This class provides convenience methods for analyzing
+ * compliance of Java service classes and value types to
+ * the JAX-RPC 1.1 specification. Typical usage of this
+ * class:
+ * <code>
+ * IType type = JAXRPCWebServiceAnalyzer.asType(myJavaFileResource);
+ * JavaWebServiceRuleSet rules = JAXRPCWebServiceAnalyzer.getRuleSet();
+ * JAXRPCWebServiceAnalyzer.getRuleEngine().analyze(type,rules,myProgressMonitor);
+ * </code> 
+ * @author cbrealey
+ */
+public class JAXRPCWebServiceAnalyzer
+{
+	private JavaWebServiceRuleSet ruleSet_;
+	
+	/**
+	 * Constructs a new JAX-RPC Web service analyzer,
+	 * a convenience class wrapped around a
+	 * JAXRPCWebServiceAnalyzer.
+	 */
+	public JAXRPCWebServiceAnalyzer ()
+	{
+		ruleSet_ = JAXRPCRuleSetFactory.newRuleSet();
+	}
+
+	/**
+	 * Returns the set of rules in use, the contents of
+	 * which can be manipulated and will be respected by
+	 * this analyzer. In other words, this method returns a
+	 * reference to, not a copy of, the set of rules in use.
+	 * @return The set of rules in use by the analyzer.
+	 */
+	public JavaWebServiceRuleSet getRuleSet ()
+	{
+		return ruleSet_;
+	}
+	
+	/**
+	 * Analyzes the Java service class represented by the given
+	 * JDT type for compliance to the JAX-RPC for compliance to
+	 * the JAX-RPC specification.
+	 * Progress monitoring is provided by the given monitor. 
+	 * @param project The project context in which the analysis
+	 * should take place.
+	 * @param rootClass The Java service class to analyze.
+	 * @param monitor The progress monitor to use,
+	 * or null if monitoring is not desired.
+	 * @return A status object whose severity, message and
+	 * child status objects, if any, describe any JAX-RPC
+	 * rules that may be compromised by the service class.
+	 * Never returns null.
+	 */
+	public IStatus analyze ( IProject project, IType rootClass, IProgressMonitor monitor )
+	{
+		IJavaWebServiceRuleEngine engine = new JAXRPCWebServiceRuleEngine(monitor);
+		return engine.analyze(project,rootClass,ruleSet_);
+	}
+
+	/**
+	 * Analyzes the Java service class represented by the given
+	 * JDT type for compliance to the JAX-RPC for compliance to
+	 * the JAX-RPC specification.
+	 * Progress monitoring is provided by the given monitor. 
+	 * @param project The project context in which the analysis
+	 * should take place.
+	 * @param rootClass The fully qualified name of the
+	 * Java service class to analyze.
+	 * @param monitor The progress monitor to use,
+	 * or null if monitoring is not desired.
+	 * @return A status object whose severity, message and
+	 * child status objects, if any, describe any JAX-RPC
+	 * rules that may be compromised by the service class.
+	 * Never returns null.
+	 */
+	public IStatus analyze ( IProject project, String rootClass, IProgressMonitor monitor )
+	{
+		try
+		{
+			IType rootType = asType(rootClass,project);
+			if (rootType == null)
+			{
+				String message = NLS.bind(WSPluginMessages.MSG_JAXRPC11_UNRESOLVED_CLASS,rootClass,project.getName());
+				return new Status(IStatus.ERROR,"org.eclipse.jst.ws",0,message,null);
+			}
+			return analyze(project,rootType,monitor);
+		}
+		catch (JavaModelException e)
+		{
+			// An exception may be thrown from the call to asType(...),
+			// not from the call to analyze(...). Exceptions within the
+			// analyze(...) method are captured in the returned IStatus.
+			return new Status(IStatus.ERROR,"org.eclipse.jst.ws",0,"Internal error",e);
+		}
+	}
+
+	/**
+	 * Analyzes the Java service class represented by the given
+	 * ".java" compilation unit or ".class" file for compliance
+	 * to the JAX-RPC specification.
+	 * Progress monitoring is provided by the given monitor. 
+	 * @param project The project context in which the analysis
+	 * should take place.
+	 * @param rootClass The Java service class to analyze.
+	 * @param monitor The progress monitor to use,
+	 * or null if monitoring is not desired.
+	 * @return A status object whose severity, message and
+	 * child status objects, if any, describe any JAX-RPC
+	 * rules that may be compromised by the service class.
+	 * Never returns null.
+	 */
+	public IStatus analyze ( IProject project, IFile rootClass, IProgressMonitor monitor )
+	{
+		try
+		{
+			IType rootType = asType(rootClass);
+			if (rootType == null)
+			{
+				String message = NLS.bind(WSPluginMessages.MSG_JAXRPC11_UNRESOLVED_CLASS,rootClass.getFullPath().toString(),project.getName());
+				return new Status(IStatus.ERROR,"org.eclipse.jst.ws",0,message,null);
+			}
+			return analyze(project,rootType,monitor);
+		}
+		catch (JavaModelException e)
+		{
+			// An exception may be thrown from the call to asType(...),
+			// not from the call to analyze(...). Exceptions within the
+			// analyze(...) method are captured in the returned IStatus.
+			return new Status(IStatus.ERROR,"org.eclipse.jst.ws",0,"Internal error",e);
+		}
+	}
+
+	/**
+	 * Returns the Java type represented by the given file,
+	 * or null if no such type can be clearly determined.
+	 * @param file The file whose type to infer, usually a
+	 * ".java" or ".class" file. For ".java" files, this
+	 * method will return the primary type.
+	 * @return The inferred JDT Java type.
+	 * @throws JavaModelException If the given file could not
+	 * mapped to a JDT IType.
+	 */
+	private static IType asType ( String qname, IProject project )
+	throws JavaModelException
+	{
+		IType type = null;
+		IJavaElement javaElement = JavaCore.create(project);
+		if (javaElement instanceof IJavaProject)
+		{
+			IJavaProject javaProject = (IJavaProject)javaElement;
+			type = javaProject.findType(qname);
+		}
+		return type;
+	}
+	/**
+	 * Returns the Java type represented by the given file,
+	 * or null if no such type can be clearly determined.
+	 * @param file The file whose type to infer, usually a
+	 * ".java" or ".class" file. For ".java" files, this
+	 * method will return the primary type.
+	 * @return The inferred JDT Java type.
+	 * @throws JavaModelException If the given file could not
+	 * mapped to a JDT IType.
+	 */
+	private static IType asType ( IFile file )
+	throws JavaModelException
+	{
+		IType type = null;
+		IJavaElement javaElement = JavaCore.create(file);
+		if (javaElement instanceof ICompilationUnit)
+		{
+			ICompilationUnit compilationUnit = (ICompilationUnit)javaElement;
+			type = compilationUnit.findPrimaryType();
+		}
+		else if (javaElement instanceof IClassFile)
+		{
+			IClassFile classFile = (IClassFile)javaElement;
+			type = classFile.getType();
+		}
+		return type;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JAXRPCWebServiceRuleEngine.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JAXRPCWebServiceRuleEngine.java
new file mode 100644
index 0000000..33597f0
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JAXRPCWebServiceRuleEngine.java
@@ -0,0 +1,278 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060711   149411 cbrealey@ca.ibm.com - Chris Brealey
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.Stack;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.ws.internal.WSPluginMessages;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author cbrealey
+ * This engine navigated JDT classes according to a JAX-RPC
+ * interpretation. The root class is considered to be a
+ * candidate JAX-RPC service class, and any non-standard
+ * or non-primitive types used by the methods of the service
+ * class are considered to be candidates for JAX-RPC value
+ * type classes. 
+ */
+public class JAXRPCWebServiceRuleEngine implements IJavaWebServiceRuleEngine
+{
+	/**
+	 * Creates a new JAX-RPC analysis engine with the given
+	 * progress monitor.
+	 * @param progressMonitor The progress monitor for the
+	 * engine to use, or null if monitoring is not desired.
+	 */
+	public JAXRPCWebServiceRuleEngine ( IProgressMonitor progressMonitor )
+	{
+		progressMonitor_ = progressMonitor;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRuleEngine#analyze(org.eclipse.core.resources.IProject, org.eclipse.jdt.core.IType, org.eclipse.jst.ws.internal.conformance.JavaWebServiceRuleSet, org.eclipse.core.runtime.IProgressMonitor)
+	 */
+	public IStatus analyze ( IProject project, IType rootClass, JavaWebServiceRuleSet rules )
+	{
+		visited_ = new HashSet();
+		peanutTrail_ = new Stack();		
+		resolver_ = new JDTResolver(project,progressMonitor_);
+		IStatus status = null;
+		rules.init(this);
+		try
+		{
+			analyzeServiceClass(rootClass,rules);
+			String inCaseOfFailureMessage = NLS.bind(WSPluginMessages.MSG_JAXRPC11_NOT_COMPLIANT,rootClass.getFullyQualifiedName());
+			status = rules.getResults(inCaseOfFailureMessage);
+		}
+		catch (JavaModelException e)
+		{
+			status = new Status(IStatus.ERROR,"org.eclipse.jst.ws",0,"Internal Error",e);
+		}
+		return status;
+	}
+	
+	private void analyzeServiceClass ( IType type, JavaWebServiceRuleSet rules )
+	throws JavaModelException
+	{
+		rules.visitClass(type,peanutTrail_);
+		visited_.add(type.getFullyQualifiedName());
+		push(type);
+		try
+		{
+			IType[] superClasses = resolver_.getSuperClasses(type);
+			IMethod[] methods = resolver_.getPublicMethods(type,superClasses);
+			for (int m=0; m<methods.length; m++)
+			{
+				analyzeMethod(methods[m],rules);
+			}
+		}
+		finally
+		{
+			pop();
+		}
+	}
+	
+	private void analyzeMethod ( IMethod method, JavaWebServiceRuleSet rules )
+	throws JavaModelException
+	{
+		rules.visitMethod(method,peanutTrail_);
+		push(method);
+		try
+		{
+			IType returnType = resolver_.getReturnType(method);
+			analyzeDataType(returnType,rules);
+			IType[] parameterTypes = resolver_.getParameterTypes(method);
+			for (int p=0; p<parameterTypes.length; p++)
+			{
+				analyzeDataType(parameterTypes[p],rules);
+			}
+			IType[] exceptionTypes = resolver_.getExceptionTypes(method);
+			for (int e=0; e<exceptionTypes.length; e++)
+			{
+				analyzeExceptionType(exceptionTypes[e],rules);
+			}
+		}
+		finally
+		{
+			pop();
+		}
+	}
+	
+	private void analyzeDataType ( IType type, JavaWebServiceRuleSet rules )
+	throws JavaModelException
+	{
+		if (type != null && !resolver_.isStandardType(type.getFullyQualifiedName()) && !visited_.contains(type.getFullyQualifiedName()))
+		{
+			rules.visitClass(type,peanutTrail_);			
+			visited_.add(type.getFullyQualifiedName());
+			push(type);
+			try
+			{	
+				IType[] superClasses = resolver_.getSuperClasses(type);
+				IField[] fields = resolver_.getPublicFields(type,superClasses);
+				for (int f=0; f<fields.length; f++)
+				{
+					analyzeField(fields[f],rules);
+				}
+				IJavaBeanProperty[] properties = resolver_.getPublicProperties(type,superClasses);
+				for (int p=0; p<properties.length; p++)
+				{
+					analyzeProperty(properties[p],rules);
+				}
+			}
+			finally
+			{
+				pop();
+			}
+		}
+	}
+	
+	private void analyzeField ( IField field, JavaWebServiceRuleSet rules )
+	throws JavaModelException
+	{
+		if (field != null)
+		{
+			rules.visitField(field,peanutTrail_);
+			push(field);
+			try
+			{
+				//TODO: Get qualified name of the field type
+				//and determine if we need to build an IType
+				//for it and analyze it.
+				IType type = resolver_.getFieldType(field);
+				analyzeDataType(type,rules);
+			}
+			finally
+			{
+				pop();
+			}
+		}
+	}
+	
+	private void analyzeProperty ( IJavaBeanProperty property, JavaWebServiceRuleSet rules )
+	throws JavaModelException
+	{
+		if (property != null)
+		{
+			rules.visitProperty(property,peanutTrail_);
+			push(property);
+			try
+			{
+				IType type = resolver_.getPropertyType(property);
+				analyzeDataType(type,rules);
+			}
+			finally
+			{
+				pop();
+			}
+		}
+	}
+
+	private void analyzeExceptionType ( IType type, JavaWebServiceRuleSet rules )
+	throws JavaModelException
+	{
+		if (type != null && !resolver_.isStandardType(type.getFullyQualifiedName()) && !visited_.contains(type.getFullyQualifiedName()))
+		{
+			rules.visitException(type,peanutTrail_);
+			visited_.add(type.getFullyQualifiedName());
+			push(type);
+			try
+			{
+				// We trust java.lang.Exception/Throwable as superclasses
+				// for service specific exception classes, therefore we do
+				// not try to analyze their properties (some of which would
+				// otherwise violate JAX-RPC's rules anyways).
+				IType[] superClasses = resolver_.getSuperClasses(type,"java.lang.Exception");
+				IJavaBeanProperty[] properties = resolver_.getPublicProperties(type,superClasses);
+				for (int p=0; p<properties.length; p++)
+				{
+					analyzeProperty(properties[p],rules);
+				}
+			}
+			finally
+			{
+				pop();
+			}
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRuleEngine#getJDTResolver()
+	 */
+	public JDTResolver getJDTResolver ()
+	{
+		return resolver_;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRuleEngine#getProgressMonitor()
+	 */
+	public IProgressMonitor getProgressMonitor ()
+	{
+		return progressMonitor_;
+	}
+	
+	/*
+	 * Pushes a peanut onto the peanut trail.
+	 */
+	private void push ( Object peanut )
+	{
+		peanutTrail_.push(peanut);
+	}
+	
+	/*
+	 * Pops a peanut off the peanut trail. 
+	 */
+	private void pop ()
+	{
+		peanutTrail_.pop();
+	}
+	
+	/*
+	 * The JDTResolver used by this analyzer.
+	 */
+	private JDTResolver resolver_;
+	
+	/*
+	 * The progress monitor used by this analyzer. 
+	 */
+	private IProgressMonitor progressMonitor_;
+	
+	/*
+	 * This set keeps track of the fully qualified names of
+	 * classes we have visited so that we don't visit the same
+	 * service class, value type or exception class more than once.
+	 */
+	private Set visited_;
+
+	/*
+	 * This stack keeps a trail of JDT objects back to the
+	 * service class we began with. This can be useful to
+	 * visitors that need to inspect the JDT elements that
+	 * enclose the currently visited element.
+	 */
+	private Stack peanutTrail_;
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JDTResolver.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JDTResolver.java
new file mode 100644
index 0000000..7df3716
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JDTResolver.java
@@ -0,0 +1,883 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060711   149411 cbrealey@ca.ibm.com - Chris Brealey
+ * 20070102   196371 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.ITypeHierarchy;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+
+/**
+ * @author cbrealey
+ * A JDTResolver provides several convenience methods for
+ * navigating references between Java classes, methods,
+ * fields and properties. A JDTResolver is constructed
+ * for a Java project whose effective classpath will
+ * govern the scope of search operations performed by the
+ * JDTResolver whenever it needs to convert a signature
+ * into a JDT IType object.
+ */
+public class JDTResolver
+{
+	/**
+	 * Creates a new JDTResolver for the given project.
+	 * @param project The project providing the context
+	 * @param monitor The progress monitor for this resolver
+	 * to use, or null if progress monitoring is not desired.
+	 * within which this resolver will search for classes.
+	 */
+	public JDTResolver ( IProject project, IProgressMonitor monitor )
+	{
+		javaProject_ = JavaCore.create(project);
+		monitor_ = monitor;
+	}
+	
+	/**
+	 * Returns true if and only if the given JDT IType is an interface.
+	 * @param jdtType The type to analyze.
+	 * @return True if and only if the given JDT IType is an interface.
+	 * @throws JavaModelException If the JDT model fails to
+	 * analyze the given type.
+	 */
+	public boolean isInterface ( IType jdtType )
+	throws JavaModelException
+	{
+		return jdtType.isInterface();
+	}
+	
+	/**
+	 * Returns true if and only if the given JDT IType is an abstract class.
+	 * @param jdtType The type to analyze.
+	 * @return True if and only if the given JDT IType is an abstract class.
+	 * @throws JavaModelException If the JDT model fails to
+	 * analyze the given type.
+	 */
+	public boolean isAbstract ( IType jdtType )
+	throws JavaModelException
+	{
+		return Flags.isAbstract(jdtType.getFlags());
+	}
+	
+	/**
+	 * Returns true if and only if instances of the given JDT IType
+	 * can be instantiated via a public default constructor. The class
+	 * must have an explicit public default constructor, or have no
+	 * explicit constructors at all to meet this criteria.
+	 * @param jdtType The type to analyze.
+	 * @return True if and only if instances of the type are
+	 * public default constructable.
+	 * @throws JavaModelException If the JDT model fails to
+	 * analyze the given type.
+	 */
+	public boolean isConstructable ( IType jdtType )
+	throws JavaModelException
+	{
+		IMethod[] methods = jdtType.getMethods();
+		int numberOfConstructors = 0;
+		for (int m=0; m<methods.length; m++)
+		{
+			if (methods[m].isConstructor())
+			{
+				numberOfConstructors++;
+				if (methods[m].getNumberOfParameters() == 0 && Flags.isPublic(methods[m].getFlags()))
+				{
+					return true;
+				}
+			}
+		}
+		return numberOfConstructors == 0;
+	}
+	
+	/**
+	 * Returns true if and only if the given fully qualified
+	 * type name is a type from the standard JDK, that is,
+	 * if the given type name belongs under the "java" or
+	 * "javax" packages.
+	 * @param typeName The name of the type to check.
+	 * @return True if and only if the type is a non-primitive,
+	 * Java standard type.
+	 */
+	public boolean isStandardType ( String typeName )
+	{
+		return typeName.startsWith("java.") || typeName.startsWith("javax.");
+	}
+	
+	/**
+	 * Returns true if and only if the given type name is a
+	 * Java primitive type.
+	 * @param typeName The name of the type to check.
+	 * @return True if and only if the type is a Java primitive type.
+	 */
+	public boolean isPrimitiveType ( String typeName )
+	{
+		for (int i=0; i<primitiveTypes_.length; i++)
+		{
+			if (primitiveTypes_[i].equals(typeName))
+			{
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	/**
+	 * Returns true if and only if the given fully qualified
+	 * type name is a Java wrapper type.
+	 * @param typeName The name of the type to check.
+	 * @return True if and only if the type is a Java wrapper type.
+	 */
+	public boolean isWrapperType ( String typeName )
+	{
+		for (int i=0; i<wrapperTypes_.length; i++)
+		{
+			if (wrapperTypes_[i].equals(typeName))
+			{
+				return true;
+			}
+		}
+		return false;
+	}
+		
+	/**
+	 * Returns true if and only if the given fully qualified
+	 * type name is a Java primitive or standard type supported
+	 * by the JAX-RPC specification.
+	 * @param typeName The name of the type to check.
+	 * @return True if and only if the type is a Java wrapper type.
+	 */
+	public boolean isJAXRPCStandardType ( String typeName )
+	{
+		for (int i=0; i<jaxrpcTypes_.length; i++)
+		{
+			if (jaxrpcTypes_[i].equals(typeName))
+			{
+				return true;
+			}
+		}
+		if (isWrapperType(typeName) && !"java.lang.Character".equals(typeName))
+		{
+			return true;
+		}
+		if (isPrimitiveType(typeName) && !"char".equals(typeName))
+		{
+			return true;
+		}
+		return false;
+	}
+		
+	/**
+	 * Returns an array of zero or more JDT IType objects
+	 * for the public fields belonging to the given type
+	 * @param jdtType The type to analyze.
+	 * @param jdtSuperTypes Any supertypes to analyze,
+	 * or null to analyze only the <code>jdtType</code>.
+	 * @return An array of zero or more public field types.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given types to satisfy this request.
+	 */
+	public IField[] getPublicFields ( IType jdtType, IType[] jdtSuperClasses )
+	throws JavaModelException
+	{
+		List fieldsList = new LinkedList();
+		harvestPublicFields(jdtType,fieldsList);
+		if (jdtSuperClasses != null)
+		{
+			for (int t=0; t<jdtSuperClasses.length; t++)
+			{
+				harvestPublicFields(jdtSuperClasses[t],fieldsList);
+			}
+		}
+		return (IField[])fieldsList.toArray(new IField[0]);
+	}
+	
+	/**
+	 * Returns an array of zero or more JDT IMethod objects
+	 * for the public methods belonging to the given type.
+	 * @param jdtType The type to analyze.
+	 * @param jdtSuperTypes Any supertypes to analyze,
+	 * or null to analyze only the <code>jdtType</code>.
+	 * @return An array of zero or more public methods.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given types to satisfy this request.
+	 */
+	public IMethod[] getPublicMethods ( IType jdtType, IType[] jdtSuperClasses )
+	throws JavaModelException
+	{
+		List methodsList = new LinkedList();
+		harvestPublicMethods(jdtType,methodsList);
+		if (jdtSuperClasses != null)
+		{
+			for (int t=0; t<jdtSuperClasses.length; t++)
+			{
+				harvestPublicMethods(jdtSuperClasses[t],methodsList);
+			}
+		}
+		return (IMethod[])methodsList.toArray(new IMethod[0]);
+	}
+	
+	/**
+	 * Returns an array of zero or more JDT IType objects
+	 * for the public properties (getters and/or setters)
+	 * belonging to the given type.
+	 * @param jdtType The type to analyze.
+	 * @param jdtSuperTypes Any supertypes to analyze,
+	 * or null to analyze only the <code>jdtType</code>.
+	 * @return An array of zero or more public property types.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given types to satisfy this request.
+	 */
+	public IJavaBeanProperty[] getPublicProperties ( IType jdtType, IType[] jdtSuperClasses )
+	throws JavaModelException
+	{
+		IMethod[] methods = getPublicMethods(jdtType,jdtSuperClasses);
+		Map properties = new HashMap();
+		for (int m=0; m<methods.length; m++)
+		{
+			String name = getGetterName(methods[m]);
+			if (name != null)
+			{
+				JavaBeanProperty property = (JavaBeanProperty)properties.get(name);
+				if (property == null)
+				{
+					property = new JavaBeanProperty();
+					property.setName(name);
+					properties.put(name,property);
+				}
+				property.setGetter(methods[m]);
+			}
+			else
+			{
+				name = getSetterName(methods[m]);
+				if (name != null)
+				{
+					JavaBeanProperty property = (JavaBeanProperty)properties.get(name);
+					if (property == null)
+					{
+						property = new JavaBeanProperty();
+						property.setName(name);
+						properties.put(name,property);
+					}
+					property.setSetter(methods[m]);
+				}
+			}
+		}
+		return (IJavaBeanProperty[])properties.values().toArray(new JavaBeanProperty[0]);
+	}
+	
+	/**
+	 * Returns the JDT IType object for the given field.
+	 * @param jdtField The field to analyze.
+	 * @return The field type.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given field to satisfy this request.
+	 */
+	public IType getFieldType ( IField jdtField )
+	throws JavaModelException
+	{
+		IJavaElement elem = jdtField.getAncestor(IJavaElement.TYPE);
+		IType ancestor = elem instanceof IType ? (IType)elem : null;
+		String signature = jdtField.getTypeSignature();
+		String typeName = getTypeNameFromSignature(signature);
+		return findType(typeName,ancestor);
+	}
+	
+	/**
+	 * Returns the type name for the given field.
+	 * @param jdtField The field to analyze.
+	 * @return The field type name.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given field to satisfy this request.
+	 */
+	public String getFieldTypeName ( IField jdtField )
+	throws JavaModelException
+	{
+		IJavaElement elem = jdtField.getAncestor(IJavaElement.TYPE);
+		IType ancestor = elem instanceof IType ? (IType)elem : null;
+		String signature = jdtField.getTypeSignature();
+		String typeName = getTypeNameFromSignature(signature);
+		return resolveType(typeName,ancestor);
+	}
+	
+	/**
+	 * Returns the JDT IType object for the given bean property.
+	 * @param javaBeanProperty The bean property to analyze.
+	 * @return The property type.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given bean property to satisfy this request.
+	 */
+	public IType getPropertyType ( IJavaBeanProperty javaBeanProperty )
+	throws JavaModelException
+	{
+		IMethod method = javaBeanProperty.getGetter();
+		if (method != null)
+		{
+			return getReturnType(method);
+		}
+		else
+		{
+			method = javaBeanProperty.getSetter();
+			if (method != null)
+			{
+				IType[] parameters = getParameterTypes(method);
+				if (parameters.length > 0)
+				{
+					//
+					// It's the last parameter's type we want,
+					// for indexed or non-indexed setters.
+					//
+					return parameters[parameters.length-1];
+				}
+			}
+		}
+		return null;
+	}
+	
+	/**
+	 * Returns the type name for the given bean property.
+	 * @param javaBeanProperty The bean property to analyze.
+	 * @return The property type name.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given bean property to satisfy this request.
+	 */
+	public String getPropertyTypeName ( IJavaBeanProperty javaBeanProperty )
+	throws JavaModelException
+	{
+		IMethod method = javaBeanProperty.getGetter();
+		if (method != null)
+		{
+			return getReturnTypeName(method);
+		}
+		else
+		{
+			method = javaBeanProperty.getSetter();
+			if (method != null)
+			{
+				String[] parameterTypeNames = getParameterTypeNames(method);
+				if (parameterTypeNames.length > 0)
+				{
+					return parameterTypeNames[0];
+				}
+			}
+		}
+		return null;
+	}
+	
+	/**
+	 * Returns the JDT IType object for the return type
+	 * of the given method, or null if the method is void.
+	 * @param jdtMethod The method to analyze.
+	 * @return The method return type, or null if none.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given method to satisfy this request.
+	 */
+	public IType getReturnType ( IMethod jdtMethod )
+	throws JavaModelException
+	{
+		IJavaElement elem = jdtMethod.getAncestor(IJavaElement.TYPE);
+		IType ancestor = elem instanceof IType ? (IType)elem : null;
+		String signature = jdtMethod.getReturnType();
+		String typeName = getTypeNameFromSignature(signature);
+		return findType(typeName,ancestor);
+	}
+	
+	/**
+	 * Returns the type name for the return type
+	 * of the given method, or null if the method is void.
+	 * @param jdtMethod The method to analyze.
+	 * @return The method return type name, or null if none.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given method to satisfy this request.
+	 */
+	public String getReturnTypeName ( IMethod jdtMethod )
+	throws JavaModelException
+	{
+		IJavaElement elem = jdtMethod.getAncestor(IJavaElement.TYPE);
+		IType ancestor = elem instanceof IType ? (IType)elem : null;
+		String signature = jdtMethod.getReturnType();
+		String typeName = getTypeNameFromSignature(signature);
+		return resolveType(typeName,ancestor);
+	}
+	
+	/**
+	 * Returns an array of zero or more JDT IType objects
+	 * for the parameters of the given method.
+	 * @param jdtMethod The method to analyze.
+	 * @return An array of zero or more parameter types.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given method to satisfy this request.
+	 */
+	public IType[] getParameterTypes ( IMethod jdtMethod )
+	throws JavaModelException
+	{
+		IJavaElement elem = jdtMethod.getAncestor(IJavaElement.TYPE);
+		IType ancestor = elem instanceof IType ? (IType)elem : null;
+		String[] signatures = jdtMethod.getParameterTypes();
+		IType[] types = new IType[signatures.length];
+		for (int s=0; s<signatures.length; s++)
+		{
+			String typeName = getTypeNameFromSignature(signatures[s]);
+			types[s] = findType(typeName,ancestor);
+		}
+		return types;
+	}
+	
+	/**
+	 * Returns an array of zero or more type names
+	 * for the parameters of the given method.
+	 * @param jdtMethod The method to analyze.
+	 * @return An array of zero or more parameter type names.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given method to satisfy this request.
+	 */
+	public String[] getParameterTypeNames ( IMethod jdtMethod )
+	throws JavaModelException
+	{
+		IJavaElement elem = jdtMethod.getAncestor(IJavaElement.TYPE);
+		IType ancestor = elem instanceof IType ? (IType)elem : null;
+		String[] signatures = jdtMethod.getParameterTypes();
+		String[] typeNames = new String[signatures.length];
+		for (int s=0; s<signatures.length; s++)
+		{
+			String typeName = getTypeNameFromSignature(signatures[s]);
+			typeNames[s] = resolveType(typeName,ancestor);
+		}
+		return typeNames;
+	}
+	
+	/**
+	 * Returns an array of zero or more JDT IType objects
+	 * for the exceptions thrown by the given method.
+	 * @param jdtMethod The method to analyze.
+	 * @return An array of zero or more exception types.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given method to satisfy this request.
+	 */
+	public IType[] getExceptionTypes ( IMethod jdtMethod )
+	throws JavaModelException
+	{
+		IJavaElement elem = jdtMethod.getAncestor(IJavaElement.TYPE);
+		IType ancestor = elem instanceof IType ? (IType)elem : null;
+		String[] signatures = jdtMethod.getExceptionTypes();
+		IType[] types = new IType[signatures.length];
+		for (int s=0; s<signatures.length; s++)
+		{
+			String typeName = getTypeNameFromSignature(signatures[s]);
+			types[s] = findType(typeName,ancestor);
+		}
+		return types;
+	}
+	
+	/**
+	 * Returns an array of zero or more type names
+	 * for the exceptions thrown by the given method.
+	 * @param jdtMethod The method to analyze.
+	 * @return An array of zero or more exception type names.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given method to satisfy this request.
+	 */
+	public String[] getExceptionTypeNames ( IMethod jdtMethod )
+	throws JavaModelException
+	{
+		IJavaElement elem = jdtMethod.getAncestor(IJavaElement.TYPE);
+		IType ancestor = elem instanceof IType ? (IType)elem : null;
+		String[] signatures = jdtMethod.getExceptionTypes();
+		String[] typeNames = new String[signatures.length];
+		for (int s=0; s<signatures.length; s++)
+		{
+			String typeName = getTypeNameFromSignature(signatures[s]);
+			typeNames[s] = resolveType(typeName,ancestor);
+		}
+		return typeNames;
+	}
+	
+	/**
+	 * Returns an array of zero or more types representing
+	 * the superclasses, if any, of the given IType in bottom-up
+	 * order excluding java.lang.Object.
+	 * @param jdtType The type to analyze.
+	 * @return An array of zero or more superclass types.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given type to satisfy this request.
+	 */
+	public IType[] getSuperClasses ( IType jdtType )
+	throws JavaModelException
+	{
+		return getSuperClasses(jdtType,"java.lang.Object");
+	}
+	
+	/**
+	 * Returns an array of zero or more types representing
+	 * the superclasses, if any, of the given IType.
+	 * Under normal circumstances, java.lang.Object is included.
+	 * @param jdtType The type to analyze.
+	 * @param stopClassName The name of a stop class used to limit
+	 * the superclasses returned to the caller. If the stop class
+	 * is null or names a class not found in the hierarchy, all
+	 * superclasses are returned. Otherwise, only superclasses up
+	 * to but excluding the stop class are returned.
+	 * @return An array of zero or more superclass types.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given type to satisfy this request.
+	 */
+	public IType[] getSuperClasses ( IType jdtType, String stopClassName )
+	throws JavaModelException
+	{
+		ITypeHierarchy hierarchy = jdtType.newSupertypeHierarchy(monitor_);
+		IType[] allSuperClasses = hierarchy.getAllSuperclasses(jdtType);
+		List superClasses = new LinkedList();
+		for (int i=0; i<allSuperClasses.length; i++)
+		{
+			if (allSuperClasses[i].getFullyQualifiedName().equals(stopClassName))
+				break;
+			superClasses.add(allSuperClasses[i]);
+		}
+		return (IType[])superClasses.toArray(new IType[0]);
+	}
+	
+	/**
+	 * Extracts the qualified type name from a JDT signature.
+	 * @param signature The signature to examine.
+	 * @return The qualified type name from the signature.
+	 */
+	public String getTypeNameFromSignature ( String signature )
+	{
+
+		String packageName = Signature.getSignatureQualifier(signature);
+		String baseName = Signature.getSignatureSimpleName(signature);
+		if (baseName.endsWith("[]")){
+			baseName = baseName.substring(0, baseName.indexOf("["));
+		}
+			
+		String typeName = (packageName.trim().equals("")?"":packageName+".") + baseName;
+		return typeName;
+	}
+	
+	/**
+	 * Attempts to resolve an unresolved type name in the
+	 * context of the given ancestor type (ie. the type
+	 * acting as the context within which the type name
+	 * should be resolved).
+	 * @param typeName The qualified name of the type to find.
+	 * @param ancestor The type providing the context within
+	 * which to look up the type.
+	 * @return The qualified name, or the original type name
+	 * if it could not be resolved.
+	 */
+	public String resolveType ( String typeName, IType ancestor )
+	throws JavaModelException
+	{
+		if (ancestor != null)
+		{
+			String[][] matches = ancestor.resolveType(typeName);
+			if (matches != null && matches.length > 0)
+			{
+				StringBuffer qname = new StringBuffer();
+				int n = matches[0].length;
+				for (int j=0; j<n-1; j++)
+				{
+					qname.append(matches[0][j]).append(".");
+				}
+				if (n >= 0)
+				{
+					qname.append(matches[0][n-1]);
+				}
+				return qname.toString();
+			}
+		}
+		return typeName;
+	}
+
+	/**
+	 * Attempts to find a JDT IType object for the given
+	 * resolved or unresolved type name in the context of
+	 * the given ancestor type (ie. the type acting as the
+	 * context within which the type name should be resolved).
+	 * @param typeName The qualified name of the type to find.
+	 * @param ancestor The type providing the context within
+	 * which to look up the type.
+	 * @return The IType object of the given qualified name,
+	 * or null if no type could be found in the workspace.
+	 */
+	public IType findType ( String typeName, IType ancestor )
+	throws JavaModelException
+	{
+		IType type = javaProject_.findType(typeName);
+		if (type == null && ancestor != null)
+		{
+			String[][] matches = ancestor.resolveType(typeName);
+			if (matches != null)
+			{
+				int i=0;
+				while (type == null && i<matches.length)
+				{
+					StringBuffer qname = new StringBuffer();
+					int n = matches[i].length;
+					for (int j=0; j<n-1; j++)
+					{
+						qname.append(matches[i][j]).append(".");
+					}
+					if (n >= 0)
+					{
+						qname.append(matches[i][n-1]);
+					}
+					type = javaProject_.findType(qname.toString());
+					i++;
+				}
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * Finds all public, non-constructor IMethods belonging
+	 * to the given IType and adds them to the given list.
+	 * @param jdtType The type whose methods are to be harvested.
+	 * @param list The list to which the harvested methods will be added.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given type to satisfy this request.
+	 */
+	public void harvestPublicMethods ( IType jdtType, List list )
+	throws JavaModelException
+	{
+		IMethod[] methods = jdtType.getMethods();
+		for (int m=0; m<methods.length; m++)
+		{
+			if (!methods[m].isConstructor() && Flags.isPublic(methods[m].getFlags()))
+			{
+				list.add(methods[m]);
+			}
+		}
+	}
+	
+	/**
+	 * Finds all public IFields belonging
+	 * to the given IType and adds them to the given list.
+	 * @param jdtType The type whose fields are to be harvested.
+	 * @param list The list to which the harvested fields will be added.
+	 * @throws JavaModelException If the JDT engine fails to
+	 * analyze the given type to satisfy this request.
+	 */
+	public void harvestPublicFields ( IType jdtType, List list )
+	throws JavaModelException
+	{
+		IField[] fields = jdtType.getFields();
+		for (int f=0; f<fields.length; f++)
+		{
+			if (Flags.isPublic(fields[f].getFlags()))
+			{
+				list.add(fields[f]);
+			}
+		}
+	}
+	
+	/**
+	 * If the given method is a getter according to the Bean spec
+	 * (eg. "MyType getMyProperty ()" or "boolean isMyProperty ()")
+	 * return the corresponding bean property name (eg. "myProperty"),
+	 * otherwise, return null.
+	 * @param method The method to check.
+	 * @return The property name or none if the method is not a getter.
+	 */
+	public String getGetterName ( IMethod method )
+	{
+		try
+		{
+			String methodName = method.getElementName();
+			if (methodName.startsWith("get") && methodName.length() > 3)
+			{
+				String signature = method.getSignature();
+				String returnTypeName = Signature.getReturnType(signature);
+				//
+				// Getters must not be void.
+				//
+				if (returnTypeName != null && returnTypeName != Signature.SIG_VOID)
+				{
+					String[] parameterSignatures = method.getParameterTypes();
+					//
+					// Non-indexed getters must have zero parameters.
+					//
+					if (parameterSignatures.length == 0)
+					{
+						return methodName.substring(3,4).toLowerCase() + methodName.substring(4);
+					}
+					//
+					// Indexed getters must have exactly one parameter of type "int".
+					//
+					else if (parameterSignatures.length == 1)
+					{
+						String indexTypeName = getTypeNameFromSignature(parameterSignatures[0]);
+						if (indexTypeName.equals("int"))
+						{
+							return methodName.substring(3,4).toLowerCase() + methodName.substring(4);
+						}
+					}
+				}
+			}
+			else if (methodName.startsWith("is") && methodName.length() > 2)
+			{
+				String signature = method.getSignature();
+				String returnTypeName = Signature.getReturnType(signature);
+				//
+				// "is" getters must be boolean.
+				//
+				if (Signature.SIG_BOOLEAN.equals(returnTypeName))
+				{
+					//
+					// "is" getters must have no parameters.
+					//
+					if (method.getParameterTypes().length == 0)
+					{
+						return methodName.substring(2,3).toLowerCase() + methodName.substring(3);
+					}
+				}
+			}
+		}
+		catch (JavaModelException e)
+		{
+			return null;
+		}
+		return null;
+	}
+	
+	/**
+	 * If the given method is a setter according to the Bean spec
+	 * (eg. "void setMyProperty (MyType)" return the corresponding
+	 * bean property name (eg. "myProperty"), otherwise, return null.
+	 * @param method The method to check.
+	 * @return The property name or none if the method is not a setter.
+	 */
+	public String getSetterName ( IMethod method )
+	{
+		try
+		{
+			String methodName = method.getElementName();
+			if (methodName.startsWith("set") && methodName.length() > 3)
+			{
+				String signature = method.getSignature();
+				String returnTypeName = Signature.getReturnType(signature);
+				//
+				// Setters must be void.
+				//
+				if (Signature.SIG_VOID.equals(returnTypeName))
+				{
+					String[] parameterSignatures = method.getParameterTypes();
+					//
+					// Non-indexed setters must have exactly one parameter.
+					//
+					if (parameterSignatures.length == 1)
+					{
+						return methodName.substring(3,4).toLowerCase() + methodName.substring(4);
+					}
+					//
+					// Indexed setters must have exactly two parameters,
+					// the first of which must be "int".
+					//
+					else if (parameterSignatures.length == 2)
+					{
+						if (Signature.SIG_INT.equals(parameterSignatures[0]))
+						{
+							return methodName.substring(3,4).toLowerCase() + methodName.substring(4);
+						}
+					}
+				}
+			}
+		}
+		catch (JavaModelException e)
+		{
+			return null;
+		}
+		return null;
+	}
+	
+	/*
+	 * The Java project that governs the search scope for this resolver.
+	 */
+	private IJavaProject javaProject_;
+	
+	/*
+	 * The progress monitor to use, if any. 
+	 */
+	private IProgressMonitor monitor_;
+	
+	/*
+	 * The set of Java wrapper types.
+	 */
+	private static String[] wrapperTypes_ = {
+		"java.lang.Character",
+		"java.lang.Boolean",
+		"java.lang.Byte",
+		"java.lang.Short",
+		"java.lang.Integer",
+		"java.lang.Long",
+		"java.lang.Float",
+		"java.lang.Double"
+	};
+
+	/*
+	 * The set of Java primitive types.
+	 */
+	private static String[] primitiveTypes_ = {
+		"char",
+		"boolean",
+		"byte",
+		"short",
+		"int",
+		"long",
+		"float",
+		"double"
+	};
+
+	/*
+	 * The set of JAX-RPC supported Java standard types,
+	 * excluding primitives and wrapper types.
+	 */
+	private static String[] jaxrpcTypes_ = {
+		"boolean",
+		"byte",
+		"short",
+		"int",
+		"long",
+		"float",
+		"double",
+		"java.lang.String",
+		"java.lang.Boolean",
+		"java.lang.Byte",
+		"java.lang.Short",
+		"java.lang.Integer",
+		"java.lang.Long",
+		"java.lang.Float",
+		"java.lang.Double",
+		"java.util.Date",
+		"java.util.Calendar",
+		"java.math.BigInteger",
+		"java.math.BigDecimal",
+		"java.net.URI",
+		"javax.xml.namespace.QName"
+	};
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JavaBeanProperty.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JavaBeanProperty.java
new file mode 100644
index 0000000..529d552
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JavaBeanProperty.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance;
+
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+
+/**
+ * @author cbrealey
+ * This is a garden variety implementation of IJavaBeanProperty,
+ * constructable by default and equipped with getters and setters
+ * for the properties of IJavaBeanProperty.
+ */
+public class JavaBeanProperty implements IJavaBeanProperty
+{
+	private String name_;
+	private boolean indexed_;
+	private IMethod getter_;
+	private IMethod setter_;
+	private IMethod indexedGetter_;
+	private IMethod indexedSetter_;
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaBeanProperty#getName()
+	 */
+	public String getName ()
+	{
+		return name_;
+	}
+	
+	/**
+	 * Sets the "name" property of this Java Bean Property descriptor.
+	 * @param name The string value to set.
+	 */
+	public void setName ( String name )
+	{
+		name_ = name;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaBeanProperty#isIndexed()
+	 */
+	public boolean isIndexed ()
+	{
+		return indexed_;
+	}
+	
+	/**
+	 * Sets the "indexed" property of this Java Bean Property descriptor.
+	 * @param indexed The boolean value to set.
+	 */
+	public void setIndexed ( boolean indexed )
+	{
+		indexed_ = indexed;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaBeanProperty#getGetter()
+	 */
+	public IMethod getGetter ()
+	{
+		return getter_;
+	}
+	
+	/**
+	 * Sets the "getter" property of this Java Bean Property descriptor.
+	 * @param getter The IMethod to set.
+	 */
+	public void setGetter ( IMethod getter )
+	{
+		getter_ = getter;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaBeanProperty#getSetter()
+	 */
+	public IMethod getSetter ()
+	{
+		return setter_;
+	}
+	
+	/**
+	 * Sets the "setter" property of this Java Bean Property descriptor.
+	 * @param setter The IMethod to set.
+	 */
+	public void setSetter ( IMethod setter )
+	{
+		setter_ = setter;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaBeanProperty#getIndexedGetter()
+	 */
+	public IMethod getIndexedGetter ()
+	{
+		return indexedGetter_;
+	}
+	
+	/**
+	 * Sets the "indexedGetter" property of this Java Bean Property descriptor.
+	 * @param indexedGetter The IMethod to set.
+	 */
+	public void setIndexedGetter ( IMethod indexedGetter )
+	{
+		indexedGetter_ = indexedGetter;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaBeanProperty#getIndexedSetter()
+	 */
+	public IMethod getIndexedSetter ()
+	{
+		return indexedSetter_;
+	}
+	
+	/**
+	 * Sets the "indexedSetter" property of this Java Bean Property descriptor.
+	 * @param indexedSetter The IMethod to set.
+	 */
+	public void setIndexedSetter ( IMethod indexedSetter )
+	{
+		indexedSetter_ = indexedSetter;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaBeanProperty#getDeclaringType()
+	 */
+	public IType getDeclaringType ()
+	{
+		IMethod method = getGetter();
+		if (method == null) method = getSetter();
+		if (method == null) method = getIndexedGetter();
+		if (method == null) method = getIndexedSetter();
+		return method != null ? method.getDeclaringType() : null;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JavaWebServiceRule.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JavaWebServiceRule.java
new file mode 100644
index 0000000..39ffa31
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JavaWebServiceRule.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance;
+
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Stack;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+
+/**
+ * A basic default implementation of IJavaWebServiceRule.
+ */
+public class JavaWebServiceRule implements IJavaWebServiceRule
+{
+	protected IJavaWebServiceRuleEngine engine_;
+	protected List statusList_;
+	protected int id_;
+	protected String namespace_;
+	protected String name_;
+	protected String description_;
+	
+	protected JavaWebServiceRule ()
+	{
+		// Not publicly constructable.
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#getId()
+	 */
+	public int getId ()
+	{
+		return id_;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#getNamespace()
+	 */
+	public String getNamespace ()
+	{
+		return namespace_;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#getName()
+	 */
+	public String getName ()
+	{
+		return name_;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#getDescription()
+	 */
+	public String getDescription ()
+	{
+		return description_;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#init()
+	 */
+	public void init ( IJavaWebServiceRuleEngine engine )
+	{
+		engine_ = engine;
+		statusList_ = new LinkedList();
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#visitClass(org.eclipse.jdt.core.IType, java.util.Stack)
+	 */
+	public void visitClass ( IType jdtClass, Stack peanutTrail )
+	{
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#visitException(org.eclipse.jdt.core.IField, java.util.Stack)
+	 */
+	public void visitException ( IType jdtClass, Stack peanutTrail )
+	{
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#visitField(org.eclipse.jdt.core.IField, java.util.Stack)
+	 */
+	public void visitField ( IField jdtField, Stack peanutTrail )
+	{
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#visitProperty(org.eclipse.jdt.core.IMethod, org.eclipse.jdt.core.IMethod, java.util.Stack)
+	 */
+	public void visitProperty ( IJavaBeanProperty beanProperty, Stack peanutTrail )
+	{
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#visitMethod(org.eclipse.jdt.core.IMethod, java.util.Stack)
+	 */
+	public void visitMethod ( IMethod jdtMethod, Stack peanutTrail )
+	{
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRule#getResults()
+	 */
+	public IStatus getResults ()
+	{
+		IStatus status = null;
+		if (statusList_.size() == 0)
+		{
+			status = new Status(IStatus.OK,"org.eclipse.jst.ws",0,"",null);
+		}
+		else
+		{
+			MultiStatus multiStatus = new MultiStatus("org.eclipse.jst.ws",0,"",null);
+			Iterator i = statusList_.iterator();
+			while (i.hasNext())
+			{
+				multiStatus.add((IStatus)i.next());
+			}
+			status = multiStatus;
+		}
+		return status;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JavaWebServiceRuleSet.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JavaWebServiceRuleSet.java
new file mode 100644
index 0000000..f487714
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/JavaWebServiceRuleSet.java
@@ -0,0 +1,285 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.Stack;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+
+/**
+ * @author cbrealey
+ * This object manages a set of rules.
+ * Rules in the set may be enabled or disabled.
+ */
+public class JavaWebServiceRuleSet
+{
+	private Set enabledRules_ = new HashSet();
+	private Set disabledRules_ = new HashSet();
+	
+	/**
+	 * Creates a new, initially empty set of rules.
+	 */
+	public JavaWebServiceRuleSet ()
+	{
+		// Nothing to do.
+	}
+
+	/**
+	 * Creates a new set of rules initialized with those
+	 * from the given array of <code>rules</code>.
+	 * @param rules An array of rules to add.
+	 */
+	public JavaWebServiceRuleSet ( IJavaWebServiceRule[] rules )
+	{
+		addRules(rules);
+	}
+	
+	/**
+	 * Adds a <code>rule</code> to the set.
+	 * Rules added to the set are initially enabled.
+	 * @param rule The rule to add.
+	 */
+	public void addRule ( IJavaWebServiceRule rule )
+	{
+		enabledRules_.add(rule);
+	}
+	
+	/**
+	 * Adds several <code>rules</code> to the set.
+	 * Rules added to the set are initially enabled.
+	 * @param rules The array of rules to add.
+	 */
+	public void addRules ( IJavaWebServiceRule[] rules )
+	{
+		enabledRules_.addAll(Arrays.asList(rules));
+	}
+	
+	/**
+	 * Marks the given <code>rule</code> as disabled or enabled.
+	 * This method has no effect if the rule is not already in
+	 * the set, in other words, this method will not have the
+	 * side effect of adding a rule to the set.
+	 * @param rule The rule to disable or enable.
+	 * @param disabled True to disable the rule or false to enable it.
+	 * @return True if a change in status was actually made.
+	 */
+	public boolean setRuleDisabled ( IJavaWebServiceRule rule, boolean disabled )
+	{
+		if (disabled)
+		{
+			if (enabledRules_.remove(rule))
+			{
+				disabledRules_.add(rule);
+				return true;
+			}
+		}
+		else
+		{
+			if (disabledRules_.remove(rule))
+			{
+				enabledRules_.add(rule);
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Returns the number of rules in the set.
+	 * @return The number of rules in the set.
+	 */
+	public int size ()
+	{
+		return enabledRules_.size() + disabledRules_.size();
+	}
+	
+	/**
+	 * Returns the number of enabled rules in the set.
+	 * @return The number of enabled rules in the set.
+	 */
+	public int numberEnabled ()
+	{
+		return enabledRules_.size();
+	}
+	
+	/**
+	 * Returns the number of disabled rules in the set.
+	 * @return The number of disabled rules in the set.
+	 */
+	public int numberDisabled ()
+	{
+		return disabledRules_.size();
+	}
+	
+	/**
+	 * Returns an array of all currently enabled rules from the set.
+	 * @return An array of all currently enabled rules from the set.
+	 */
+	public IJavaWebServiceRule[] getEnabledRules ()
+	{
+		return (IJavaWebServiceRule[])enabledRules_.toArray(new IJavaWebServiceRule[0]);
+	}
+	
+	/**
+	 * Returns an array of all currently disabled rules from the set.
+	 * @return An array of all currently disabled rules from the set.
+	 */
+	public IJavaWebServiceRule[] getDisabledRules ()
+	{
+		return (IJavaWebServiceRule[])disabledRules_.toArray(new IJavaWebServiceRule[0]);
+	}
+	
+	/**
+	 * Initializes all rules in the set by calling
+	 * their init() methods with the given engine.
+	 * @param engine The engine initializing 
+	 */
+	public void init ( IJavaWebServiceRuleEngine engine )
+	{
+		Iterator i = enabledRules_.iterator();
+		while (i.hasNext())
+		{
+			IJavaWebServiceRule rule = (IJavaWebServiceRule)i.next();
+			rule.init(engine);
+		}
+	}
+
+	/**
+	 * Visits the "visitClass" method of all rules in the set. 
+	 * @param jdtClass The JDT IType being visited.
+	 * @param peanutTrail The stack of objects up to the root.
+	 */
+	public void visitClass ( IType jdtClass, Stack peanutTrail )
+	{
+		Iterator i = enabledRules_.iterator();
+		while (i.hasNext())
+		{
+			IJavaWebServiceRule rule = (IJavaWebServiceRule)i.next();
+			rule.visitClass(jdtClass,peanutTrail);
+		}		
+	}
+
+	/**
+	 * Visits the "visitException" method of all rules in the set. 
+	 * @param jdtClass The JDT IType being visited.
+	 * @param peanutTrail The stack of objects up to the root.
+	 */
+	public void visitException ( IType jdtClass, Stack peanutTrail )
+	{
+		Iterator i = enabledRules_.iterator();
+		while (i.hasNext())
+		{
+			IJavaWebServiceRule rule = (IJavaWebServiceRule)i.next();
+			rule.visitException(jdtClass,peanutTrail);
+		}
+	}
+
+
+	/**
+	 * Visits the "visitField" method of all rules in the set. 
+	 * @param jdtClass The JDT IField being visited.
+	 * @param peanutTrail The stack of objects up to the root.
+	 */
+	public void visitField ( IField jdtField, Stack peanutTrail )
+	{
+		Iterator i = enabledRules_.iterator();
+		while (i.hasNext())
+		{
+			IJavaWebServiceRule rule = (IJavaWebServiceRule)i.next();
+			rule.visitField(jdtField,peanutTrail);
+		}
+	}
+
+	/**
+	 * Visits the "visitProperty" method of all rules in the set. 
+	 * @param jdtClass The IJavaBeanProperty being visited.
+	 * @param peanutTrail The stack of objects up to the root.
+	 */
+	public void visitProperty ( IJavaBeanProperty beanProperty, Stack peanutTrail )
+	{
+		Iterator i = enabledRules_.iterator();
+		while (i.hasNext())
+		{
+			IJavaWebServiceRule rule = (IJavaWebServiceRule)i.next();
+			rule.visitProperty(beanProperty,peanutTrail);
+		}
+	}
+
+	/**
+	 * Visits the "visitMethod" method of all rules in the set. 
+	 * @param jdtClass The JDT IMethod being visited.
+	 * @param peanutTrail The stack of objects up to the root.
+	 */
+	public void visitMethod ( IMethod jdtMethod, Stack peanutTrail )
+	{
+		Iterator i = enabledRules_.iterator();
+		while (i.hasNext())
+		{
+			IJavaWebServiceRule rule = (IJavaWebServiceRule)i.next();
+			rule.visitMethod(jdtMethod,peanutTrail);
+		}
+	}
+	
+	/**
+	 * Collects the results of all rules in the set together.
+	 * If one or more warnings or errors are found, returns
+	 * a status object whose top level message is the root
+	 * message passed to this message, otherwise, returns a
+	 * basic "OK" status.
+	 * @param rootMessage The warning/error message to act as
+	 * the root message if necessary (ie. if at least one rule
+	 * in the set reported at least one warning/error).
+	 * @return The collective status.
+	 */
+	public IStatus getResults ( String rootMessage )
+	{
+		List list = new LinkedList();
+		Iterator e = enabledRules_.iterator();
+		while (e.hasNext())
+		{
+			IJavaWebServiceRule rule = (IJavaWebServiceRule)e.next();
+			IStatus status = rule.getResults();
+			if (!status.isOK())
+			{
+				list.add(status);
+			}
+		}
+		if (list.size() > 0)
+		{
+			MultiStatus multiStatus = new MultiStatus("org.eclipse.jst.ws",0,rootMessage,null);
+			Iterator l = list.iterator();
+			while (l.hasNext())
+			{
+				IStatus status = (IStatus)l.next();
+				multiStatus.addAll(status);
+			}
+			return multiStatus;
+		}
+		else
+		{
+			return new Status(IStatus.OK,"org.eclipse.jst.ws",0,"",null);
+		}
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0001.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0001.java
new file mode 100644
index 0000000..1441079
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0001.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance.rules;
+
+import java.util.Stack;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.ws.internal.WSPluginMessages;
+import org.eclipse.jst.ws.internal.conformance.JDTResolver;
+import org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * This rule checks if a service class
+ * is public default constructable.
+ */
+public class JAXRPCRule0001 extends JavaWebServiceRule
+{
+	/**
+	 * Creates a new instance of this rule.
+	 */
+	public JAXRPCRule0001 ()
+	{
+		id_ = 1;
+		namespace_ = "http://www.eclipse.org/webtools/org.eclipse.jst.ws/jaxrpc/1.1";
+		name_ = null;
+		description_ = null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#visitClass(org.eclipse.jdt.core.IType, java.util.Stack)
+	 */
+	public void visitClass ( IType jdtClass, Stack peanutTrail )
+	{
+		// An empty peanut trail implies this is the root
+		// class or JAX-RPC service class.
+		if (peanutTrail.size() == 0)
+		{
+			try
+			{
+				JDTResolver resolver = engine_.getJDTResolver();
+				if (!resolver.isConstructable(jdtClass) || resolver.isInterface(jdtClass) || resolver.isAbstract(jdtClass))
+				{
+					String message = NLS.bind(WSPluginMessages.MSG_JAXRPC11_RULE_0001,jdtClass.getFullyQualifiedName());
+					statusList_.add(new Status(IStatus.WARNING,"org.eclipse.jst.ws",0,message,null));
+				}
+			}
+			catch (JavaModelException e)
+			{
+				statusList_.add(new Status(IStatus.ERROR,"org.eclipse.jst.ws",0,"Internal error",e));
+			}
+		}
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0002.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0002.java
new file mode 100644
index 0000000..7049c33
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0002.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance.rules;
+
+import java.util.Stack;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.ws.internal.WSPluginMessages;
+import org.eclipse.jst.ws.internal.conformance.JDTResolver;
+import org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * This rule checks if a value type class
+ * is public default constructable.
+ */
+public class JAXRPCRule0002 extends JavaWebServiceRule
+{
+	/**
+	 * Creates a new instance of this rule.
+	 */
+	public JAXRPCRule0002 ()
+	{
+		id_ = 2;
+		namespace_ = "http://www.eclipse.org/webtools/org.eclipse.jst.ws/jaxrpc/1.1";
+		name_ = null;
+		description_ = null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#visitClass(org.eclipse.jdt.core.IType, java.util.Stack)
+	 */
+	public void visitClass ( IType jdtClass, Stack peanutTrail )
+	{
+		// An empty peanut trail implies this is the root class
+		// root class or JAX-RPC service class, whereas a non-empty
+		// peanut trail implies this is a class from a method, field
+		// or property signature. In the former case, remember the
+		// qualified name of the type just in case we need it for the
+		// latter case.
+		if (peanutTrail.size() == 0)
+		{
+			serviceClassName_ = jdtClass.getFullyQualifiedName();
+		}
+		else
+		{
+			try
+			{
+				JDTResolver resolver = engine_.getJDTResolver();
+				String qname = jdtClass.getFullyQualifiedName();
+				if (!resolver.isStandardType(qname))
+				{ 
+					if (!resolver.isConstructable(jdtClass) || resolver.isInterface(jdtClass) || resolver.isAbstract(jdtClass))
+					{
+						String message = NLS.bind(WSPluginMessages.MSG_JAXRPC11_RULE_0002,qname,serviceClassName_);
+						statusList_.add(new Status(IStatus.WARNING,"org.eclipse.jst.ws",0,message,null));
+					}
+				}
+			}
+			catch (JavaModelException e)
+			{
+				statusList_.add(new Status(IStatus.ERROR,"org.eclipse.jst.ws",0,"Internal error",e));
+			}
+		}
+	}
+	
+	private String serviceClassName_;
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0003.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0003.java
new file mode 100644
index 0000000..bc65bcd
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0003.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance.rules;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.Stack;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.ws.internal.WSPluginMessages;
+import org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRuleEngine;
+import org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * This rule verifies that a service class has no overloaded methods.
+ */
+public class JAXRPCRule0003 extends JavaWebServiceRule
+{
+	/**
+	 * Creates a new instance of this rule.
+	 */
+	public JAXRPCRule0003 ()
+	{
+		id_ = 3;
+		namespace_ = "http://www.eclipse.org/webtools/org.eclipse.jst.ws/jaxrpc/1.1";
+		name_ = null;
+		description_ = null;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#init(org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRuleEngine)
+	 */
+	public void init ( IJavaWebServiceRuleEngine engine )
+	{
+		super.init(engine);
+		methodNames_ = new HashMap();
+		overloadedMethodNames_ = new HashSet();
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#visitClass(org.eclipse.jdt.core.IType, java.util.Stack)
+	 */
+	public void visitClass ( IType jdtClass, Stack peanutTrail )
+	{
+		//
+		// An empty peanut trail implies this is the root
+		// class, aka. JAX-RPC service class. Put aside
+		// the class name in case visitMethod() needs it.
+		//
+		if (peanutTrail.size() == 0)
+		{
+			serviceClassName_ = jdtClass.getFullyQualifiedName();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#visitMethod(org.eclipse.jdt.core.IMethod, java.util.Stack)
+	 */
+	public void visitMethod ( IMethod jdtMethod, Stack peanutTrail )
+	{
+		//
+		// A peanut trail of length one implies this is a method
+		// belonging to the root class, aka. JAX-RPC service class.
+		//
+		if (peanutTrail.size() == 1)
+		{
+			try
+			{
+				//
+				// If we have encountered this method already but haven't
+				// reported the overload condition, report it.
+				//
+				String methodName = jdtMethod.getElementName();
+				String firstParameterSignature = (String)methodNames_.get(methodName);
+				String thisParameterSignature = flattenedSignatureOf(jdtMethod);
+				if (thisParameterSignature != null)
+				{
+					if (firstParameterSignature != null)
+					{
+						//
+						// If we have encountered this method's name already,
+						// but have not yet determined if it is overloaded,
+						// then compare this method's parameter signature with
+						// that of the "first signature" of the method name.
+						// The moment we find a second signature for a given
+						// method name, we have an overload condition.
+						//
+						if (!overloadedMethodNames_.contains(methodName) && !thisParameterSignature.equals(firstParameterSignature))
+						{
+							overloadedMethodNames_.add(methodName);
+							String message = NLS.bind(WSPluginMessages.MSG_JAXRPC11_RULE_0003,methodName,serviceClassName_);
+							statusList_.add(new Status(IStatus.WARNING,"org.eclipse.jst.ws",0,message,null));
+						}
+					}
+					else
+					{
+						//
+						// If we have recorded no signature for the given method
+						// name (ie. we have not encountered the method name yet),
+						// then record this one. Any "first signature" will do.
+						//
+						methodNames_.put(methodName,thisParameterSignature);
+					}
+				}
+			}
+			catch (JavaModelException e)
+			{
+				// Do nothing.
+			}
+		}
+	}
+	
+	/*
+	 * Grabs the types of the parameters of the given method
+	 * and flattens then into a single string sufficient to
+	 * distinguish between overloaded vs. overridden methods.
+	 */
+	private String flattenedSignatureOf ( IMethod jdtMethod )
+	throws JavaModelException
+	{
+		String[] signatures = engine_.getJDTResolver().getParameterTypeNames(jdtMethod);
+		StringBuffer flattenedSignature = new StringBuffer();
+		for (int s=0; s<signatures.length; s++)
+		{
+			flattenedSignature.append(signatures[s]).append(",");
+		}
+		return flattenedSignature.toString();
+	}
+	
+	private Map methodNames_;
+	private Set overloadedMethodNames_;
+	private String serviceClassName_;
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0005.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0005.java
new file mode 100644
index 0000000..c66cf7a
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0005.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance.rules;
+
+import java.util.Stack;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.ws.internal.WSPluginMessages;
+import org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRuleEngine;
+import org.eclipse.jst.ws.internal.conformance.JDTResolver;
+import org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * This rule verifies that the methods of a service class
+ * uses only JAX-RPC supported types.
+ */
+public class JAXRPCRule0005 extends JavaWebServiceRule
+{
+	/**
+	 * Creates a new instance of this rule.
+	 */
+	public JAXRPCRule0005 ()
+	{
+		id_ = 5;
+		namespace_ = "http://www.eclipse.org/webtools/org.eclipse.jst.ws/jaxrpc/1.1";
+		name_ = null;
+		description_ = null;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#init(org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRuleEngine)
+	 */
+	public void init ( IJavaWebServiceRuleEngine engine )
+	{
+		super.init(engine);
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#visitClass(org.eclipse.jdt.core.IType, java.util.Stack)
+	 */
+	public void visitClass ( IType jdtClass, Stack peanutTrail )
+	{
+		//
+		// An empty peanut trail implies this is the root
+		// class, aka. JAX-RPC service class. Put aside
+		// the class name in case visitMethod() needs it.
+		//
+		if (peanutTrail.size() == 0)
+		{
+			serviceClassName_ = jdtClass.getFullyQualifiedName();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#visitMethod(org.eclipse.jdt.core.IMethod, java.util.Stack)
+	 */
+	public void visitMethod ( IMethod jdtMethod, Stack peanutTrail )
+	{
+		//
+		// A peanut trail of length one implies this is a method
+		// belonging to the root class, aka. JAX-RPC service class.
+		//
+		if (peanutTrail.size() == 1)
+		{
+			try
+			{
+				String methodName = jdtMethod.getElementName();
+				//
+				// Check the method return type for compliance.
+				// Any Java primitive or standard ("java." or "javax.") type
+				// that is not supported by JAX-RPC will get flagged.
+				// Any non-primitive or non-standard type is presumed to be a
+				// potential value type and is bypassed since the rule engine
+				// will navigate into the potential value type's class.
+				//
+				JDTResolver resolver = engine_.getJDTResolver();
+				String returnTypeName = resolver.getReturnTypeName(jdtMethod);
+				if ((resolver.isPrimitiveType(returnTypeName) || resolver.isStandardType(returnTypeName)) && !resolver.isJAXRPCStandardType(returnTypeName))
+				{
+					String message = NLS.bind(WSPluginMessages.MSG_JAXRPC11_RULE_0005,new String[] {methodName,serviceClassName_,returnTypeName});
+					statusList_.add(new Status(IStatus.WARNING,"org.eclipse.jst.ws",0,message,null));
+				}
+				//
+				// Check the method parameter types for compliance.
+				// Same comment as above, only applied to the method's parameters.
+				//
+				String[] parameterTypeNames = resolver.getParameterTypeNames(jdtMethod);
+				for (int p=0; p<parameterTypeNames.length; p++)
+				{
+					if ((resolver.isPrimitiveType(parameterTypeNames[p]) || resolver.isStandardType(parameterTypeNames[p])) && !resolver.isJAXRPCStandardType(parameterTypeNames[p]))
+					{
+						String message = NLS.bind(WSPluginMessages.MSG_JAXRPC11_RULE_0005,new String[] {methodName,serviceClassName_,parameterTypeNames[p]});
+						statusList_.add(new Status(IStatus.WARNING,"org.eclipse.jst.ws",0,message,null));
+					}
+				}
+			}
+			catch (JavaModelException e)
+			{
+				// Do nothing.
+			}
+		}
+	}
+	
+	private String serviceClassName_;
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0006.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0006.java
new file mode 100644
index 0000000..407afd3
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRule0006.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance.rules;
+
+import java.util.Stack;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.ws.internal.WSPluginMessages;
+import org.eclipse.jst.ws.internal.conformance.IJavaBeanProperty;
+import org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRuleEngine;
+import org.eclipse.jst.ws.internal.conformance.JDTResolver;
+import org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule;
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * This rule verifies that the fields and properties of a
+ * value type class uses only JAX-RPC supported types.
+ */
+public class JAXRPCRule0006 extends JavaWebServiceRule
+{
+	/**
+	 * Creates a new instance of this rule.
+	 */
+	public JAXRPCRule0006 ()
+	{
+		id_ = 6;
+		namespace_ = "http://www.eclipse.org/webtools/org.eclipse.jst.ws/jaxrpc/1.1";
+		name_ = null;
+		description_ = null;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#init(org.eclipse.jst.ws.internal.conformance.IJavaWebServiceRuleEngine)
+	 */
+	public void init ( IJavaWebServiceRuleEngine engine )
+	{
+		super.init(engine);
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#visitClass(org.eclipse.jdt.core.IType, java.util.Stack)
+	 */
+	public void visitClass ( IType jdtClass, Stack peanutTrail )
+	{
+		//
+		// An empty peanut trail implies this is the root
+		// class, aka. JAX-RPC service class. Put aside
+		// the class name in case visitMethod() needs it.
+		//
+		if (peanutTrail.size() == 0)
+		{
+			serviceClassName_ = jdtClass.getFullyQualifiedName();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#visitMethod(org.eclipse.jdt.core.IMethod, java.util.Stack)
+	 */
+	public void visitField ( IField jdtField, Stack peanutTrail )
+	{
+		//
+		// A peanut trail of length greater than one implies this is a
+		// field belonging to a class other than the root (aka. JAX-RPC
+		// service) class, namely a presumed value type class.
+		//
+		if (peanutTrail.size() > 1)
+		{
+			try
+			{
+				//
+				// Any Java primitive or standard ("java." or "javax.") type
+				// that is not supported by JAX-RPC will get flagged.
+				// Any non-primitive or non-standard type is presumed to be a
+				// potential value type and is bypassed since the rule engine
+				// will navigate into the potential value type's class.
+				//
+				JDTResolver resolver = engine_.getJDTResolver();
+				String fieldTypeName = resolver.getFieldTypeName(jdtField);
+				if ((resolver.isPrimitiveType(fieldTypeName) || resolver.isStandardType(fieldTypeName)) && !resolver.isJAXRPCStandardType(fieldTypeName))
+				{
+					//
+					// The field pretty much MUST be declared in a type or
+					// we would not have gotten here. Still, best to be safe.
+					//
+					IType valueType = jdtField.getDeclaringType();
+					if (valueType != null)
+					{
+						String valueTypeClassName = valueType.getFullyQualifiedName();
+						String fieldName = jdtField.getElementName();
+						String message = NLS.bind(WSPluginMessages.MSG_JAXRPC11_RULE_0006,new String[] {fieldName,valueTypeClassName,serviceClassName_,fieldTypeName});
+						statusList_.add(new Status(IStatus.WARNING,"org.eclipse.jst.ws",0,message,null));
+					}
+				}
+			}
+			catch (JavaModelException e)
+			{
+				// Do nothing.
+			}
+		}
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jst.ws.internal.conformance.JavaWebServiceRule#visitProperty(org.eclipse.jst.ws.internal.conformance.IJavaBeanProperty, java.util.Stack)
+	 */
+	public void visitProperty ( IJavaBeanProperty property, Stack peanutTrail )
+	{
+		//
+		// A peanut trail of length greater than one implies this is a
+		// property belonging to a class other than the root (aka. JAX-RPC
+		// service) class, namely a presumed value type class.
+		//
+		if (peanutTrail.size() > 1)
+		{
+			try
+			{
+				//
+				// Any Java primitive or standard ("java." or "javax.") type
+				// that is not supported by JAX-RPC will get flagged.
+				// Any non-primitive or non-standard type is presumed to be a
+				// potential value type and is bypassed since the rule engine
+				// will navigate into the potential value type's class.
+				//
+				JDTResolver resolver = engine_.getJDTResolver();
+				String propertyTypeName = resolver.getPropertyTypeName(property);
+				if ((resolver.isPrimitiveType(propertyTypeName) || resolver.isStandardType(propertyTypeName)) && !resolver.isJAXRPCStandardType(propertyTypeName))
+				{
+					//
+					// The field pretty much MUST be declared in a type or
+					// we would not have gotten here. Still, best to be safe.
+					//
+					IType valueType = property.getDeclaringType();
+					if (valueType != null)
+					{
+						String valueTypeClassName = valueType.getFullyQualifiedName();
+						String propertyName = property.getName();
+						String message = NLS.bind(WSPluginMessages.MSG_JAXRPC11_RULE_0006,new String[] {propertyName,valueTypeClassName,serviceClassName_,propertyTypeName});
+						statusList_.add(new Status(IStatus.WARNING,"org.eclipse.jst.ws",0,message,null));
+					}
+				}
+			}
+			catch (JavaModelException e)
+			{
+				// Do nothing.
+			}
+		}
+	}
+	
+	private String serviceClassName_;
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRuleSetFactory.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRuleSetFactory.java
new file mode 100644
index 0000000..0f1c7a6
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/conformance/rules/JAXRPCRuleSetFactory.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060419   132905 cbrealey@ca.ibm.com - Chris Brealey          
+ *******************************************************************************/
+package org.eclipse.jst.ws.internal.conformance.rules;
+
+import org.eclipse.jst.ws.internal.conformance.JavaWebServiceRuleSet;
+
+/**
+ * A factory that produces a JavaWebServiceRuleSet
+ * for the JAX-RPC 1.1 specification.
+ */
+public class JAXRPCRuleSetFactory
+{
+	private JAXRPCRuleSetFactory ()
+	{
+		// Not publicly constructable.
+	}
+	
+	/**
+	 * Returns a set of rules for analyzing Java classes
+	 * for compliance to the rules of JAX-RPC 1.1.  
+	 * @return A set of JAX-RPC 1.1 analysis rules.
+	 */
+	public static JavaWebServiceRuleSet newRuleSet ()
+	{
+		JavaWebServiceRuleSet set = new JavaWebServiceRuleSet();
+		set.addRule(new JAXRPCRule0001());
+		set.addRule(new JAXRPCRule0002());
+		set.addRule(new JAXRPCRule0003());
+		set.addRule(new JAXRPCRule0005());
+		set.addRule(new JAXRPCRule0006());
+		return set;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/WebServiceExtensionRegistryImpl.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/WebServiceExtensionRegistryImpl.java
index 5a9456f..46bea11 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/WebServiceExtensionRegistryImpl.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/WebServiceExtensionRegistryImpl.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060821   153833 makandre@ca.ibm.com - Andrew Mak, Allow the Web Service Test extension point to specify the supported client runtime
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.ext;
@@ -26,9 +29,9 @@
   // Copyright
   public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002.";
   
-  private Hashtable nameExtensionTable_;
-  private Vector id_;
-  private Vector label_;
+  protected Hashtable nameExtensionTable_;
+  protected Vector id_;
+  protected Vector label_;
   private LabelsAndIds labelsandids_;
     
   public WebServiceExtensionRegistryImpl()
@@ -58,7 +61,7 @@
   * This is done by querying the plugin registry for all extensions
   * that extend webServiceClientTest  
   */
-  private void loadExtensions ()
+  protected void loadExtensions ()
   {    
     IConfigurationElement[] config = getConfigElements();
 
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/test/WebServiceTestExtension.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/test/WebServiceTestExtension.java
index 76f7d77..2881939 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/test/WebServiceTestExtension.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/test/WebServiceTestExtension.java
@@ -1,16 +1,23 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060816   104870 kathy@ca.ibm.com - Kathy Chan
+ * 20060821   153833 makandre@ca.ibm.com - Andrew Mak, Allow the Web Service Test extension point to specify the supported client runtime
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.ext.test;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.jst.ws.internal.ext.WebServiceExtensionImpl;
 
@@ -26,9 +33,33 @@
   // Copyright
   public static final String copyright = "(c) Copyright IBM Corporation 2000, 2002.";
 
+  private List supportedRuntimes_ = new ArrayList();
+  
   public WebServiceTestExtension(IConfigurationElement configElement)
   {
     super(configElement);
+       
+    String runtimesList = getConfigElement().getAttribute("supportedClientRuntimes");  
+   
+    addRuntimes(runtimesList);
+  }
+  
+  /**
+   * Adds a list of space delimited runtime IDs.
+   * 
+   * @param runtimesList The list of runtime IDs.
+   */
+  public void addRuntimes(String runtimesList) {
+	  
+	  if (runtimesList == null)
+		  return;
+	  
+	  String[] runtimes = runtimesList.split("\\s+");
+	    
+	  for (int i = 0; i < runtimes.length; i++) {	    	
+		  if (runtimes[i].length() > 0)
+			  supportedRuntimes_.add(runtimes[i]);   
+	  }
   }
   
   /**
@@ -37,7 +68,7 @@
   */
   public boolean isCodeGenNeeded()
   {
-    return Boolean.valueOf(getConfigElement().getAttribute( "codegen" )).booleanValue();
+    return Boolean.valueOf(getConfigElement().getAttribute( "codeGenerated" )).booleanValue();
   }
   
   /**
@@ -82,7 +113,7 @@
   */
   public boolean isServerNeeded()
   {
-    return Boolean.valueOf(getConfigElement().getAttribute( "serverneeded" )).booleanValue();
+    return Boolean.valueOf(getConfigElement().getAttribute( "serverRequired" )).booleanValue();
   }
 
   /**
@@ -112,7 +143,36 @@
 	return false;  
   }
   	
-  
+  /**
+   * Returns the id attribute of this WebServiceTestExtension
+   * 
+   * @return The value of the id attribute.
+   */
+  public String getId() {
+	return getConfigElement().getAttribute( "id" ); 
+  }
+   
+  /**
+   * Does this extension allow extenders to restrict the runtimes that are supported?
+   *  
+   * @return The value of the allowRunimesRestriction attribute, false if not present.
+   */
+  public boolean allowClientRuntimesRestriction() {
+	  return Boolean.valueOf(getConfigElement().getAttribute( "allowClientRuntimesRestriction" )).booleanValue();
+  }  
+       
+  /**
+   * Determines if this WebServiceTestExtension supports the give client runtime ID.
+   * 
+   * @return true if the client runtime ID is supported, false otherwise.
+   */
+  public boolean supportsRuntime(String runtimeId) {
+	  
+	 if (!allowClientRuntimesRestriction() || supportedRuntimes_.isEmpty())
+		 return true;
+	  
+	 return supportedRuntimes_.contains(runtimeId);
+  }
 }
 
 
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/test/WebServiceTestRegistry.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/test/WebServiceTestRegistry.java
index 310e3d5..fdb9adf 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/test/WebServiceTestRegistry.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/ext/test/WebServiceTestRegistry.java
@@ -1,16 +1,22 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060821   153833 makandre@ca.ibm.com - Andrew Mak, Allow the Web Service Test extension point to specify the supported client runtime
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.ext.test;
 
+import java.util.Hashtable;
+import java.util.Iterator;
+
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtensionRegistry;
 import org.eclipse.core.runtime.Platform;
@@ -42,6 +48,73 @@
   }
   
   /**
+   * Helper method to "join" an existing value and a new value together by
+   * a space in between.  Handles special case when either value is null. 
+   *  
+   * @param existingValue The existing value
+   * @param newValue The new value
+   * @return If eiter the existing or new value is null, simply returns the
+   * new value as is (which could be null).  Otherwise returns the value joined
+   * by a space.
+   */
+  private String genNewValue(String existingValue, String newValue) {
+	  
+	  if (existingValue == null || newValue == null)
+		  return newValue;
+	  	  	 
+	  return existingValue + " " + newValue;
+  }
+    
+  /* (non-Javadoc)
+   * @see org.eclipse.jst.ws.internal.ext.WebServiceExtensionRegistryImpl#loadExtensions()
+   */
+  protected void loadExtensions ()
+  {
+	// keep track of the support runtimes for each test facility ID
+    Hashtable supportedClientRuntimes = new Hashtable();
+	  
+    IConfigurationElement[] config = getConfigElements();
+    
+    for(int idx=0; idx<config.length; idx++) 
+    {
+      IConfigurationElement elem = config[idx];
+      String label = elem.getAttribute( "label" );
+      String id =   elem.getAttribute( "id" );      
+      
+      // label is found, hence we have a master extension element
+      if (label != null) {
+    	  WebServiceExtension webServiceExtension = createWebServiceExtension(elem);	
+    	  nameExtensionTable_.put(label,webServiceExtension);
+    	  label_.add(label);
+    	  id_.add(id);
+      }
+      
+      // slave extension element, which only has the id and supportedClientRuntimes attributes
+      else {
+    	  String existingValue = (String) supportedClientRuntimes.get(id);
+    	  String newValue = genNewValue(existingValue, elem.getAttribute("supportedClientRuntimes"));
+    	  
+    	  if (newValue != null)
+    		  supportedClientRuntimes.put(id, newValue);
+      }
+    }
+    
+    // merge any supportedClientRuntimes attributes from the slave elements back to the master elements
+    
+    Iterator iter = nameExtensionTable_.values().iterator();
+    
+    while (iter.hasNext()) {
+    	WebServiceTestExtension webServiceTestExtension = (WebServiceTestExtension) iter.next();
+    
+    	// skip if the extension does not allow restriction on the supported client runtimes
+    	if (webServiceTestExtension.allowClientRuntimesRestriction()) {
+    		String id = webServiceTestExtension.getId();
+    		webServiceTestExtension.addRuntimes((String) supportedClientRuntimes.get(id));
+    	}
+    }    
+  }
+  
+  /**
   * Children registries will have different extension types 
   * @return WebserviceExtension holds a config elem
   * for that extension capable of creating an executable file
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/plugin/WebServicePlugin.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/plugin/WebServicePlugin.java
index 6ebdb3e..b520d13 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/plugin/WebServicePlugin.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/plugin/WebServicePlugin.java
@@ -1,18 +1,19 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060424   115690 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 
 package org.eclipse.jst.ws.internal.plugin;
 
-import java.text.MessageFormat;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.jst.ws.internal.context.PersistentScenarioContext;
 import org.eclipse.jst.ws.internal.context.PersistentUDDIPreferenceContext;
@@ -92,28 +93,5 @@
       uddiPreferenceContext = new PersistentUDDIPreferenceContext();
     return uddiPreferenceContext;
   }
-    
-  /**
-  * Returns the message string identified by the given key from
-  * plugin.properties.
-  * @return The String message.
-  */
-  public static String getMessage ( String key )
-  {
-    return Platform.getResourceString(instance_.getBundle(),key);
-  }
 
-  /**
-  * Returns the message string identified by the given key from
-  * plugin.properties. Substitution sequences in the message string
-  * are replaced by the given array of substitution objects (which
-  * are most frequently strings). See the JDK's
-  * {@link java.text.MessageFormat java.text.MessageFormat}
-  * class for further details on substitution.
-  * @return The String message.
-  */
-  public static String getMessage ( String key, Object[] args )
-  {
-    return MessageFormat.format(getMessage(key),args);
-  }
 }
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/wsrt/WebServiceJavaClientInfo.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/wsrt/WebServiceJavaClientInfo.java
new file mode 100644
index 0000000..919002b
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/wsrt/WebServiceJavaClientInfo.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060620   147864 cbrealey@ca.ibm.com - Chris Brealey
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.wsrt;
+
+import org.eclipse.jdt.core.IType;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceClientInfo;
+
+/**
+ * This subclass of WebServiceClientInfo adds properties
+ * relevant to descriptors of Java Web service clients.
+ */
+public class WebServiceJavaClientInfo extends WebServiceClientInfo
+{
+	private IType jdtType_;
+	
+	/**
+	 * Returns the JDT IType of the primary Java proxy class
+	 * of a Web service client, or null if no such class has
+	 * been located.
+	 * @return The JDT IType of the Java client proxy class.
+	 */
+	public IType getType ()
+	{
+		return jdtType_;
+	}
+	
+	/**
+	 * Sets the JDT IType of the primary Java proxy class
+	 * of a Web service client.
+	 * @param jdtType The JDT IType of the Java client proxy class.
+	 */
+	public void setType ( IType jdtType )
+	{
+		jdtType_ = jdtType;
+	}
+}
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/wsrt/WebServiceJavaInfo.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/wsrt/WebServiceJavaInfo.java
new file mode 100644
index 0000000..66d9ec9
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/wsrt/WebServiceJavaInfo.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060620   147864 cbrealey@ca.ibm.com - Chris Brealey
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.internal.wsrt;
+
+import org.eclipse.jdt.core.IType;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
+
+/**
+ * This subclass of WebServiceInfo adds properties
+ * relevant to descriptors of Java Web services.
+ */
+public class WebServiceJavaInfo extends WebServiceInfo
+{
+	private IType jdtType_;
+	
+	/**
+	 * Returns the JDT IType of the primary Java implementation
+	 * class of a Web service, or null if no such class has
+	 * been located.
+	 * @return The JDT IType of the Java implementation class.
+	 */
+	public IType getType ()
+	{
+		return jdtType_;
+	}
+	
+	/**
+	 * Sets the JDT IType of the primary Java implementation
+	 * class of a Web service.
+	 * @param jdtType The JDT IType of the Java implementation class.
+	 */
+	public void setType ( IType jdtType )
+	{
+		jdtType_ = jdtType;
+	}
+}
diff --git a/bundles/org.eclipse.wst.command.env.core/.cvsignore b/bundles/org.eclipse.wst.command.env.core/.cvsignore
index b46ce70..8b68b05 100644
--- a/bundles/org.eclipse.wst.command.env.core/.cvsignore
+++ b/bundles/org.eclipse.wst.command.env.core/.cvsignore
@@ -5,3 +5,4 @@
 envcore.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.command.env.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.command.env.core/META-INF/MANIFEST.MF
index a84045b..90a979d 100644
--- a/bundles/org.eclipse.wst.command.env.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.command.env.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.command.env.core
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.102.qualifier
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.command.internal.env.core;x-internal:=true,
@@ -13,7 +13,7 @@
  org.eclipse.wst.command.internal.env.core.registry;x-internal:=true,
  org.eclipse.wst.command.internal.env.core.selection;x-internal:=true,
  org.eclipse.wst.command.internal.env.core.uri;x-internal:=true
-Require-Bundle: org.eclipse.wst.common.frameworks,
- org.eclipse.core.commands,
- org.eclipse.core.runtime,
- org.eclipse.wst.common.environment
+Require-Bundle: org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.core.commands;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)"
diff --git a/bundles/org.eclipse.wst.command.env.core/about.html b/bundles/org.eclipse.wst.command.env.core/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.command.env.core/about.html
+++ b/bundles/org.eclipse.wst.command.env.core/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.command.env.core/src/org/eclipse/wst/command/internal/env/core/fragment/CommandFragmentEngine.java b/bundles/org.eclipse.wst.command.env.core/src/org/eclipse/wst/command/internal/env/core/fragment/CommandFragmentEngine.java
index 0faeffc..12488aa 100644
--- a/bundles/org.eclipse.wst.command.env.core/src/org/eclipse/wst/command/internal/env/core/fragment/CommandFragmentEngine.java
+++ b/bundles/org.eclipse.wst.command.env.core/src/org/eclipse/wst/command/internal/env/core/fragment/CommandFragmentEngine.java
@@ -11,6 +11,7 @@
  * -------- -------- -----------------------------------------------------------
  * 20060223   129232 pmoogk@ca.ibm.com - Peter Moogk
  * 20060313   130958 pmoogk@ca.ibm.com - Peter Moogk
+ * 20061011   159283 makandre@ca.ibm.com - Andrew Mak, project not associated to EAR when using ant on command-line
  *******************************************************************************/
 package org.eclipse.wst.command.internal.env.core.fragment;
 
@@ -401,10 +402,10 @@
   	    
   	  if( cmd != null )
   	  {
-  	    dataManager_.process( cmd );
-  	  	  
   	    try
   	    {
+  	      dataManager_.process( cmd );  	    	
+  	    	
           status = initBeforeExecute( cmd );
           
   	      environment_.getLog().log(ILog.INFO, "command", 5001, this, "runCommand", "Executing: " + cmd.getClass().getName());
diff --git a/bundles/org.eclipse.wst.command.env.ui/.cvsignore b/bundles/org.eclipse.wst.command.env.ui/.cvsignore
index 156443a..c28c7a7 100644
--- a/bundles/org.eclipse.wst.command.env.ui/.cvsignore
+++ b/bundles/org.eclipse.wst.command.env.ui/.cvsignore
@@ -5,3 +5,4 @@
 envui.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.command.env.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.command.env.ui/META-INF/MANIFEST.MF
index 27d61c5..1645b8d 100644
--- a/bundles/org.eclipse.wst.command.env.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.command.env.ui/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.command.env.ui; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.102.qualifier
 Bundle-Activator: org.eclipse.wst.command.internal.env.ui.plugin.EnvUIPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.command.internal.env.ui;x-internal:=true,
+ org.eclipse.wst.command.internal.env.ui.common;x-internal:=true,
  org.eclipse.wst.command.internal.env.ui.dialog;x-internal:=true,
  org.eclipse.wst.command.internal.env.ui.eclipse;x-internal:=true,
  org.eclipse.wst.command.internal.env.ui.plugin;x-internal:=true,
@@ -14,13 +15,13 @@
  org.eclipse.wst.command.internal.env.ui.registry;x-internal:=true,
  org.eclipse.wst.command.internal.env.ui.widgets;x-internal:=true,
  org.eclipse.wst.command.internal.env.ui.widgets.popup;x-internal:=true
-Require-Bundle: org.eclipse.wst.command.env.core,
- org.eclipse.wst.command.env,
- org.eclipse.core.runtime,
- org.eclipse.ui,
- org.eclipse.osgi,
- org.eclipse.wst.common.frameworks,
- org.eclipse.wst.common.environment,
- org.eclipse.core.resources,
- org.eclipse.ui.ide
+Require-Bundle: org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.osgi;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.command.env.ui/about.html b/bundles/org.eclipse.wst.command.env.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.command.env.ui/about.html
+++ b/bundles/org.eclipse.wst.command.env.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.command.env.ui/icons/full/wizban/newantfiles_wiz.gif b/bundles/org.eclipse.wst.command.env.ui/icons/full/wizban/newantfiles_wiz.gif
deleted file mode 100644
index bc3553c..0000000
--- a/bundles/org.eclipse.wst.command.env.ui/icons/full/wizban/newantfiles_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.wst.command.env.ui/icons/full/wizban/newantfiles_wiz.png b/bundles/org.eclipse.wst.command.env.ui/icons/full/wizban/newantfiles_wiz.png
new file mode 100644
index 0000000..9623c4f
--- /dev/null
+++ b/bundles/org.eclipse.wst.command.env.ui/icons/full/wizban/newantfiles_wiz.png
Binary files differ
diff --git a/bundles/org.eclipse.wst.command.env.ui/icons/full/wizban/webservices_wiz.gif b/bundles/org.eclipse.wst.command.env.ui/icons/full/wizban/webservices_wiz.gif
deleted file mode 100644
index abd1f9c..0000000
--- a/bundles/org.eclipse.wst.command.env.ui/icons/full/wizban/webservices_wiz.gif
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/EnvironmentUI.properties b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/EnvironmentUI.properties
index 0c74610..4c0ebd8 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/EnvironmentUI.properties
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/EnvironmentUI.properties
@@ -1,12 +1,15 @@
 ###############################################################################
-# Copyright (c) 2001, 2004 IBM Corporation and others.
+# Copyright (c) 2001, 2006 IBM 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:
-#     IBM Corporation - initial API and implementation
+# IBM Corporation - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20060509   119296 pmoogk@ca.ibm.com - Peter Moogk
 ###############################################################################
 
 BUTTON_SHOW_ALL_DIALOGS=&Show All
@@ -27,3 +30,4 @@
 DIALOG_TITLE_OVERWRITE=Confirm Overwrite
 
 MSG_ERROR_WIZARD_ID_NOT_FOUND=IWAB0013E Could not find wizard id: {0}
+MSG_ERROR_OPERATION_TIMED_OUT=Operation timed out.
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/EnvironmentUIMessages.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/EnvironmentUIMessages.java
index a332a5f..8931d84 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/EnvironmentUIMessages.java
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/EnvironmentUIMessages.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060509   119296 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 package org.eclipse.wst.command.internal.env.ui;
 
@@ -35,8 +38,9 @@
 	public static String MSG_ERR_COPYING_ANT_FILES;
 	public static String MSG_WARNING_FILE_EXISTS;
 	public static String DIALOG_TITLE_OVERWRITE;
+  public static String MSG_ERROR_OPERATION_TIMED_OUT;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, EnvironmentUIMessages.class);
 	}
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/common/TimedOperation.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/common/TimedOperation.java
new file mode 100644
index 0000000..8012dcb
--- /dev/null
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/common/TimedOperation.java
@@ -0,0 +1,179 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060504   119296 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060822   154750 pmoogk@ca.ibm.com - Peter Moogk
+ *******************************************************************************/
+package org.eclipse.wst.command.internal.env.ui.common;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.AbstractOperation;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.commands.operations.IUndoableOperation;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.command.internal.env.ui.EnvironmentUIMessages;
+
+public class TimedOperation implements IUndoableOperation
+{
+  private AbstractOperation operation;
+  private int               timeout;
+  private IProgressMonitor  tempMonitor;
+  private IAdaptable        tempInfo;
+  private IStatus           returnStatus;
+  private boolean           operationComplete;
+  private String            timeOutMessage;
+  
+  public TimedOperation( AbstractOperation operation, int timeout, String timeOutMessage )
+  {
+    this.operation      = operation;
+    this.timeout        = timeout;
+    this.timeOutMessage = timeOutMessage;
+  }
+
+  public IStatus execute(IProgressMonitor monitor, IAdaptable info) 
+  {
+    Thread  executeThread = new Thread( new OperationRunnable() );
+    
+    returnStatus      = Status.OK_STATUS;
+    tempMonitor       = monitor;
+    tempInfo          = info;
+    operationComplete = false;
+    executeThread.start();
+    
+    synchronized( operation )
+    {
+      while( !operationComplete )
+      {
+        try
+        {
+          operation.wait(timeout);
+        }
+        catch( InterruptedException exc )
+        {
+          String message     = exc.getMessage();
+          Status errorStatus = new Status( IStatus.ERROR,"id", 0, message == null ? "" : message, exc );
+          executeThread.interrupt();
+          return errorStatus;
+        }
+        
+        if( !operationComplete )
+        {
+          // We timed out, since the execution thread hasn't set operationComplete 
+          // to true.
+          Status  errorStatus = new Status( IStatus.ERROR,"id", 0, EnvironmentUIMessages.MSG_ERROR_OPERATION_TIMED_OUT, null);
+          Shell   shell       = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+          boolean waitMore    = MessageDialog.openConfirm(shell, EnvironmentUIMessages.MSG_ERROR_OPERATION_TIMED_OUT, timeOutMessage );
+          
+          if( !waitMore )
+          {
+            executeThread.interrupt();
+            operationComplete = true;
+            return errorStatus;
+          }
+        }
+      }
+    }
+    
+    // We completed successfully.  Therefore return the status set in the forked
+    // thread.
+    return returnStatus;
+  }
+
+  private class OperationRunnable implements Runnable
+  {
+    public void run()
+    {
+      try
+      {
+        returnStatus = operation.execute(tempMonitor, tempInfo);
+      }
+      catch( Throwable exc )
+      {
+        String message = exc.getMessage();
+        
+        returnStatus = new Status( IStatus.ERROR,"id", 0, message == null ? "" : message, exc );
+      }
+      finally
+      {
+        synchronized( operation )
+        {
+          operationComplete = true;
+          operation.notify();
+        }        
+      }
+    }
+  }
+  
+  public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
+  {
+    return operation.redo(monitor, info);
+  }
+
+  public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
+  {
+    return operation.undo(monitor, info);
+  }
+  public IUndoContext[] getContexts()
+  {
+    return operation.getContexts();
+  }
+
+  public boolean hasContext(IUndoContext context)
+  {
+    return operation.hasContext(context);
+  }
+
+  public void addContext(IUndoContext context)
+  {
+    operation.addContext(context);
+  }
+
+  public boolean canExecute()
+  {
+    return operation.canExecute();
+  }
+
+  public boolean canRedo()
+  {
+    return operation.canRedo();
+  }
+
+  public boolean canUndo()
+  {
+    return operation.canUndo();
+  }
+
+  public void dispose()
+  {
+    operation.dispose();
+  }
+
+  public String getLabel()
+  {
+    return operation.getLabel();
+  }
+
+  public void removeContext(IUndoContext context)
+  {
+    operation.removeContext(context);
+  }
+
+  public void setLabel(String name)
+  {
+    operation.setLabel(name);
+  }
+}
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/dialog/AntFileImportWizard.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/dialog/AntFileImportWizard.java
index c23d71f..1c3d155 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/dialog/AntFileImportWizard.java
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/dialog/AntFileImportWizard.java
@@ -198,7 +198,7 @@
      * </p>
      */
     protected void initializeDefaultPageImageDescriptor() {
-    	ImageDescriptor desc = EnvUIPlugin.getImageDescriptor("icons/full/wizban/newantfiles_wiz.gif");//$NON-NLS-1$
+    	ImageDescriptor desc = EnvUIPlugin.getImageDescriptor("icons/full/wizban/newantfiles_wiz.png");//$NON-NLS-1$
         setDefaultPageImageDescriptor(desc);
     }
 
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/dialog/MessageDialog.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/dialog/MessageDialog.java
index f75cc47..ddaf723 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/dialog/MessageDialog.java
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/dialog/MessageDialog.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060504   128984 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 package org.eclipse.wst.command.internal.env.ui.dialog;
 
@@ -208,8 +211,8 @@
     GridLayout gl = new GridLayout();
     gl.numColumns = 2;
     imageAndLabel.setLayout(gl);
-    imageAndLabel.setLayoutData( new GridData( GridData.FILL_BOTH ) );
-    composite.setLayoutData( new GridData( GridData.FILL_BOTH ));
+    imageAndLabel.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
+    composite.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ));
     
     // create image
     Image image = getDialogImage();
@@ -267,9 +270,9 @@
   }
   protected Text createDropDownDetails(Composite parent)
   {
-    details = new Text(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
+    details = new Text(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY | SWT.WRAP );
     //details.setEditable(false);
-    Color color = new Color(parent.getShell().getDisplay(), 255, 255, 255);
+    Color color = parent.getShell().getDisplay().getSystemColor( SWT.COLOR_WHITE );
     details.setBackground(color);
     populateDetails(details, status, 0);
     GridData data =
@@ -278,6 +281,7 @@
           | GridData.GRAB_HORIZONTAL
           | GridData.VERTICAL_ALIGN_FILL
           | GridData.GRAB_VERTICAL);
+    
     details.setLayoutData(data);
     details.setSelection(0);
     detailsCreated = true;
@@ -570,11 +574,12 @@
       details = createDropDownDetails((Composite) getContents());
       detailsButton.setText(IDialogConstants.HIDE_DETAILS_LABEL);
       newHeight = getContents().computeSize(SWT.DEFAULT, SWT.DEFAULT).y;
+      newHeight = newHeight < 250 ? 250 : newHeight;
     }
 
-
     newHeight = newHeight > 400 ? 400 : newHeight;
     
     getShell().setSize( new Point(windowSize.x, newHeight) );
+    parent.layout();
   }
 }
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/preferences/ActionDialogsPreferencePage.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/preferences/ActionDialogsPreferencePage.java
index ed422d3..55e4a79 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/preferences/ActionDialogsPreferencePage.java
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/preferences/ActionDialogsPreferencePage.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060726   151866 makandre@ca.ibm.com - Andrew Mak, Popup Dialog Selection preferences defaults incorrectly to hide all
  *******************************************************************************/
 package org.eclipse.wst.command.internal.env.ui.preferences;
 
@@ -201,11 +204,13 @@
    */
   private void initializeDefaults()
   {
-    Enumeration e = checkBoxes_.elements();
+    PersistentActionDialogsContext context = PersistentActionDialogsContext.getInstance();  
+    Enumeration e = checkBoxes_.keys();
     for (int i=0; e.hasMoreElements(); i++)
     {
-      Button dialog = (Button) e.nextElement();
-      dialog.setSelection(true);
+      String id = (String) e.nextElement();            	
+      Button dialog = (Button) checkBoxes_.get(id);
+      dialog.setSelection(context.getDefaultBoolean(id));
     }
   }
 
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/DynamicWizard.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/DynamicWizard.java
index 77772e5..b6471a9 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/DynamicWizard.java
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/DynamicWizard.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060223   129232 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060822   154750 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 package org.eclipse.wst.command.internal.env.ui.widgets;
 
@@ -380,7 +381,6 @@
 	  canFinishRegistry_    = null; 
 	  pageManager_          = null;
 	  wizardTitle_          = null;
-	  dataObjectCommand_    = null;
 	  commandWidgetBinding_ = null;
 	  WidgetRegistry.initialize();
   }
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleDialog.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleDialog.java
index 28aabdb..f1a55c7 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleDialog.java
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleDialog.java
@@ -18,19 +18,11 @@
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Text;
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimplePopupWizardPage.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimplePopupWizardPage.java
index d79c2ac..662e607 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimplePopupWizardPage.java
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimplePopupWizardPage.java
@@ -1,20 +1,21 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060731   120378 makandre@ca.ibm.com - Andrew Mak, Fields not visible in Large font settings
  *******************************************************************************/
 package org.eclipse.wst.command.internal.env.ui.widgets;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.PlatformUI;
@@ -34,21 +35,12 @@
   	id_ = id;
   } 	  
   	
-  public void createControl( Composite parent ) 
-  {
-  	      Composite                      composite = new Composite( parent, SWT.NONE );
+  protected Composite internalCreateControl( Composite parent ) 
+  {  	
+	Composite composite = super.internalCreateControl(parent);
+	  
   	final PersistentActionDialogsContext context   = PersistentActionDialogsContext.getInstance();
   	
-    GridLayout gridlayout   = new GridLayout();
-    gridlayout.marginHeight = 0;
-    gridlayout.marginWidth  = 0;
-    
-    composite.setLayout( gridlayout );
-    GridData griddata = new GridData(GridData.FILL_BOTH );
-    composite.setLayoutData( griddata );
-      	
-  	super.createControl( composite );
-  	
   	// If the current page is null then this must be the first page.
   	if( pageManager_.getCurrentPage() == null && context.showCheckbox(id_) )
   	{
@@ -73,6 +65,6 @@
       PlatformUI.getWorkbench().getHelpSystem().setHelp( button, infopop );  	
   	}
   	
-  	setControl( composite );
+  	return composite;
   }  
 }  
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleWizardPage.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleWizardPage.java
index 4d2bb59..2625964 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleWizardPage.java
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleWizardPage.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060731   120378 makandre@ca.ibm.com - Andrew Mak, Fields not visible in Large font settings
  *******************************************************************************/
 package org.eclipse.wst.command.internal.env.ui.widgets;
 
@@ -14,6 +17,7 @@
 import org.eclipse.jface.wizard.IWizardPage;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
@@ -42,16 +46,29 @@
   } 	  
   	
   public void createControl( Composite parent ) 
-  {
-  	Composite control = new Composite( parent, SWT.NONE );
-  	control.setLayout( new GridLayout() );
-  	control.setLayoutData( new GridData( GridData.FILL_BOTH ));
-  	
-	dataEvents_ = widget_.addControls( control, statusListener_ );
-	  
+  {	  
+	ScrolledComposite control = new ScrolledComposite( parent, SWT.V_SCROLL );	
+	Composite inner = internalCreateControl(control);
+	
+	control.setExpandHorizontal(true);
+  	control.setExpandVertical(true);
+	control.setContent(inner);  	
+    control.setMinSize(inner.computeSize(SWT.DEFAULT, SWT.DEFAULT));	
+	
     org.eclipse.jface.dialogs.Dialog.applyDialogFont(control);
     setControl( control );
   }
+	
+  protected Composite internalCreateControl( Composite parent ) {
+
+	Composite control = new Composite( parent, SWT.NONE );
+	control.setLayout( new GridLayout() );
+  	control.setLayoutData( new GridData( GridData.FILL_BOTH ));
+	
+	dataEvents_ = widget_.addControls( control, statusListener_ );	
+	
+	return control;
+  }
   
   public WidgetDataEvents getDataEvents()
   {
diff --git a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/popup/DynamicPopupWizard.java b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/popup/DynamicPopupWizard.java
index b9c6d2d..0a1748b 100644
--- a/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/popup/DynamicPopupWizard.java
+++ b/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/popup/DynamicPopupWizard.java
@@ -11,6 +11,7 @@
  * -------- -------- -----------------------------------------------------------
  * 20060223   129232 pmoogk@ca.ibm.com - Peter Moogk
  * 20060417   136596 joan@ca.ibm.com - Joan Haggarty
+ * 20060731   120378 makandre@ca.ibm.com - Andrew Mak, Fields not visible in Large font settings
  *******************************************************************************/
 package org.eclipse.wst.command.internal.env.ui.widgets.popup;
 
@@ -122,7 +123,6 @@
 	  init( PlatformUI.getWorkbench(), getSelection() );  
 	    
 	  WizardDialog dialog= new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), this);
-	  dialog.setPageSize( 400, 530 );
 	  dialog.create();
     
     if( getStartingPage() != null )
diff --git a/bundles/org.eclipse.wst.command.env/.classpath b/bundles/org.eclipse.wst.command.env/.classpath
index 70d4ebc..f23913f 100644
--- a/bundles/org.eclipse.wst.command.env/.classpath
+++ b/bundles/org.eclipse.wst.command.env/.classpath
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="ant-src"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="ant-src"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/bundles/org.eclipse.wst.command.env/.cvsignore b/bundles/org.eclipse.wst.command.env/.cvsignore
index 7be5ad2..5a9183a 100644
--- a/bundles/org.eclipse.wst.command.env/.cvsignore
+++ b/bundles/org.eclipse.wst.command.env/.cvsignore
@@ -6,3 +6,5 @@
 @dot
 src.zip
 envsrc.zip
+javaCompiler.env.jar.args
+javaCompiler.ant-lib_anttasks.jar.args
diff --git a/bundles/org.eclipse.wst.command.env/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.wst.command.env/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..de2f205
--- /dev/null
+++ b/bundles/org.eclipse.wst.command.env/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Sun May 07 23:14:57 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/bundles/org.eclipse.wst.command.env/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.command.env/META-INF/MANIFEST.MF
index 186ca56..922d04e 100644
--- a/bundles/org.eclipse.wst.command.env/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.command.env/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.command.env; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.103.qualifier
 Bundle-Activator: org.eclipse.wst.command.internal.env.plugin.EnvPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -15,12 +15,12 @@
  org.eclipse.wst.command.internal.env.eclipse;x-internal:=true,
  org.eclipse.wst.command.internal.env.plugin;x-internal:=true,
  org.eclipse.wst.command.internal.env.preferences;x-internal:=true
-Require-Bundle: org.eclipse.wst.command.env.core,
- org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.wst.common.frameworks,
- org.eclipse.core.commands,
- org.eclipse.wst.common.environment,
- org.apache.ant,
- org.eclipse.ant.core
+Require-Bundle: org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.core.commands;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.apache.ant;bundle-version="[1.6.5,1.7.0)",
+ org.eclipse.ant.core;bundle-version="[3.1.100,3.2.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.command.env/about.html b/bundles/org.eclipse.wst.command.env/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.command.env/about.html
+++ b/bundles/org.eclipse.wst.command.env/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.command.env/ant/axisclient.properties b/bundles/org.eclipse.wst.command.env/ant/axisclient.properties
index d8b7756..5692fed 100644
--- a/bundles/org.eclipse.wst.command.env/ant/axisclient.properties
+++ b/bundles/org.eclipse.wst.command.env/ant/axisclient.properties
@@ -21,11 +21,11 @@
 !-- different name than the project containing the initial selection
 !--ClientProjectName=clientProjectName
 
-!--ClientComponentType- name of Client EAR project - set only if applicable for selected server type
+!--ClientEarProjectName- name of Client EAR project - set only if applicable for selected server type
 !--ClientEarProjectName=clientEARProjectName
 
-!--ClientComponentType - type of Client project - must be one of: jst.web, jst.java - only jst.web is valid for Axis
-!--ClientComponentType=jst.web
+!--ClientComponentType - type of Client project - the following are valid Axis templates: template.jst.web and template.jst.utility
+!--ClientComponentType=template.jst.web
 
 !-- CustomizeClientMappings - set to true to supply package-namespace mappings type: boolean
 !--CustomizeClientMappings=false  
diff --git a/bundles/org.eclipse.wst.command.env/ant/axisservice.properties b/bundles/org.eclipse.wst.command.env/ant/axisservice.properties
index c1a6ee8..3df6484 100644
--- a/bundles/org.eclipse.wst.command.env/ant/axisservice.properties
+++ b/bundles/org.eclipse.wst.command.env/ant/axisservice.properties
@@ -21,7 +21,7 @@
 
 !-- ServiceProjectName - !--type:String - name of Service project - this property can be used to give the service project a different name than the project containing the initial selection.  type: String    
 !--ServiceProjectName=serviceProjectName
-!-- ServiceProjectName - !--type:String - name of Service project - this property can be used to give the service project a different name than the project containing the initial selection.  type: String
+!-- ServiceEarProjectName - !--type:String - name of Service project - this property can be used to give the service EAR project a different name than the project containing the initial selection.  type: String
 !--ServiceEarProjectName=serviceEarProjectName
 
 !-- Mappings
diff --git a/bundles/org.eclipse.wst.command.env/build-anttasks.xml b/bundles/org.eclipse.wst.command.env/build-anttasks.xml
index 42458bc..5e1ed88 100644
--- a/bundles/org.eclipse.wst.command.env/build-anttasks.xml
+++ b/bundles/org.eclipse.wst.command.env/build-anttasks.xml
@@ -18,7 +18,7 @@
 		<available file="${motif.jar}" property="swt.jar" value="${motif.jar}"/>
 		<available file="${osx.jar}" property="swt.jar" value="${osx.jar}"/>
 	</target>
-
+	
 	<target name="properties" if="eclipse.running">
 		<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
 	</target>
@@ -44,4 +44,9 @@
 			<delete file="${build.result.folder}/ant-lib/anttasks.jar"/>
 			<delete dir="${temp.folder}"/>
 		</target>
+	
+	<target name="refresh">
+	<eclipse.LocalRefresh resource="org.eclipse.wst.command.env" depth="infinite"/>
+	</target>
+	
 	</project>
diff --git a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntController.java b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntController.java
index 914c295..87c72f3 100644
--- a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntController.java
+++ b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntController.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060726   151614 pmoogk@ca.ibm.com - Peter Moogk
+ * 20061011   159283 makandre@ca.ibm.com - Andrew Mak, project not associated to EAR when using ant on command-line
  *******************************************************************************/
 
 package org.eclipse.wst.command.internal.env.ant;
@@ -19,6 +23,7 @@
 import org.eclipse.wst.command.internal.env.EnvironmentMessages;
 import org.eclipse.wst.command.internal.env.context.PersistentResourceContext;
 import org.eclipse.wst.command.internal.env.core.CommandManager;
+import org.eclipse.wst.command.internal.env.core.context.TransientResourceContext;
 import org.eclipse.wst.command.internal.env.core.data.DataFlowManager;
 import org.eclipse.wst.command.internal.env.core.data.DataMappingRegistryImpl;
 import org.eclipse.wst.command.internal.env.core.fragment.CommandFragment;
@@ -43,9 +48,9 @@
 	   // construct the environment - passing in the property table	   
 	   // --maintains link to property table plus any other environment properties
 	   // --code to access extension point mappings for operations to retrieve data from property table
-	   PersistentResourceContext  resourceContext = PersistentResourceContext.getInstance();
-	   AntStatusHandler handler         = new AntStatusHandler();
-	   AntEnvironment environment = new AntEnvironment(this, resourceContext, handler, properties);
+	   TransientResourceContext  resourceContext = (TransientResourceContext)PersistentResourceContext.getInstance().copy();
+	   AntStatusHandler          handler         = new AntStatusHandler();
+	   AntEnvironment            environment     = new AntEnvironment(this, resourceContext, handler, properties);
        
 	   // construct data manager for maintaining state across operations
 	   DataFlowManager dataManager = new DataFlowManager( new DataMappingRegistryImpl(), environment);
@@ -71,6 +76,9 @@
 	      
 	   //ready to start running operations
  	   ((AntOperationManager)getOperationManager()).moveForwardToNextStop(new NullProgressMonitor());
+
+ 	   if (!operationManager_.getLastStatus().isOK()) 		   
+ 		   operationManager_.undoToLastStop();
    }
    
    private void createOperationManager(CommandFragment frag, DataFlowManager mgr, AntEnvironment env)
diff --git a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java
index 6cbb5c7..b0c7666 100644
--- a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java
+++ b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060523   133714 joan@ca.ibm.com - Joan Haggarty
+ * 20060726   151614 pmoogk@ca.ibm.com - Peter Moogk
  *******************************************************************************/
 package org.eclipse.wst.command.internal.env.ant;
 
@@ -28,7 +32,7 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.wst.command.internal.env.EnvironmentMessages;
 import org.eclipse.wst.command.internal.env.core.CommandManager;
-import org.eclipse.wst.command.internal.env.core.context.ResourceContext;
+import org.eclipse.wst.command.internal.env.core.context.TransientResourceContext;
 import org.eclipse.wst.command.internal.env.core.data.BeanModifier;
 import org.eclipse.wst.command.internal.env.core.data.ClassEntry;
 import org.eclipse.wst.command.internal.env.core.data.Transformer;
@@ -73,28 +77,51 @@
 
 	// Ant property IDs
 	private static final String VERBOSE_PROPERTY = "Verbose"; //$NON-NLS-1$
+	private static final String OVERWRITE_PROPERTY = "OverwriteFilesEnabled"; //$NON-NLS-1$
+	private static final String CREATEFOLDER_PROPERTY = "CreateFoldersEnabled"; //$NON-NLS-1$
+	private static final String CHECKOUT_PROPERTY = "CheckoutFilesEnabled"; //$NON-NLS-1$
 	private static final String SCENARIO_TYPE_PROPERTY = "ScenarioType"; //$NON-NLS-1$
 	
     private AntController controller_;
 	
-	public AntEnvironment(AntController controller, ResourceContext context, IStatusHandler handler, Hashtable properties)
+	public AntEnvironment(AntController controller, TransientResourceContext context, IStatusHandler handler, Hashtable properties)
 	{
 	   super(controller.getOperationManager(), context, handler);
 	   antProperties_ = properties;	
-	   controller_ = controller;	   
+	   controller_ = controller;	
+	   setContext( context );
 	}
 	
+	private void setContext(TransientResourceContext context) 
+	{
+	  Boolean overwriteSet    = getBooleanProperty( OVERWRITE_PROPERTY );
+	  Boolean createfolderSet = getBooleanProperty( CREATEFOLDER_PROPERTY );
+	  Boolean checkoutSet     = getBooleanProperty( CHECKOUT_PROPERTY );
+	  
+	  if( overwriteSet != null ) context.setOverwriteFilesEnabled( overwriteSet.booleanValue() );
+	  if( createfolderSet != null ) context.setCreateFoldersEnabled( createfolderSet.booleanValue() );
+	  if( checkoutSet != null ) context.setCheckoutFilesEnabled( checkoutSet.booleanValue() );
+	}
+
 	public boolean verbose()
 	{
-	  String verbose=getProperty(VERBOSE_PROPERTY);		
+	  Boolean result = getBooleanProperty( VERBOSE_PROPERTY );
 	  
-	  if (verbose != null)
+	  return result == null ? false : result.booleanValue();
+	}
+	
+	public Boolean getBooleanProperty( String property )
+	{
+	  String  value  = getProperty( property );	
+	  Boolean result = null;
+		  
+	  if( value != null )
 	  {
-		  verbose = verbose.toLowerCase();
-		  if (verbose.equals("true"))
-			  return true;
-	  }		  
-	  return false;
+		value = value.toLowerCase();
+		result = new Boolean( value.equals( "true") );
+	  }
+	  
+	  return result;
 	}
 	
 	// returns String since the property table built by Ant is property value pairs where the value is a String
@@ -223,7 +250,10 @@
 					 Object transform = null;
 					 try
 					 {
-						 transform = ce.createExecutableExtension(MAPPER_TRANSFORM_ATTRIBUTE);	 
+						 //check to make sure there is an transform attribute provided
+						 //  if so, get the class to do the transformation
+						 if (ce.getAttribute(MAPPER_TRANSFORM_ATTRIBUTE)!= null)
+							 transform = ce.createExecutableExtension(MAPPER_TRANSFORM_ATTRIBUTE);	 
 					 }
 					 catch (CoreException cex) {
 					   Status errorStatus = new Status(Status.ERROR, "ws_ant", 5092, cex.getMessage(), cex);
diff --git a/bundles/org.eclipse.wst.ws.explorer/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.ws.explorer/META-INF/MANIFEST.MF
index 866c2df..ce761f4 100644
--- a/bundles/org.eclipse.wst.ws.explorer/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.ws.explorer/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.ws.explorer; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.104.qualifier
 Bundle-ClassPath: explorer.jar,
  wsexplorer-properties.jar
 Bundle-Activator: org.eclipse.wst.ws.internal.explorer.plugin.ExplorerPlugin
@@ -12,26 +12,26 @@
  org.eclipse.wst.ws.internal.explorer.favorites;x-internal:=true,
  org.eclipse.wst.ws.internal.explorer.plugin;x-internal:=true,
  org.eclipse.wst.ws.internal.explorer.popup;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.help.appserver,
- org.eclipse.ui,
- org.eclipse.emf.common,
- org.eclipse.emf.ecore,
- org.eclipse.xsd,
- org.eclipse.wst.command.env,
- org.eclipse.wst.command.env.core,
- org.eclipse.wst.command.env.ui,
- org.eclipse.wst.ws,
- org.eclipse.wst.ws.parser,
- org.eclipse.wst.wsdl,
- org.wsdl4j,
- org.apache.wsil4j,
- org.uddi4j,
- org.apache.axis,
- org.eclipse.wst.common.frameworks,
- org.eclipse.wst.common.frameworks.ui,
- org.eclipse.wst.common.environment,
- org.eclipse.wst.common.uriresolver,
- com.ibm.icu
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.help.appserver;bundle-version="[3.1.100,3.2.0)",
+ org.eclipse.ui;bundle-version="[3.2.0,3.4.0)",
+ org.eclipse.emf.common;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.xsd;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.ws.parser;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.apache.wsil4j;bundle-version="[1.0.0,1.1.0)",
+ org.uddi4j;bundle-version="[2.0.4,2.1.0)",
+ org.apache.axis;bundle-version="[1.3.0,1.4.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.frameworks.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.1.0,1.2.0)",
+ com.ibm.icu;bundle-version="[3.4.4,3.5.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.ws.explorer/about.html b/bundles/org.eclipse.wst.ws.explorer/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.ws.explorer/about.html
+++ b/bundles/org.eclipse.wst.ws.explorer/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.ws.explorer/build-war-pde.xml b/bundles/org.eclipse.wst.ws.explorer/build-war-pde.xml
index 6207d0e..3e08477 100644
--- a/bundles/org.eclipse.wst.ws.explorer/build-war-pde.xml
+++ b/bundles/org.eclipse.wst.ws.explorer/build-war-pde.xml
@@ -63,7 +63,7 @@
 				</fileset>
 			</classpath>
 		</java>
-		<javac destdir="${wsexplorerDir}/WEB-INF/classes" includeAntRuntime="false">
+		<javac debug="true" destdir="${wsexplorerDir}/WEB-INF/classes" includeAntRuntime="false">
 			<src path="${wsexplorerDir}"/>
 			<classpath>
 				<dirset dir="${buildDirectory}">
diff --git a/bundles/org.eclipse.wst.ws.explorer/build-war.xml b/bundles/org.eclipse.wst.ws.explorer/build-war.xml
index 37aba57..78ec8b6 100644
--- a/bundles/org.eclipse.wst.ws.explorer/build-war.xml
+++ b/bundles/org.eclipse.wst.ws.explorer/build-war.xml
@@ -1,10 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project name="org.eclipse.wst.ws.explorer" default="build.wars" basedir=".">
-
+    
+    <!-- the environment variables are important to set here, and 
+    to have JAVA_4_HOME set to some Java 1.4 SDK home, 
+    since we want this compiled with a 1.4 version, but 
+    this overall build itself might be being ran in Java 1.5 -->
+    <property environment="env" />
+    
 	<property name="wsexplorerDir" value="${buildDirectory}/plugins/org.eclipse.wst.ws.explorer/wsexplorer"/>
 
 	<target name="jspcompile" unless="wsexplorer.war" description="Pre-compile the JSPs in the org.eclipse.wst.ws.explorer plugin">
-		<java classname="org.apache.jasper.JspC" fork="true">
+		<java classname="org.apache.jasper.JspC" fork="true" jvm="${env.JAVA_4_HOME}/bin/java">
 			<arg line="-webxml ${wsexplorerDir}/WEB-INF/web.xml -d ${wsexplorerDir} -webapp ${wsexplorerDir}"/>
 			<classpath>
 				<fileset dir="${baseLocation}/plugins">
@@ -15,7 +21,7 @@
 				</fileset>
 			</classpath>
 		</java>
-		<javac destdir="${wsexplorerDir}/WEB-INF/classes" includeAntRuntime="false" failonerror="false">
+		<javac destdir="${wsexplorerDir}/WEB-INF/classes" includeAntRuntime="false" failonerror="false" executable="${env.JAVA_4_HOME}/bin/javac" fork="true">
 			<src path="${wsexplorerDir}"/>
 			<classpath>
 				<fileset dir="${buildDirectory}/plugins">
diff --git a/bundles/org.eclipse.wst.ws.explorer/build.properties b/bundles/org.eclipse.wst.ws.explorer/build.properties
index 1298ade..982a5f0 100644
--- a/bundles/org.eclipse.wst.ws.explorer/build.properties
+++ b/bundles/org.eclipse.wst.ws.explorer/build.properties
@@ -9,7 +9,6 @@
                explorer.jar,\
                plugin.properties,\
                properties/,\
-               webapps/,\
                wsexplorer.war,\
                META-INF/,\
                about.html,\
diff --git a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/WSExplorer.java b/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/WSExplorer.java
index b12fd54..6c60c63 100644
--- a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/WSExplorer.java
+++ b/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/WSExplorer.java
@@ -1,12 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060721   151409 makandre@ca.ibm.com - Andrew Mak, WSE does not open in external browser on RH
+ * 20060802   150428 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20061219   168620 makandre@ca.ibm.com - Andrew Mak, WSE does not open in external browser on Linux
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.explorer;
 
@@ -19,6 +24,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.browser.IWebBrowser;
 import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
@@ -29,6 +35,8 @@
 
 	private static int launchOptionsKey_ = 0;
 
+	private IWebBrowser internalBrowser_ = null;
+	
 	public WSExplorer() {
 	}
 
@@ -108,23 +116,39 @@
 		}
 		// launch Web Services Explorer
 		try {
-			URL url = new URL(sb.toString());
+			IWorkbenchBrowserSupport browserSupport = ExplorerPlugin.getInstance().getWorkbench().getBrowserSupport();
+			IWebBrowser browser = null;
+			
 			if (forceLaunchOutsideIDE) {
-				if (System.getProperty("os.name").toLowerCase().indexOf("win") == -1)
-					Runtime.getRuntime()
-							.exec("mozilla " + url.toExternalForm());
+				browser = browserSupport.getExternalBrowser();
+				
+				// external browser support uses swt Program.findProgram() to locate an appropriate browser for HTML files
+				// certain versions of swt Program class need to be run from the UI thread, otherwise findProgram() does not
+				// work properly (this applies to Linux only).  The code below is to workaround this problem.
+				
+				// Display.getCurrent() will be null if this is not the UI thread
+				if (Display.getCurrent() == null) {
+					
+					// create a runnable to open the browser, run it in the UI thread
+					OpenBrowserRunnable runnable = new OpenBrowserRunnable(browser, new URL(sb.toString()));
+					Display.getDefault().syncExec(runnable);
+					
+					if (runnable.getException() != null)
+						throw runnable.getException();
+				}
 				else
-					Runtime.getRuntime().exec(
-							"cmd /C start iexplore " + url.toExternalForm());
-			} else {
+					browser.openURL(new URL(sb.toString()));
+			}
+			else {
 				// browserId
 				StringBuffer browserId = new StringBuffer();
 				browserId.append(ExplorerPlugin.ID);
 				browserId.append(getContextName());
 				
-				IWorkbenchBrowserSupport browserSupport = ExplorerPlugin.getInstance().getWorkbench().getBrowserSupport();
-				IWebBrowser browser = browserSupport.createBrowser(browserId.toString());
-				browser.openURL(url);
+				if (internalBrowser_==null)
+					internalBrowser_ = browserSupport.createBrowser(browserId.toString());
+				browser = internalBrowser_;
+				browser.openURL(new URL(sb.toString()));
 			}
 		} catch (Exception e) {
 			return new Status(IStatus.ERROR, ExplorerPlugin.ID, 0,
@@ -227,3 +251,32 @@
 		return launch(wb, sel, options, forceLaunchOutsideIDE);
 	}
 }
+
+/**
+ * Helper class for opening a browser and storing the
+ * Exception thrown if it was unsuccessful. 
+ */
+class OpenBrowserRunnable implements Runnable {
+	
+	private IWebBrowser browser;
+	private URL url;
+	private Exception exception = null;
+	
+	public OpenBrowserRunnable(IWebBrowser browser, URL url) {
+		this.browser = browser;
+		this.url = url;
+	}
+	
+	public void run() {
+		try {
+			browser.openURL(url);			
+		}
+		catch (Exception e) {
+			exception = e;
+		}
+	}
+	
+	public Exception getException() {
+		return exception;
+	}
+}
diff --git a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/popup/PopupTestWSDL.java b/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/popup/PopupTestWSDL.java
index 87aed00..9c77001 100644
--- a/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/popup/PopupTestWSDL.java
+++ b/bundles/org.eclipse.wst.ws.explorer/src/org/eclipse/wst/ws/internal/explorer/popup/PopupTestWSDL.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2002, 2004 IBM Corporation and others.
+ * Copyright (c) 2002, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060606   105069 mahutch@ca.ibm.com - Mark Hutchinson
+ * 20060803   152790 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.explorer.popup;
 
@@ -15,6 +19,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Vector;
+
 import org.eclipse.core.resources.IResource;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
@@ -29,6 +34,9 @@
 import org.eclipse.wst.ws.internal.explorer.plugin.ExplorerPlugin;
 import org.eclipse.wst.ws.internal.monitor.GetMonitorCommand;
 import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.internal.impl.ServiceImpl;
+import org.eclipse.wst.wsdl.util.WSDLResourceImpl;
 
 public class PopupTestWSDL extends Action implements IActionDelegate
 {
@@ -37,7 +45,7 @@
     super(ExplorerPlugin.getMessage("%POPUP_TEST_WSDL"));
   }
 
-  private IStructuredSelection getWorkbenchSelection()
+  protected IStructuredSelection getWorkbenchSelection()
   {
     IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
     if (window != null)
@@ -75,41 +83,55 @@
             wsdlURL = wsdlFile.toString();
           }
         }
-        /* TODO: Move this up to org.eclipse.jst.ws.ui.
+       
         if (object instanceof ServiceImpl)
         {
-          ServiceImpl serviceImpl = (ServiceImpl)object;
-          wsdlURL = J2EEActionAdapterFactory.getWSDLURI(serviceImpl);
-        }
-        if (object instanceof ServiceRef)
-        {
-          ServiceRef serviceImpl = (ServiceRef)object;
-          wsdlURL = J2EEActionAdapterFactory.getWSDLURI(serviceImpl);
-        }
+          ServiceImpl serviceImpl = (ServiceImpl)object;          
+          Definition definition = serviceImpl.getEnclosingDefinition();        
+          wsdlURL = definition.getLocation();
+        }        
+
         if (object instanceof WSDLResourceImpl)
         {
           WSDLResourceImpl WSDLRImpl = (WSDLResourceImpl)object;
-          wsdlURL = J2EEActionAdapterFactory.getWSDLURI(WSDLRImpl);
+          Definition definition = WSDLRImpl.getDefinition();
+          wsdlURL = definition.getLocation();
         }
-        */
-        GetMonitorCommand getMonitorCmd = new GetMonitorCommand();
-        getMonitorCmd.setMonitorService(true);
-        getMonitorCmd.setCreate(false);
-        getMonitorCmd.setWebServicesParser(new WebServicesParser());
-        getMonitorCmd.setWsdlURI(wsdlURL);
-        getMonitorCmd.execute(null, null);
-        List endpoints = getMonitorCmd.getEndpoints();
-        for (Iterator endpointsIt = endpoints.iterator(); endpointsIt.hasNext();)
-          launchOptions.add(new LaunchOption(LaunchOptions.WEB_SERVICE_ENDPOINT, (String)endpointsIt.next()));
-        launchOptions.add(new LaunchOption(LaunchOptions.WSDL_URL, wsdlURL));
-		launchOptions.add(new LaunchOption(LaunchOptions.STATE_LOCATION,stateLocation));
-		launchOptions.add(new LaunchOption(LaunchOptions.DEFAULT_FAVORITES_LOCATION,defaultFavoritesLocation));
+        
+       addLaunchOptions(launchOptions, wsdlURL, stateLocation, defaultFavoritesLocation);        
       }
     }
     command.setLaunchOptions((LaunchOption[])launchOptions.toArray(new LaunchOption[0]));
     command.execute();
   }
 
+  /**
+   * Set and add the WEB_SERVICE_ENDPOINT, WSDL_URL, STATE_LOCATIION and 
+   * DEFAULT_FAVORITES_LOCATION LaunchOptions to the launchOptions vector
+   * 
+   * @param launchOptions - vector of launchOptions to add to
+   * @param wsdlURL
+   * @param stateLocation
+   * @param defaultFavoritesLocation
+   */
+  protected void addLaunchOptions(Vector launchOptions, String wsdlURL, String stateLocation, String defaultFavoritesLocation)
+  {
+	  GetMonitorCommand getMonitorCmd = new GetMonitorCommand();
+      getMonitorCmd.setMonitorService(true);
+      getMonitorCmd.setCreate(false);
+      getMonitorCmd.setWebServicesParser(new WebServicesParser());
+      getMonitorCmd.setWsdlURI(wsdlURL);
+      getMonitorCmd.execute(null, null);
+      List endpoints = getMonitorCmd.getEndpoints();
+      for (Iterator endpointsIt = endpoints.iterator(); endpointsIt.hasNext();)
+      {
+    	  launchOptions.add(new LaunchOption(LaunchOptions.WEB_SERVICE_ENDPOINT, (String)endpointsIt.next()));
+      }
+      launchOptions.add(new LaunchOption(LaunchOptions.WSDL_URL, wsdlURL));
+	  launchOptions.add(new LaunchOption(LaunchOptions.STATE_LOCATION,stateLocation));
+	  launchOptions.add(new LaunchOption(LaunchOptions.DEFAULT_FAVORITES_LOCATION,defaultFavoritesLocation));
+  }
+  
   public void run(IAction action)
   {
     run();
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-properties/uddi.properties b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-properties/uddi.properties
index 4c37a11..e47bf85 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-properties/uddi.properties
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-properties/uddi.properties
@@ -24,14 +24,9 @@
 FORM_LABEL_FAVORITE_REGISTRY=Favorite Registry
 FORM_LABEL_REGISTRY_NAME=Registry Name
 FORM_LABEL_INQUIRY_URL=Inquiry URL
-FORM_LABEL_CHECK_USER_DEFINED_CATEGORIES=Check for user-defined categories
 MSG_ERROR_INVALID_REGISTRY_NAME=IWAB0136E Enter a valid registry name.
 MSG_ERROR_INVALID_INQUIRY_URL=IWAB0138E Enter a valid inquiry URL.
 MSG_INFO_REGISTRY_OPENED=IWAB0139I The registry named %1 located at %2 was opened successfully.
-FORM_LABEL_IS_WEBSPHERE_UDDI_REGISTRY=Is WebSphere UDDI registry?
-DEFAULT_REGISTRY_NAME_WEBSPHERE=IBM WebSphere Private UDDI Registry
-FORM_LABEL_REGISTRY_HOST=Host
-FORM_LABEL_REGISTRY_PORT=Port
 
 # User-defined Categories
 FORM_LABEL_ADD_CATEGORY_DATA=<a href="%1">Click here</a> to load this category's data.
@@ -66,6 +61,7 @@
 FORM_CONTROL_TITLE_IDENTIFIER_KEY_NAME=Identifier key name
 FORM_CONTROL_TITLE_IDENTIFIER_KEY_VALUE=Identifier key value
 FORM_CONTROL_TITLE_DISCOVERY_URL=Discovery URL
+FORM_CONTROL_TITLE_INPUT_TEXT_VALUE=UDDI registry name
 
 # Find actions
 ALT_FIND=Find
@@ -306,6 +302,7 @@
 MSG_ERROR_INVALID_UUID_KEY=IWAB0155E Enter a valid UUID key.
 MSG_ERROR_QUERY_NAME_CONFLICT=IWAB0156E The subquery's query name cannot be the same as the originator.
 MSG_ERROR_NO_ITEMS_TO_GET=IWAB0157E No items of the specified type have been published or discovered yet.
+MSG_INFO_NO_BUSINESSES_OR_SERVICE_INTERFACES_FOUND=IWAB0162I No Businesses, Services or Service Interfaces found.
 
 # Results
 ALT_QUERY_RESULTS=Query Results
@@ -350,6 +347,12 @@
 # Business Publish Service action
 ALT_PUBLISH_SERVICE=Publish Service
 
+# Login actions
+ALT_LOGIN=Login
+ALT_LOGOUT=Logout
+MSG_INFO_NO_MULTIPLE_LOGIN=Multiple logins with same ID not allowed
+MSG_INFO_LOGGED_IN_NODE=%1 - logged in as %2
+
 # WSDL Browser
 TITLE_WSDL_BROWSER=WSDL Browser - %1
 FORM_LABEL_WSDL_SOURCE=Select a WSDL source:
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-properties/wsdl.properties b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-properties/wsdl.properties
index 352e453..a6de7e8 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-properties/wsdl.properties
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-properties/wsdl.properties
@@ -90,6 +90,7 @@
 FORM_LABEL_DOCUMENTATION=Documentation
 FORM_LABEL_ENDPOINT=Endpoint
 FORM_LABEL_INVOKE_WSDL_OPERATION_DESC=Enter the parameters of this WSDL operation and click <strong>Go</Strong> to invoke.
+FORM_LABEL_INVOKE_WSDL_OPERATION_DESC_NO_INPUT=There are no input parameters for the WSDL operation "%1". Click <strong>Go</Strong> to invoke.
 FORM_LINK_ADD=Add
 FORM_LINK_REMOVE=Remove
 FORM_LABEL_VALUES=Values
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/ClearNodeAction.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/ClearNodeAction.java
index 56a5193..c53fdc6 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/ClearNodeAction.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/ClearNodeAction.java
@@ -1,17 +1,27 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060906   156398 jeffliu@ca.ibm.com - Jeffrey Liu
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.explorer.platform.actions;
 
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.wst.ws.internal.datamodel.Rel;
 import org.eclipse.wst.ws.internal.explorer.platform.constants.ActionInputs;
+import org.eclipse.wst.ws.internal.explorer.platform.constants.ModelConstants;
 import org.eclipse.wst.ws.internal.explorer.platform.datamodel.TreeElement;
 import org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller;
 import org.eclipse.wst.ws.internal.explorer.platform.perspective.MessageQueue;
@@ -32,7 +42,16 @@
     {
       Node node = nodeManager_.getNode(nodeId);
       TreeElement element = node.getTreeElement();
-      element.disconnectAll();
+      //element.disconnectAll();
+      List elements2remove = new ArrayList();
+      collectElements2Remove(element, elements2remove);
+      for (Iterator it = elements2remove.iterator(); it.hasNext();)
+      {
+        TreeElement e = (TreeElement)it.next();
+        e.getModel().removeElement(e);
+      }
+      if (element.getModel().getRootElement() != element)
+        nodeManager_.removeFromNodeTable(nodeId);
       // Do not add this to the history.
       MessageQueue messageQueue = controller_.getCurrentPerspective().getMessageQueue();
       messageQueue.addMessage(controller_.getMessage("MSG_INFO_NODE_CLEARED",node.getNodeName()));
@@ -41,6 +60,29 @@
     return false;
   }
 
+  private void collectElements2Remove(TreeElement element, List elements2remove)
+  {
+    if (!elements2remove.contains(element))
+    {
+      if (element.getModel().getRootElement() != element)
+        elements2remove.add(element);
+      Enumeration rels = element.getRels();
+      while (rels.hasMoreElements())
+      {
+        Rel rel = (Rel)rels.nextElement();
+        String relName = rel.getName();
+        if (!ModelConstants.REL_OWNER.equals(relName))
+        {
+          Enumeration children = element.getElements(rel.getName());
+          while (children.hasMoreElements())
+          {
+            collectElements2Remove((TreeElement)children.nextElement(), elements2remove);
+          }
+        }
+      }
+    }
+  }
+
   public final String getActionLinkForHistory()
   {
     return null;
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/ImportToWorkbenchAction.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/ImportToWorkbenchAction.java
index 4c71477..8a0c3f9 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/ImportToWorkbenchAction.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/ImportToWorkbenchAction.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060721   149070 gilberta@ca.ibm.com - Gilbert Andrews, update to respect preferences
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.explorer.platform.actions;
 
@@ -24,6 +27,7 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.wst.command.internal.env.context.PersistentResourceContext;
 import org.eclipse.wst.command.internal.env.eclipse.EclipseEnvironment;
 import org.eclipse.wst.common.environment.IEnvironment;
 import org.eclipse.wst.ws.internal.explorer.platform.constants.ActionInputs;
@@ -132,11 +136,10 @@
       return targetFileResource_.getResourceAttributes().isReadOnly();
     }
 
-    // TODO: ResourceContext need to move to org.eclipse.wst.ws.
+    
     public boolean isCheckoutFilesEnabled()
     {
-    	return true;
-//      return WebServicePlugin.getInstance().getResourceContext().isCheckoutFilesEnabled();
+    	return PersistentResourceContext.getInstance().isCheckoutFilesEnabled();
     }
 
     public String getWebServicePluginFileMessage(String messageId)
@@ -145,11 +148,10 @@
       return controller_.getMessage(messageId,new String[]{iProject_.getFullPath().toString(),importedFileName});
     }
 
-    // TODO: ResourceContext need to move to org.eclipse.wst.ws. 
+    
     public boolean isOverwriteFilesEnabled()
     {
-    	return true;
-//      return WebServicePlugin.getInstance().getResourceContext().isOverwriteFilesEnabled();
+    	return PersistentResourceContext.getInstance().isOverwriteFilesEnabled();
     }
 
     public boolean validateEdit()
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/NodeAction.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/NodeAction.java
index 210e052..3059bf7 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/NodeAction.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/NodeAction.java
@@ -70,6 +70,17 @@
   }
 
   /**
+   * Make a node visible. A node is visible when all of its ancestors are expanded.
+   * @param Node The node to be made visible.
+   * @return boolean Indicator for whether or not the tree structure was changed (i.e. expanded to show the node in question).
+   */
+   public final void setTreeRefreshNeeded()
+   {
+     requiresTreeViewRefresh_ = true;
+     
+   }
+  
+  /**
   * Select a node with id nodeId.
   * @param int The id of the node to be selected.
   */
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/SelectNodeAction.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/SelectNodeAction.java
index fa84e26..00fae9c 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/SelectNodeAction.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/actions/SelectNodeAction.java
@@ -33,6 +33,11 @@
     selectedNode_ = nodeManager_.getSelectedNode();
   }
 
+  public void performExtendedAction()
+  {
+	 //the extended classes can interject here  
+  }
+  
   public boolean run()
   {
     int nodeId = Integer.parseInt((String)propertyTable_.get(ActionInputs.NODEID));
@@ -41,6 +46,7 @@
       // Ensure that the node is visible.
       makeNodeVisible(nodeManager_.getNode(nodeId));
       performBaseAction(nodeId);
+      performExtendedAction();
       addToHistory(getPerspectiveId(),getActionLinkForHistory());
       return true;
     }
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/actions/SelectFavoritesUserDefUDDIRegistryNodeAction.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/actions/SelectFavoritesUserDefUDDIRegistryNodeAction.java
new file mode 100644
index 0000000..f9d0dbc
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/actions/SelectFavoritesUserDefUDDIRegistryNodeAction.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.ws.internal.explorer.platform.favorites.actions;
+
+import org.eclipse.wst.ws.internal.explorer.platform.constants.ActionInputs;
+import org.eclipse.wst.ws.internal.explorer.platform.datamodel.TreeElement;
+import org.eclipse.wst.ws.internal.explorer.platform.favorites.datamodel.FavoritesUserDefUDDIRegistryFolderElement;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller;
+
+public class SelectFavoritesUserDefUDDIRegistryNodeAction extends SelectFavoritesNodeAction
+{
+    public SelectFavoritesUserDefUDDIRegistryNodeAction(Controller controller)
+    {
+        super(controller);
+    }
+
+    public void performExtendedAction()
+    {
+    	TreeElement selectedElement = selectedNode_.getTreeElement();
+    	((FavoritesUserDefUDDIRegistryFolderElement)selectedElement).refresh();
+    }
+    
+    
+    public static String getActionLink(int nodeID, boolean keepHistory)
+    {
+        StringBuffer actionLink = new StringBuffer("favorites/actions/SelectFavoritesUserDefUDDIRegistryNodeActionJSP.jsp?");
+        actionLink.append(ActionInputs.NODEID);
+        actionLink.append('=');
+        actionLink.append(nodeID);
+        if (keepHistory) {
+            actionLink.append('&');
+            actionLink.append(ActionInputs.ISHISTORY);
+            actionLink.append("=1");
+        }
+        return actionLink.toString();
+    }
+    
+}
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUserDefUDDIRegistryElement.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUserDefUDDIRegistryElement.java
index 19df577..37a4de1 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUserDefUDDIRegistryElement.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUserDefUDDIRegistryElement.java
@@ -1,20 +1,29 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060912   141796 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.explorer.platform.favorites.datamodel;
 
 import java.util.List;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.wst.ws.internal.datamodel.Model;
+import org.eclipse.wst.ws.internal.model.v10.registry.Registry;
 import org.eclipse.wst.ws.internal.model.v10.taxonomy.Taxonomy;
+import org.eclipse.wst.ws.internal.model.v10.uddiregistry.UDDIRegistry;
+import org.eclipse.wst.ws.internal.registry.IRegistryManager;
+import org.eclipse.wst.ws.internal.registry.RegistryService;
+import org.eclipse.wst.ws.internal.registry.UDDIRegistryService;
 
 public class FavoritesUserDefUDDIRegistryElement extends FavoritesElement
 {
@@ -138,4 +147,46 @@
   {
     return getName();
   }
+  
+  public void refreshMeta(){
+	    
+	    RegistryService regService = RegistryService.instance();
+	    IRegistryManager regManager = regService.getDefaultRegistryManager();
+	    try
+	    {
+	      
+	    	
+	      regManager.refreshManager();
+	      String[] regURIs = regManager.getRegistryURIs();
+	      for (int i = 0; i < regURIs.length; i++)
+	      {
+	        Registry reg = regManager.loadRegistry(regURIs[i]);
+	        if (reg instanceof UDDIRegistry)
+	        {
+	          UDDIRegistry uddiReg = (UDDIRegistry)reg;
+	          List names = uddiReg.getName();
+	          
+	          if(uddiReg.getDiscoveryURL().equals(getInquiryURL())){
+	          
+	        	  setNames(names);
+	        	  setDescs(uddiReg.getDescription());
+	        	  setVersion(uddiReg.getVersion());
+	        	  setDefaultLogin(uddiReg.getDefaultLogin());
+	        	  setDefaultPassword(uddiReg.getDefaultPassword());
+	        	  setInquiryURL(uddiReg.getDiscoveryURL());
+	        	  setPublishURL(uddiReg.getPublicationURL());
+	        	  setSecureInquiryURL(uddiReg.getSecuredDiscoveryURL());
+	        	  setSecurePublishURL(uddiReg.getSecuredPublicationURL());
+	        	  Taxonomy[] taxonomies = regManager.loadTaxonomies(UDDIRegistryService.instance().getTaxonomyURIs(uddiReg));
+	        	  setTaxonomies(taxonomies);
+	          }
+	        }
+	      }
+	    }
+	    catch (CoreException ce)
+	    {
+	      // TODO: Better error reporting
+	      ce.printStackTrace();
+	    }  
+  }
 }
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUserDefUDDIRegistryFolderElement.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUserDefUDDIRegistryFolderElement.java
index d99a3cd..a91ad11 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUserDefUDDIRegistryFolderElement.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/datamodel/FavoritesUserDefUDDIRegistryFolderElement.java
@@ -1,13 +1,17 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060906   141796 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
+
 package org.eclipse.wst.ws.internal.explorer.platform.favorites.datamodel;
 
 import java.util.Enumeration;
@@ -39,42 +43,49 @@
 
   public void init(FavoritesMainElement favMainElement)
   {
-    RegistryService regService = RegistryService.instance();
-    IRegistryManager regManager = regService.getDefaultRegistryManager();
-    try
-    {
-      String[] regURIs = regManager.getRegistryURIs();
-      for (int i = 0; i < regURIs.length; i++)
-      {
-        Registry reg = regManager.loadRegistry(regURIs[i]);
-        if (reg instanceof UDDIRegistry)
-        {
-          UDDIRegistry uddiReg = (UDDIRegistry)reg;
-          List names = uddiReg.getName();
-          String displayName = names != null && !names.isEmpty() ? ((Name)names.get(0)).getValue() : "";
-          FavoritesUserDefUDDIRegistryElement favUserDefUDDIRegElement = new FavoritesUserDefUDDIRegistryElement(displayName, getModel());
-          favUserDefUDDIRegElement.setNames(names);
-          favUserDefUDDIRegElement.setDescs(uddiReg.getDescription());
-          favUserDefUDDIRegElement.setVersion(uddiReg.getVersion());
-          favUserDefUDDIRegElement.setDefaultLogin(uddiReg.getDefaultLogin());
-          favUserDefUDDIRegElement.setDefaultPassword(uddiReg.getDefaultPassword());
-          favUserDefUDDIRegElement.setInquiryURL(uddiReg.getDiscoveryURL());
-          favUserDefUDDIRegElement.setPublishURL(uddiReg.getPublicationURL());
-          favUserDefUDDIRegElement.setSecureInquiryURL(uddiReg.getSecuredDiscoveryURL());
-          favUserDefUDDIRegElement.setSecurePublishURL(uddiReg.getSecuredPublicationURL());
-          Taxonomy[] taxonomies = regManager.loadTaxonomies(UDDIRegistryService.instance().getTaxonomyURIs(uddiReg));
-          favUserDefUDDIRegElement.setTaxonomies(taxonomies);
-          connect(favUserDefUDDIRegElement, FavoritesModelConstants.REL_USER_DEF_UDDI_REGISTRY_NODE, ModelConstants.REL_OWNER);
-        }
-      }
-    }
-    catch (CoreException ce)
-    {
-      // TODO: Better error reporting
-      ce.printStackTrace();
-    }
+    refresh();
   }
 
+  public void refresh(){
+	    disconnectRel(FavoritesModelConstants.REL_USER_DEF_UDDI_REGISTRY_NODE);
+	    RegistryService regService = RegistryService.instance();
+	    IRegistryManager regManager = regService.getDefaultRegistryManager();
+	    try
+	    {
+	      regManager.refreshManager();
+	      String[] regURIs = regManager.getRegistryURIs();
+	      for (int i = 0; i < regURIs.length; i++)
+	      {
+	        Registry reg = regManager.loadRegistry(regURIs[i]);
+	        if (reg instanceof UDDIRegistry)
+	        {
+	          UDDIRegistry uddiReg = (UDDIRegistry)reg;
+	          List names = uddiReg.getName();
+	          String displayName = names != null && !names.isEmpty() ? ((Name)names.get(0)).getValue() : "";
+	          FavoritesUserDefUDDIRegistryElement favUserDefUDDIRegElement = new FavoritesUserDefUDDIRegistryElement(displayName, getModel());
+	          favUserDefUDDIRegElement.setNames(names);
+	          favUserDefUDDIRegElement.setDescs(uddiReg.getDescription());
+	          favUserDefUDDIRegElement.setVersion(uddiReg.getVersion());
+	          favUserDefUDDIRegElement.setDefaultLogin(uddiReg.getDefaultLogin());
+	          favUserDefUDDIRegElement.setDefaultPassword(uddiReg.getDefaultPassword());
+	          favUserDefUDDIRegElement.setInquiryURL(uddiReg.getDiscoveryURL());
+	          favUserDefUDDIRegElement.setPublishURL(uddiReg.getPublicationURL());
+	          favUserDefUDDIRegElement.setSecureInquiryURL(uddiReg.getSecuredDiscoveryURL());
+	          favUserDefUDDIRegElement.setSecurePublishURL(uddiReg.getSecuredPublicationURL());
+	          Taxonomy[] taxonomies = regManager.loadTaxonomies(UDDIRegistryService.instance().getTaxonomyURIs(uddiReg));
+	          favUserDefUDDIRegElement.setTaxonomies(taxonomies);
+	          connect(favUserDefUDDIRegElement, FavoritesModelConstants.REL_USER_DEF_UDDI_REGISTRY_NODE, ModelConstants.REL_OWNER);
+	        }
+	      }
+	    }
+	    catch (CoreException ce)
+	    {
+	      // TODO: Better error reporting
+	      ce.printStackTrace();
+	    }  
+  }
+  
+  
   public boolean addFavorite(Hashtable table)
   {
     // do nothing
@@ -101,6 +112,6 @@
 
   public Enumeration getAllFavorites()
   {
-    return getElements(FavoritesModelConstants.REL_USER_DEF_UDDI_REGISTRY_NODE);
+     return getElements(FavoritesModelConstants.REL_USER_DEF_UDDI_REGISTRY_NODE);
   }
 }
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/perspective/FavoritesUserDefUDDIRegistryFolderNode.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/perspective/FavoritesUserDefUDDIRegistryFolderNode.java
index e352792..9dae250 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/perspective/FavoritesUserDefUDDIRegistryFolderNode.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/favorites/perspective/FavoritesUserDefUDDIRegistryFolderNode.java
@@ -15,6 +15,7 @@
 import org.eclipse.wst.ws.internal.datamodel.RelAddEvent;
 import org.eclipse.wst.ws.internal.datamodel.RelRemoveEvent;
 import org.eclipse.wst.ws.internal.explorer.platform.datamodel.TreeElement;
+import org.eclipse.wst.ws.internal.explorer.platform.favorites.actions.SelectFavoritesUserDefUDDIRegistryNodeAction;
 import org.eclipse.wst.ws.internal.explorer.platform.favorites.constants.FavoritesModelConstants;
 import org.eclipse.wst.ws.internal.explorer.platform.perspective.NodeManager;
 
@@ -58,4 +59,10 @@
     FavoritesPerspective favPerspective = nodeManager_.getController().getFavoritesPerspective();
     new ListFavoriteUserDefUDDIRegistryTool(toolManager_, favPerspective.getMessage("ALT_LIST_FAVORITE_USER_DEF_UDDI_REGISTRY"));
   }
+
+  protected String getLinkActionHref() {
+      return SelectFavoritesUserDefUDDIRegistryNodeAction.getActionLink(nodeId_, false);
+  }
+
+
 }
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/perspective/Tool.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/perspective/Tool.java
index 6710fa3..e8bfb99 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/perspective/Tool.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/perspective/Tool.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen  
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.explorer.platform.perspective;
@@ -99,6 +102,11 @@
   {
     return alt_;
   }
+  
+  public final void setAltText(String alt)
+  {
+  	alt_ = alt;
+  }  
 
   public abstract String getFormLink();
   public abstract String getActionLink();
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/LoginAdvancedAction.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/LoginAdvancedAction.java
new file mode 100644
index 0000000..0d7e0ab
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/LoginAdvancedAction.java
@@ -0,0 +1,222 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen
+ * 20060427   136449 clbush@us.ibm.com - Christopher Bush  
+ ******************************************************************************/
+
+package org.eclipse.wst.ws.internal.explorer.platform.uddi.actions;
+
+import java.net.MalformedURLException;
+import java.util.Vector;
+import java.rmi.AlreadyBoundException;
+
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.FormToolPropertiesInterface;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.MessageQueue;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.Node;
+import org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.UDDIActionInputs;
+import org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.RegistryElement;
+import org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.RegistryNode;
+import org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.UDDIPerspective;
+import org.eclipse.wst.ws.internal.explorer.platform.util.MultipartFormDataException;
+import org.eclipse.wst.ws.internal.explorer.platform.util.MultipartFormDataParser;
+
+import org.uddi4j.UDDIException;
+import org.uddi4j.client.UDDIProxy;
+import org.uddi4j.datatype.business.BusinessEntity;
+import org.uddi4j.datatype.service.BusinessServices;
+import org.uddi4j.datatype.tmodel.TModel;
+import org.uddi4j.response.BusinessInfo;
+import org.uddi4j.response.BusinessInfos;
+import org.uddi4j.response.RegisteredInfo;
+import org.uddi4j.response.TModelInfo;
+import org.uddi4j.response.TModelInfos;
+import org.uddi4j.transport.TransportException;
+
+public class LoginAdvancedAction extends PublishAction {
+   public LoginAdvancedAction(Controller controller) {
+      super(controller);
+      propertyTable_.put(UDDIActionInputs.QUERY_ITEM, String.valueOf(UDDIActionInputs.QUERY_ITEM_BUSINESSES));
+      propertyTable_
+            .put(UDDIActionInputs.QUERY_STYLE_BUSINESSES, String.valueOf(UDDIActionInputs.QUERY_STYLE_ADVANCED));
+      propertyTable_.put(UDDIActionInputs.QUERY_INPUT_ADVANCED_BUSINESS_MAX_SEARCH_SET, String
+            .valueOf(UDDIActionInputs.QUERY_MAX_SEARCH_SET));
+      propertyTable_.put(UDDIActionInputs.QUERY_INPUT_ADVANCED_BUSINESS_MAX_RESULTS, String
+            .valueOf(UDDIActionInputs.QUERY_MAX_RESULTS));
+   }
+
+   protected final boolean processOthers(MultipartFormDataParser parser, FormToolPropertiesInterface formToolPI)
+         throws MultipartFormDataException {
+      String ownedChecked = parser.getParameter(UDDIActionInputs.QUERY_INPUT_ADVANCED_OWNED);
+
+      // Validate the data.
+      boolean inputsValid = true;
+      if (ownedChecked != null)
+         propertyTable_.put(UDDIActionInputs.QUERY_INPUT_ADVANCED_BUSINESS_OWNED, ownedChecked);
+      else
+         removeProperty(UDDIActionInputs.QUERY_INPUT_ADVANCED_BUSINESS_OWNED);
+
+      return inputsValid;
+   }
+   
+   private boolean attemptingDoubleLogin(){
+	   String userId = (String) propertyTable_.get(UDDIActionInputs.QUERY_INPUT_ADVANCED_USERID);
+	   String publishURL = (String) propertyTable_.get(UDDIActionInputs.QUERY_INPUT_ADVANCED_PUBLISH_URL);
+	   Node rootNode = regNode_.getNodeManager().getRootNode();
+       Vector allNodes = rootNode.getChildNodes();
+       
+       for(int k = 0; k < allNodes.size(); k++){
+      	 Node n = (Node)allNodes.get(k);
+      	 if (n instanceof RegistryNode){
+      		 RegistryElement myElement = ((RegistryElement)n.getTreeElement());
+      		 if (n.getNodeId() != regNode_.getNodeId() && publishURL.equals(myElement.getPublishURL()))
+      			 if(userId.equals(myElement.getUserId()))
+      				 return true;
+      	 }
+       }
+       return false;
+   }
+   
+   public final boolean run() {
+      UDDIPerspective uddiPerspective = controller_.getUDDIPerspective();
+      MessageQueue messageQueue = uddiPerspective.getMessageQueue();
+      // System.out.println("+++++ Trying to login +++++");
+      try {
+         boolean shouldAddQueryNode = (propertyTable_.get(UDDIActionInputs.QUERY_INPUT_OVERRIDE_ADD_QUERY_NODE) == null);
+         String publishURL = (String) propertyTable_.get(UDDIActionInputs.QUERY_INPUT_ADVANCED_PUBLISH_URL);
+         String userId = (String) propertyTable_.get(UDDIActionInputs.QUERY_INPUT_ADVANCED_USERID);
+         String password = (String) propertyTable_.get(UDDIActionInputs.QUERY_INPUT_ADVANCED_PASSWORD);
+         int maxResults = 300;
+         
+         // The action can be run under the context of either a registry or a
+         // query node.
+         RegistryElement regElement = (RegistryElement) regNode_.getTreeElement();
+         
+                 
+         if(attemptingDoubleLogin())
+        	 throw new AlreadyBoundException(uddiPerspective.getMessage("MSG_INFO_NO_MULTIPLE_LOGIN")); 
+         
+         if (!regElement.isLoggedIn())
+            regElement.performLogin(publishURL, userId, password);
+
+         UDDIProxy proxy = regElement.getProxy();
+
+         BusinessInfos busInfos = null;
+         TModelInfos tmInfos = null;
+
+         RegisteredInfo ri = proxy.get_registeredInfo(regElement.getAuthInfoString());
+         busInfos = ri.getBusinessInfos();
+         tmInfos = ri.getTModelInfos();
+
+         int finalNumberOfBusinessEntities = Math.min(maxResults, busInfos.size());
+         Vector businessKeys = new Vector();
+         for (int i = 0; i < finalNumberOfBusinessEntities; i++) {
+            BusinessInfo busInfo = (BusinessInfo) busInfos.get(i);
+            businessKeys.addElement(busInfo.getBusinessKey());
+         }
+
+         if (finalNumberOfBusinessEntities > 0) {
+            if (shouldAddQueryNode) {
+               Vector beVector = proxy.get_businessDetail(businessKeys).getBusinessEntityVector();
+               BusinessEntity be = null;
+               BusinessServices bs = null;
+               int size = beVector.size();
+               if (size > 0) {
+                  for (int i = 0; i < size; i++) {
+                     be = (BusinessEntity) beVector.elementAt(i);
+                     addPublishedItemNode(be, regElement);
+                     bs = be.getBusinessServices();
+                     if (bs != null) {
+                        Vector vServices = bs.getBusinessServiceVector();
+                        int services = vServices.size();
+                        for (int j = 0; j < services; j++) {
+                           addPublishedItemNode(bs.get(j), regElement);
+                        }
+                     }
+                  }
+                  messageQueue
+                        .addMessage(uddiPerspective.getMessage("MSG_INFO_BUSINESSES_FOUND", String.valueOf(size)));
+               }
+            }
+         }
+
+         int finalNumberOfTModels = Math.min(maxResults, tmInfos.size());
+         Vector tModelKeys = new Vector();
+         for (int i = 0; i < finalNumberOfTModels; i++) {
+            TModelInfo tmInfo = (TModelInfo) tmInfos.get(i);
+            tModelKeys.addElement(tmInfo.getTModelKey());
+         }
+
+         if (finalNumberOfTModels > 0) {
+            if (shouldAddQueryNode) {
+               Vector finalTModelVector = proxy.get_tModelDetail(tModelKeys).getTModelVector();
+
+               int size = finalTModelVector.size();
+               if (size > 0) {
+                  TModel tm = null;
+                  for (int i = 0; i < size; i++) {
+                     tm = (TModel) finalTModelVector.elementAt(i);
+                     addPublishedItemNode(tm, regElement);                        
+                  }
+                  messageQueue.addMessage(uddiPerspective.getMessage("MSG_INFO_SERVICE_INTERFACES_FOUND", String
+                        .valueOf(size)));
+               }
+            }
+         }
+
+         int id = 1;
+         RegistryNode regNode = getRegistryNode();
+
+         // we are logged in so change the loginTool to act as a logoutTool;
+         regNode.getLoginTool().setAltText(uddiPerspective.getMessage("ALT_LOGOUT"));
+         regNode.getLoginTool().setToLogoutLink();
+         String registryName = regElement.getName();
+         String[] s = new String[2];
+         s[0] = registryName;
+         s[1] = userId;
+         regElement.setName(uddiPerspective.getMessage("MSG_INFO_LOGGED_IN_NODE", s));
+
+         if (finalNumberOfBusinessEntities > 0) {
+            Node pbeNode = regNode.getChildNode(regElement.getPublishedBusinessesElement());
+            id = pbeNode.getNodeId();
+         } else if (finalNumberOfTModels > 0) {
+            Node psiNode = regNode.getChildNode(regElement.getPublishedServiceInterfacesElement());
+            id = psiNode.getNodeId();
+         } 
+         // System.out.println("Node id = " + id);
+         uddiPerspective.getNodeManager().setSelectedNodeId(id);
+         uddiPerspective.getNodeManager().makeSelectedNodeVisible();
+
+         if ((finalNumberOfBusinessEntities < 1) && (finalNumberOfTModels < 1))
+            messageQueue.addMessage(uddiPerspective.getMessage("MSG_INFO_NO_BUSINESSES_OR_SERVICE_INTERFACES_FOUND"));
+
+         return true;
+      } catch (TransportException e) {
+         messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED"));
+         messageQueue.addMessage("TransportException");
+         messageQueue.addMessage(e.getMessage());
+      } catch (UDDIException e) {
+         messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED"));
+         messageQueue.addMessage("UDDIException");
+         messageQueue.addMessage(e.toString());
+      } catch (MalformedURLException e) {
+         messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED"));
+         messageQueue.addMessage("MalformedURLException");
+         messageQueue.addMessage(e.getMessage());
+      } catch (AlreadyBoundException e) {
+    	 messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED"));
+    	 messageQueue.addMessage("AlreadyBoundException");
+    	 messageQueue.addMessage(e.getMessage());
+      }
+      
+      return false;
+   }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/LogoutAdvancedAction.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/LogoutAdvancedAction.java
new file mode 100644
index 0000000..e76df39
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/LogoutAdvancedAction.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen  
+ *******************************************************************************/
+
+package org.eclipse.wst.ws.internal.explorer.platform.uddi.actions;
+
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.FormToolPropertiesInterface;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.MessageQueue;
+import org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.RegistryElement;
+import org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.UDDIPerspective;
+import org.eclipse.wst.ws.internal.explorer.platform.util.MultipartFormDataException;
+import org.eclipse.wst.ws.internal.explorer.platform.util.MultipartFormDataParser;
+import org.uddi4j.UDDIException;
+import org.uddi4j.transport.TransportException;
+
+public class LogoutAdvancedAction extends PublishAction
+{
+  public LogoutAdvancedAction(Controller controller)
+  {
+    super(controller);
+    regNode_.getLoginTool().setToRegistryLink();    
+  }
+
+  protected final boolean processOthers(MultipartFormDataParser parser,FormToolPropertiesInterface formToolPI) throws MultipartFormDataException
+  {
+    // Validate the data.
+    boolean inputsValid = true;
+    return inputsValid;
+  }
+
+  public final boolean run()
+  {
+    UDDIPerspective uddiPerspective = controller_.getUDDIPerspective();
+    MessageQueue messageQueue = uddiPerspective.getMessageQueue();
+    try
+    {
+      // The action can be run under the context of either a registry or a query node.
+      RegistryElement regElement = (RegistryElement)regNode_.getTreeElement();
+      if (regElement.isLoggedIn()) {
+        regElement.performLogout();
+        regElement.remove();
+        regNode_.getNodeManager().setSelectedNodeId(0);  
+      }
+      
+      return true;
+    }
+    catch (TransportException e)
+    {
+      messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED"));
+      messageQueue.addMessage("TransportException");
+      messageQueue.addMessage(e.getMessage());
+    }
+    catch (UDDIException e)
+    {
+      messageQueue.addMessage(controller_.getMessage("MSG_ERROR_UNEXPECTED"));
+      messageQueue.addMessage("UDDIException");
+      messageQueue.addMessage(e.toString());
+    }
+    return false;
+  }
+}
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/OpenRegistryAction.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/OpenRegistryAction.java
index 891ff4f..9288c7d 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/OpenRegistryAction.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/actions/OpenRegistryAction.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060912   141796 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.explorer.platform.uddi.actions;
 
@@ -215,8 +218,6 @@
         gatherWSUserDefinedCategories(proxy,categoryModels);
         if (categoryModels.size() > 0)
           registryElement.setUserDefinedCategories(categoryModels);
-        else
-          messageQueue.addMessage(uddiPerspective.getMessage("MSG_INFO_NO_USER_DEFINED_CATEGORIES_FOUND"));
       }
       registryElement.setCategoriesDirectory(categoriesDirectory);
       uddiMainElement.connect(registryElement,UDDIModelConstants.REL_REGISTRIES,ModelConstants.REL_OWNER);
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/datamodel/RegistryElement.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/datamodel/RegistryElement.java
index 24c336d..ee23fd5 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/datamodel/RegistryElement.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/datamodel/RegistryElement.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen  
+ * 20060912   141796 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel;
 
@@ -14,9 +18,17 @@
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Vector;
+
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.wst.ws.internal.datamodel.Model;
 import org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.UDDIModelConstants;
+import org.eclipse.wst.ws.internal.model.v10.registry.Registry;
+import org.eclipse.wst.ws.internal.model.v10.taxonomy.Taxonomy;
+import org.eclipse.wst.ws.internal.model.v10.uddiregistry.UDDIRegistry;
 import org.eclipse.wst.ws.internal.parser.discovery.NetUtils;
+import org.eclipse.wst.ws.internal.registry.IRegistryManager;
+import org.eclipse.wst.ws.internal.registry.RegistryService;
+import org.eclipse.wst.ws.internal.registry.UDDIRegistryService;
 import org.uddi4j.UDDIException;
 import org.uddi4j.client.UDDIProxy;
 import org.uddi4j.datatype.Description;
@@ -97,6 +109,11 @@
     password_ = password;
   }
 
+  public final void performLogout() throws TransportException, UDDIException
+  {
+    proxy_.discard_authToken(authToken_.getAuthInfoString());
+  }
+
   public final String getAuthInfoString()
   {
     if (!isLoggedIn())
@@ -227,4 +244,56 @@
   {
     return categoriesDirectory_;
   }
+
+  public void refreshMeta(){
+	    
+	  RegistryService regService = RegistryService.instance();
+	  IRegistryManager regManager = regService.getDefaultRegistryManager();
+	  
+	  
+	  try
+	  {
+    	  regManager.refreshManager();
+		  String[] regURIs = regManager.getRegistryURIs();
+		  for (int i = 0; i < regURIs.length; i++)
+		  {
+			  Registry reg = regManager.loadRegistry(regURIs[i]);
+			  if (reg instanceof UDDIRegistry)
+			  {
+				  UDDIRegistry uddiReg = (UDDIRegistry)reg;
+				  if(uddiReg.getDiscoveryURL().equals(getInquiryURL())){
+					  
+					  
+					 
+					  Taxonomy[] taxonomies = regManager.loadTaxonomies(UDDIRegistryService.instance().getTaxonomyURIs(uddiReg));
+					  if (taxonomies != null)
+				        {
+				          Hashtable taxonomyTable = new Hashtable();
+				          for (int j=0; j<taxonomies.length; j++)
+				          {
+				            Taxonomy taxonomy = taxonomies[j];
+				            String name = taxonomy.getName();
+				            String tmodelKey = taxonomy.getTmodelKey();
+				            CategoryModel catModel = new CategoryModel();
+				            catModel.setDisplayName(name);
+				            catModel.setCategoryKey(name);
+				            catModel.setTModelKey(tmodelKey);
+				            catModel.loadFromTaxonomy(taxonomy);
+				            taxonomyTable.put(tmodelKey, catModel);
+				          }
+				          
+				          setUserDefinedCategories(taxonomyTable);
+				        }   
+				  }
+		  
+			  }
+	  
+		  }
+	  }catch (CoreException ce)
+	  {
+		  // TODO: Better error reporting
+		  ce.printStackTrace();
+	  }  
+  }
+
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/perspective/LoginTool.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/perspective/LoginTool.java
new file mode 100644
index 0000000..f36b256
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/perspective/LoginTool.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen  
+ *******************************************************************************/
+
+package org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective;
+
+import java.util.Enumeration;
+
+import org.eclipse.wst.ws.internal.explorer.platform.datamodel.TreeElement;
+import org.eclipse.wst.ws.internal.explorer.platform.favorites.constants.FavoritesModelConstants;
+import org.eclipse.wst.ws.internal.explorer.platform.favorites.perspective.FavoritesPerspective;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.FormTool;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.Node;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.NodeManager;
+import org.eclipse.wst.ws.internal.explorer.platform.perspective.ToolManager;
+import org.eclipse.wst.ws.internal.explorer.platform.uddi.actions.SelectPropertiesToolAction;
+
+public class LoginTool extends FormTool
+{
+  private Controller controller_;
+  private String formLink = "uddi/forms/LoginUddiForm.jsp";
+  
+  public LoginTool(ToolManager toolManager, String alt)
+  {
+    super(toolManager,"uddi/images/open_registry_enabled.gif","uddi/images/open_registry_highlighted.gif",alt);
+  }
+
+  protected final void initDefaultProperties()
+  {
+    controller_ = toolManager_.getNode().getNodeManager().getController();
+  }
+
+  public String getSelectToolActionHref(boolean forHistory)
+  {
+    Node node = toolManager_.getNode();
+    return SelectPropertiesToolAction.getActionLink(node.getNodeId(),toolId_,node.getViewId(),node.getViewToolId(),forHistory);
+  }
+
+  public String getFormLink()
+  {
+    return formLink;
+  }
+  
+  public void setToLogoutLink() 
+  {
+  	formLink = "uddi/actions/LogoutAdvancedActionJSP.jsp";
+  }
+  
+  public void setToRegistryLink() 
+  {
+  	formLink = "";
+  }
+  
+  public final Enumeration getFavoriteRegistryElements()
+  {
+    FavoritesPerspective favPerspective = controller_.getFavoritesPerspective();
+    NodeManager favoritesNodeManager = favPerspective.getNodeManager();
+    TreeElement favoritesMainElement = favoritesNodeManager.getRootNode().getTreeElement();
+    TreeElement favoriteRegistriesElement = (TreeElement)(favoritesMainElement.getElements(FavoritesModelConstants.REL_UDDI_REGISTRY_FOLDER_NODE).nextElement());
+    return favoriteRegistriesElement.getElements(FavoritesModelConstants.REL_UDDI_REGISTRY_NODE);
+  }
+}
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/perspective/RegistryNode.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/perspective/RegistryNode.java
index ccf0297..7287843 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/perspective/RegistryNode.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/perspective/RegistryNode.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen  
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective;
@@ -30,6 +33,7 @@
 {
   private RegistryDetailsTool regDetailsTool_;
   private RegPublishTool regPublishTool_;
+  private LoginTool loginTool_;
   
   public static final String IMAGE_PATH_STANDARD = "uddi/images/registry.gif";
   public static final String IMAGE_PATH_WITH_USER_DEFINED_CATEGORIES = "uddi/images/regstrycat_obj.gif";
@@ -99,6 +103,7 @@
     regDetailsTool_ = new RegistryDetailsTool(toolManager_ ,uddiPerspective.getMessage("ALT_REGISTRY_DETAILS"));
     RegFindTool regFindTool = new RegFindTool(toolManager_,uddiPerspective.getMessage("ALT_FIND"));
     regPublishTool_ = new RegPublishTool(toolManager_,uddiPerspective.getMessage("ALT_PUBLISH"));
+    loginTool_ = new LoginTool(toolManager_, uddiPerspective.getMessage("ALT_LOGIN"));
     new AddToFavoritesTool(toolManager_,uddiPerspective.getMessage("ALT_ADD_TO_FAVORITES"));
     regFindTool.addAuthenticationProperties((RegistryElement)element_);
     regPublishTool_.addAuthenticationProperties((RegistryElement)element_);
@@ -114,6 +119,11 @@
     return regPublishTool_;
   }
 
+  public final LoginTool getLoginTool()
+  {
+    return loginTool_;
+  }
+
   private final void addDiscoveredNodes(Vector allNodes,Node queryParentNode,int queryType)
   {
     Vector queryNodes = queryParentNode.getChildNodes();
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/util/Uddi4jHelper.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/util/Uddi4jHelper.java
index 10e3b8c..8a7b2fe 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/util/Uddi4jHelper.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/uddi/util/Uddi4jHelper.java
@@ -1,18 +1,24 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20061004   148052 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.explorer.platform.uddi.util;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Vector;
 import javax.wsdl.Binding;
 import javax.wsdl.Definition;
@@ -305,7 +311,28 @@
   
   public String[] getImports(Definition def, String wsdlUrl)
   {
-    Import[] imports = (Import [])def.getImports().values().toArray(new Import[0]);
+  
+	  
+	Map importsMap = def.getImports();
+    Collection values = importsMap.values();
+    Iterator it = values.iterator();
+    
+    Vector importsVec = new Vector();  
+    for(int i =0;it.hasNext();i++){
+    	ArrayList aList = (ArrayList)it.next();
+        Iterator itImports = aList.iterator();
+        while(itImports.hasNext()){
+        	importsVec.add(itImports.next());
+        }
+    }
+    Import imports[] = new Import[importsVec.size()] ;
+    Iterator itVec = importsVec.iterator();
+    for(int j = 0;itVec.hasNext();j++){
+    	imports[j] = (Import)itVec.next();
+    }
+    
+    
+    
     String[] importStrings = new String[imports.length];
     String s;
     if (wsdlUrl != null && wsdlUrl.indexOf('/') != -1)
@@ -393,4 +420,4 @@
     }
     return s;
   }
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/util/Validator.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/util/Validator.java
index 6a6de22..4df7aa4 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/util/Validator.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/util/Validator.java
@@ -6,7 +6,10 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060612   142290 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.explorer.platform.util;
@@ -20,7 +23,7 @@
 
   public static final boolean validateURL(String input)
   {
-    return ((input != null) && (input.indexOf("://") != -1));
+	  return (input != null && input.matches("[a-zA-Z\\+\\-\\.]++:.*"));
   }
   
   public static final boolean validateInteger(String input)
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLElement.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLElement.java
index 320e7d5..7530a43 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLElement.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/datamodel/WSDLElement.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2007 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060717   146707 mahutch@ca.ibm.com - Mark Hutchinson
+ * 20070124   167487 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.explorer.platform.wsdl.datamodel;
 
@@ -21,6 +25,7 @@
 import java.util.ListIterator;
 import java.util.Map;
 import java.util.Vector;
+
 import javax.wsdl.Definition;
 import javax.wsdl.Import;
 import javax.wsdl.Service;
@@ -28,8 +33,13 @@
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.UnknownExtensibilityElement;
 import javax.xml.namespace.QName;
+
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.wst.common.uriresolver.internal.util.URIEncoder;
+import org.eclipse.wst.ws.internal.common.HTTPUtility;
 import org.eclipse.wst.ws.internal.datamodel.Model;
 import org.eclipse.wst.ws.internal.explorer.platform.constants.ModelConstants;
 import org.eclipse.wst.ws.internal.explorer.platform.util.Validator;
@@ -41,10 +51,12 @@
 import org.eclipse.wst.wsdl.internal.impl.XSDSchemaExtensibilityElementImpl;
 import org.eclipse.xsd.XSDDiagnostic;
 import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.eclipse.xsd.XSDPackage;
 import org.eclipse.xsd.XSDSchema;
 import org.eclipse.xsd.XSDSchemaDirective;
 import org.eclipse.xsd.impl.XSDSchemaImpl;
 import org.eclipse.xsd.util.XSDParser;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
 
 public class WSDLElement extends WSDLCommonElement
 {
@@ -56,6 +68,9 @@
 
   private static Vector w3SchemaQNameList_;
   private static Vector constantSchemaList_;
+  
+  //A ResourceSet for all schemas in this WSDL
+  private ResourceSet resourceSet;
 
   static
   {
@@ -85,14 +100,15 @@
   public WSDLElement(String name, Model model, String wsdlUrl)
   {
     super(name, model);
-    wsdlUrl_ = wsdlUrl;
+    setWsdlUrl(wsdlUrl);
     definition_ = null;
     schemaList_ = new Vector();
 	schemaURI_ = new Vector();
   }
 
   public void setWsdlUrl(String wsdlUrl) {
-    wsdlUrl_ = wsdlUrl;
+	  HTTPUtility http = new HTTPUtility();
+	  wsdlUrl_ = http.handleRedirect(wsdlUrl);
   }
 
   public String getWsdlUrl() {
@@ -128,8 +144,18 @@
 
   public Vector loadWSDL() throws WSDLException
   {
+	  
+	//	Register the appropriate resource factory to handle all file extentions.
+	resourceSet = new ResourceSetImpl();
+	resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION,new XSDResourceFactoryImpl());    		
+	//Register the package to ensure it is available during loading.
+	resourceSet.getPackageRegistry().put(XSDPackage.eNS_URI,XSDPackage.eINSTANCE);	
+	  
+	  
     Vector errorMessages = new Vector();
     definition_ = loadWSDL(wsdlUrl_);
+    
+    
     if (definition_ != null)
     {
       setDocumentation(definition_.getDocumentationElement());
@@ -175,13 +201,14 @@
       {
         for (int i=0;i<extTypes.size();i++)
         {
+          XSDSchema xsdSchema = null;
           Object obj = extTypes.get(i);
           if (obj instanceof UnknownExtensibilityElement)
           {
             UnknownExtensibilityElement schemaElement = (UnknownExtensibilityElement)obj;
             if (isW3SchemaElementType(schemaElement.getElementType()))
             {
-              XSDSchema xsdSchema = XSDSchemaImpl.createSchema(schemaElement.getElement());
+              xsdSchema = XSDSchemaImpl.createSchema(schemaElement.getElement());
 			  if(!checkSchemaURI(definitionURL)){
 				  schemaList_.addElement(xsdSchema);
 				  gatherSchemaDirective(xsdSchema, definitionURL);
@@ -191,12 +218,21 @@
           else if (obj instanceof XSDSchemaExtensibilityElementImpl)
           {
             XSDSchemaExtensibilityElementImpl schemaElement = (XSDSchemaExtensibilityElementImpl)obj;
-            XSDSchema xsdSchema = XSDSchemaImpl.createSchema(schemaElement.getElement());
+            xsdSchema = XSDSchemaImpl.createSchema(schemaElement.getElement());
 			if(!checkSchemaURI(definitionURL)){
 				schemaList_.addElement(xsdSchema);
 				gatherSchemaDirective(xsdSchema, definitionURL);
 			}
 		  }
+          
+          if (xsdSchema != null)
+          {
+        	  //We need to add the schema to a Resource in a Resource set for proper validation
+        	  org.eclipse.emf.common.util.URI uri = org.eclipse.emf.common.util.URI.createURI(definitionURL);    		
+        	  Resource resource = resourceSet.createResource(uri);
+        	  //Add the Schema to the resource
+        	  resource.getContents().add(xsdSchema);
+          }
         }
       }
     }
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDAttributeFragment.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDAttributeFragment.java
index 41fa7a4..0e539a2 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDAttributeFragment.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDAttributeFragment.java
@@ -46,14 +46,12 @@
     	
     if (!attributeTypeFragment.processParameterValues(parser))
       return false;
-    String[] params = getParameterValues(attributeTypeFragment.getID());
     return true;
   }
   
   public boolean validateAllParameterValues()
   {
     IXSDFragment attributeTypeFragment = getXSDDelegationFragment();
-    String[] params = getParameterValues(attributeTypeFragment.getID());
     if (!attributeTypeFragment.validateAllParameterValues())
       return false;
     return true;
@@ -71,8 +69,6 @@
 
   public boolean validateParameterValue(String paramKey, int paramIndex)
   {
-    XSDAttributeUse xsdAttribute = (XSDAttributeUse)getXSDToFragmentConfiguration().getXSDComponent();
-    String param = getParameterValue(paramKey, paramIndex);
     if (!getXSDDelegationFragment().validateParameterValue(paramKey, paramIndex))
       return false;
     return true;
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDComplexFragment.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDComplexFragment.java
index 7f39b89..a857c4a 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDComplexFragment.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/fragment/impl/XSDComplexFragment.java
@@ -22,7 +22,6 @@
 import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.XSDToFragmentConfiguration;
 import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.XSDToFragmentController;
 import org.eclipse.wst.ws.internal.explorer.platform.wsdl.fragment.util.XSDTypeDefinitionUtil;
-import org.eclipse.xsd.XSDAttributeGroupContent;
 import org.eclipse.xsd.XSDAttributeGroupDefinition;
 import org.eclipse.xsd.XSDAttributeUse;
 import org.eclipse.xsd.XSDComplexFinal;
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/transport/HTTPTransport.java b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/transport/HTTPTransport.java
index 1487621..76849de 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/transport/HTTPTransport.java
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer-src/org/eclipse/wst/ws/internal/explorer/platform/wsdl/transport/HTTPTransport.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+ * Copyright (c) 2004, 2006 IBM 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
@@ -12,6 +12,7 @@
  * 20060131   125777 jesper@selskabet.org - Jesper S Moller
  * 20060222   118019 andyzhai@ca.ibm.com - Andy Zhai
  * 20060222   128564 jesper@selskabet.org - Jesper S Moller
+ * 20060823    99034 makandre@ca.ibm.com - Andrew Mak, WSE support for basic-authenticating firewalls
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.explorer.platform.wsdl.transport;
 
@@ -44,6 +45,8 @@
   private final String SYS_PROP_HTTP_NON_PROXY_HOSTS = "http.nonProxyHosts";
   
   private final String HTTP_METHOD = "POST";
+  private final String HTTP_CONNECT = "CONNECT";
+  private final String HTTP_VERSION_1_0 = "HTTP/1.0";
   private final String HTTP_VERSION = "HTTP/1.1";
   private final String HTTP_HEADER_SOAP_ACTION = "SOAPAction";
   public static final String HTTP_HEADER_AUTH = "Authorization";
@@ -62,7 +65,7 @@
   private final String HTTP_HEADER_CONNECTION = "Connection";
   
   private final int HTTP_CODE_CONTINUE = 100;
-  //private final int HTTP_CODE_OK = 200;
+  private final int HTTP_CODE_OK = 200;
   private final int HTTP_CODE_EXCEPTION = 300;
 
   private final String IBM_WEB_SERVICES_EXPLORER = "IBM Web Services Explorer";
@@ -472,6 +475,61 @@
     return headers;
   }
 
+  /**
+   * Builds the first line of a connection request to the proxy server
+   * 
+   * @param url The URL that we want to ultimately connect to.
+   * @return A string of the form "CONNECT &lt;hostname&gt;:&lt;port&gt; HTTP/1.0".
+   */
+  private StringBuffer getConnectMethod(URL url) {
+	
+	  StringBuffer sb = new StringBuffer(HTTP_CONNECT);
+	  sb.append(SPACE);	  
+	  sb.append(url.getHost());
+	  sb.append(COLON);
+	  sb.append(url.getPort());
+	  sb.append(SPACE);
+	  sb.append(HTTP_VERSION_1_0);
+	  sb.append(NEW_LINE);
+	  return sb;
+  }
+  
+  /**
+   * Construct a socket to the proxy server which be used to tunnel through.
+   * 
+   * @param url The URL that we want to ultimately connect to.
+   * @param proxyHost The proxy host.
+   * @param proxyPort The proxy port.
+   * @return A connected socket to the proxy server. 
+   * @throws IOException 
+   */
+  private Socket buildTunnelSocket(URL url, String proxyHost, int proxyPort) throws IOException {
+
+	  StringBuffer httpHeader = new StringBuffer();
+	  httpHeader.append(getConnectMethod(url));
+	  httpHeader.append(getProxyAuthentication());       
+	  httpHeader.append(NEW_LINE);
+    
+	  Socket tunnel = new Socket(proxyHost, proxyPort);
+    
+	  InputStream  is = tunnel.getInputStream();
+	  OutputStream os = tunnel.getOutputStream();
+    
+	  os.write(httpHeader.toString().getBytes(DEFAULT_HTTP_HEADER_ENCODING));        
+	  os.flush();
+    
+	  HTTPResponse httpResponse = new HTTPResponse();
+	  readHTTPResponseHeader(is, httpResponse);
+    
+	  int code = httpResponse.getStatusCode();
+
+	  // ensure we are successfully connected to the proxy
+	  if (code != HTTP_CODE_OK)
+		  throw new HTTPException(code, httpResponse.getStatusMessage(), httpResponse.getHeaders());
+	  
+	  return tunnel;
+  }
+  
   private Socket buildSocket(URL url) throws UnknownHostException, IOException
   {
     Socket s = null;
@@ -492,8 +550,9 @@
 
       if (proxyHost != null && proxyHost.length() > 0 && !isHostInNonProxyHosts(host, nonProxyHosts, DEFAULT_CASE_SENSITIVE_FOR_HOST_NAME))
       {
-        // TODO:
         // SSL with proxy server
+        Socket tunnel = buildTunnelSocket(url, proxyHost, proxyPort);       
+        s = ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket(tunnel, host, port, true);    	  
       }
       else
         s = SSLSocketFactory.getDefault().createSocket(host, (port > 0 ? port : DEFAULT_HTTPS_PORT));
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/css/windows.css b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/css/windows.css
index 4e15f84..9c0d2b9 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/css/windows.css
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/css/windows.css
@@ -43,3 +43,5 @@
 .innerrangefragtable {width:100%; border-left:0px solid #B8B4A3; border-right:1px solid #B8B4A3; border-top:1px solid #B8B4A3; border-bottom:0px solid #B8B4A3;}
 .textareaenter {font: icon; font-size: 14px; color: Black; border-style:solid; border-width : 1px; border-color: #C7C5B2; width:100%; height:150px; }
 .bigtextareaenter {font: icon; font-size: 14px; color: Black; border-style:solid; border-width : 1px; border-color: #C7C5B2; width:100%; height:300px; }
+
+iframe {border-width: 2px; border-style: inset; }
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/actions/SelectFavoritesUserDefUDDIRegistryNodeActionJSP.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/actions/SelectFavoritesUserDefUDDIRegistryNodeActionJSP.jsp
new file mode 100644
index 0000000..aef1198
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/actions/SelectFavoritesUserDefUDDIRegistryNodeActionJSP.jsp
@@ -0,0 +1,37 @@
+<%
+/*******************************************************************************
+ * Copyright (c) 2001, 2004 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+%>
+<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.constants.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.actions.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.perspective.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.favorites.constants.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.favorites.actions.SelectFavoritesUserDefUDDIRegistryNodeAction" %>
+
+<jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
+<%
+// Prepare the action.
+SelectFavoritesUserDefUDDIRegistryNodeAction action = new SelectFavoritesUserDefUDDIRegistryNodeAction(controller);
+
+// Load the parameters for the action from the servlet request.
+action.populatePropertyTable(request);
+
+// Run the action and obtain the return code (fail/success).
+boolean actionResult = action.execute();
+
+//make sure to refresh node view
+action.setTreeRefreshNeeded();
+
+
+// Determine if the action was added to the history list.
+boolean isAddedToHistory = action.isAddedToHistory();
+%>
+<%@ include file="/actions/SelectNodeAction.inc" %>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/fav_status_content.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/fav_status_content.jsp
index f6e1493..a37fcd6 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/fav_status_content.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/fav_status_content.jsp
@@ -1,16 +1,20 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
-<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.favorites.perspective.*" %>
+<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.favorites.perspective.*,
+	org.eclipse.wst.ws.internal.explorer.platform.util.*" %>
 
 <jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
 <%
@@ -28,7 +32,7 @@
     <tr>
       <td>
         <pre>
-<%=favPerspective.getMessageQueue().getMessagesFromList()%>
+<%=HTMLUtils.charactersToHTMLEntitiesStrict(favPerspective.getMessageQueue().getMessagesFromList())%>
         </pre>
       </td>
     </tr>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/forms/FavoritesUserDefUDDIRegistryDetailsPage.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/forms/FavoritesUserDefUDDIRegistryDetailsPage.jsp
index eba10a0..82d003c 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/forms/FavoritesUserDefUDDIRegistryDetailsPage.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/favorites/forms/FavoritesUserDefUDDIRegistryDetailsPage.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060912   141796 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.perspective.*,
@@ -50,9 +53,8 @@
     <%
     if (selectedElement instanceof FavoritesUserDefUDDIRegistryElement) {
         FavoritesUserDefUDDIRegistryElement regElement = (FavoritesUserDefUDDIRegistryElement)selectedElement;
-    %>
-
-        <%
+        regElement.refreshMeta();      
+    
         String version = regElement.getVersion();
         if (version != null)
         {
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/forms/ImportToWorkbenchForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/forms/ImportToWorkbenchForm.jsp
index 8ded419..af360b6 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/forms/ImportToWorkbenchForm.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/forms/ImportToWorkbenchForm.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.constants.*,
@@ -89,7 +92,7 @@
        wsdlFileName = wsdlURL.substring(lastSeparatorPos+1,wsdlURL.length());
    }
 %>   
-            <input type="text" id="input_imported_file_name" name="<%=ActionInputs.IMPORTED_FILE_NAME%>" value="<%=wsdlFileName%>" size=50 class="textenter">
+            <input type="text" id="input_imported_file_name" name="<%=ActionInputs.IMPORTED_FILE_NAME%>" value="<%=HTMLUtils.charactersToHTMLEntitiesStrict(wsdlFileName)%>" size=50 class="textenter">
           </td>
         </tr>
     </table>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/forms/ImportWSDLAndWSILToWorkbenchForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/forms/ImportWSDLAndWSILToWorkbenchForm.jsp
index 2122afe..8387e42 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/forms/ImportWSDLAndWSILToWorkbenchForm.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/forms/ImportWSDLAndWSILToWorkbenchForm.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.constants.*,
@@ -109,7 +112,7 @@
      wsdlFileName = wsdlURL.substring(lastSeparatorPos+1,wsdlURL.length());
  }
 %>   
-          <input type="text" id="input_imported_wsdl_file_name" name="<%=ActionInputs.IMPORTED_FILE_NAME%>" value="<%=wsdlFileName%>" size=50 class="textenter">
+          <input type="text" id="input_imported_wsdl_file_name" name="<%=ActionInputs.IMPORTED_FILE_NAME%>" value="<%=HTMLUtils.charactersToHTMLEntitiesStrict(wsdlFileName)%>" size=50 class="textenter">
         </td>
       </tr>
     </table>
@@ -144,7 +147,7 @@
  if (wsilFileName == null || wsilFileName.length() <= 0)
    wsilFileName = wsdlFileName.substring(0, wsdlFileName.length()-4) + "wsil";
 %>   
-          <input type="text" id="input_imported_wsil_file_name" name="<%=ActionInputs.WSIL_FILE_NAME%>" value="<%=wsilFileName%>" size=50 class="textenter">
+          <input type="text" id="input_imported_wsil_file_name" name="<%=ActionInputs.WSIL_FILE_NAME%>" value="<%=HTMLUtils.charactersToHTMLEntitiesStrict(wsilFileName)%>" size=50 class="textenter">
         </td>
       </tr>
     </table>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/launch_options_registry.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/launch_options_registry.jsp
index 1005b45..96456b0 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/launch_options_registry.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/launch_options_registry.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060515   128602 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.perspective.*,
@@ -17,6 +20,7 @@
   org.eclipse.wst.ws.internal.explorer.platform.util.URLUtils" %>
 
 <%
+  request.setCharacterEncoding("UTF-8"); 
   String key = null;
   Hashtable options = new Hashtable();
   Enumeration paramNames = request.getParameterNames();
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/actions/LoginAdvancedActionJSP.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/actions/LoginAdvancedActionJSP.jsp
new file mode 100644
index 0000000..7472cf2
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/actions/LoginAdvancedActionJSP.jsp
@@ -0,0 +1,54 @@
+<%
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen  
+ *******************************************************************************/
+%>
+<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.uddi.actions.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.perspective.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.constants.*,
+                                                        java.util.*" %>
+
+
+<jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<script language="javascript" src="<%=response.encodeURL(controller.getPathWithContext("scripts/browserdetect.js"))%>">
+</script>
+<jsp:include page="/uddi/scripts/uddipanes.jsp" flush="true"/>
+</head>
+<body>
+<%
+   // Prepare the action.
+   LoginAdvancedAction action = new LoginAdvancedAction(controller);
+
+   // Load the parameters for the action from the servlet request.
+   boolean inputsValid = action.populatePropertyTable(request);
+
+   if (!action.isSubQueryInitiated())
+   {
+%>
+<%@ include file="/uddi/actions/NewNodeAction.inc" %>
+<%
+   }
+   else
+   {
+%>
+<%@ include file="/uddi/actions/LaunchSubQueryAction.inc" %>
+<%
+   }
+%>
+</body>
+</html>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/actions/LogoutAdvancedActionJSP.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/actions/LogoutAdvancedActionJSP.jsp
new file mode 100644
index 0000000..dd93aec
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/actions/LogoutAdvancedActionJSP.jsp
@@ -0,0 +1,43 @@
+<%
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen  
+ *******************************************************************************/
+%>
+<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.uddi.actions.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.perspective.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.constants.*,
+                                                        java.util.*" %>
+
+
+<jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<script language="javascript" src="<%=response.encodeURL(controller.getPathWithContext("scripts/browserdetect.js"))%>">
+</script>
+<jsp:include page="/uddi/scripts/uddipanes.jsp" flush="true"/>
+</head>
+<body>
+<%
+   // Prepare the action.
+   LogoutAdvancedAction action = new LogoutAdvancedAction(controller);
+
+   // Load the parameters for the action from the servlet request.
+   boolean inputsValid = true; //action.populatePropertyTable(request);
+
+%>
+<%@ include file="/uddi/actions/NewNodeAction.inc" %>
+</body>
+</html>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/LoginUddiForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/LoginUddiForm.jsp
new file mode 100644
index 0000000..e1e9cdf
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/LoginUddiForm.jsp
@@ -0,0 +1,87 @@
+<%
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen  
+ *******************************************************************************/
+%>
+<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.actions.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.perspective.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.datamodel.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.constants.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.util.*,
+                                                        org.uddi4j.datatype.business.*,
+                                                        org.uddi4j.datatype.tmodel.TModel,
+                                                        org.uddi4j.datatype.*,
+                                                        org.uddi4j.util.*,
+                                                        java.util.*" %>
+
+<jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
+<%
+   UDDIPerspective uddiPerspective = controller.getUDDIPerspective();
+   NodeManager navigatorManager = uddiPerspective.getNavigatorManager();
+   // selectedNode must be a registry node.
+   Node regNode = navigatorManager.getSelectedNode();
+   regNode.getToolManager().setSelectedToolId(1);
+   List tools = regNode.getCurrentToolManager().getTools();
+   Iterator iter = tools.iterator();
+   Tool t = null;
+   FormTool formTool = (FormTool)(regNode.getCurrentToolManager().getSelectedTool());
+   RegistryElement regElement = (RegistryElement)regNode.getTreeElement();
+%>
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <title>New Login Form</title>
+  <link rel="stylesheet" type="text/css" href="<%=response.encodeURL(controller.getPathWithContext("css/windows.css"))%>">
+<script language="javascript" src="<%=response.encodeURL(controller.getPathWithContext("scripts/browserdetect.js"))%>">
+</script>
+<jsp:include page="/scripts/formsubmit.jsp" flush="true"/>
+<script language="javascript">
+  function showMainForm(publishValue)
+  {
+    var loadScreenTable = document.getElementById("loadScreen");
+    if (loadScreenTable.rows.length > 0)
+      loadScreenTable.deleteRow(0);
+    document.getElementById("mainScreen").style.display = "";
+  }
+
+</script>
+</head>
+<body class="contentbodymargin">
+  <div id="contentborder">
+    <table id="loadScreen">
+      <tr>
+        <td class="labels">
+          <%=controller.getMessage("MSG_LOAD_IN_PROGRESS")%>
+        </td>
+      </tr>
+    </table>
+    <div id="mainScreen" >
+<%
+   String titleImagePath = "uddi/images/publish_highlighted.gif";
+   String title = "Login";
+%>
+<%@ include file="/forms/formheader.inc" %>
+    </div>
+    <form action="<%=response.encodeURL(controller.getPathWithContext("uddi/actions/LoginAdvancedActionJSP.jsp"))%>" method="post" target="<%=FrameNames.PERSPECTIVE_WORKAREA%>" enctype="multipart/form-data">
+    <jsp:include page="/uddi/forms/login_authentication_table.jsp" flush="true"/>
+    <jsp:include page="/forms/simpleCommon_table.jsp" flush="true"/>
+  </form>
+  </div>
+<script language="javascript">
+  showMainForm(0);
+</script>
+</body>
+</html>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/OpenPrivateRegistryForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/OpenPrivateRegistryForm.jsp
deleted file mode 100644
index ac44704..0000000
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/OpenPrivateRegistryForm.jsp
+++ /dev/null
@@ -1,111 +0,0 @@
-<%
-/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-%>
-<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.favorites.datamodel.*,
-                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*,
-                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.*,
-                                                        org.eclipse.wst.ws.internal.explorer.platform.perspective.*,
-                                                        org.eclipse.wst.ws.internal.explorer.platform.constants.*,
-                                                        org.eclipse.wst.ws.internal.explorer.platform.datamodel.*,
-                                                        org.eclipse.wst.ws.internal.explorer.platform.util.*,
-                                                        java.util.*" %>
-
-<jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
-<%
-UDDIPerspective uddiPerspective = controller.getUDDIPerspective();
-NodeManager navigatorManager = uddiPerspective.getNavigatorManager();
-UDDIMainNode uddiMainNode = (UDDIMainNode)navigatorManager.getRootNode();
-OpenRegistryTool openRegistryTool = (OpenRegistryTool)(uddiMainNode.getCurrentToolManager().getSelectedTool());
-%>
-<script language="javascript">
-  function toInquiryURL()
-  {
-    var inputHost = document.getElementById("privateRegistryHost");
-    var inputPort = document.getElementById("privateRegistryPort");
-    var inputInquiryURL = document.getElementById("privateRegistryInquiryURL");
-    var inputPublishURL = document.getElementById("privateRegistryPublishURL");
-    inputInquiryURL.value = "http://" + inputHost.value + ":" + inputPort.value + "/uddisoap/inquiryapi";
-    inputPublishURL.value = "http://" + inputHost.value + ":" + inputPort.value + "/uddisoap/publishapi";
-  }
-</script>
-<form id="openPrivateRegistryForm" action="<%=response.encodeURL(controller.getPathWithContext("uddi/actions/OpenRegistryActionJSP.jsp"))%>" method="post" target="<%=FrameNames.PERSPECTIVE_WORKAREA%>" enctype="multipart/form-data" onSubmit="return handleSubmit(this)" style="display:none;">
-  <input type="hidden" id="privateRegistryPublishURL" name="<%=UDDIActionInputs.PUBLISH_URL%>">
-  <input type="hidden" name="<%=UDDIActionInputs.UDDI_USERNAME%>" value="UNAUTHENTICATED">
-  <input type="hidden" name="<%=UDDIActionInputs.UDDI_PASSWORD%>" value="">
-  <table width="95%" border=0 cellpadding=3 cellspacing=0>
-    <tr>
-      <td class="labels" height=25 valign="bottom">
-        <label for="privateRegistryName"><%=uddiPerspective.getMessage("FORM_LABEL_REGISTRY_NAME")%></label>
-        <%
-        if (!openRegistryTool.isInputValid(UDDIActionInputs.REGISTRY_NAME))
-        {
-        %>
-          <%=HTMLUtils.redAsterisk()%>
-        <%
-        }
-        %>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        <input type="text" id="privateRegistryName" name="<%=UDDIActionInputs.REGISTRY_NAME%>" value="<%=uddiPerspective.getMessage("DEFAULT_REGISTRY_NAME_WEBSPHERE")%>" class="textenter">
-      </td>
-    </tr>
-    <tr>
-      <td class="labels" height=25 valign="bottom">
-        <label for="privateRegistryHost"><%=uddiPerspective.getMessage("FORM_LABEL_REGISTRY_HOST")%></label>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        <input type="text" id="privateRegistryHost" value="localhost" onkeyup="javascript:toInquiryURL()" onpaste="javascript:toInquiryURL()" class="textenter">
-      </td>
-    </tr>
-    <tr>
-      <td class="labels" height=25 valign="bottom">
-        <label for="privateRegistryPort"><%=uddiPerspective.getMessage("FORM_LABEL_REGISTRY_PORT")%></label>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        <input type="text" id="privateRegistryPort" value="9080" onkeyup="javascript:toInquiryURL()" onpaste="javascript:toInquiryURL()" class="textenter">
-      </td>
-    </tr>
-    <tr>
-      <td class="labels" height=30 valign="bottom">
-        <label for="privateRegistryInquiryURL"><%=uddiPerspective.getMessage("FORM_LABEL_INQUIRY_URL")%></label>
-        <%
-        if (!openRegistryTool.isInputValid(UDDIActionInputs.INQUIRY_URL))
-        {
-        %>
-          <%=HTMLUtils.redAsterisk()%>
-        <%
-        }
-        %>
-      </td>
-    </tr>
-    <tr>
-      <td>
-        <input type="text" id="privateRegistryInquiryURL" name="<%=UDDIActionInputs.INQUIRY_URL%>" class="textenter">
-      </td>
-    </tr>
-    <tr>
-      <td class="labels" height=40 valign="bottom">
-        <input type="checkbox" id="privateRegistryCategories" name="<%=UDDIActionInputs.CHECK_USER_DEFINED_CATEGORIES%>"><label for="privateRegistryCategories"><%=uddiPerspective.getMessage("FORM_LABEL_CHECK_USER_DEFINED_CATEGORIES")%></label>
-      </td>
-    </tr>
-  </table>
-  <jsp:include page="/forms/simpleCommon_table.jsp" flush="true"/>
-</form>
-<script language="javascript">
-  toInquiryURL();
-</script>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/OpenRegistryForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/OpenRegistryForm.jsp
index 471ea49..880bc3e 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/OpenRegistryForm.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/OpenRegistryForm.jsp
@@ -1,13 +1,15 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060515   135307 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.favorites.datamodel.*,
@@ -78,21 +80,7 @@
       document.getElementById("mainScreen").style.display = "";
     }
 
-    function toggleRegistryType(isPrivateRegistry)
-    {
-      var openRegistryForm = document.getElementById("openRegistryForm");
-      var openPrivateRegistryForm = document.getElementById("openPrivateRegistryForm");
-      if (isPrivateRegistry)
-      {
-        openRegistryForm.style.display = "none";
-        openPrivateRegistryForm.style.display = "";
-      }
-      else
-      {
-        openRegistryForm.style.display = "";
-        openPrivateRegistryForm.style.display = "none";
-      }
-    }
+   
   </script>
 </head>
 <body dir="<%=org.eclipse.wst.ws.internal.explorer.platform.util.DirUtils.getDir()%>" class="contentbodymargin">
@@ -117,13 +105,7 @@
           </td>
         </tr>
       </table>
-      <table width="95%" border=0 cellpadding=3 cellspacing=0>
-        <tr>
-          <td class="labels" height=40 valign="bottom">
-            <input type="checkbox" id="registryType" onClick="javascript:toggleRegistryType(this.checked)"><label for="registryType"><%=uddiPerspective.getMessage("FORM_LABEL_IS_WEBSPHERE_UDDI_REGISTRY")%></label>
-          </td>
-        </tr>
-      </table>
+      
       <form id="openRegistryForm" action="<%=response.encodeURL(controller.getPathWithContext("uddi/actions/OpenRegistryActionJSP.jsp"))%>" method="post" target="<%=FrameNames.PERSPECTIVE_WORKAREA%>" enctype="multipart/form-data" onSubmit="return handleSubmit(this)">
         <table width="95%" border=0 cellpadding=3 cellspacing=0>
           <tr>
@@ -189,7 +171,7 @@
       <script language="javascript">
         setDefaults();
       </script>
-      <jsp:include page="/uddi/forms/OpenPrivateRegistryForm.jsp" flush="true"/>
+      
     </div>
   </div>
 </body>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/RegDetailsForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/RegDetailsForm.jsp
index efaf642..1dba225 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/RegDetailsForm.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/RegDetailsForm.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060912   141796 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*,
@@ -30,6 +33,7 @@
    ToolManager currentToolManager = registryNode.getCurrentToolManager();
    FormTool formTool = (FormTool)(currentToolManager.getSelectedTool());   
    RegistryElement regElement = (RegistryElement)registryNode.getTreeElement();
+   regElement.refreshMeta();
 %>
 <html>
 <head>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/RegFindForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/RegFindForm.jsp
index cf1523a..f5b1f93 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/RegFindForm.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/RegFindForm.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*,
@@ -673,7 +676,7 @@
           </td>
         </tr>
         <tr>
-          <td> <input id="queryName" type="text" value="<%=HTMLUtils.JSMangle(uddiPerspective.getMessage("DEFAULT_QUERY_NAME"))%>" class="textenter"> </td>
+          <td> <input id="queryName" type="text" value="<%=HTMLUtils.charactersToHTMLEntitiesStrict(uddiPerspective.getMessage("DEFAULT_QUERY_NAME"))%>" class="textenter"> </td>
         </tr>
       </table>
       <div id="queryInfoItemList" style="display:none;">
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/authentication_table.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/authentication_table.jsp
index 685543d..6286f10 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/authentication_table.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/authentication_table.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*,
@@ -73,13 +76,13 @@
       </td>
     </tr>
     <tr>
-      <td><input type="text" id="<%=tableContainerId+"_input_user_id"%>" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_USERID%>" value="<%=username%>" class="textenter"></td>
+      <td><input type="text" id="<%=tableContainerId+"_input_user_id"%>" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_USERID%>" value="<%=HTMLUtils.charactersToHTMLEntitiesStrict(username)%>" class="textenter"></td>
     </tr>
     <tr>
       <td class="labels" height=30 valign="bottom"><label for="<%=tableContainerId+"_input_password"%>"><%=uddiPerspective.getMessage("FORM_LABEL_PASSWORD")%></td></label>
     </tr>
     <tr>
-      <td><input type="password" id="<%=tableContainerId+"_input_password"%>" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_PASSWORD%>" value="<%=password%>" class="textenter"></td>
+      <td><input type="password" id="<%=tableContainerId+"_input_password"%>" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_PASSWORD%>" value="<%=HTMLUtils.charactersToHTMLEntitiesStrict(password)%>" class="textenter"></td>
     </tr>
   </table>
 </div>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/login_authentication_table.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/login_authentication_table.jsp
new file mode 100644
index 0000000..12a8c5a
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/forms/login_authentication_table.jsp
@@ -0,0 +1,79 @@
+<%
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   136449 brunssen@us.ibm.com - Vince Brunssen  
+ *******************************************************************************/
+%>
+<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.constants.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.AbstractUDDIElement,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.uddi.datamodel.RegistryElement,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.perspective.*,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.datamodel.TreeElement,
+                                                        org.eclipse.wst.ws.internal.explorer.platform.util.*" %>
+
+<jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
+<jsp:useBean id="sectionHeaderInfo" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.SectionHeaderInfo" scope="request"/>
+<%
+UDDIPerspective uddiPerspective = controller.getUDDIPerspective();
+NodeManager navigatorManager = uddiPerspective.getNavigatorManager();
+Node selectedNode = navigatorManager.getSelectedNode();
+TreeElement selectedElement = selectedNode.getTreeElement();
+
+RegistryElement regElement = ((AbstractUDDIElement)selectedElement).getRegistryElement();
+String username = regElement.getUserId();
+String password = regElement.getCred();
+String publishURL = regElement.getPublishURL();
+
+if (username == null) {
+	username = "";
+}
+
+if (password == null) {
+	password = "";
+}
+
+if (publishURL == null) {
+	publishURL = "";
+}
+
+%>
+  <input type="hidden" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_OWNED%>" value="true"/>
+  <input type="hidden" name="<%=UDDIActionInputs.QUERY_NAME%>" value="Query Results"/>
+  <input type="hidden" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_MAX_SEARCH_SET%>" value="100"/>
+  <input type="hidden" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_MAX_RESULTS%>" value="10"/>
+  <table width="95%" border=0 cellpadding=3 cellspacing=0>
+    <tr>
+      <td class="labels" height=30 valign="bottom">
+         <label><%=uddiPerspective.getMessage("FORM_LABEL_PUBLISH_URL")%></label>
+      </td>
+    </tr>
+    <tr>
+       <td>
+          <input type="text" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_PUBLISH_URL%>" value="<%=publishURL%>" class="textenter"/>
+       </td>
+    </tr>
+    <tr>
+      <td class="labels" height=30 valign="bottom">
+        <label><%=uddiPerspective.getMessage("FORM_LABEL_USERID")%></label>
+      </td>
+    </tr>
+    <tr>
+      <td><input type="text" value="<%=username%>" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_USERID%>" class="textenter"/></td>
+    </tr>
+    <tr>
+      <td class="labels" height=30 valign="bottom"><label><%=uddiPerspective.getMessage("FORM_LABEL_PASSWORD")%></label></td>
+    </tr>
+    <tr>
+      <td><input type="password" value ="<%=password%>" name="<%=UDDIActionInputs.QUERY_INPUT_ADVANCED_PASSWORD%>" class="textenter"/></td>
+    </tr>
+  </table>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/status_content.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/status_content.jsp
index 57a5a33..1d626ee 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/status_content.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/uddi/status_content.jsp
@@ -1,16 +1,20 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
-<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*" %>
+<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.uddi.perspective.*,
+	org.eclipse.wst.ws.internal.explorer.platform.util.*" %>
 
 <jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
 <%
@@ -28,7 +32,7 @@
     <tr>
       <td>
         <pre>
-<%=uddiPerspective.getMessageQueue().getMessagesFromList()%>
+<%=HTMLUtils.charactersToHTMLEntitiesStrict(uddiPerspective.getMessageQueue().getMessagesFromList())%>
         </pre>
       </td>
     </tr>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/FragmentsSoapView.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/FragmentsSoapView.jsp
index 53d8b7d..01caa92 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/FragmentsSoapView.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/FragmentsSoapView.jsp
@@ -11,6 +11,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060222   127443 jesper@selskabet.org - Jesper S Moller
+ * 20060726   144824 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsdl.perspective.*,
@@ -60,7 +61,19 @@
        Element[] instanceDocuments = frag.genInstanceDocumentsFromParameterValues(!operElement.isUseLiteral(), soapEnvelopeNamespaceTable, XMLUtils.createNewDocument(null));
        for (int i = 0; i < instanceDocuments.length; i++)
        {
-         sourceContent.append(XMLUtils.serialize(instanceDocuments[i], true));
+    	 String serializedFragment = XMLUtils.serialize(instanceDocuments[i], true);
+		 if (serializedFragment == null)
+		 {
+			 // On Some JRE's (Sun java 5) elements with an attribute with the xsi
+			 // prefix do not serialize properly because the namespace can not
+			 // be found so the string returned comes back as null. To workaround
+			 // this problem try adding in the namespace declaration attribute
+			 // and retry the serialization (bug 144824)			 
+			 instanceDocuments[i].setAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
+			 serializedFragment = XMLUtils.serialize(instanceDocuments[i], true);
+		 }
+    	 
+    	 sourceContent.append(serializedFragment);
          sourceContent.append(HTMLUtils.LINE_SEPARATOR);
        }     
      }
@@ -153,7 +166,7 @@
     </td>
   </tr>
 </table>
-<table
+<table>
 <%
     }
 
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/InvokeWSDLOperationForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/InvokeWSDLOperationForm.jsp
index 938de26..9d9e7ea 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/InvokeWSDLOperationForm.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/InvokeWSDLOperationForm.jsp
@@ -1,3 +1,18 @@
+<%
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060512   121210 mahutch@ca.ibm.com - Mark Hutchinson
+ *******************************************************************************/
+%>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsdl.perspective.*,
                                                         org.eclipse.wst.ws.internal.explorer.platform.wsdl.datamodel.*,
                                                         org.eclipse.wst.ws.internal.explorer.platform.wsdl.constants.*,
@@ -109,7 +124,45 @@
     <table>
       <tr>
         <td class="labels">
-          <%=wsdlPerspective.getMessage("FORM_LABEL_INVOKE_WSDL_OPERATION_DESC")%>
+
+        <%           
+		//here we determine if there are any input parameters for this operation
+		boolean hasInput = true;
+		selectedNode = wsdlPerspective.getNodeManager().getSelectedNode();  
+		Iterator iter = operElement.getOrderedBodyParts().iterator();        
+		String operationName = operElement.getName();
+
+		while (iter.hasNext())
+		{
+			Part part = (Part)iter.next(); 
+			IXSDFragment frag = operElement.getFragment(part);  
+			org.eclipse.xsd.XSDTypeDefinition def = frag.getXSDTypeDefinition();
+			//we check the type of the operation's input message
+			if (def == null)
+			{
+				//this is the pattern <element name="foo"></element>
+				hasInput = false;
+			}
+			else
+			{
+				org.w3c.dom.Element element = def.getElement();				
+				if (element.getLocalName().equals("complexType") && !element.hasChildNodes())
+				{	//this is the pattern  <element name="foo"><complexType/></element>
+					//there could be other patterns with no input but they are uncommon
+					hasInput = false;
+				}
+			} 
+      	}
+		if (hasInput)
+		{
+			out.print(wsdlPerspective.getMessage("FORM_LABEL_INVOKE_WSDL_OPERATION_DESC"));
+		}
+		else
+		{
+			out.print(wsdlPerspective.getMessage("FORM_LABEL_INVOKE_WSDL_OPERATION_DESC_NO_INPUT", operationName ));
+		}
+        %>
+         
         </td>
       </tr>
     </table>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/OpenWSDLForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/OpenWSDLForm.jsp
index 1b0a057..15ae52e 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/OpenWSDLForm.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/OpenWSDLForm.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.constants.*,
@@ -67,7 +70,7 @@
           </tr>
           <tr>
             <td colspan=3>
-              <input type="text" id="input_wsdl_url" name="<%=ActionInputs.QUERY_INPUT_WSDL_URL%>" value="<%=wsdlUrl%>" size="50" class="textenter">
+              <input type="text" id="input_wsdl_url" name="<%=ActionInputs.QUERY_INPUT_WSDL_URL%>" value="<%=HTMLUtils.charactersToHTMLEntitiesStrict(wsdlUrl)%>" size="50" class="textenter">
             </td>
           </tr>
         </table>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/ReadOnlyFragmentsSoapView.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/ReadOnlyFragmentsSoapView.jsp
index 80c3687..4931ebf 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/ReadOnlyFragmentsSoapView.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/forms/ReadOnlyFragmentsSoapView.jsp
@@ -1,13 +1,17 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060509   103072 mahutch@ca.ibm.com - Mark Hutchinson
+ * 20060515   140607 mahutch@ca.ibm.com - Mark Hutchinson
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.perspective.Node,
@@ -75,7 +79,7 @@
   <table width="95%" height="50%" border=0 cellpadding=0 cellpadding=0>
     <tr>
       <td>
-        <iframe src="<%=response.encodeURL(controller.getPathWithContext(wsdlPerspective.getSOAPEnvelopeXMLLink(WSDLActionInputs.SOAP_ENVELOPE_TYPE_REQUEST)))%>" width="95%" height="100%"></iframe>
+        <iframe name="requestEnvelopeFrame" frameborder=0 src="<%=response.encodeURL(controller.getPathWithContext(wsdlPerspective.getSOAPEnvelopeXMLLink(WSDLActionInputs.SOAP_ENVELOPE_TYPE_REQUEST)))%>" width="95%" height="100%"></iframe>
       </td>
     </tr>
   </table>
@@ -101,7 +105,8 @@
   <table width="95%" height="50%" border=0 cellpadding=0 cellpadding=0>
     <tr>
       <td>
-        <iframe src="<%=response.encodeURL(controller.getPathWithContext(wsdlPerspective.getSOAPEnvelopeXMLLink(WSDLActionInputs.SOAP_ENVELOPE_TYPE_RESPONSE)))%>" width="95%" height="100%"></iframe>
+      	<!-- the onload call is to fix bug 140607 in bugzilla -->
+        <iframe onload="javascript:requestEnvelopeFrame.document.location.reload()" frameborder=0 src="<%=response.encodeURL(controller.getPathWithContext(wsdlPerspective.getSOAPEnvelopeXMLLink(WSDLActionInputs.SOAP_ENVELOPE_TYPE_RESPONSE)))%>" width="95%" height="100%"></iframe>
       </td>
     </tr>
   </table>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/soap_envelope_xml.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/soap_envelope_xml.jsp
index 1b6ee0d..f1a0b01 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/soap_envelope_xml.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/soap_envelope_xml.jsp
@@ -9,12 +9,8 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-%>
-<%@ page contentType="text/xml; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsdl.perspective.*,
-                                                       org.eclipse.wst.ws.internal.explorer.platform.wsdl.constants.*" %>
-
-<jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
-<%
+%><%@ page contentType="text/xml; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsdl.perspective.*,
+                                                       org.eclipse.wst.ws.internal.explorer.platform.wsdl.constants.*" %><jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/><%
 int soapEnvelopeType = Integer.parseInt(request.getParameter(WSDLActionInputs.SOAP_ENVELOPE_TYPE));
 WSDLPerspective wsdlPerspective = controller.getWSDLPerspective();
 SOAPMessageQueue soapMessageQueue;
@@ -29,5 +25,4 @@
     break;
 }
 String messages = soapMessageQueue.getMessagesFromList();
-%>
-<%=messages%>
+%><%=messages%>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/wsdl_status_content.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/wsdl_status_content.jsp
index 95ba86f..863eb2d 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/wsdl_status_content.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl/wsdl_status_content.jsp
@@ -1,16 +1,20 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
-<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsdl.perspective.*" %>
+<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsdl.perspective.*,
+	org.eclipse.wst.ws.internal.explorer.platform.util.*" %>
 
 <jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
 <%
@@ -29,7 +33,7 @@
     <tr>
       <td>
         <pre>
-<%=wsdlPerspective.getMessageQueue().getMessagesFromList()%>
+<%=HTMLUtils.charactersToHTMLEntitiesStrict(wsdlPerspective.getMessageQueue().getMessagesFromList())%>
         </pre>
       </td>
     </tr>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl_content.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl_content.jsp
index 95217c3..8d26fe9 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl_content.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsdl_content.jsp
@@ -11,6 +11,8 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060317   127456 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060524   142499 jeffliu@ca.ibm.com - Jeffrey Liu
+ * 20070109   169553 makandre@ca.ibm.com - Andrew Mak
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.core.resources.*,
@@ -39,7 +41,9 @@
    Controller controller = (Controller)currentSession.getAttribute("controller");
    int wsdlType = controller.getWSDLType();
    
-   WebServiceCategory mainCategory = null;
+   Vector wsInfoCache = new Vector();
+   int workspaceStart = -1;
+   int workspaceEnd   = -1;
    
 %>
 <html>
@@ -140,7 +144,14 @@
 <%
        Iterator it = finder.getWebServicesByCategory(category,null);
        if(category.getId().equals("org.eclipse.wst.ws.internal.wsfinder.category.workspace")){
-       mainCategory = category;
+
+    	   workspaceStart = wsInfoCache.size();
+    	   workspaceEnd   = workspaceStart;
+    	   
+    	   while (it.hasNext()) {
+        	   wsInfoCache.add(it.next());
+        	   workspaceEnd++;
+    	   }
 %>
       document.getElementById("projects").style.display = ""; 
       fillWebProjects();
@@ -158,6 +169,7 @@
 %>
       document.forms[0].<%=ActionInputs.QUERY_INPUT_WEBPROJECT_WSDL_URL%>.options[x++] = new Option("<%=wsdl%>", "<%=wsdl%>"); 
 <%
+           wsInfoCache.add(wsi);
          }
        }
 %>
@@ -176,7 +188,7 @@
       document.forms[0].webProjectWSDLURL.options[0] = null;
 <%
      TreeSet urls = new TreeSet();
-     Iterator wsIterator = WebServiceFinder.instance().getWebServices(null);    
+     Iterator wsIterator = wsInfoCache.iterator();
      while (wsIterator.hasNext())
      {
        WebServiceInfo wsInfo = (WebServiceInfo)wsIterator.next();
@@ -233,7 +245,7 @@
          String httpsProtocol = "https://";
          wsdlURLs_.removeAllElements();
 
-		 Iterator ws = WebServiceFinder.instance().getWebServicesByCategory(mainCategory,null);        
+		 Iterator ws = wsInfoCache.subList(workspaceStart, workspaceEnd).iterator();
 
          while (ws.hasNext())
          {
@@ -346,13 +358,13 @@
           <div id="projects" style="display:none;">          
             <table width="95%" border=0 cellpadding=3 cellspacing=0>              
               <tr>
-                <td height=30 valign="bottom" class="labels">Workspace Project</td>
+                <td height=30 valign="bottom" class="labels"><%=controller.getMessage("FORM_LABEL_WSDL_SOURCE_WEBPROJECTS")%></td>
               </tr>
               <tr>
                 <td nowrap>
                   <select name="project" onChange="fillWSDLFiles(this.value)" class="selectlist">
                   </select>
-                  <input type="button" value="Refresh" onClick="document.location.reload()" class="button">
+                  <input type="button" value="<%=controller.getMessage("FORM_BUTTON_REFRESH")%>" onClick="document.location.reload()" class="button">
                 </td>
               </tr>
             </table>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/actions/ClearNodeConfirmJSP.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/actions/ClearNodeConfirmJSP.jsp
index 5c1337f..9fe32ba 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/actions/ClearNodeConfirmJSP.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/actions/ClearNodeConfirmJSP.jsp
@@ -7,12 +7,16 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060906 155434   makandre@ca.ibm.com - Andrew Mak, Back Slash '\' not appearing in "WSIL no longer resolvable" error message
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsil.constants.WsilFrameNames,
                                                                                           org.eclipse.wst.ws.internal.explorer.platform.constants.*,
-                                   					                    org.eclipse.wst.ws.internal.explorer.platform.wsil.actions.ClearWSILAction"%>
+                                   					                    org.eclipse.wst.ws.internal.explorer.platform.wsil.actions.ClearWSILAction,
+                                   					                    org.eclipse.wst.ws.internal.explorer.platform.util.*"%>
 
 <jsp:include page="/wsil/scripts/wsilPanes.jsp" flush="true"/>
 <jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
@@ -22,7 +26,7 @@
 </head>
 <body dir="<%=org.eclipse.wst.ws.internal.explorer.platform.util.DirUtils.getDir()%>">
     <script language="javascript">
-        if (confirm("<%=controller.getWSILPerspective().getMessage("MSG_CONFIRM_REMOVE_NODE", controller.getWSILPerspective().getNodeManager().getSelectedNode().getNodeName())%>")) {
+        if (confirm("<%=HTMLUtils.JSMangle(controller.getWSILPerspective().getMessage("MSG_CONFIRM_REMOVE_NODE", controller.getWSILPerspective().getNodeManager().getSelectedNode().getNodeName()))%>")) {
             perspectiveWorkArea.location = "<%=response.encodeURL(controller.getPathWithContext(ClearWSILAction.getActionLink(controller.getWSILPerspective().getNodeManager().getSelectedNode().getNodeId())))%>";
         }
         else {
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/forms/OpenWSILForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/forms/OpenWSILForm.jsp
index 0d77081..a99150e 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/forms/OpenWSILForm.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/forms/OpenWSILForm.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.constants.FrameNames,
@@ -63,7 +66,7 @@
     </tr>
     <tr>
       <td>
-        <input type="text" id="input_wsil_url" name="<%=WsilActionInputs.WSIL_URL%>" value="<%=wsilURL%>" size="50" class="textenter">
+        <input type="text" id="input_wsil_url" name="<%=WsilActionInputs.WSIL_URL%>" value="<%=HTMLUtils.charactersToHTMLEntitiesStrict(wsilURL)%>" size="50" class="textenter">
       </td>
     </tr>
   </table>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/forms/WSILImportWSILToWorkbenchForm.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/forms/WSILImportWSILToWorkbenchForm.jsp
index 51336d1..d88b286 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/forms/WSILImportWSILToWorkbenchForm.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/forms/WSILImportWSILToWorkbenchForm.jsp
@@ -1,13 +1,16 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
 <%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsil.perspective.*,
@@ -99,7 +102,7 @@
      wsilFileName = wsilURL.substring(lastSeparatorPos+1, wsilURL.length());
  }
 %>   
-        <input type="text" id="input_imported_wsil_file_name" name="<%=ActionInputs.IMPORTED_FILE_NAME%>" value="<%=wsilFileName%>" size=50 class="textenter">
+        <input type="text" id="input_imported_wsil_file_name" name="<%=ActionInputs.IMPORTED_FILE_NAME%>" value="<%=HTMLUtils.charactersToHTMLEntitiesStrict(wsilFileName)%>" size=50 class="textenter">
       </td>
     </tr>
   </table>
diff --git a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/wsil_status_content.jsp b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/wsil_status_content.jsp
index 959a6f3..e5144f9 100644
--- a/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/wsil_status_content.jsp
+++ b/bundles/org.eclipse.wst.ws.explorer/wsexplorer/wsil/wsil_status_content.jsp
@@ -1,16 +1,20 @@
 <%
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060427   127443 jesper@selskabet.org - Jesper S Moller
  *******************************************************************************/
 %>
-<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsil.perspective.*" %>
+<%@ page contentType="text/html; charset=UTF-8" import="org.eclipse.wst.ws.internal.explorer.platform.wsil.perspective.*,
+	org.eclipse.wst.ws.internal.explorer.platform.util.*" %>
 
 <jsp:useBean id="controller" class="org.eclipse.wst.ws.internal.explorer.platform.perspective.Controller" scope="session"/>
 <%
@@ -28,7 +32,7 @@
     <tr>
       <td>
         <pre>
-<%=wsilPerspective.getMessageQueue().getMessagesFromList()%>
+<%=HTMLUtils.charactersToHTMLEntitiesStrict(wsilPerspective.getMessageQueue().getMessagesFromList())%>
         </pre>
       </td>
     </tr>
diff --git a/bundles/org.eclipse.wst.ws.parser/.cvsignore b/bundles/org.eclipse.wst.ws.parser/.cvsignore
index 6e021a1..64b9b2e 100644
--- a/bundles/org.eclipse.wst.ws.parser/.cvsignore
+++ b/bundles/org.eclipse.wst.ws.parser/.cvsignore
@@ -5,3 +5,4 @@
 parser.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.ws.parser/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.ws.parser/META-INF/MANIFEST.MF
index 8b3fd2a..9fe660e 100644
--- a/bundles/org.eclipse.wst.ws.parser/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.ws.parser/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.ws.parser
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.101.qualifier
 Bundle-Activator: org.eclipse.wst.ws.internal.parser.plugin.ParserPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -12,10 +12,11 @@
  org.eclipse.wst.ws.internal.parser.plugin;x-internal:=true,
  org.eclipse.wst.ws.internal.parser.wsil;x-internal:=true,
  org.eclipse.wst.ws.parser
-Require-Bundle: org.eclipse.wst.wsdl,
- org.wsdl4j,
- org.eclipse.core.runtime,
- org.apache.wsil4j,
- org.uddi4j,
- org.eclipse.wst.command.env.core
+Require-Bundle: org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.apache.wsil4j;bundle-version="[1.0.0,1.1.0)",
+ org.uddi4j;bundle-version="[2.0.4,2.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.ws.parser/about.html b/bundles/org.eclipse.wst.ws.parser/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.ws.parser/about.html
+++ b/bundles/org.eclipse.wst.ws.parser/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.ws.parser/src/org/eclipse/wst/ws/internal/parser/wsil/HTMLHeadHandler.java b/bundles/org.eclipse.wst.ws.parser/src/org/eclipse/wst/ws/internal/parser/wsil/HTMLHeadHandler.java
index 36994bb..e63c60d 100644
--- a/bundles/org.eclipse.wst.ws.parser/src/org/eclipse/wst/ws/internal/parser/wsil/HTMLHeadHandler.java
+++ b/bundles/org.eclipse.wst.ws.parser/src/org/eclipse/wst/ws/internal/parser/wsil/HTMLHeadHandler.java
@@ -1,13 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
  * IBM Corporation - initial API and implementation
- ******************************************************************************/
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060517   142324 rsinha@ca.ibm.com - Rupam Kuehner
+ *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.parser.wsil;
 
@@ -27,7 +30,13 @@
   private final String HEAD_END_TAG = "</head>";
   private final String ROOT_START_TAG = "<root>";
   private final String ROOT_END_TAG = "</root>";
-  private final String UTF8 = "UTF-8";  
+  private final String UTF8 = "UTF-8";
+  
+  //HTML META tag information used to detect the charset.
+  private final String HTML_CONTENT = "content";
+  private final String HTTP_EQUIV = "http-equiv";
+  private final String HTTP_EQUIV_CONTENT_TYPE = "Content-Type";
+  private final String CHARSET = "charset";
   
   // WSIL tag information.
   private final String META = "meta";
@@ -46,6 +55,7 @@
   private String baseURI_;
   private Vector wsils_;
   private Vector discos_;
+  private String byteEncoding = UTF8; //Default to UTF-8.
   
   public HTMLHeadHandler(String baseURI)
   {
@@ -123,8 +133,20 @@
   {
   }
   
-  private void harvestTags(StringBuffer target,String document,String tag)
+  /**
+   * Appends the elements of the provided tag in the provided document to the provided StringBuffer.
+   * @param target
+   * @param document
+   * @param tag
+   * @param encoding
+   * @return boolean false if the value of the encoding parameter matched the detected charset or if no charset was detected.
+   * Returns true if a charset was detected and it did not equal the encoding parameter. If true is returned
+   * the harvesting of the tags would have stopped at the point the charset was detected. The caller
+   * should call this method again with the correct encoding.
+   */
+  private boolean harvestTags(StringBuffer target,String document,String tag, String encoding)
   {
+	boolean changeEncoding = false;
     int index = document.indexOf(START_TAG);
     int documentLength = document.length();
     int tagLength = tag.length();
@@ -136,19 +158,81 @@
         str = document.substring(index,document.indexOf(END_TAG,index+1)+1);
         target.append(str);
         index += str.length();
+        
+        //If tag is META and declares the charset, find out what it is
+        //and if it matches what was passed in. If it matches, continue 
+        //with the parsing and return false when complete. 
+        //If the detected charset is different from what was passed in, 
+        //- change byteEncoding to equal the detected charset.
+        //- stop parsing.
+        //- return true.
+        if (tag.equals(META))
+        {
+          int idxOfContent = str.indexOf(HTML_CONTENT);
+          int idxOfHTTPEQUIV = str.indexOf(HTTP_EQUIV);
+          if (idxOfHTTPEQUIV!= -1 && idxOfContent != -1)
+          {
+        	//Check if the http-equiv attribute is set to Content-Type.
+          	int idxOfHTTPEQUIVOpenQuote = str.indexOf("\"", idxOfHTTPEQUIV+1);
+        	int idxOfHTTPEQUIVClosingQuote = str.indexOf("\"", idxOfHTTPEQUIVOpenQuote+1);
+        	String hTTPEQUIVValueUntrimmed = str.substring(idxOfHTTPEQUIVOpenQuote+1, idxOfHTTPEQUIVClosingQuote);
+        	if (hTTPEQUIVValueUntrimmed.trim().equals(HTTP_EQUIV_CONTENT_TYPE))
+        	{
+        	  //This META tag contains the charset. Get the value of the content attribute
+        	  int idxOfOpenQuote = str.indexOf("\"", idxOfContent+1);
+        	  int idxOfClosingQuote = str.indexOf("\"", idxOfOpenQuote+1);
+        	  String contentValue = str.substring(idxOfOpenQuote+1, idxOfClosingQuote);
+        	  
+        	  //Get the charset
+        	  int idxOfCharSet = contentValue.indexOf(CHARSET);
+        	  int idxOfEquals = contentValue.indexOf("=", idxOfCharSet+CHARSET.length());
+        	  String detectedEncodingValueUntrimmed = contentValue.substring(idxOfEquals+1);
+        	  String detectedEncodingValue = detectedEncodingValueUntrimmed.trim();
+        	  if (!detectedEncodingValue.equals(encoding))
+        	  {
+        	    byteEncoding = detectedEncodingValue;
+        	    changeEncoding = true;
+        	    break;
+        	  }
+            }
+          }
+        }
       }
       else
         index++;
       index = document.indexOf(START_TAG,index);
     }
+    
+    return changeEncoding;
   }
   
+
+  /**
+   * If the provided byte array reperesents the contents of an HTML
+   * document, this method will return a byte array in which
+   * <ul>
+   * <li>the opening and closing HEAD tags are removed and replaced with 
+   * opening and closing <root> tags</li>
+   * <li>only the META and LINK elements are in the HTML document
+   * are included in the contents between the opening and closing
+   * <root> tags.
+   * </ul>
+   * This method will modify the value of the byteEncoding String
+   * attribute on this class if it is something other than
+   * UTF-8. Callers of this method should call getByteEncoding()
+   * after calling this method if they need to know the charset
+   * value used by this method to decode/endcode the byte array.
+   * @param b
+   * @return byte[]
+   */
   public byte[] harvestHeadTags(byte[] b)
   {
     String s;
+    
     try
     {
-      s = new String(b, UTF8);
+    	//Assume the default byte encoding of UTF-8 for now.
+    	s = new String(b, byteEncoding);
     }
     catch (UnsupportedEncodingException uee)
     {
@@ -162,10 +246,51 @@
     if (headStartIndex != -1 && headEndIndex != -1)
     {
       head = s.substring(headStartIndex, headEndIndex+HEAD_END_TAG.length());
-      harvestTags(sb,head,META);
-      harvestTags(sb,head,LINK);
+      boolean encodingChanged = harvestTags(sb,head,META, byteEncoding);
+      if (encodingChanged)
+      {
+    	  //The harvestTags method detected a different charset
+    	  //than the one that was passed in. Start from the beginning
+    	  //with the correct charset.
+    	    String s2;
+    	    try
+    	    {
+    	    	s2 = new String(b, byteEncoding);
+    	    }
+    	    catch (UnsupportedEncodingException uee)
+    	    {
+    	      s2 = new String(b);
+    	    }
+    	    String head2 = s2.toLowerCase();
+    	    int head2StartIndex = head2.indexOf(HEAD_START_TAG);
+    	    int head2EndIndex = head2.indexOf(HEAD_END_TAG);
+    	    sb = new StringBuffer();
+    	    sb.append(ROOT_START_TAG);
+    	    if (head2StartIndex != -1 && head2EndIndex != -1)
+    	    {
+    	      head2 = s2.substring(head2StartIndex, head2EndIndex+HEAD_END_TAG.length());
+    	      harvestTags(sb,head2,META, byteEncoding);
+    	      harvestTags(sb,head2,LINK,byteEncoding);
+    	    }    	  
+      }
+      else
+      {
+        harvestTags(sb,head,LINK,byteEncoding);
+      }
     }
     sb.append(ROOT_END_TAG);
-    return sb.toString().getBytes();
+    try
+    {
+    	return sb.toString().getBytes(byteEncoding);      
+    } catch (UnsupportedEncodingException uee)
+    {
+      return sb.toString().getBytes();
+    }    
+    
   }
-}
\ No newline at end of file
+  
+  public String getByteEncoding()
+  {
+	  return byteEncoding;
+  }
+}
diff --git a/bundles/org.eclipse.wst.ws.parser/src/org/eclipse/wst/ws/internal/parser/wsil/WebServicesParser.java b/bundles/org.eclipse.wst.ws.parser/src/org/eclipse/wst/ws/internal/parser/wsil/WebServicesParser.java
index 1acc20c..583ad9d 100644
--- a/bundles/org.eclipse.wst.ws.parser/src/org/eclipse/wst/ws/internal/parser/wsil/WebServicesParser.java
+++ b/bundles/org.eclipse.wst.ws.parser/src/org/eclipse/wst/ws/internal/parser/wsil/WebServicesParser.java
@@ -1,13 +1,20 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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:
  * IBM Corporation - initial API and implementation
- ******************************************************************************/
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060504   119296 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060517   142324 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060711   150301 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060818   154393 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060906   156420 pmoogk@ca.ibm.com - Peter Moogk
+ *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.parser.wsil;
 
@@ -20,7 +27,6 @@
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.Hashtable;
-
 import javax.wsdl.Definition;
 import javax.wsdl.WSDLException;
 import javax.wsdl.factory.WSDLFactory;
@@ -28,7 +34,6 @@
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
-
 import org.apache.wsil.Abstract;
 import org.apache.wsil.Description;
 import org.apache.wsil.Inspection;
@@ -41,13 +46,16 @@
 import org.apache.wsil.extension.uddi.ServiceDescription;
 import org.apache.wsil.extension.uddi.UDDIConstants;
 import org.apache.wsil.extension.wsdl.WSDLConstants;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.wst.ws.internal.parser.disco.DISCOContractReference;
 import org.eclipse.wst.ws.internal.parser.disco.DISCOParser;
 import org.eclipse.wst.ws.internal.parser.disco.DISCOReference;
 import org.eclipse.wst.wsdl.WSDLPlugin;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
-
 import sun.misc.BASE64Encoder;
 
 public class WebServicesParser
@@ -95,36 +103,94 @@
       return null;
   }
 
-  public WSILDocument getWSILDocument(String wsilURI)
+  /**
+   * 
+   * @param wsilURI
+   * @return
+   * @deprecated replaced with getWSILDocumentVerbose(String, String)
+   */
+  public WSILDocument getWSILDocument(String wsilURI )
   {
     try
     {
-      return getWSILDocumentVerbose(wsilURI);
+      return getWSILDocumentVerbose(wsilURI, "UTF-8" );
     }
     catch (Throwable t)
     {
     }
     return null;
   }
-
-  public WSILDocument getWSILDocumentVerbose(String wsilURI) throws MalformedURLException, IOException, WWWAuthenticationException, WSILException
+  
+  /**
+   * 
+   * @param wsilURI
+   * @return
+   * @throws MalformedURLException
+   * @throws IOException
+   * @throws WWWAuthenticationException
+   * @throws WSILException
+   * @deprecated replaced with getWSILDocumentVerbose(String, String)
+   */
+  public WSILDocument getWSILDocumentVerbose(String wsilURI ) throws MalformedURLException, IOException, WWWAuthenticationException, WSILException
+  {
+    return getWSILDocumentVerbose( wsilURI, "UTF-8" );
+  }
+  
+  public WSILDocument getWSILDocumentVerbose(String wsilURI, String byteEncoding ) throws MalformedURLException, IOException, WWWAuthenticationException, WSILException
   {
     WebServiceEntity wsEntity = getWebServiceEntityByURI(wsilURI);
+    
     if (wsEntity == null)
     {
       wsEntity = new WebServiceEntity();
       wsEntity.setURI(wsilURI);
       uriToEntityTable_.put(wsilURI, wsEntity);
     }
+    
     WSILDocument wsilDocument = (WSILDocument)wsEntity.getModel();
+    
     if (wsilDocument == null)
     {
-      byte[] b = getInputStreamAsByteArray(wsilURI);
-      wsEntity.setBytes(b);
-      setHTTPSettings(wsEntity);
-      InputStreamReader isr = new InputStreamReader(new ByteArrayInputStream(b));
-      wsilDocument = WSILDocument.newInstance();
-      wsilDocument.read(isr);
+      // For some reason WSDL4J is not reading the content type properly for platform resources.  Therefore, we will get
+      // the stream directly from Eclipse if we find a platform protocol specified in the URL.
+      if( wsilURI.startsWith( "platform:/resource" ) )
+      {
+        String    path     = wsilURI.substring(18);
+        IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember( path );
+        
+        if( resource instanceof IFile )
+        {
+          try
+          {
+            IFile             file   = (IFile)resource;
+            InputStream       stream = file.getContents();
+            InputStreamReader reader = new InputStreamReader( stream, file.getCharset() );
+          
+            wsilDocument = WSILDocument.newInstance();
+            wsilDocument.read( reader );
+          }
+          catch( CoreException exc ){}
+        }
+      }
+      else
+      {
+        // TODO the following 3 lines of code should probably be removed, since
+        // the WSDL4J parser does not need a byte stream.
+        byte[] b = getInputStreamAsByteArray(wsilURI);
+        wsEntity.setBytes(b);
+        setHTTPSettings(wsEntity);
+      
+        // This parser only checks the header of HTML for a particular encoding.
+        // It doesn't check the encoding for general XML documents like WSDL and WSIL.
+        // This causing this parser to alway use UTF-8 as the encoding.  Therefore,
+        // since we can not trust the encoding specified we will not use it.  Instead,
+        // we will just let the WSIL parser figure out what encoding to use.
+      
+        //InputStreamReader isr = new InputStreamReader(new ByteArrayInputStream(b), byteEncoding );
+        wsilDocument = WSILDocument.newInstance();
+        wsilDocument.read(wsilURI);
+      }
+      
       wsEntity.setType(WebServiceEntity.TYPE_WSIL);
       wsEntity.setModel(wsilDocument);
     }
@@ -181,21 +247,36 @@
   private void parseURL(int parseOption) throws MalformedURLException, IOException, ParserConfigurationException, SAXException, WWWAuthenticationException
   {
     WebServiceEntity wsEntity = new WebServiceEntity();
-    wsEntity.setURI(uri_);
-    byte[] b = getInputStreamAsByteArray(uri_);
+    
+    // This variable makes this object a little more thread safe than it was
+    // before, although this object is not completely thread safe.  The scenario
+    // that we are trying to avoid is where one call to this method gets blocked
+    // at the getInputStreamAsByteArray call.  Then a second call to the method
+    // is made that changes the uri_ global variable.  When the first call
+    // completes it would use uri_ value from the second invocation instead
+    // of the value from the first.  Storing the uri_ into this variable helps 
+    // avoid this bad scenario.
+    String theUri = uri_;
+    
+    wsEntity.setURI(theUri);
+    byte[] b = getInputStreamAsByteArray(theUri);
     wsEntity.setBytes(b);
     setHTTPSettings(wsEntity);
-    uriToEntityTable_.put(uri_, wsEntity);
+    uriToEntityTable_.put(theUri, wsEntity);
     // parse uri_ as a HTML document
-    HTMLHeadHandler headHandler = new HTMLHeadHandler(uri_);
+    HTMLHeadHandler headHandler = new HTMLHeadHandler(theUri);
     byte[] head = headHandler.harvestHeadTags(b);
+    String byteEncoding = headHandler.getByteEncoding();
     SAXParserFactory factory = SAXParserFactory.newInstance();
     factory.setNamespaceAware(false);
     factory.setValidating(false);
     SAXParser parser = factory.newSAXParser();
     try
     {
-      parser.parse(new ByteArrayInputStream(head), headHandler);
+      ByteArrayInputStream bais = new ByteArrayInputStream(head);
+      InputStreamReader isr = new InputStreamReader(bais, byteEncoding);
+      InputSource is = new InputSource(isr);
+      parser.parse(is, headHandler);
     }
     catch (Throwable t)
     {
@@ -208,7 +289,7 @@
       wsEntity.setType(WebServiceEntity.TYPE_HTML);
       for (int i = 0; i < wsilURIs.length; i++)
       {
-        String absoluteURI = convertToAbsoluteURI(uri_, wsilURIs[i]);
+        String absoluteURI = convertToAbsoluteURI(theUri, wsilURIs[i]);
         WebServiceEntity wsilEntity = new WebServiceEntity();
         wsilEntity.setType(WebServiceEntity.TYPE_WSIL);
         wsilEntity.setURI(absoluteURI);
@@ -218,7 +299,7 @@
         {
           try
           {
-            parseWSIL(absoluteURI, parseOption);
+            parseWSIL(absoluteURI, parseOption, byteEncoding );
           }
           catch (Throwable t)
           {
@@ -250,7 +331,7 @@
     {
       try
       {
-        parseWSIL(uri_, parseOption);
+        parseWSIL(theUri, parseOption, byteEncoding );
         // no exception thrown if uri_ is a WSIL document
         wsEntity.setType(WebServiceEntity.TYPE_WSIL);
       }
@@ -260,7 +341,7 @@
         // then parse uri_ as a DISCO document.
         try
         {
-          parseDISCO(uri_, parseOption);
+          parseDISCO(theUri, parseOption);
           // no exception thrown if uri_ is a DISCO document
           wsEntity.setType(WebServiceEntity.TYPE_DISCO);
         }
@@ -270,7 +351,7 @@
           // then parse uri_ as a WSDL document
           try
           {
-            parseWSDL(uri_);
+            parseWSDL(theUri);
             // no exception thrown if uri_ is a WSDL document
             wsEntity.setType(WebServiceEntity.TYPE_WSDL);
           }
@@ -284,7 +365,7 @@
     }
   }
 
-  private void parseWSIL(String wsilURI, int parseOption) throws WSILException, MalformedURLException, IOException, WSDLException, WWWAuthenticationException
+  private void parseWSIL(String wsilURI, int parseOption, String byteEncoding ) throws WSILException, MalformedURLException, IOException, WSDLException, WWWAuthenticationException
   {
     WebServiceEntity wsilEntity = getWebServiceEntityByURI(wsilURI);
     WSILDocument wsilDoc = (WSILDocument)wsilEntity.getModel();
@@ -293,7 +374,7 @@
       // Prevent infinite loops from occurring when a WSIL cycles occur.
       return;
     }
-    wsilDoc = getWSILDocumentVerbose(wsilURI);
+    wsilDoc = getWSILDocumentVerbose(wsilURI, byteEncoding );
     Inspection inspection = wsilDoc.getInspection();
     Service[] services = inspection.getServices();
     for (int i = 0; i < services.length; i++)
@@ -368,7 +449,7 @@
           wsilLinkEntity.setDocumentation(documentation);
           uriToEntityTable_.put(absoluteURI, wsilLinkEntity);
           if ((parseOption | PARSE_LINKS) == parseOption)
-            parseWSIL(absoluteURI, parseOption);
+            parseWSIL(absoluteURI, parseOption, byteEncoding );
         }
         associate(wsilEntity,wsilLinkEntity);
       }
diff --git a/bundles/org.eclipse.wst.ws.ui/.cvsignore b/bundles/org.eclipse.wst.ws.ui/.cvsignore
index 486ce3b..74867ba 100644
--- a/bundles/org.eclipse.wst.ws.ui/.cvsignore
+++ b/bundles/org.eclipse.wst.ws.ui/.cvsignore
@@ -4,3 +4,4 @@
 build.xml
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.ws.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.ws.ui/META-INF/MANIFEST.MF
index 02be52f..f71097d 100644
--- a/bundles/org.eclipse.wst.ws.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.ws.ui/META-INF/MANIFEST.MF
@@ -2,19 +2,23 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.ws.ui; singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.102.qualifier
 Bundle-Activator: org.eclipse.wst.ws.internal.ui.plugin.WSUIPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.ws.internal.ui;x-internal:=true,
+ org.eclipse.wst.ws.internal.ui.command;x-internal:=true,
  org.eclipse.wst.ws.internal.ui.plugin;x-internal:=true,
  org.eclipse.wst.ws.internal.ui.preferences;x-internal:=true,
  org.eclipse.wst.ws.internal.ui.wsi.preferences;x-internal:=true,
  org.eclipse.wst.ws.internal.ui.wsi.properties;x-internal:=true,
  org.eclipse.wst.ws.internal.ui.wsrt;x-internal:=true
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.core.resources,
- org.eclipse.wst.command.env.ui,
- org.eclipse.wst.ws
+Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.command.env.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.emf.common;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.ws.ui/about.html b/bundles/org.eclipse.wst.ws.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.ws.ui/about.html
+++ b/bundles/org.eclipse.wst.ws.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/WstWSUIPlugin.properties b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/WstWSUIPlugin.properties
index 76f7380..03afaf3 100644
--- a/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/WstWSUIPlugin.properties
+++ b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/WstWSUIPlugin.properties
@@ -1,12 +1,15 @@
 ###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
+# Copyright (c) 2005, 2006 IBM 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:
-#     IBM Corporation - initial API and implementation
+# IBM Corporation - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20060816   151632 kathy@ca.ibm.com - Kathy Chan, Removed unused properties for "Wait for wizard WSDL validation"
 ###############################################################################
 
 #
@@ -53,14 +56,10 @@
 LABEL_WSDLVAL_NONE=&No wizard WSDL validation
 LABEL_WSDLVAL_REMOTE=Wizard WSDL validation for &remote files only
 LABEL_WSDLVAL_ALL=Wizard WSDL validation for &all WSDL files
-LABEL_WAIT_FOR_WSDLVAL=Wait for WSDL validation to complete before moving along the wizards?
-BUTTON_WAIT_FOR_WSDLVAL=&Wait for pending WSDL validation to complete
 TOOLTIP_PWSI_RADIO_WSDLVAL_NONE=Do not perform WSDL validation on the WSDL file or URL input to the Web Services wizard
 TOOLTIP_PWSI_RADIO_WSDLVAL_REMOTE=Only perform WSDL validation on remote WSDL file or URL input to the Web Services wizard
 TOOLTIP_PWSI_RADIO_WSDLVAL_ALL=Perform WSDL validation on all WSDL file or URL input to the Web Services wizard
 TOOLTIP_PWSI_WSDLVAL_LABEL=Select whether WSDL validation should be performed on wizards that consume WSDL files, \nfor example, Web Service wizard in skeleton scenario and Web Service Client wizard.
-TOOLTIP_PWSI_LABEL_WAIT_FOR_WSDLVAL=WSDL validation might not have completed during wizard flow, \nwould you like to wait for WSDL validation or cancel it?
-TOOLTIP_PWSI_BUTTON_WAIT_FOR_WSDLVAL=Wait for pending WSDL validation to complete and continue with the wizard
 
 
 
diff --git a/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/WstWSUIPluginMessages.java b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/WstWSUIPluginMessages.java
index 325234d..f131dc8 100644
--- a/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/WstWSUIPluginMessages.java
+++ b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/WstWSUIPluginMessages.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060728   151632 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.ui;
 
@@ -44,14 +47,10 @@
 	public static String LABEL_WSDLVAL_NONE;
 	public static String LABEL_WSDLVAL_REMOTE;
 	public static String LABEL_WSDLVAL_ALL;
-	public static String LABEL_WAIT_FOR_WSDLVAL;
-	public static String BUTTON_WAIT_FOR_WSDLVAL;
 	public static String TOOLTIP_PWSI_RADIO_WSDLVAL_NONE;
 	public static String TOOLTIP_PWSI_RADIO_WSDLVAL_REMOTE;
 	public static String TOOLTIP_PWSI_RADIO_WSDLVAL_ALL;
 	public static String TOOLTIP_PWSI_WSDLVAL_LABEL;
-	public static String TOOLTIP_PWSI_LABEL_WAIT_FOR_WSDLVAL;
-	public static String TOOLTIP_PWSI_BUTTON_WAIT_FOR_WSDLVAL;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, WstWSUIPluginMessages.class);
diff --git a/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/command/OpenEditorCommand.java b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/command/OpenEditorCommand.java
new file mode 100644
index 0000000..8cfaaeb
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/command/OpenEditorCommand.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060810   135395 makandre@ca.ibm.com - Andrew Mak, Enable WTP Web service framework opening Java editor
+ * 20061025   162288 makandre@ca.ibm.com - Andrew Mak, workspace paths with spaces break Java Editor Launch
+ *******************************************************************************/
+package org.eclipse.wst.ws.internal.ui.command;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.ws.internal.ui.plugin.WSUIPlugin;
+import org.eclipse.wst.ws.internal.wsrt.IContext;
+import org.eclipse.wst.ws.internal.wsrt.IWebService;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
+
+/**
+ * A command which, when given an array of implementation URLs, will
+ * open them within Eclipse using the editor registered with the
+ * file extensions.
+ */
+public class OpenEditorCommand extends AbstractDataModelOperation {
+
+	private final static String FILE_PROTOCOL     = "file:/";
+	private final static String PLATFORM_RESOURCE = "platform:/resource/";
+	
+	private IWebService webService;
+	private IContext	context;
+ 
+	/**
+	 * Setter for the IWebService
+	 * 
+	 * @param webService The IWebService
+	 */
+	public void setWebService(IWebService webService) {
+		this.webService = webService;  
+	}
+	  
+	/**
+	 * Setter for the IContext
+	 * 
+	 * @param context The IContext
+	 */
+	public void setContext (IContext context) {
+		this.context = context;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+	 */
+	public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+			throws ExecutionException {
+	
+		if (context.getScenario().getValue() != WebServiceScenario.TOPDOWN)
+			return Status.OK_STATUS;
+		
+		String[] implURLs = webService.getWebServiceInfo().getImplURLs();
+			
+		// nothing to open
+		if (implURLs == null)
+			return Status.OK_STATUS;
+		
+		IFile file;
+		
+		for (int i = 0; i < implURLs.length; i++) {
+			try {    						
+				String implURL = implURLs[i];
+				file = null;
+				
+				// local filesystem path
+				if (implURL.startsWith(FILE_PROTOCOL)) {
+					implURL = implURL.substring(FILE_PROTOCOL.length());				
+					file = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new Path(implURL));
+				}
+				else {	
+					// platform path
+					if (implURL.startsWith(PLATFORM_RESOURCE))
+						implURL = implURL.substring(PLATFORM_RESOURCE.length());
+				
+					if (implURL.indexOf(':') != -1)
+						continue;
+					
+					file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(implURL));
+				}
+						
+				if (file == null || !file.exists())
+					continue;
+				
+				IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+				
+				if (page == null)
+					continue;
+								
+				IDE.openEditor(page, file, true);
+			}
+			catch (Exception e) {
+				//TODO: for WTP 2.0, return proper status (with NLS)
+				WSUIPlugin.getInstance().getLog().log(
+						new Status(IStatus.ERROR, WSUIPlugin.ID, 0, e.getMessage(), e));
+			}			
+		}
+		
+		return Status.OK_STATUS;
+	}	
+}
diff --git a/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/wsi/preferences/WSICompliancePreferencePage.java b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/wsi/preferences/WSICompliancePreferencePage.java
index f2cd9af..6f182d9 100644
--- a/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/wsi/preferences/WSICompliancePreferencePage.java
+++ b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/wsi/preferences/WSICompliancePreferencePage.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060310   131352 pmoogk@ca.ibm.com - Peter Moogk
+ * 20060728   151632 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.ui.wsi.preferences;
 
@@ -70,9 +71,6 @@
   private Button validateRemoteWsdlButton_;
   /*CONTEXT_ID PWSI00011 for the Wizard WSDL validation for all files button on the Profile Compliance and Validation page*/
   private Button validateAllWsdlButton_;
-  private Text waitForWsdlValidationLabel_;
-  /*CONTEXT_ID PWSI00012 for the Wait for pending WSDL validation to complete checkbox on the Profile Compliance and Validation page*/
-  private Button waitForWSDLValidationCheckbox_;
   
 
   /*
@@ -91,10 +89,6 @@
    * CONTEXT_ID PWRS0012 for the wsdl validation label of the profile validation preference page
    */
   private String INFOPOP_PWSI_WSDLVAL_LABEL = WSUIPlugin.ID + ".PWSI0012";
-  /*
-   * CONTEXT_ID PWRS0013 for the wait for wsdl validation checkbox of the profile validation preference page
-   */
-  private String INFOPOP_PWSI_BUTTON_WAIT_FOR_WSDLVAL = WSUIPlugin.ID + ".PWSI0013";
 
  /**
    * Creates preference page controls on demand.
@@ -181,17 +175,7 @@
     helpSystem.setHelp(validateAllWsdlButton_, INFOPOP_PWSI_RADIO_WSDLVAL_ALL);
     
     new Label(validationSelectionGroup_, SWT.NONE);;
-    
-    waitForWsdlValidationLabel_ = new Text(validationSelectionGroup_, SWT.READ_ONLY);
-    waitForWsdlValidationLabel_.setText(WstWSUIPluginMessages.LABEL_WAIT_FOR_WSDLVAL);
-    waitForWsdlValidationLabel_.setToolTipText(WstWSUIPluginMessages.TOOLTIP_PWSI_LABEL_WAIT_FOR_WSDLVAL);
-    
-    waitForWSDLValidationCheckbox_ = new Button(validationSelectionGroup_, SWT.CHECK);
-    waitForWSDLValidationCheckbox_.setText(WstWSUIPluginMessages.BUTTON_WAIT_FOR_WSDLVAL);            
-    waitForWSDLValidationCheckbox_.addListener(SWT.Selection, this);
-    waitForWSDLValidationCheckbox_.setToolTipText(WstWSUIPluginMessages.TOOLTIP_PWSI_BUTTON_WAIT_FOR_WSDLVAL);
-    helpSystem.setHelp(waitForWSDLValidationCheckbox_, INFOPOP_PWSI_BUTTON_WAIT_FOR_WSDLVAL);
-    
+        
     initializeValues();
     org.eclipse.jface.dialogs.Dialog.applyDialogFont(superparent);    
     return parent;
@@ -248,7 +232,6 @@
     validateAllWsdlButton_.setSelection(false);
     processWSDLValidationSelection(validationSelection);
     
-    waitForWSDLValidationCheckbox_.setSelection(WSPlugin.getInstance().getWaitForWSDLValidationContext().getDefault());
     WSPlugin.getInstance().getWaitForWSDLValidationContext().setWaitForWSDLValidation(WSPlugin.getInstance().getWaitForWSDLValidationContext().getDefault());
     
   }
@@ -270,7 +253,6 @@
     String validationSelection = WSPlugin.getInstance().getWSDLValidationContext().getPersistentWSDLValidation();
     processWSDLValidationSelection(validationSelection);
     
-    waitForWSDLValidationCheckbox_.setSelection(WSPlugin.getInstance().getWaitForWSDLValidationContext().getPersistentWaitForWSDLValidation());
   }
 
   private void processWSDLValidationSelection(String validationSelection) {
@@ -362,22 +344,17 @@
    */
   public void handleEvent(Event event) {
 	  
-	  if (waitForWSDLValidationCheckbox_ == event.widget) {		   		  
-		  WSPlugin.getInstance().getWaitForWSDLValidationContext().setWaitForWSDLValidation(waitForWSDLValidationCheckbox_.getSelection());
-	  } else {
-		  String wsdlValdationSelection = null;
-		  if (validateNoWsdlButton_ == event.widget) {
-			  wsdlValdationSelection = PersistentWSDLValidationContext.VALIDATE_NO_WSDL;
-		  }
-		  else if (validateRemoteWsdlButton_ == event.widget) {
-			  wsdlValdationSelection = PersistentWSDLValidationContext.VALIDATE_REMOTE_WSDL;
-		  }
-		  else if (validateAllWsdlButton_ == event.widget) {
-			  wsdlValdationSelection = PersistentWSDLValidationContext.VALIDATE_ALL_WSDL;
-		  }
-		  WSPlugin.getInstance().getWSDLValidationContext().updateWSDLValidation(wsdlValdationSelection);
+	  String wsdlValdationSelection = null;
+	  if (validateNoWsdlButton_ == event.widget) {
+		  wsdlValdationSelection = PersistentWSDLValidationContext.VALIDATE_NO_WSDL;
 	  }
-	  
+	  else if (validateRemoteWsdlButton_ == event.widget) {
+		  wsdlValdationSelection = PersistentWSDLValidationContext.VALIDATE_REMOTE_WSDL;
+	  }
+	  else if (validateAllWsdlButton_ == event.widget) {
+		  wsdlValdationSelection = PersistentWSDLValidationContext.VALIDATE_ALL_WSDL;
+	  }
+	  WSPlugin.getInstance().getWSDLValidationContext().updateWSDLValidation(wsdlValdationSelection);
 	  
   }
 
diff --git a/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/wsi/properties/WSICompliancePropertyPage.java b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/wsi/properties/WSICompliancePropertyPage.java
index 4a39d5a..682c20d 100644
--- a/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/wsi/properties/WSICompliancePropertyPage.java
+++ b/bundles/org.eclipse.wst.ws.ui/src/org/eclipse/wst/ws/internal/ui/wsi/properties/WSICompliancePropertyPage.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060607   144978 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.wst.ws.internal.ui.wsi.properties;
 
@@ -31,6 +34,9 @@
 
 public class WSICompliancePropertyPage extends PropertyPage implements SelectionListener
 {
+	
+	public static final String PAGE_ID= "org.eclipse.wst.ws.internal.ui.wsi.properties.WSICompliancePropertyPage"; //$NON-NLS-1$
+	
   
   /*CONTEXT_ID PWSI0001 for the WS-I Preference Page*/
   private String INFOPOP_PWSI_PAGE = WSUIPlugin.ID + ".PWSI0000";
@@ -219,7 +225,7 @@
   			wsi_ssbp_Types_.select(savedSSBPSetting_);
   			savedSSBPSetting_ = -1;
   		}
-  	} else { // set SSBP to follow AP setting if STOP or WARN chosen
+  	} else if (selection == 0 || selection == 1) { // set SSBP to follow AP setting if STOP or WARN chosen
   		if (savedSSBPSetting_ == -1)  {  // SSBP setting not saved
   			savedSSBPSetting_ = wsi_ssbp_Types_.getSelectionIndex();
   		}
diff --git a/bundles/org.eclipse.wst.ws/.cvsignore b/bundles/org.eclipse.wst.ws/.cvsignore
index ef2600f..aa188d4 100644
--- a/bundles/org.eclipse.wst.ws/.cvsignore
+++ b/bundles/org.eclipse.wst.ws/.cvsignore
@@ -4,3 +4,4 @@
 ws.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.ws/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.ws/META-INF/MANIFEST.MF
index 79d203d..551d96a 100644
--- a/bundles/org.eclipse.wst.ws/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.ws/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.ws; singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.102.qualifier
 Bundle-Activator: org.eclipse.wst.ws.internal.plugin.WSPlugin
 Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
@@ -31,20 +31,20 @@
  org.eclipse.wst.ws.internal.wsfinder;x-internal:=true,
  org.eclipse.wst.ws.internal.wsil;x-internal:=true,
  org.eclipse.wst.ws.internal.wsrt;x-internal:=true
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.wst.internet.monitor.core,
- org.eclipse.wst.server.core,
- org.eclipse.wst.command.env.core,
- org.eclipse.wst.ws.parser,
- org.eclipse.emf.common,
- org.wsdl4j,
- org.apache.wsil4j,
- org.eclipse.core.resources,
- org.eclipse.wst.command.env,
- org.eclipse.wst.common.frameworks,
- org.eclipse.core.commands,
- org.eclipse.wst.common.environment,
- org.eclipse.emf.ecore,
- org.eclipse.emf.ecore.xmi,
- org.eclipse.emf.codegen
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.internet.monitor.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.ws.parser;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.emf.common;bundle-version="[2.2.0,2.3.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.apache.wsil4j;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.core.commands;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,2.3.0)",
+ org.eclipse.emf.codegen;bundle-version="[2.2.0,2.3.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.ws/about.html b/bundles/org.eclipse.wst.ws/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.ws/about.html
+++ b/bundles/org.eclipse.wst.ws/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/WstWSPlugin.properties b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/WstWSPlugin.properties
index 157295e..a55c55d 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/WstWSPlugin.properties
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/WstWSPlugin.properties
@@ -1,12 +1,15 @@
 ###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
+# Copyright (c) 2005, 2006 IBM 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:
-#     IBM Corporation - initial API and implementation
+# IBM Corporation - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20060420   120714 kathy@ca.ibm.com - Kathy Chan
 ###############################################################################
 
 #
@@ -15,6 +18,12 @@
 MSG_ERROR_UNABLE_TO_START_MONITOR=IWAB0001E Unable to monitor port {0} of {1}.
 
 #
+# WSDLUtility
+#
+MSG_UNABLE_TO_RESOLVE_HTTP=Could not resolve service definition http://{0}.  Service may not be running on the server.
+MSG_UNABLE_TO_RESOLVE_PLATFORM_URI=Could not parse platform:/resource{0}.
+
+#
 # WSIComplianceUtils
 #
 IGNORE_LABEL=Ignore
@@ -33,5 +42,4 @@
 WSI_AP_ERROR=You have made a choice that may result in a Web service that does not comply with the WS-I Attachment Profile. Your current Web services preference is set to require compliance with WS-I AP.
 WSI_AP_WARNING=You have made a choice that may result in a Web service that does not comply with the WS-I Attachment Profile. Do you wish to ignore this warning and continue?
 WSI_AP_INCOMPLIANT_RUNTIME=The selected Web Service runtime does not comply with the WS-I Attachment Profile.
-NOT_OK=Cannot continue due to WS-I non-compliance
 
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/WstWSPluginMessages.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/WstWSPluginMessages.java
index 46d31af..9719f12 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/WstWSPluginMessages.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/WstWSPluginMessages.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060420   120714 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 package org.eclipse.wst.ws.internal;
 
@@ -21,6 +24,8 @@
 	}
 
 	public static String MSG_ERROR_UNABLE_TO_START_MONITOR;
+	public static String MSG_UNABLE_TO_RESOLVE_PLATFORM_URI;
+	public static String MSG_UNABLE_TO_RESOLVE_HTTP;
 	public static String IGNORE_LABEL;
 	public static String IGNORE_DESCRIPTION;
 	public static String IGNORE_ALL_LABEL;
@@ -33,9 +38,8 @@
 	public static String WSI_AP_ERROR;
 	public static String WSI_AP_WARNING;	
 	public static String WSI_AP_INCOMPLIANT_RUNTIME;
-	public static String NOT_OK;
 
 	static {
 		NLS.initializeMessages(BUNDLE_NAME, WstWSPluginMessages.class);
 	}
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/common/HTTPUtility.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/common/HTTPUtility.java
new file mode 100644
index 0000000..1f5112e
--- /dev/null
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/common/HTTPUtility.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2007 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070124   167487 gilberta@ca.ibm.com - Gilbert Andrews
+ *******************************************************************************/
+package org.eclipse.wst.ws.internal.common;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+
+public class HTTPUtility {
+
+	public String handleRedirect(String urlString){
+		URLConnection conn = null;
+		String urlRedirect = urlString;
+		int time = 0;
+		while(urlRedirect!= null){
+			if (time == 6) return urlRedirect;
+			try{
+				URL url = new URL(urlRedirect);
+				conn = url.openConnection();
+			}catch(Exception exc){
+				return urlRedirect;
+			}
+			if (conn instanceof HttpURLConnection)
+				{
+				HttpURLConnection http = (HttpURLConnection) conn;
+				http.setInstanceFollowRedirects(false);
+	         
+				try{
+					int code = http.getResponseCode();
+					if (code >= 300 && code <= 307 && code != 306 &&
+	        			 code != HttpURLConnection.HTTP_NOT_MODIFIED)
+					{
+						String urlRedirect2 = changeSlash(http.getHeaderField("Location"));
+	           	 		if (urlRedirect2 == null || urlRedirect.equals(urlRedirect2)) return urlRedirect;
+	          	 		else urlRedirect = urlRedirect2;
+					}else return urlRedirect;
+				
+				
+				}catch(IOException exc){
+					return urlRedirect; 
+				}
+			}
+			else return urlRedirect;
+			time++;
+		}
+		return urlString;
+	}
+
+	public String changeSlash(String url){
+		String temp = "";
+		try{
+			temp = url.replace('\\', '/');
+		}catch(Exception exc){
+			return url;
+		}
+		return temp;
+	}
+}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/common/WSDLUtility.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/common/WSDLUtility.java
index 67929b9..1f2922a 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/common/WSDLUtility.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/common/WSDLUtility.java
@@ -22,6 +22,8 @@
 import javax.wsdl.extensions.http.HTTPAddress;
 import javax.wsdl.extensions.soap.SOAPAddress;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.ws.internal.WstWSPluginMessages;
 import org.eclipse.wst.ws.internal.parser.wsil.WebServicesParser;
 
 /**
@@ -40,26 +42,41 @@
 	
 	public WSDLUtility(IResource res)
 	{
-		super();
+ 		super();
 		resource_ = res;
 		buildDefinition();		
 	}
 	
 	protected boolean buildDefinition()
-	{
-		
+	{		
 		if (resource_.getType() == IResource.FILE)
 	    {        
 	        String ext = resource_.getFileExtension();
-	        if (ext != null && ext.equalsIgnoreCase("wsdl"))
+	        String resPath = resource_.getFullPath().toString();
+	        if (ext != null)
 	        {
-		      	String resPath = resource_.getFullPath().toString();
+		      	
 		        WebServicesParser parser = new WebServicesParser();
 		      			      	
 		      	try {
 		      		definition_ = parser.getWSDLDefinition("platform:" + resPath);
+		      	   if (definition_ == null){		      		   
+		      		 throw new Exception(NLS.bind(WstWSPluginMessages.MSG_UNABLE_TO_RESOLVE_PLATFORM_URI, resPath));		      		 
+		      	   }
+		      	}
+		      	catch (Exception e){
+		      		return false;
+		      	}
+	        }
+	        else if (resPath.indexOf('?') > 0)  //deployed resource
+	        {
+	        	WebServicesParser parser = new WebServicesParser();
+		      			      	
+		      	try {
+		      		definition_ = parser.getWSDLDefinition("http:" + resPath);
 		      	   if (definition_ == null){
-		      		   throw new Exception("WebServiceUtils.getWSDLAddress - error parsing platform:/resource" + resPath);
+		      		 throw new Exception(NLS.bind(WstWSPluginMessages.MSG_UNABLE_TO_RESOLVE_HTTP, resPath));		      		
+
 		      	   }
 		      	}
 		      	catch (Exception e){
@@ -81,22 +98,25 @@
 	{
 		if (serviceName_.equals(""))
 		{
-			   Map servicesMap = definition_.getServices();
-		  	   Object[] services = servicesMap.values().toArray();
-		  	   
-		  	   // TODO: here can detect if no service tag - send appropriate message
-		  	   // TODO: what if > 1 service defined in the WSDL?
-		  	   // for now return the first service name found...
-		  	   for (int i = 0; i < services.length; i++) {
-				   Service s = (Service)services[i];
-				   String qString = s.getQName().toString();
-				   
-				   //get name only from qualified string
-				   int index1 = qString.indexOf("}")+1;  //$NON-NLS-1$
-				   int index2 = qString.length();
-				   
-				   serviceName_ = qString.substring(index1, index2);				   
-		  	   }  		  
+			if (definition_ != null)
+			{
+				   Map servicesMap = definition_.getServices();  //jvh - need to handle null definition here....
+			  	   Object[] services = servicesMap.values().toArray();
+			  	   
+			  	   // TODO: here can detect if no service tag - send appropriate message
+			  	   // TODO: what if > 1 service defined in the WSDL?
+			  	   // for now return the first service name found...
+			  	   for (int i = 0; i < services.length; i++) {
+					   Service s = (Service)services[i];
+					   String qString = s.getQName().toString();
+					   
+					   //get name only from qualified string
+					   int index1 = qString.indexOf("}")+1;  //$NON-NLS-1$
+					   int index2 = qString.length();
+					   
+					   serviceName_ = qString.substring(index1, index2);				   
+			  	   }  	
+			}				  
 		}
 	  	return serviceName_;
 	}
@@ -106,45 +126,46 @@
 	   if (url_ == null)
 	   {	   
 	       String locationURI = null;
-	  	   Map servicesMap = definition_.getServices();
-	  	   Object[] services = servicesMap.values().toArray();
-	  	   
-	  	   // TODO: here can detect if no service tag - send appropriate message
-	  	   // TODO: what if > 1 service defined in the WSDL?
-	  	   for (int i = 0; i < services.length; i++) {
-			   Service s = (Service)services[i];
-			   Map portsMap = s.getPorts();
-			   Object[] ports = portsMap.values().toArray();
-	
-			   // TODO: here can detect if > 1 port for the service - determine how to handle
-			   for (int j = 0; j < ports.length; j++) {
-					Port p = (Port)ports[j];
-					List extList = p.getExtensibilityElements();
-					
-					for (int k = 0; j < extList.size(); j++){
-					      ExtensibilityElement extElement = (ExtensibilityElement)extList.get(k);
-					      if (extElement instanceof SOAPAddress)
-					      {  
-					        locationURI = ((SOAPAddress)extElement).getLocationURI();
-					      }
-					      else if (extElement instanceof HTTPAddress)
-					       {
-					        locationURI = ((HTTPAddress)extElement).getLocationURI();						        
-					      }
-					      else
-					      {
-					    	  //TODO: if not SOAP or HTTP - how do we want to handle it... 
-					      }
-					 }					
-			   }
-	  	   }  		    	
-	  	 
-		    try {
-		         url_ = new URL(locationURI + "?" + resource_.getFileExtension());	         
-		    }
-		    catch (MalformedURLException malExc){
-		    	
-		    }	  		      
+	       if (definition_ != null)
+	       {
+	    	   Map servicesMap = definition_.getServices();
+		  	   Object[] services = servicesMap.values().toArray();
+		  	   
+		  	   // TODO: here can detect if no service tag - send appropriate message
+		  	   // TODO: what if > 1 service defined in the WSDL?
+		  	   for (int i = 0; i < services.length; i++) {
+				   Service s = (Service)services[i];
+				   Map portsMap = s.getPorts();
+				   Object[] ports = portsMap.values().toArray();
+		
+				   // TODO: here can detect if > 1 port for the service - determine how to handle
+				   for (int j = 0; j < ports.length; j++) {
+						Port p = (Port)ports[j];
+						List extList = p.getExtensibilityElements();
+						
+						for (int k = 0; j < extList.size(); j++){
+						      ExtensibilityElement extElement = (ExtensibilityElement)extList.get(k);
+						      if (extElement instanceof SOAPAddress)
+						      {  
+						        locationURI = ((SOAPAddress)extElement).getLocationURI();
+						      }
+						      else if (extElement instanceof HTTPAddress)
+						       {
+						        locationURI = ((HTTPAddress)extElement).getLocationURI();						        
+						      }
+						      else
+						      {
+						    	  //TODO: if not SOAP or HTTP - how do we want to handle it... 
+						      }
+						 }					
+				   }
+		  	   }  		    	
+		  	 
+			    try {
+			         url_ = new URL(locationURI + "?" + resource_.getFileExtension());	         
+			    }
+			    catch (MalformedURLException malExc){}
+            }	  		      
 	    }
 	   return url_;
     }
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/AssembleClientFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/AssembleClientFragment.java
index 3e87fd8..322b53f 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/AssembleClientFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/AssembleClientFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -36,7 +39,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webServiceClient_ == null )
+	if( webServiceClient_ == null || context_ == null || !context_.getAssemble())
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/AssembleServiceFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/AssembleServiceFragment.java
index 288adb7..07c9d89 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/AssembleServiceFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/AssembleServiceFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -36,7 +39,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webService_ == null )
+	if( webService_ == null || context_ == null || !context_.getAssemble())
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DeployClientFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DeployClientFragment.java
index 6e37498..16efc20 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DeployClientFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DeployClientFragment.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -39,7 +40,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webServiceClient_ == null || !context_.getDeploy())
+	if( webServiceClient_ == null || context_ == null || !context_.getDeploy())
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DeployServiceFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DeployServiceFragment.java
index f1da8a4..29be99f 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DeployServiceFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DeployServiceFragment.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060221   119111 rsinha@ca.ibm.com - Rupam Kuehner
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -39,7 +40,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webService_ == null || !context_.getDeploy())
+	if( webService_ == null || context_ == null || !context_.getDeploy())
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DevelopClientFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DevelopClientFragment.java
index 588f0b6..fdf8e28 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DevelopClientFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DevelopClientFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -36,7 +39,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webServiceClient_ == null )
+	if( webServiceClient_ == null || context_ == null || !context_.getDevelop() )
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DevelopServiceFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DevelopServiceFragment.java
index 0e5c024..035386d 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DevelopServiceFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/DevelopServiceFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -36,7 +39,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webService_ == null )
+	if( webService_ == null || context_ == null || !context_.getDevelop())
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/InstallClientFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/InstallClientFragment.java
index 700f687..3a637eb 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/InstallClientFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/InstallClientFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -39,7 +42,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webServiceClient_ == null || !context_.getInstall())
+	if( webServiceClient_ == null || context_ == null || !context_.getInstall())
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/InstallServiceFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/InstallServiceFragment.java
index 7233de6..6d7e640 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/InstallServiceFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/InstallServiceFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -39,7 +42,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webService_ == null || !context_.getInstall())
+	if( webService_ == null || context_ == null || !context_.getInstall())
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/RunClientFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/RunClientFragment.java
index 6b782b8..7219b68 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/RunClientFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/RunClientFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -39,7 +42,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webServiceClient_ == null || !context_.getRun())
+	if( webServiceClient_ == null || context_ == null || !context_.getRun())
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/RunServiceFragment.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/RunServiceFragment.java
index 6565d1b..95fe895 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/RunServiceFragment.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/extensions/RunServiceFragment.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060529   141422 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.extensions;
@@ -40,7 +43,7 @@
   {
 	ICommandFactory factory = null;
 	
-	if( webService_ == null || !context_.getRun())
+	if( webService_ == null || context_ == null || !context_.getRun())
 	{
 	  factory = new SimpleCommandFactory( new Vector() );
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/plugin/WSPlugin.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/plugin/WSPlugin.java
index 649c8c8..a55f29f 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/plugin/WSPlugin.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/plugin/WSPlugin.java
@@ -10,13 +10,11 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060403 128827   kathy@ca.ibm.com - Kathy Chan
+ * 20060424   115690 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.plugin;
 
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentMergeContext;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSDLValidationContext;
@@ -34,9 +32,6 @@
 	// The shared instance.
 	private static WSPlugin plugin;
 	
-	// Resource bundle.
-	private ResourceBundle resourceBundle;
-	
 	private PersistentWSISSBPContext wsiSSBPContext_;
 	private PersistentWSIAPContext wsiAPContext_;
 	private PersistentWSDLValidationContext wsdlValidationContext_;
@@ -75,7 +70,6 @@
 	public void stop(BundleContext context) throws Exception {
 		super.stop(context);
 		plugin = null;
-		resourceBundle = null;
 	}
 
 	/**
@@ -85,41 +79,8 @@
 		return plugin;
 	}
 
-	/**
-	 * Returns the string from the plugin's resource bundle, or 'key' if not
-	 * found.
-	 */
-	public static String getResourceString(String key) {
-		ResourceBundle bundle = WSPlugin.getDefault().getResourceBundle();
-		try {
-			return (bundle != null) ? bundle.getString(key) : key;
-		} catch (MissingResourceException e) {
-			return key;
-		}
-	}
 
 	/**
-	 * Returns the string from the plugin's resource bundle, or 'key' if not
-	 * found. Replaces substitution variables in the message by objects in 'args'.
-	 */
-	public static String getResourceString(String key, Object[] args) {
-		return MessageFormat.format(getResourceString(key), args);
-	}
-
-	/**
-	 * Returns the plugin's resource bundle,
-	 */
-	public ResourceBundle getResourceBundle() {
-		try {
-			if (resourceBundle == null)
-				resourceBundle = ResourceBundle
-						.getBundle("org.eclipse.wst.ws.WSPluginResources");
-		} catch (MissingResourceException x) {
-			resourceBundle = null;
-		}
-		return resourceBundle;
-	}
-	/**
 	 * Get WSI Context
 	 * @deprecated use getWSISSBPContext or getWSIAPContext instead
 	 * 
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/registry/IRegistryManager.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/registry/IRegistryManager.java
index 582e476..98b7901 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/registry/IRegistryManager.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/registry/IRegistryManager.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060906   141796 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.registry;
@@ -88,6 +91,16 @@
 	 */
 	public void addTaxonomyFinder ( String className, ITaxonomyFinder taxonomyFinder );
 
+    /**
+     * Destroys the index of registries and taxonomies in memory.
+     * Subsequent calls to <code>getIndex()</code> and other methods
+     * of this interface will cause the index to be reloaded.
+     * This method should be called anytime the caller suspects the
+     * persistent index has changed and wishes to load the changes
+     * into the current <code>IRegistryManager</code>.
+     */
+    public void refreshManager ();
+
 	/**
 	 * Saves a <code>Taxonomy</code> model to an XML document
 	 * located relative to the index XML document as identified by
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/registry/RegistryManager.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/registry/RegistryManager.java
index aac978d..f83ccd2 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/registry/RegistryManager.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/registry/RegistryManager.java
@@ -1,12 +1,16 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060517   131582 mahutch@ca.ibm.com - Mark Hutchinson
+ * 20060906   141796 gilberta@ca.ibm.com - Gilbert Andrews
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.registry;
@@ -77,7 +81,7 @@
 	{
 		if (registryURL_ == null)
 		{
-			registryURL_ = new File(registryPathname_).toURI().toURL();
+			registryURL_ = new File(registryPathname_).toURL();
 		}
 		return registryURL_;
 	}
@@ -108,6 +112,14 @@
 		return new URL(urlString);
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.ws.internal.registry.IRegistryManager#refreshManager()
+	 */
+	public void refreshManager ()
+	{
+		index_ = null;
+	}
+	
 	/**
 	 * Caches and returns the index model. On first call,
 	 * if an index document exists, the index is loaded
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/AbstractWebServiceLocator.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/AbstractWebServiceLocator.java
index 8c8080d..da44671 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/AbstractWebServiceLocator.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/AbstractWebServiceLocator.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060317   127456 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060620   147862 cbrealey@ca.ibm.com - Chris Brealey
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.wsfinder;
@@ -17,6 +18,7 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IProgressMonitor;
 
 /**
@@ -45,7 +47,22 @@
 	 * or null if progress monitoring is not desired.
 	 * @return A non-null but possibly empty list of WebServiceClientInfo objects
 	 */
-	public List getWebServiceClients (IProgressMonitor monitor)
+	public List getWebServiceClients ( IProgressMonitor monitor )
+	{
+		return Collections.EMPTY_LIST;
+	}
+
+	/**
+	 * Returns a list of WebServiceClientInfo objects.
+	 * Subclasses should override this method's
+	 * default behaviour of returning an empty list.
+	 * @param projects One or more projects to which
+	 * the search should be limited.
+	 * @param monitor A progress monitor,
+	 * or null if progress monitoring is not desired.
+	 * @return A non-null but possibly empty list of WebServiceClientInfo objects
+	 */
+	public List getWebServiceClients ( IProject[] projects, IProgressMonitor monitor )
 	{
 		return Collections.EMPTY_LIST;
 	}
@@ -58,7 +75,22 @@
 	 * or null if progress monitoring is not desired.
 	 * @return A non-null but possibly empty list of WebServiceInfo objects
 	 */
-	public List getWebServices (IProgressMonitor monitor)
+	public List getWebServices ( IProgressMonitor monitor )
+	{
+		return Collections.EMPTY_LIST; 
+	}
+
+	/**
+	 * Returns a list of WebServiceInfo objects. 
+	 * Subclasses should override this method's
+	 * default behaviour of returning an empty list.
+	 * @param projects One or more projects to which
+	 * the search should be limited.
+	 * @param monitor A progress monitor,
+	 * or null if progress monitoring is not desired.
+	 * @return A non-null but possibly empty list of WebServiceInfo objects
+	 */
+	public List getWebServices ( IProject[] projects, IProgressMonitor monitor )
 	{
 		return Collections.EMPTY_LIST; 
 	}
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/IWebServiceLocator.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/IWebServiceLocator.java
index ff8d715..b35331a 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/IWebServiceLocator.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/IWebServiceLocator.java
@@ -10,12 +10,14 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060317   127456 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060620   147862 cbrealey@ca.ibm.com - Chris Brealey
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.wsfinder;
 
 import java.util.List;
 
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IProgressMonitor;
 
 /**
@@ -40,6 +42,18 @@
 	public List getWebServiceClients ( IProgressMonitor monitor );
 	
 	/**
+	 * Returns a list of WebServiceClientInfo objects.
+	 * This operation may be long running.
+	 * @param projects One or more projects to which the
+	 * search should be limited.
+	 * @param monitor A progress monitor,
+	 * or null if progress monitoring is not desired.
+	 * @return A list of WebServiceClientInfo objects.
+	 * possibly empty, possibly null.
+	 */
+	public List getWebServiceClients ( IProject[] projects, IProgressMonitor monitor );
+	
+	/**
 	 * Returns a list of WebServiceInfo objects.
 	 * This operation may be long running.
 	 * @param monitor A progress monitor,
@@ -48,4 +62,16 @@
 	 * possibly empty, possibly null.
 	 */
 	public List getWebServices ( IProgressMonitor monitor );
+
+	/**
+	 * Returns a list of WebServiceInfo objects.
+	 * This operation may be long running.
+	 * @param projects One or more projects to which the
+	 * search should be limited.
+	 * @param monitor A progress monitor,
+	 * or null if progress monitoring is not desired.
+	 * @return A list of WebServiceInfo objects,
+	 * possibly empty, possibly null.
+	 */
+	public List getWebServices ( IProject[] projects, IProgressMonitor monitor );
 }
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/WebServiceFinder.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/WebServiceFinder.java
index f46b2f8..210d99f 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/WebServiceFinder.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/WebServiceFinder.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060317   127456 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060620   147862 cbrealey@ca.ibm.com - Chris Brealey
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.wsfinder;
@@ -18,6 +19,7 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -81,6 +83,22 @@
 	
 	/**
 	 * Returns an iterator of WebServiceInfo objects which represent web services found by locators that
+	 * have registered using the org.eclipse.wst.ws.locator extension point.  Currently returns all web 
+	 * services found in the context of the given projects for all registered locators.
+	 * Locators must extend {@link AbstractWebServiceLocator}.
+	 * Callers can use the getter methods on the WebServiceInfo object to retrieve information on the 
+	 * web services found.  The WebServiceFinder cannot guarantee the level of detail contained in WebServiceInfo
+	 * objects returned.  This is left to the locator implementations.
+	 * @param monitor A progress monitor, or null if progress monitoring is not desired.
+	 * @return An iterator of WebServiceInfo objects, never null.
+	 */
+	public Iterator getWebServices ( IProject[] projects, IProgressMonitor monitor )
+	{
+		return getWebServicesByCategoryId(null,projects,monitor);
+	}
+	
+	/**
+	 * Returns an iterator of WebServiceInfo objects which represent web services found by locators that
 	 * have registered using the org.eclipse.wst.ws.locator extension point under the given category.
 	 * Locators must extend {@link AbstractWebServiceLocator}.
 	 * Callers can use the getter methods on the WebServiceInfo object to retrieve information on the 
@@ -98,6 +116,23 @@
 	/**
 	 * Returns an iterator of WebServiceInfo objects which represent web services found by locators that
 	 * have registered using the org.eclipse.wst.ws.locator extension point under the given category.
+	 * The search is constrained to the given set of one or more projects.
+	 * Locators must extend {@link AbstractWebServiceLocator}.
+	 * Callers can use the getter methods on the WebServiceInfo object to retrieve information on the 
+	 * web services found.  The WebServiceFinder cannot guarantee the level of detail contained in WebServiceInfo
+	 * objects returned.  This is left to the locator implementations.
+	 * @param category The category of locators to use.
+	 * @param monitor A progress monitor, or null if progress monitoring is not desired.
+	 * @return An iterator of WebServiceInfo objects, never null.
+	 */
+	public Iterator getWebServicesByCategory ( WebServiceCategory category, IProject[] projects, IProgressMonitor monitor  )
+	{
+		return getWebServicesByCategoryId(category == null ? null : category.getId(),projects,monitor);
+	}
+
+	/**
+	 * Returns an iterator of WebServiceInfo objects which represent web services found by locators that
+	 * have registered using the org.eclipse.wst.ws.locator extension point under the given category.
 	 * Locators must extend {@link AbstractWebServiceLocator}.
 	 * Callers can use the getter methods on the WebServiceInfo object to retrieve information on the 
 	 * web services found.  The WebServiceFinder cannot guarantee the level of detail contained in WebServiceInfo
@@ -108,6 +143,23 @@
 	 */
 	public Iterator getWebServicesByCategoryId ( String categoryId, IProgressMonitor monitor )
 	{
+		return getWebServicesByCategoryId(categoryId,null,monitor);	
+	} 
+
+	/**
+	 * Returns an iterator of WebServiceInfo objects which represent web services found by locators that
+	 * have registered using the org.eclipse.wst.ws.locator extension point under the given category.
+	 * The search is constrained to the given set of one or more projects.
+	 * Locators must extend {@link AbstractWebServiceLocator}.
+	 * Callers can use the getter methods on the WebServiceInfo object to retrieve information on the 
+	 * web services found.  The WebServiceFinder cannot guarantee the level of detail contained in WebServiceInfo
+	 * objects returned.  This is left to the locator implementations.
+	 * @param categoryId The category of locators to use.
+	 * @param monitor A progress monitor, or null if progress monitoring is not desired.
+	 * @return An iterator of WebServiceInfo objects, never null.
+	 */
+	public Iterator getWebServicesByCategoryId ( String categoryId, IProject[] projects, IProgressMonitor monitor )
+	{
 		LinkedList webServices = new LinkedList();
 		WebServiceLocatorRegistry wslr = WebServiceLocatorRegistry.getInstance();
 		IConfigurationElement[] regElements = wslr.getConfigElements();
@@ -123,7 +175,7 @@
 						if (obj instanceof IWebServiceLocator)
 						{
 							IWebServiceLocator wsl = (IWebServiceLocator)obj;
-							List wsList = wsl.getWebServices(monitor);
+							List wsList = projects == null ? wsl.getWebServices(monitor) : wsl.getWebServices(projects,monitor);
 							if (wsList != null)
 							{
 								webServices.addAll(wsList);
@@ -157,6 +209,22 @@
 	
 	/**
 	 * Returns an iterator of WebServiceClientInfo objects which represent web service clients found by locators that
+	 * have registered using the org.eclipse.wst.ws.locator extension point.  Currently returns all web 
+	 * service clients found for all registered locators in the context of the given projects.
+	 * Locators must extend {@link AbstractWebServiceLocator}.
+	 * Callers can use the getter methods on the WebServiceClientInfo object to retrieve information on the 
+	 * web service clients found.  The WebServiceFinder cannot guarantee the level of detail contained in WebServiceClientInfo
+	 * objects returned.  This is left to the locator implementations.
+	 * @param monitor A progress monitor, or null if progress monitoring is not desired.
+	 * @return An iterator of WebServiceClientInfo objects, never null.
+	 */
+	public Iterator getWebServiceClients ( IProject[] projects, IProgressMonitor monitor )
+	{
+		return getWebServiceClientsByCategoryId(null,projects,monitor);
+	}
+	
+	/**
+	 * Returns an iterator of WebServiceClientInfo objects which represent web service clients found by locators that
 	 * have registered using the org.eclipse.wst.ws.locator extension point under the given category.
 	 * Locators must extend {@link AbstractWebServiceLocator}. 
 	 * Callers can use the getter methods on the WebServiceClientInfo object to retrieve information on the 
@@ -174,6 +242,23 @@
 	/**
 	 * Returns an iterator of WebServiceClientInfo objects which represent web service clients found by locators that
 	 * have registered using the org.eclipse.wst.ws.locator extension point under the given category.
+	 * The search is constrained to the given set of one or more projects.
+	 * Locators must extend {@link AbstractWebServiceLocator}. 
+	 * Callers can use the getter methods on the WebServiceClientInfo object to retrieve information on the 
+	 * web service clients found.  The WebServiceFinder cannot guarantee the level of detail contained in WebServiceClientInfo
+	 * objects returned.  This is left to the locator implementations.
+	 * @param category The category of locators to use.
+	 * @param monitor A progress monitor, or null if progress monitoring is not desired.
+	 * @return An iterator of WebServiceClientInfo objects, never null.
+	 */
+	public Iterator getWebServiceClientsByCategory ( WebServiceCategory category, IProject[] projects, IProgressMonitor monitor )
+	{
+		return getWebServiceClientsByCategoryId(category == null ? null : category.getId(),projects,monitor);
+	}
+
+	/**
+	 * Returns an iterator of WebServiceClientInfo objects which represent web service clients found by locators that
+	 * have registered using the org.eclipse.wst.ws.locator extension point under the given category.
 	 * Locators must extend {@link AbstractWebServiceLocator}.
 	 * Callers can use the getter methods on the WebServiceClientInfo object to retrieve information on the 
 	 * web service clients found.  The WebServiceFinder cannot guarantee the level of detail contained in WebServiceClientInfo
@@ -184,6 +269,23 @@
 	 */
 	public Iterator getWebServiceClientsByCategoryId ( String categoryId, IProgressMonitor monitor )
 	{
+		return getWebServiceClientsByCategoryId(categoryId,null,monitor);
+	} 
+
+	/**
+	 * Returns an iterator of WebServiceClientInfo objects which represent web service clients found by locators that
+	 * have registered using the org.eclipse.wst.ws.locator extension point under the given category.
+	 * The search is constrained to the given set of one or more projects.
+	 * Locators must extend {@link AbstractWebServiceLocator}.
+	 * Callers can use the getter methods on the WebServiceClientInfo object to retrieve information on the 
+	 * web service clients found.  The WebServiceFinder cannot guarantee the level of detail contained in WebServiceClientInfo
+	 * objects returned.  This is left to the locator implementations.
+	 * @param categoryId The category of locators to use.
+	 * @param monitor A progress monitor, or null if progress monitoring is not desired.
+	 * @return An iterator of WebServiceClientInfo objects, never null.
+	 */
+	public Iterator getWebServiceClientsByCategoryId ( String categoryId, IProject[] projects, IProgressMonitor monitor )
+	{
 		LinkedList webServiceClients = new LinkedList();
 		WebServiceLocatorRegistry wslr = WebServiceLocatorRegistry.getInstance();
 		IConfigurationElement[] regElements = wslr.getConfigElements();
@@ -199,7 +301,7 @@
 						if (obj instanceof IWebServiceLocator)
 						{
 							IWebServiceLocator wsl = (IWebServiceLocator)obj;
-							List wsList = wsl.getWebServiceClients(monitor);
+							List wsList = projects == null ? wsl.getWebServiceClients(monitor) : wsl.getWebServiceClients(projects,monitor);
 							if (wsList != null)
 							{
 								webServiceClients.addAll(wsList);
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/WorkspaceWSDLLocator.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/WorkspaceWSDLLocator.java
index 64e787e..7430dd8 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/WorkspaceWSDLLocator.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsfinder/WorkspaceWSDLLocator.java
@@ -10,6 +10,7 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060317   127456 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060620   147862 cbrealey@ca.ibm.com - Chris Brealey
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.wsfinder;
@@ -17,10 +18,12 @@
 import java.util.List;
 import java.util.Vector;
 
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceVisitor;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.wst.ws.internal.wsrt.WebServiceInfo;
 
@@ -31,17 +34,18 @@
  * and is accessed by the {@link WebServiceFinder}. 
  */
 
-public class WorkspaceWSDLLocator extends AbstractWebServiceLocator {
-	
+public class WorkspaceWSDLLocator extends AbstractWebServiceLocator
+{
+
 	protected List wsdlServices = null;
 	private static final String PLATFORM_RES = "platform:/resource";  //$NON-NLS-1$
 	private static final String WSDL_EXT = "wsdl";  //$NON-NLS-1$
-	
+
 	public WorkspaceWSDLLocator()
 	{
 		super();	
 	}
-	
+
 	/**
 	 * Returns the collection of all .wsdl files in the workspace.  Currently does not eliminate multiple 
 	 * occurences of the same web service. 
@@ -51,72 +55,95 @@
 	 * that the resource tree can be monitored for modifications to .wsdl files and changes made to a cache. 
 	 * 
 	 * @param monitor A progress monitor, or null if progress monitoring is not desired.
-	 * @return list of WebServiceInfo objects
+	 * @return list of WebServiceInfo objects, possibly null.
 	 */
-	public List getWebServices (IProgressMonitor monitor) {
-		
+	public List getWebServices (IProgressMonitor monitor)
+	{	
 		if (wsdlServices == null)
 		{
-			 try{
-			      IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
-		
-			      WSDLVisitor visitor = new WSDLVisitor();
-			      root.accept(visitor);		
-			      visitor.visit(root);
-			      wsdlServices = visitor.getWSDL();
-			    }
-			    catch (Exception ex){
-			        	
-			    }
+			try
+			{
+				IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+				WSDLVisitor visitor = new WSDLVisitor();
+				root.accept(visitor);		
+				wsdlServices = visitor.getWSDL();
+			}
+			catch (Exception ex)
+			{
+				// Do nothing.
+			}
 		}
-		
 		return wsdlServices;		
 	}
 
 	/**
+	 * Returns the collection of all .wsdl files in the given project.
+	 * Currently does not eliminate multiple occurences of the same web service. 
+	 * 
+	 * TODO: add a listener to the workspace resource tree so that getWebServices doesn't always
+	 * use the WSDLVisitor to walk the entire resource tree.  That should only happen once.  After
+	 * that the resource tree can be monitored for modifications to .wsdl files and changes made to a cache. 
+	 * 
+	 * @param monitor A progress monitor, or null if progress monitoring is not desired.
+	 * @return list of WebServiceInfo objects
+	 */
+	public List getWebServices (IProject[] projects, IProgressMonitor monitor)
+	{
+		WSDLVisitor visitor = new WSDLVisitor();
+		if (projects != null)
+		{
+			for (int p=0; p<projects.length; p++)
+			{
+				try
+				{
+					projects[p].accept(visitor);
+				}
+				catch (CoreException ex)
+				{
+					// Do nothing.
+				}
+			}
+		}
+		return visitor.getWSDL();
+	}
+
+	/**
 	 *  Uses the Visitor pattern to walk the workspace resource tree
 	 */
-	
 	private class WSDLVisitor implements IResourceVisitor
-    {
-	  
-	  private Vector wsdl = new Vector();
-    
-	  /**
-	   *
-	   * visits every node on the resource tree stopping a file resources
-	   * if file resource has extension .wsdl a WebServiceInfo object is created and added to a vector 
-	   *  TODO: look at caching to eliminate duplicate web service definitions in the vector returned
-	   *  TODO: add more information to the WebServiceInfo object.  Currently only the qualified filename is added.
-	   */
-	 
-	  public boolean visit(IResource resource)
-      {
-    	if (resource.getType() == IResource.FILE)
-        {        
-          String ext = resource.getFileExtension();
-          if (ext != null && ext.equalsIgnoreCase(WSDL_EXT))
-          {
-        	String urlString = resource.getFullPath().toString();          
-        	urlString = PLATFORM_RES + urlString;
-        	
-        	WebServiceInfo wsInfo = new WebServiceInfo();
-            wsInfo.setWsdlURL(urlString);           
-            
-            wsdl.add(wsInfo);
-          }
-        }
-        return true;
-      }
-      
-	  /**
-	   * 
-	   * @return vector of WebServiceInfo objects
-	   */
-      public Vector getWSDL()
-      {
-    	  return wsdl;
-      }
-    }
-	
+	{
+
+		private Vector wsdl = new Vector();
+
+		/**
+		 * visits every node on the resource tree stopping a file resources
+		 * if file resource has extension .wsdl a WebServiceInfo object is created and added to a vector 
+		 *  TODO: look at caching to eliminate duplicate web service definitions in the vector returned
+		 *  TODO: add more information to the WebServiceInfo object.  Currently only the qualified filename is added.
+		 */
+		public boolean visit(IResource resource)
+		{
+			if (resource.getType() == IResource.FILE)
+			{        
+				String ext = resource.getFileExtension();
+				if (ext != null && ext.equalsIgnoreCase(WSDL_EXT))
+				{
+					String urlString = PLATFORM_RES + resource.getFullPath().toString();
+					WebServiceInfo wsInfo = new WebServiceInfo();
+					wsInfo.setWsdlURL(urlString);           
+					wsdl.add(wsInfo);
+				}
+			}
+			return true;
+		}
+
+		/**
+		 * Returns a vector of WebServiceInfo objects.
+		 * @return vector of WebServiceInfo objects
+		 */
+		public Vector getWSDL()
+		{
+			return wsdl;
+		}
+	}
 }
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsrt/TestInfo.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsrt/TestInfo.java
index 79d02e1..9df8d08 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsrt/TestInfo.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsrt/TestInfo.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060608   145529 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.wsrt;
@@ -39,6 +42,7 @@
   private List endpoints;
   private String wsdlServiceURL;
   private boolean externalBrowser;  
+  private boolean runTestClient;
 
   /**
   * This is the folder the user has chosen to generate any jsps 
@@ -260,6 +264,14 @@
 	  this.externalBrowser = externalBrowser;
   }
 
+public boolean getRunTestClient() {
+	return runTestClient;
+}
+
+public void setRunTestClient(boolean runTestClient) {
+	this.runTestClient = runTestClient;
+}
+
 
 	
 }
diff --git a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsrt/WebServiceClientInfo.java b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsrt/WebServiceClientInfo.java
index 1b3996e..fd94e2e 100644
--- a/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsrt/WebServiceClientInfo.java
+++ b/bundles/org.eclipse.wst.ws/src/org/eclipse/wst/ws/internal/wsrt/WebServiceClientInfo.java
@@ -1,12 +1,15 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060728   145426 kathy@ca.ibm.com - Kathy Chan
  *******************************************************************************/
 
 package org.eclipse.wst.ws.internal.wsrt;
@@ -19,6 +22,7 @@
 	private java.lang.String webServiceRuntimeId;
 	private java.lang.String wsdlURL;
 	private java.lang.String implURL;
+	private java.lang.String proxyEndpoint = null;
 	
 	public java.lang.String getImplURL() {
 		return implURL;
@@ -56,4 +60,10 @@
 	public void setWsdlURL(java.lang.String wsdlURL) {
 		this.wsdlURL = wsdlURL;
 	}
+	public java.lang.String getProxyEndpoint() {
+		return proxyEndpoint;
+	}
+	public void setProxyEndpoint(java.lang.String proxyEndpoint) {
+		this.proxyEndpoint = proxyEndpoint;
+	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/.classpath b/bundles/org.eclipse.wst.wsdl.ui/.classpath
index 9b3ddea..4bf93e7 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/.classpath
+++ b/bundles/org.eclipse.wst.wsdl.ui/.classpath
@@ -1,9 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src-asd"/>
 	<classpathentry kind="src" path="src-asd-wsdl11"/>
 	<classpathentry kind="src" path="src-refactor"/>
+	<classpathentry kind="src" path="src-soap"/>
+	<classpathentry kind="src" path="src-search"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/bundles/org.eclipse.wst.wsdl.ui/.cvsignore b/bundles/org.eclipse.wst.wsdl.ui/.cvsignore
index 911ed7f..a65f62b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/.cvsignore
+++ b/bundles/org.eclipse.wst.wsdl.ui/.cvsignore
@@ -5,3 +5,4 @@
 org.eclipse.wst.wsdl.ui_1.0.0.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.wsdl.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.wsdl.ui/META-INF/MANIFEST.MF
index f1df63e..4387db9 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.wsdl.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %_UI_PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.wsdl.ui; singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.1.101.qualifier
 Bundle-Activator: org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -38,42 +38,49 @@
  org.eclipse.wst.wsdl.ui.internal.properties.sections,
  org.eclipse.wst.wsdl.ui.internal.reconciler;x-internal:=true,
  org.eclipse.wst.wsdl.ui.internal.refactor;x-internal:=true,
- org.eclipse.wst.wsdl.ui.internal.refactor.actions;x-internal:=true,
  org.eclipse.wst.wsdl.ui.internal.search;x-internal:=true,
+ org.eclipse.wst.wsdl.ui.internal.search.actions;x-internal:=true,
+ org.eclipse.wst.wsdl.ui.internal.soap.customizations;x-internal:=true,
  org.eclipse.wst.wsdl.ui.internal.text;x-internal:=true,
  org.eclipse.wst.wsdl.ui.internal.util;x-internal:=true,
  org.eclipse.wst.wsdl.ui.internal.visitor;x-internal:=true,
- org.eclipse.wst.wsdl.ui.internal.wizards;x-internal:=true
-Require-Bundle: org.eclipse.core.resources,
- org.eclipse.emf.common,
- org.eclipse.emf.ecore,
- org.eclipse.gef,
- org.eclipse.jface,
- org.eclipse.jface.text,
- org.eclipse.ui,
- org.eclipse.ui.editors,
- org.eclipse.ui.ide,
- org.eclipse.ui.views,
- org.eclipse.ui.workbench.texteditor,
- org.eclipse.wst.sse.core,
- org.eclipse.wst.sse.ui,
- org.eclipse.wst.common.uriresolver,
- org.eclipse.wst.common.ui,
- org.eclipse.wst.xml.core,
- org.eclipse.wst.xml.ui,
- org.eclipse.xsd,
- org.eclipse.wst.wsdl,
- org.eclipse.wst.common.core,
- org.eclipse.wst.xsd.ui,
- org.eclipse.emf.edit,
- org.eclipse.emf.edit.ui,
- org.eclipse.wst.validation,
- org.wsdl4j,
- org.eclipse.wst.wsdl.validation,
- org.eclipse.ltk.core.refactoring,
- org.eclipse.ltk.ui.refactoring,
- com.ibm.icu,
- org.eclipse.core.runtime,
- org.apache.xerces,
- org.eclipse.ui.views.properties.tabbed
+ org.eclipse.wst.wsdl.ui.internal.wizards;x-internal:=true,
+ org.eclipse.wst.wsdl.ui.internal.xsd;x-internal:=true
+Require-Bundle: org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.2.0,3.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.2.0,3.0.0)",
+ org.eclipse.gef;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.editors;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.views;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.workbench.texteditor;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.sse.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.sse.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.wst.common.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.xml.core;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.xml.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.xsd;bundle-version="[2.2.0,3.0.0)",
+ org.eclipse.wst.wsdl;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.common.core;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.wst.xsd.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.emf.edit;bundle-version="[2.2.0,3.0.0)",
+ org.eclipse.emf.edit.ui;bundle-version="[2.2.0,3.0.0)",
+ org.eclipse.wst.validation;bundle-version="[1.1.0,1.2.0)",
+ org.wsdl4j;bundle-version="[1.4.0,2.0.0)",
+ org.eclipse.wst.wsdl.validation;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.ltk.core.refactoring;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ltk.ui.refactoring;bundle-version="[3.2.0,4.0.0)",
+ com.ibm.icu;bundle-version="[3.4.4,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.apache.xerces;bundle-version="[2.8.0,3.0.0)",
+ org.eclipse.ui.views.properties.tabbed;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.ws.ui;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.search;bundle-version="[3.2.0,4.0.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.wsdl.ui/about.html b/bundles/org.eclipse.wst.wsdl.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/about.html
+++ b/bundles/org.eclipse.wst.wsdl.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.wsdl.ui/build.properties b/bundles/org.eclipse.wst.wsdl.ui/build.properties
index 480487c..26692d3 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/build.properties
+++ b/bundles/org.eclipse.wst.wsdl.ui/build.properties
@@ -17,5 +17,7 @@
 jars.compile.order = .
 source.. = src-asd/,\
            src-asd-wsdl11,\
-           src-refactor/
-output.. = bin/
\ No newline at end of file
+           src-refactor/,\
+           src-soap/,\
+           src-search/
+output.. = bin/
diff --git a/bundles/org.eclipse.wst.wsdl.ui/icons/dlcl16/showproperties_obj.gif b/bundles/org.eclipse.wst.wsdl.ui/icons/dlcl16/showproperties_obj.gif
new file mode 100644
index 0000000..d94ff10
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/icons/dlcl16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.wsdl.ui/icons/elcl16/showproperties_obj.gif b/bundles/org.eclipse.wst.wsdl.ui/icons/elcl16/showproperties_obj.gif
new file mode 100644
index 0000000..1dc19a3
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/icons/elcl16/showproperties_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.wsdl.ui/plugin.properties b/bundles/org.eclipse.wst.wsdl.ui/plugin.properties
index 18da47c..dc116b5 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.wsdl.ui/plugin.properties
@@ -13,8 +13,14 @@
 _UI_WSDL_LABEL=WSDL Files
 _UI_LABEL_GENERAL=General
 _UI_LABEL_DOCUMENTATION=Documentation
+_UI_LABEL_EXTENSIONS=Extensions
+_UI_LABEL_REFACTOR=Refactor
 _UI_EDITOR_NAME=WSDL Editor
 _UI_RELOAD_DEPENDENCIES=Reload Dependencies
 refactoring.menu.label=Refactor
 AddBookmark.label=Add Boo&kmark...
-SelectRuler.label=Select Ruler
\ No newline at end of file
+SelectRuler.label=Select Ruler
+WSDLEditorModes=WSDL Editor Modes
+
+_UI_PLUGIN_NAME=WSDL UI
+providerName=Eclipse.org
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/plugin.xml b/bundles/org.eclipse.wst.wsdl.ui/plugin.xml
index 0f3cb95..62d2392 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.wsdl.ui/plugin.xml
@@ -4,7 +4,7 @@
 
 	<extension point="org.eclipse.ui.editors">
 		<editor
-			name="WSDL Editor"
+			name="%_UI_EDITOR_NAME"
 			icon="icons/wsdl_file_obj.gif"
 			class="org.eclipse.wst.wsdl.ui.internal.InternalWSDLMultiPageEditor"
 			contributorClass="org.eclipse.wst.wsdl.ui.internal.WSDLActionBarContributor"
@@ -56,10 +56,11 @@
 		schema="schema/extensibilityElementFilter.exsd" />
 		
     <extension-point id="WSDLEditorExtensionConfiguration" name="WSDLEditorExtensionConfiguration"/>
-		
-	<extension-point id="ExtensionsSchemasDescription" name="ExtensionsSchemasDescription"/>
-	
-		<!--  Start of New WSDL Editor -->
+    <extension-point id="editorModes" name="%WSDLEditorModes"/>
+    
+    <!-- this extension point is deprecated, use extensionCategories -->
+	<extension-point id="ExtensionsSchemasDescription" name="this extension point is deprecated"/>	
+	<extension-point id="extensionCategories" name="Extension Categories"/>		
 	<extension
 		point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
 		<propertyContributor
@@ -81,7 +82,7 @@
 				id="org.eclipse.wst.xmlwebservices.general">
 			</propertyTab>
 			<propertyTab
-				label="Extensibility"
+				label="%_UI_LABEL_EXTENSIONS"
 				category="extensibility"
 				id="org.eclipse.wst.xmlwebservices.extensibility">
 			</propertyTab>
@@ -205,31 +206,44 @@
 	    </input>
 	 </propertySection>
 	 
+	 <propertySection tab="org.eclipse.wst.xmlwebservices.extensibility" 
+        class="org.eclipse.wst.wsdl.ui.internal.properties.sections.W11ExtensionsSection"
+	 	id="prop.section.W11ApplicationInfoSection">
+	    <input type="org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.AbstractModelCollection">
+	    </input>
+	 </propertySection>
+	 
+	 <propertySection tab="org.eclipse.wst.xmlwebservices.general"
+        class="org.eclipse.wst.wsdl.ui.internal.asd.properties.sections.NameSection"
+	 	id="prop.section.NameSection">
+	    <input type="org.eclipse.wst.wsdl.ui.internal.asd.facade.IBindingOperation">
+	    </input>
+	 </propertySection>
 	 	 
+	 <propertySection tab="org.eclipse.wst.xmlwebservices.general"
+        class="org.eclipse.wst.wsdl.ui.internal.asd.properties.sections.NameSection"
+	 	id="prop.section.NameSection">
+	    <input type="org.eclipse.wst.wsdl.ui.internal.asd.facade.IBindingMessageReference">
+	    </input>
+	 </propertySection>
   </propertySections>
 </extension>
 
-   <extension point="org.eclipse.wst.wsdl.ui.ExtensionsSchemasDescription">
-     <ApplicationSpecificSchemaProperties
-     	displayName="http://schemas.xmlsoap.org/wsdl/http/"
-      	namespaceURI="http://schemas.xmlsoap.org/wsdl/http/"
-     	labelProviderClass="org.eclipse.wst.wsdl.ui.internal.label.providers.HTTPLabelProvider">
-     </ApplicationSpecificSchemaProperties>
-   </extension>
+   <extension point="org.eclipse.wst.wsdl.ui.extensionCategories">
+     <category
+     	displayName="HTTP"
+      	namespaceURI="http://schemas.xmlsoap.org/wsdl/http/">
+      </category>
 
-   <extension point="org.eclipse.wst.wsdl.ui.ExtensionsSchemasDescription">
-     <ApplicationSpecificSchemaProperties
-     	displayName="http://schemas.xmlsoap.org/wsdl/soap/"
-      	namespaceURI="http://schemas.xmlsoap.org/wsdl/soap/"
-		labelProviderClass="org.eclipse.wst.wsdl.ui.internal.label.providers.SOAPLabelProvider">
-     </ApplicationSpecificSchemaProperties>
-   </extension>
-   
-   <extension point="org.eclipse.wst.wsdl.ui.ExtensionsSchemasDescription">
-     <ApplicationSpecificSchemaProperties
-     	  displayName="http://schemas.xmlsoap.org/wsdl/mime/"
+     <category
+     	displayName="SOAP"
+      	namespaceURI="http://schemas.xmlsoap.org/wsdl/soap/">
+     </category>
+
+     <category
+        displayName="MIME"
       	namespaceURI="http://schemas.xmlsoap.org/wsdl/mime/">
-     </ApplicationSpecificSchemaProperties>
+     </category>
    </extension>
    
    <extension point="org.eclipse.ui.popupMenus"> 
@@ -241,11 +255,26 @@
             enablesFor="1"
             style="pulldown"
             menubarPath="refactoring-slot-temp"
-            label="Refactor" 
+            label="%_UI_LABEL_REFACTOR" 
             class="org.eclipse.wst.wsdl.ui.internal.refactor.actions.WSDLRefactorGroupActionDelegate"> 
          </action>          
       </objectContribution>               
     </extension>
+    
+	<extension point="org.eclipse.ui.popupMenus"> 
+      <objectContribution 
+         id="org.eclipse.wst.wsdl.ui.searchReferences.menu.objectContrib" 
+         objectClass="org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter">  
+         <action
+            id="org.eclipse.wst.wsdleditor.searchReferences.menu.searchReferences.object" 
+            enablesFor="1"
+            style="pulldown"
+            menubarPath="searchReferences-slot-temp"
+            label="References" 
+            class="org.eclipse.wst.wsdl.ui.internal.search.actions.WSDLSearchReferencesGroupActionDelegate"> 
+         </action>          
+      </objectContribution>               
+    </extension>    
 	
 		<!-- intialize wsdl source validator -->
 	<extension point="org.eclipse.wst.sse.ui.sourcevalidation">
@@ -446,4 +475,18 @@
 			class="org.eclipse.wst.wsdl.ui.internal.filter.XSDExtensiblityElementFilter">
 		</extensibilityElementFilter>
 	</extension>
+	
+	<extension
+  	   point="org.eclipse.wst.xsd.ui.extensibilityNodeCustomizations">
+       <nodeCustomization
+			namespace="http://schemas.xmlsoap.org/wsdl/soap/"
+			nodeEditorProviderClass="org.eclipse.wst.wsdl.ui.internal.soap.customizations.SOAPNodeEditorProvider"
+			labelProviderClass="org.eclipse.wst.wsdl.ui.internal.label.providers.SOAPLabelProvider">
+		</nodeCustomization>		
+       <nodeCustomization
+			namespace="http://schemas.xmlsoap.org/wsdl/http/"
+			nodeEditorProviderClass="org.eclipse.wst.wsdl.ui.internal.soap.customizations.SOAPNodeEditorProvider"
+			labelProviderClass="org.eclipse.wst.wsdl.ui.internal.label.providers.HTTPLabelProvider">
+		</nodeCustomization>					
+	</extension>	
 </plugin>
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/DefaultEditorMode.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/DefaultEditorMode.java
new file mode 100644
index 0000000..cf77496
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/DefaultEditorMode.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal;
+
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.ASDEditPartFactory;
+import org.eclipse.wst.wsdl.ui.internal.asd.outline.ASDContentOutlineProvider;
+import org.eclipse.wst.wsdl.ui.internal.properties.sections.EditorModeSectionFilter;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.EditorMode;
+
+public class DefaultEditorMode extends EditorMode
+{
+  private EditorModeSectionFilter sectionFilter = null;  
+  public final static String ID =  DefaultEditorMode.class.getName();
+  
+  public String getDisplayName()
+  {
+    return "default";
+  }
+
+  public EditPartFactory getEditPartFactory()
+  {
+    return new ASDEditPartFactory();
+  }
+
+  public String getId()
+  {
+    return ID;
+  }
+
+  public IContentProvider getOutlineProvider()
+  {
+    return new ASDContentOutlineProvider();
+  } 
+   
+  public Object getAdapter(Class adapter)
+  {
+    return super.getAdapter(adapter);
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/InternalWSDLMultiPageEditor.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/InternalWSDLMultiPageEditor.java
index ca2877e..30948a0 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/InternalWSDLMultiPageEditor.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/InternalWSDLMultiPageEditor.java
@@ -11,14 +11,21 @@
 package org.eclipse.wst.wsdl.ui.internal;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.gef.EditPartFactory;
+import org.eclipse.gef.KeyStroke;
 import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.gef.ui.actions.GEFActionConstants;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.viewers.IContentProvider;
 import org.eclipse.jface.viewers.IPostSelectionProvider;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -26,12 +33,20 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.XSDSchemaExtensibilityElement;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11AddPartAction;
+import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11OpenImportAction;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetExistingElementAction;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetExistingMessageAction;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetExistingTypeAction;
@@ -42,9 +57,13 @@
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Type;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddMessageAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDDirectEditAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicalViewer;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.KeyboardDragImpl;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.DefinitionsEditPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
-import org.eclipse.wst.wsdl.ui.internal.asd.util.ASDEditPartFactoryHelper;
+import org.eclipse.wst.wsdl.ui.internal.asd.outline.ASDContentOutlinePage;
 import org.eclipse.wst.wsdl.ui.internal.asd.util.IOpenExternalEditorHelper;
 import org.eclipse.wst.wsdl.ui.internal.edit.W11BindingReferenceEditManager;
 import org.eclipse.wst.wsdl.ui.internal.edit.W11InterfaceReferenceEditManager;
@@ -59,6 +78,10 @@
 import org.eclipse.wst.wsdl.ui.internal.util.WSDLResourceUtil;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.ui.internal.adt.design.IKeyboardDrag;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.EditorMode;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.EditorModeManager;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.ProductCustomizationProvider;
 import org.eclipse.wst.xsd.ui.internal.editor.XSDElementReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.editor.XSDTypeReferenceEditManager;
 import org.eclipse.xsd.XSDSchema;
@@ -78,43 +101,53 @@
 	protected WSDLModelAdapter modelAdapter;
 	protected SourceEditorSelectionListener fSourceEditorSelectionListener;
 	protected WSDLSelectionManagerSelectionListener fWSDLSelectionListener;
-	
-	public IDescription buildModel(IFileEditorInput editorInput)
-	{   
-		try
-		{
-			Object obj = null;
-			Document document = ((IDOMModel) getTextEditor().getModel()).getDocument();
-			if (document instanceof INodeNotifier) {
-				INodeNotifier notifier = (INodeNotifier) document;
-				modelAdapter = (WSDLModelAdapter) notifier.getAdapterFor(WSDLModelAdapter.class);
-				if (modelAdapter == null) {
-					modelAdapter = new WSDLModelAdapter();
-					notifier.addAdapter(modelAdapter);
-					obj = modelAdapter.createDefinition(document.getDocumentElement(), document);
-				}
-				if (obj == null) {
-					obj = modelAdapter.createDefinition(document.getDocumentElement(), document);
-				}
-			}
-			
-			if (obj instanceof Definition)
-			{
-				Definition definition = (Definition) obj;
-				model = (IDescription) WSDLAdapterFactoryHelper.getInstance().adapt(definition); 
-			}
-//			wsdlResource.setModified(false);
-//			}
-		}
-		catch (StackOverflowError e)
-		{
-		}
-		catch (Exception ex)
-		{
-		}
-		
-		return model;
-	}
+
+  private IStructuredModel structuredModel;
+  private final static String WSDL_EDITOR_MODE_EXTENSION_ID = "org.eclipse.wst.wsdl.ui.editorModes"; //$NON-NLS-N$  
+  
+  public IDescription buildModel(IFileEditorInput editorInput) {   
+	  try {
+		  // ISSUE: This code which deals with the structured model is similar to the one in the XSD editor. 
+		  // It could be refactored into the base class.
+
+		  Document document = null;
+		  IDocument doc = structuredTextEditor.getDocumentProvider().getDocument(editorInput);
+		  if (doc instanceof IStructuredDocument) {
+			  IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForEdit(doc);
+			  if (model == null) {
+				  model = StructuredModelManager.getModelManager().getModelForEdit((IStructuredDocument) doc);
+			  }
+			  structuredModel = model;
+			  document = ((IDOMModel) model).getDocument();
+		  }
+		  Assert.isNotNull(document);
+
+		  Object obj = null;
+
+		  if (document instanceof INodeNotifier) {
+			  INodeNotifier notifier = (INodeNotifier) document;
+			  modelAdapter = (WSDLModelAdapter) notifier.getAdapterFor(WSDLModelAdapter.class);
+			  if (modelAdapter == null) {
+				  modelAdapter = new WSDLModelAdapter();
+				  notifier.addAdapter(modelAdapter);
+				  obj = modelAdapter.createDefinition(document.getDocumentElement(), document);
+			  }
+			  if (obj == null) {
+				  obj = modelAdapter.createDefinition(document.getDocumentElement(), document);
+			  }
+		  }
+
+		  if (obj instanceof Definition) {
+			  Definition definition = (Definition) obj;
+			  model = (IDescription) WSDLAdapterFactoryHelper.getInstance().adapt(definition);
+		  }
+	  }
+	  catch (Exception e) {
+		  e.printStackTrace();
+	  }    
+
+	  return model;
+  }
 	
 	private XSDSchema[] getInlineSchemas() {
 		List types = getModel().getTypes();
@@ -128,7 +161,11 @@
 	}
 	
 	public Object getAdapter(Class type) {
-		if (type == ISelectionMapper.class)
+		if (type == Definition.class)
+		{
+			return ((W11Description) getModel()).getTarget();
+		}
+		else if (type == ISelectionMapper.class)
 		{
 			return new WSDLSelectionMapper();
 		}
@@ -136,6 +173,10 @@
         {
           return ((Adapter)model).getTarget(); 
         }
+		else if (type == IOpenExternalEditorHelper.class) {
+			return new W11OpenExternalEditorHelper(((IFileEditorInput) getEditorInput()).getFile());
+		}
+
         else if (type == XSDTypeReferenceEditManager.class)
         {
           IEditorInput editorInput = getEditorInput();
@@ -182,7 +223,13 @@
             	return new W11MessageReferenceEditManager((W11Description) getModel(), fileEditorInput.getFile());
             }        	
         }
-		
+        else if (type == ProductCustomizationProvider.class)
+        {
+          return WSDLEditorPlugin.getInstance().getProductCustomizationProvider();
+        }
+        else if (type == IKeyboardDrag.class) {
+			return new KeyboardDragImpl();
+		}
 		return super.getAdapter(type);
 	}
 	
@@ -192,12 +239,12 @@
 	 */
 	private class SourceEditorSelectionListener implements ISelectionChangedListener {
 		/**
-		 * Determines WSDL node based on object (DOM node)
+		 * Determines WSDL facade object based on DOM node
 		 * 
 		 * @param object
 		 * @return
 		 */
-		private Object getWSDLNode(Object object) {
+		private Object getWSDLFacadeObject(Object object) {
 			// get the element node
 			Element element = null;
 			if (object instanceof Node) {
@@ -215,6 +262,15 @@
 			if (element != null) {
 				Definition def = (Definition) ((W11Description) model).getTarget();
 				Object modelObject = WSDLEditorUtil.getInstance().findModelObjectForElement(def, element);
+				
+				// rmah: We handle this special scenario where the modelObject is an XSDSchemaExtensibilityElement.
+				// We actually want the XSDSchema object.  However, our node reconciler will always return
+				// XSDSchemaExtensibilityElement because both XSDSchemaExtensibilityElement and XSDSchema
+				// both have the SAME Element object, and the reconciler encounters the XSDSchemaExtensibilityElement
+				// first....  See WSDLNodeNodeAssociationProvider for more details.....
+				if (modelObject instanceof XSDSchemaExtensibilityElement) {
+					modelObject = ((XSDSchemaExtensibilityElement) modelObject).getSchema();
+				}
 				if (modelObject != null) {
 					o = WSDLAdapterFactoryHelper.getInstance().adapt((Notifier) modelObject);
 				}
@@ -223,9 +279,7 @@
 		}
 		
 		public void selectionChanged(SelectionChangedEvent event) {
-			
-			if (getActivePage() == 0)
-//				if (getSelectionManager().getEnableNotify() && getActivePage() == 1)
+			if (getSelectionManager().getEnableNotify() && getActivePage() == 1)
 			{
 				ISelection selection = event.getSelection();
 				if (selection instanceof IStructuredSelection)
@@ -234,10 +288,10 @@
 					for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();)
 					{
 						Object domNode = i.next();
-						Object node = getWSDLNode(domNode);
-						if (node != null)
+						Object facade = getWSDLFacadeObject(domNode);
+						if (facade != null)
 						{
-							selections.add(node);
+							selections.add(facade);
 						}
 					}
 					
@@ -268,6 +322,17 @@
 			if (object instanceof Node) {
 				node = (Node) object;
 			}
+			else if (object instanceof String) {
+				// The string is expected to be a URI fragment used to identify a WSDL element.
+				// The URI fragment should be relative to the definition being edited in this editor.
+				String uriFragment = (String)object;
+				EObject definition = ((Definition)((W11Description)getModel()).getTarget());
+				EObject modelObject = definition.eResource().getEObject(uriFragment);
+
+				if (modelObject != null) {
+					node = WSDLEditorUtil.getInstance().getNodeForObject(modelObject);
+				}        
+			}
 			else {
 				node = WSDLEditorUtil.getInstance().getNodeForObject(object);
 			}
@@ -288,18 +353,20 @@
 				if (selection instanceof IStructuredSelection) {
 					List otherModelObjectList = new ArrayList();
 					for (Iterator i = ((IStructuredSelection) selection).iterator(); i.hasNext();) {
-						Object facadeObject = i.next();
-						if (facadeObject instanceof WSDLBaseAdapter) {
-							Object wsdlObject = ((WSDLBaseAdapter) facadeObject).getTarget();
-							Object otherModelObject = getObjectForOtherModel(wsdlObject);
-							if (otherModelObject != null) {
-								otherModelObjectList.add(otherModelObject);
-							}
+						Object wsdlObject = i.next();
+
+						if (wsdlObject instanceof WSDLBaseAdapter) {
+							wsdlObject = ((WSDLBaseAdapter) wsdlObject).getTarget();
+						}
+
+						Object otherModelObject = getObjectForOtherModel(wsdlObject);
+						if (otherModelObject != null) {
+							otherModelObjectList.add(otherModelObject);
 						}
 					}
 					if (!otherModelObjectList.isEmpty()) {
 						StructuredSelection nodeSelection = new StructuredSelection(otherModelObjectList);
-            getTextEditor().getSelectionProvider().setSelection(nodeSelection);
+						getTextEditor().getSelectionProvider().setSelection(nodeSelection);
 					}
 				}
 			}
@@ -308,7 +375,8 @@
 	
 	protected void configureGraphicalViewer() {
 		super.configureGraphicalViewer();
-		setEditPartFactory(ASDEditPartFactoryHelper.getInstance().getEditPartFactory());
+		graphicalViewer.getKeyHandler().put(KeyStroke.getPressed(SWT.F2, 0), getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT));
+		setEditPartFactory(getEditorModeManager().getCurrentMode().getEditPartFactory());
 	}
 	
 	protected void createPages() {
@@ -333,9 +401,14 @@
 	}
 	
 	public void dispose() {
+		if (structuredModel != null) {
+			structuredModel.releaseFromEdit();      
+		}
 		if (resourceChangeHandler != null) {
 			resourceChangeHandler.dispose();
 		}
+		getSelectionManager().removeSelectionChangedListener(fWSDLSelectionListener);
+		super.dispose();
 	}
 	
 	public void reloadDependencies() {
@@ -393,9 +466,97 @@
 	    action = new W11SetExistingElementAction(this);
 	    action.setSelectionProvider(getSelectionManager());
 	    registry.registerAction(action);
+	    
+	    action = new W11OpenImportAction(this);
+	    action.setSelectionProvider(getSelectionManager());
+	    registry.registerAction(action);
+
+	    action = new OpenInNewEditor(this);
+	    action.setSelectionProvider(getSelectionManager());
+	    registry.registerAction(action);
+
+	    ASDDirectEditAction directEditAction = new ASDDirectEditAction(this);
+	    directEditAction.setSelectionProvider(getSelectionManager());
+	    registry.registerAction(directEditAction);
 	  }
 	
+  /*
+   * @deprecated: rmah: remove the method below post WTP1.5.  Use getAdapter() method instead.
+   */
   public IOpenExternalEditorHelper getOpenExternalEditorHelper() {
     return new W11OpenExternalEditorHelper(((IFileEditorInput) getEditorInput()).getFile());
   }
+  
+  private static final String DEFAULT_EDITOR_MODE_ID = "org.eclipse.wst.wsdl.ui.defaultEditorModeId"; //$NON-NLS-1$
+  
+  protected EditorModeManager createEditorModeManager()
+  {
+    final ProductCustomizationProvider productCustomizationProvider = (ProductCustomizationProvider)getAdapter(ProductCustomizationProvider.class);
+    EditorModeManager manager = new EditorModeManager(WSDL_EDITOR_MODE_EXTENSION_ID)
+    {
+      public void init()
+      {
+        if (productCustomizationProvider == null || 
+            productCustomizationProvider.isEditorModeApplicable(DefaultEditorMode.ID))
+        {          
+          addMode(new DefaultEditorMode());
+        }  
+        super.init();
+      }
+      
+      protected EditorMode getDefaultMode()
+      {
+        String defaultModeId = WSDLEditorPlugin.getInstance().getPreferenceStore().getString(DEFAULT_EDITOR_MODE_ID);
+        if (defaultModeId != null)
+        {
+          EditorMode editorMode = getEditorMode(defaultModeId);
+          if (editorMode != null)
+          {
+            return editorMode;
+          }  
+        }               
+        return super.getDefaultMode();
+      }      
+    };
+    manager.setProductCustomizationProvider(productCustomizationProvider);
+    return manager;
+  }
+  
+  public void editorModeChanged(EditorMode newEditorMode)
+  {
+    EditPartFactory editPartFactory = newEditorMode.getEditPartFactory();
+    if (editPartFactory != null)
+    {  
+      graphicalViewer.setEditPartFactory(editPartFactory);
+      if (graphicalViewer instanceof DesignViewGraphicalViewer)
+      {  
+        DesignViewGraphicalViewer viewer = (DesignViewGraphicalViewer)graphicalViewer;
+        DefinitionsEditPart editPart = (DefinitionsEditPart)viewer.getRootEditPart().getContents();
+        editPart.setModelChildren(Collections.EMPTY_LIST);
+        editPart.refresh();
+        editPart.setModelChildren(null);
+        editPart.refresh();        
+      }
+    }  
+    IContentProvider provider = newEditorMode.getOutlineProvider();
+    if (provider != null)
+    {
+      ASDContentOutlinePage outline = (ASDContentOutlinePage)getContentOutlinePage();
+      if (outline != null)
+      {
+        TreeViewer treeViewer = outline.getTreeViewer();
+        if (treeViewer != null)
+        {      
+          outline.getTreeViewer().setContentProvider(provider);
+          outline.getTreeViewer().refresh();
+        }
+      }  
+
+    }  
+  }
+  
+  protected void storeCurrentModePreference(String id)
+  {
+    WSDLEditorPlugin.getInstance().getPreferenceStore().setValue(DEFAULT_EDITOR_MODE_ID, id);    
+  }  
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/Messages.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/Messages.java
index 818f265..6e40e15 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/Messages.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/Messages.java
@@ -4,11 +4,15 @@
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
+import org.eclipse.osgi.util.NLS;
+
 public class Messages {
 	private static final String BUNDLE_NAME = "org.eclipse.wst.wsdl.ui.internal.messages"; //$NON-NLS-1$
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class); //$NON-NLS-1$
+	}
+		private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
 
 	private Messages() {
 	}
@@ -25,4 +29,105 @@
 	public static String getString(String key, String arg0) {
 		return MessageFormat.format(getString(key), new Object [] { arg0 });
 	}
+
+	public static String getString(String key, Object[] args) {
+		return MessageFormat.format(getString(key), args);
+	}
+	
+	public static String _UI_DEPENDENCIES_CHANGED;
+	public static String _UI_DEPENDENCIES_CHANGED_REFRESH;
+	public static String _UI_EDIT_NAMESPACES_DIALOG_TITLE;
+	public static String _UI_PREF_PAGE_CREATING_FILES;
+	public static String _UI_REMEMBER_MY_DECISION_LABEL;
+	public static String _UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE;
+	public static String _UI_REGEN_BINDINGS_ON_SAVE_QUESTIONMARK;
+	public static String _UI_LABEL_WARNING_DUPLICATE_NAME_EXISTS;
+	public static String _UI_LABEL_NAMESPACE_URIS_TO_BE_INCLUDED;
+	public static String _UI_PREF_PAGE_AUTO_REGENERATE_BINDING;
+	public static String _UI_PREF_PAGE_PROMPT_REGEN_BINDING_ON_SAVE;
+	public static String _UI_EDIT_NAMESPACES;
+	public static String _UI_ACTION_ADD_IMPORT;
+	public static String _UI_ACTION_ADD_BINDING;
+	public static String _UI_ACTION_ADD_PART;
+	public static String _UI_ACTION_REORDER_PART;
+	public static String _UI_ACTION_REORDER_MESSAGE_REFERENCE;
+	public static String _UI_ACTION_OPEN_IN_NEW_EDITOR;
+	public static String _UI_ACTION_EXISTING_MESSAGE;
+	public static String _UI_ACTION_EXISTING_ELEMENT;
+	public static String _UI_ERROR_NAMESPACE_INVALID;
+	public static String _UI_ERROR_FILE_ALREADY_EXISTS;
+	public static String _UI_DESCRIPTION_NEW_WSDL_FILE;
+	public static String _UI_REGEN_BINDINDS_ON_SAVE;
+	public static String _UI_RADIO_DOCUMENT_LITERAL;
+	public static String _UI_TITLE_SPECIFY_PORTTYPE;
+	public static String _UI_LABEL_BINDING_PROTOCOL;
+	public static String _UI_LABEL_INLINE_SCHEMA_OF;
+	public static String _UI_LABEL_TARGET_NAMESPACE;
+	public static String _UI_LABEL_PREFIX_WITH_COLON;
+	public static String _UI_LABEL_CREATE_WSDL_SKELETON;
+	public static String _UI_LABEL_CREATE_NEW_WSDL_FILE;
+	public static String _UI_LABEL_SOAP_BINDING_OPTIONS;
+	public static String _UI_LABEL_HTTP_BINDING_OPTIONS;
+	public static String _UI_LABEL_ADD_EXTENSION_ELEMENT;
+	public static String _UI_SPECIFY_BINDING_DETAILS_LABEL;
+	public static String _UI_SPECIFY_PORT_DETAILS_TO_BE_CREATED;
+	public static String _UI_LABEL_NEW_BINDING;
+	public static String _UI_LABEL_NEW_PORTTYPE;
+	public static String _UI_LABEL_REFERENCE_KIND;
+	public static String _UI_LABEL_NEW_MESSAGE;
+	public static String _UI_RADIO_RPC_ENCODED;
+	public static String _UI_RADIO_RPC_LITERAL;
+	public static String _UI_ACTION_EXISTING_TYPE;
+	public static String _UI_SPECIFY_PORT_DETAILS;
+	public static String _UI_TITLE_SPECIFY_BINDING;
+	public static String _UI_TITLE_SPECIFY_BINDING_DETAILS;
+	public static String _UI_ERROR_FILE_MUST_END_WITH_WSDL;
+	public static String _UI_TITLE_SPECIFY_MESSAGE;
+	public static String _UI_TITLE_NEW_WSDL_FILE;
+	public static String _UI_NAME_INVALID_CHAR_END;
+	public static String _UI_ACTION_RENAME;
+	public static String _UI_FOLDER_TYPES;
+	public static String _UI_CANCEL_LABEL;
+	public static String _UI_ACTION_NEW_TYPE;
+	public static String _UI_ACTION_SET_TYPE;
+	public static String _UI_FOLDER_IMPORTS;
+	public static String _UI_FOLDER_SERVICES;
+	public static String _UI_FOLDER_BINDINGS;
+	public static String _UI_FOLDER_INTERFACES;
+	public static String _UI_FOLDER_PORTTYPES;
+	public static String _UI_FOLDER_MESSAGES;
+	public static String _UI_ACTION_NEW_MESSAGE;
+	public static String _UI_ACTION_NEW_ELEMENT;
+	public static String _UI_ACTION_SET_ELEMENT;
+	public static String _UI_ACTION_SET_MESSAGE;
+	public static String _UI_ACTION_SET_BINDING;
+	public static String _UI_CHECKBOX_OVERWRITE;
+	public static String _UI_ACTION_SET_PORTTYPE;
+	public static String _UI_ACTION_ADD;
+	public static String _UI_ACTION_OPEN_IMPORT;
+	public static String _UI_UNSPECIFIED;
+	public static String _UI_LABEL_NAME;
+	public static String _UI_LABEL_TYPE;
+	public static String _UI_BUTTON_NEW;
+	public static String _UI_LABEL_ELEMENT;
+	public static String _UI_BUTTON_BROWSE;
+	public static String _UI_BINDING_WIZARD;
+	public static String _UI_BINDING;
+	public static String _UI_LABEL_MESSAGE;
+	public static String _UI_LABEL_REMOVE;
+	public static String _UI_TITLE_SELECT;
+	public static String _UI_TITLE_SELECT_FILE;
+	public static String _UI_DESCRIPTION_SELECT_WSDL_OR_XSD;
+	public static String _UI_TITLE_OPTIONS;
+	public static String _UI_YES_LABEL;
+	public static String _UI_PORT_TYPE;
+	public static String _UI_PORT_WIZARD;
+	public static String _UI_NO_LABEL;
+	public static String _UI_ADD;
+	public static String _UI_HELP;
+	public static String _UI_LABEL_NAME_FILTER;
+	public static String _WARN_NAME_MUST_CONTAIN_AT_LEAST_ONE_CHAR;
+	public static String _WARN_NAME_HAS_SPACE;
+	public static String _WARN_NAME_INVALID_FIRST;
+	public static String _WARN_NAME_INVALID_CHAR;
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLActionBarContributor.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLActionBarContributor.java
index fb58add..b06d973 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLActionBarContributor.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLActionBarContributor.java
@@ -13,19 +13,31 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.gef.ui.actions.ActionRegistry;
 import org.eclipse.jface.action.GroupMarker;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorActionBarContributor;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPartSite;
 import org.eclipse.ui.actions.ActionFactory;
 import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
+import org.eclipse.ui.part.MultiPageEditorPart;
 import org.eclipse.ui.texteditor.ITextEditor;
 import org.eclipse.ui.texteditor.ITextEditorActionConstants;
+import org.eclipse.wst.sse.ui.internal.ISourceViewerActionBarContributor;
 import org.eclipse.wst.wsdl.ui.internal.actions.IWSDLToolbarAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDDeleteAction;
 
 public class WSDLActionBarContributor extends MultiPageEditorActionBarContributor
 {
+  private IEditorPart activeEditorPart;
+  private InternalWSDLMultiPageEditor wsdlEditor;
   protected ITextEditor textEditor;
+  protected IEditorActionBarContributor sourceViewerActionContributor = null;
 
   /**
    * Constructor for WSDLActionBarContributor.
@@ -33,27 +45,56 @@
   public WSDLActionBarContributor()
   {
     super();
+    sourceViewerActionContributor = new SourcePageActionContributor();
   }
 
-  public void setActivePage(IEditorPart activeEditor)
+  public void setActivePage(IEditorPart part)
   {
-    // always enable undo/redo regardless of which page we're on.  The undo/redo comes from the editor
-    //    
-    updateAction(ActionFactory.UNDO.getId(), ITextEditorActionConstants.UNDO, true);
-    updateAction(ActionFactory.REDO.getId(), ITextEditorActionConstants.REDO, true);
+    if (activeEditorPart == part)
+      return;
 
-    // turn these off so that the actionhandler will handle it for us
-    //
-    //updateAction(IWorkbenchActionConstants.CUT, ITextEditorActionConstants.CUT, false);
-    //updateAction(IWorkbenchActionConstants.COPY, ITextEditorActionConstants.COPY, false);
-    //updateAction(IWorkbenchActionConstants.PASTE, ITextEditorActionConstants.PASTE, false);
+    activeEditorPart = part;
 
-    getActionBars().updateActionBars();
-  }
+    IActionBars actionBars = getActionBars();
+    
+    if (activeEditorPart != null && activeEditorPart instanceof ITextEditor)
+    {
+      activateSourcePage(activeEditorPart, true);
+    }
+    else
+    {
+      activateSourcePage(wsdlEditor, false);
+      if (part instanceof InternalWSDLMultiPageEditor)
+      {
+        wsdlEditor = (InternalWSDLMultiPageEditor) part;
+      }
+      if (wsdlEditor != null)
+      {
+        // cs: here's we ensure the UNDO and REDO actions are available when 
+        // the design view is active
+        IWorkbenchPartSite site = wsdlEditor.getSite();
+        if (site instanceof IEditorSite) 
+        {
+          ITextEditor textEditor = wsdlEditor.getTextEditor();
+          IActionBars siteActionBars = ((IEditorSite) site).getActionBars();
+          siteActionBars.setGlobalActionHandler(ITextEditorActionConstants.UNDO, getAction(textEditor, ITextEditorActionConstants.UNDO));
+          siteActionBars.setGlobalActionHandler(ITextEditorActionConstants.REDO, getAction(textEditor, ITextEditorActionConstants.REDO));
+          siteActionBars.updateActionBars();              
+        }        
 
-  protected void updateAction(String globalActionId, String textEditorActionId, boolean enable)
-  {
-    getActionBars().setGlobalActionHandler(globalActionId, enable ? getAction(textEditor, textEditorActionId) : null);
+        Object adapter = wsdlEditor.getAdapter(ActionRegistry.class);
+        if (adapter instanceof ActionRegistry)
+        {
+          ActionRegistry registry = (ActionRegistry) adapter;
+          actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), registry.getAction(ASDDeleteAction.ID));
+        }
+      }
+    }
+
+    if (actionBars != null) {
+      // update menu bar and tool bar
+      actionBars.updateActionBars();
+    }
   }
 
   /**
@@ -86,22 +127,60 @@
 //    manager.add(new ZoomComboContributionItem(getPage(), zoomStrings));
   }
 
-  public void setActiveEditor(IEditorPart activeEditor)
+  public void setActiveEditor(IEditorPart part)
   {
-    super.setActiveEditor(activeEditor);
-    textEditor = null;
-    if (activeEditor instanceof InternalWSDLMultiPageEditor)
+    IEditorPart activeNestedEditor = null;
+    if (part instanceof MultiPageEditorPart)
     {
-      textEditor = ((InternalWSDLMultiPageEditor) activeEditor).getTextEditor();
+      activeNestedEditor = part;
     }
+    setActivePage(activeNestedEditor);
     
-    updateAction(ActionFactory.UNDO.getId(), ITextEditorActionConstants.UNDO, true);
-    updateAction(ActionFactory.REDO.getId(), ITextEditorActionConstants.REDO, true);
+    if (part instanceof InternalWSDLMultiPageEditor)
+    {
+      wsdlEditor = (InternalWSDLMultiPageEditor) part;
+
+      textEditor = wsdlEditor.getTextEditor();
+      if (textEditor != null)
+      {      
+        getActionBars().updateActionBars();
+      }
+    }
     
     List list = WSDLEditorPlugin.getInstance().getWSDLEditorConfiguration().getToolbarActions();
     for (Iterator i = list.iterator(); i.hasNext(); )
     {
-      ((IWSDLToolbarAction)i.next()).setEditorPart(activeEditor);
+      ((IWSDLToolbarAction)i.next()).setEditorPart(part);
+    }
+    super.setActiveEditor(part);
+  }
+  
+  protected void activateSourcePage(IEditorPart activeEditor, boolean state)
+  {
+    if (sourceViewerActionContributor != null && sourceViewerActionContributor instanceof ISourceViewerActionBarContributor)
+    {
+      sourceViewerActionContributor.setActiveEditor(activeEditor);
+      ((ISourceViewerActionBarContributor) sourceViewerActionContributor).setViewerSpecificContributionsEnabled(state);
     }
   }
+
+  public void init(IActionBars bars, IWorkbenchPage page)
+  {
+    initSourceViewerActionContributor(bars);
+    super.init(bars, page);
+  }
+
+  
+  protected void initSourceViewerActionContributor(IActionBars actionBars) {
+    if (sourceViewerActionContributor != null)
+      sourceViewerActionContributor.init(actionBars, getPage());
+  }
+  
+  public void dispose()
+  {
+    if (sourceViewerActionContributor != null)
+      sourceViewerActionContributor.dispose();
+    super.dispose();
+  }
+
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLEditorPlugin.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLEditorPlugin.java
index 1a4721e..33dfa9c 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLEditorPlugin.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLEditorPlugin.java
@@ -32,6 +32,7 @@
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.eclipse.wst.wsdl.ui.internal.extensions.NSKeyedExtensionRegistry;
 import org.eclipse.wst.wsdl.ui.internal.extensions.WSDLEditorConfiguration;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.ProductCustomizationProvider;
 import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.ExtensionsSchemasRegistry;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -39,11 +40,11 @@
 public class WSDLEditorPlugin extends AbstractUIPlugin //, IPluginHelper
 {
   public static final String DEFAULT_PAGE = "org.eclipse.wst.wsdl.ui.internal.defaultpage"; //$NON-NLS-1$
-  public static final String GRAPH_PAGE = "org.eclipse.wst.wsdl.ui.internal.graphpage"; //$NON-NLS-1$
+  public static final String DESIGN_PAGE = "org.eclipse.wst.wsdl.ui.internal.designpage"; //$NON-NLS-1$
   public static final String SOURCE_PAGE = "org.eclipse.wst.wsdl.ui.internal.sourcepage"; //$NON-NLS-1$
 
   public final static String PLUGIN_ID = "org.eclipse.wst.wsdl.ui"; //$NON-NLS-1$
-  public final static String XSD_EDITOR_ID = "org.eclipse.wst.xsd.ui.XSDEditor";  //$NON-NLS-1$
+  public final static String XSD_EDITOR_ID = "org.eclipse.wst.xsd.ui.internal.editor.InternalXSDMultiPageEditor";  //$NON-NLS-1$
   
   public final static String DEFAULT_TARGET_NAMESPACE = "http://www.example.org"; //$NON-NLS-1$
   
@@ -69,7 +70,9 @@
   
 	public ExtensionsSchemasRegistry getExtensionsSchemasRegistry() {
 		if (registry == null) {
-			registry = new ExtensionsSchemasRegistry("org.eclipse.wst.wsdl.ui.ExtensionsSchemasDescription"); //$NON-NLS-1$
+			registry = new ExtensionsSchemasRegistry("org.eclipse.wst.wsdl.ui.extensionCategories"); //$NON-NLS-1$
+            registry.__internalSetDeprecatedExtensionId("org.eclipse.wst.wsdl.ui.ExtensionsSchemasDescription");
+            registry.setPrefStore(WSDLEditorPlugin.getInstance().getPreferenceStore() );
 		}
 		
 		return registry;
@@ -180,6 +183,17 @@
     return imageDescriptor;
   }
 
+  /**
+   * Returns an image descriptor for the image file at the given
+   * plug-in relative path.
+   *
+   * @param path the path
+   * @return the image descriptor
+   */
+  public static ImageDescriptor getImageDescriptorFromPlugin(String path) {
+    return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, path); //$NON-NLS-1$
+  }
+
   public static ImageDescriptor getImageDescriptor(String key)
   {
     return getInstance().internalGetImageDescriptor(key);
@@ -261,12 +275,12 @@
    */
   protected void initializeDefaultPreferences(IPreferenceStore store)
   {
-    store.setDefault(DEFAULT_PAGE, GRAPH_PAGE);
+    store.setDefault(DEFAULT_PAGE, DESIGN_PAGE);
     
     // WSDLPreferencePage prefs
-    store.setDefault(Messages.getString("_UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE"), DEFAULT_TARGET_NAMESPACE); //$NON-NLS-1$
-    store.setDefault(Messages.getString("_UI_PREF_PAGE_AUTO_REGENERATE_BINDING"), false); //$NON-NLS-1$
-    store.setDefault(Messages.getString("_UI_PREF_PAGE_PROMPT_REGEN_BINDING_ON_SAVE"), false);	// TODO: Externalize //$NON-NLS-1$
+    store.setDefault(Messages._UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE, DEFAULT_TARGET_NAMESPACE); //$NON-NLS-1$
+    store.setDefault(Messages._UI_PREF_PAGE_AUTO_REGENERATE_BINDING, false); //$NON-NLS-1$
+    store.setDefault(Messages._UI_PREF_PAGE_PROMPT_REGEN_BINDING_ON_SAVE, false);	// TODO: Externalize //$NON-NLS-1$
     // Do we need this preference below?  Look at WSDLPreferencePage.java
 //    store.setDefault("Defualt Location:", "http://www.example.com");
   }
@@ -292,6 +306,37 @@
     //return getPreferenceStore().getInt(DEPENDECIES_CHANGED_POLICY);
     return dependenciesChangedPolicy;
   }
+  
+  
+  private static final String PRODUCT_CUSTOMIZATION_PROVIDER_PLUGIN_ID = "org.eclipse.wst.wsdl.ui.productCustomizationProviderPluginId"; //$NON-NLS-1$
+  private static final String PRODUCT_CUSTOMIZATION_PROVIDER_CLASS_NAME = "org.eclipse.wst.wsdl.ui.productCustomizationProviderClassName"; //$NON-NLS-1$
+  
+  private static ProductCustomizationProvider productCustomizationProvider;
+  private static boolean productCustomizationProviderInitialized = false;
+  
+  public ProductCustomizationProvider getProductCustomizationProvider()
+  {
+    if (!productCustomizationProviderInitialized)
+    {
+      productCustomizationProviderInitialized = true;
+      String pluginName = getPreferenceStore().getString(PRODUCT_CUSTOMIZATION_PROVIDER_PLUGIN_ID);
+      String className = getPreferenceStore().getString(PRODUCT_CUSTOMIZATION_PROVIDER_CLASS_NAME);
+      if (pluginName != null && pluginName.length() > 0 &&
+    	  className != null && className.length() > 0)
+      {
+        try
+        {
+          Bundle bundle = Platform.getBundle(pluginName);
+          Class clazz = bundle.loadClass(className);
+          productCustomizationProvider = (ProductCustomizationProvider)clazz.newInstance();
+        }          
+        catch (Exception e)
+        {          
+        }
+      }
+    }  
+    return productCustomizationProvider;
+  }   
 }
 
 class BaseRegistryReader
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLEditorResourceChangeHandler.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLEditorResourceChangeHandler.java
index bb0f920..efcfa50 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLEditorResourceChangeHandler.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLEditorResourceChangeHandler.java
@@ -89,7 +89,7 @@
 	
   	if (policy == WSDLEditorPlugin.DEPENDECIES_CHANGED_POLICY_PROMPT)
   	{
-		doReload = MessageDialog.openQuestion(wsdlEditor.getSite().getShell(), Messages.getString("_UI_DEPENDENCIES_CHANGED"), Messages.getString("_UI_DEPENDENCIES_CHANGED_REFRESH"));  	 //$NON-NLS-1$ //$NON-NLS-2$
+		doReload = MessageDialog.openQuestion(wsdlEditor.getSite().getShell(), Messages._UI_DEPENDENCIES_CHANGED, Messages._UI_DEPENDENCIES_CHANGED_REFRESH);  	 //$NON-NLS-1$ //$NON-NLS-2$
   	}
   	else if (policy == WSDLEditorPlugin.DEPENDECIES_CHANGED_POLICY_RELOAD)
   	{
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLPreferencePage.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLPreferencePage.java
index 3d1b5e8..c8b085a 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLPreferencePage.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/WSDLPreferencePage.java
@@ -20,6 +20,8 @@
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 
 public class WSDLPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
 
@@ -47,7 +49,7 @@
     layout.marginWidth = 0;
     layout.numColumns = 2;
     group.setLayout(layout);
-    group.setText(Messages.getString("_UI_PREF_PAGE_CREATING_FILES")); //$NON-NLS-1$
+    group.setText(Messages._UI_PREF_PAGE_CREATING_FILES); //$NON-NLS-1$
 
     GridData data = new GridData();
     data.verticalAlignment = GridData.FILL;
@@ -62,19 +64,20 @@
     data1.grabExcessHorizontalSpace = true;
     composite.setLayoutData(data1);
 	
-	String namespaceLabel = Messages.getString("_UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE");  //$NON-NLS-1$
+	String namespaceLabel = Messages._UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE;  //$NON-NLS-1$
     StringFieldEditor targetNamespace = new StringFieldEditor(namespaceLabel, namespaceLabel, composite); // Externalize
     GridLayout compositeLayout = (GridLayout)composite.getLayout();
     compositeLayout.marginWidth = 5;   // Default value
     compositeLayout.numColumns = 2;
     addField(targetNamespace);
     targetNamespace.setFocus();
+    PlatformUI.getWorkbench().getHelpSystem().setHelp(targetNamespace.getTextControl(composite), ASDEditorCSHelpIds.WSDL_PREF_DEFAULT_TNS);
 	
-	String generateLabel = Messages.getString("_UI_PREF_PAGE_AUTO_REGENERATE_BINDING"); //$NON-NLS-1$
+	String generateLabel = Messages._UI_PREF_PAGE_AUTO_REGENERATE_BINDING; //$NON-NLS-1$
 	BooleanFieldEditor generateBindingOnSave = new BooleanFieldEditor(generateLabel, generateLabel, parent);
 	addField(generateBindingOnSave);
-	
-	String showGenerateDialogLabel = Messages.getString("_UI_PREF_PAGE_PROMPT_REGEN_BINDING_ON_SAVE");   // TODO: Externalize //$NON-NLS-1$
+    
+	String showGenerateDialogLabel = Messages._UI_PREF_PAGE_PROMPT_REGEN_BINDING_ON_SAVE;   // TODO: Externalize //$NON-NLS-1$
 	BooleanFieldEditor showGenerateDialog = new BooleanFieldEditor(showGenerateDialogLabel, showGenerateDialogLabel, parent);
 	addField(showGenerateDialog);
 
@@ -84,7 +87,9 @@
        SoapPortOptionsPage.java
     */
 //    HttpPortOptionsPage.java    StringFieldEditor location = new StringFieldEditor("Defualt Location:", "Default Location:", editorGroup1); // Externalize
-//    addField(location);    
+//    addField(location); 
+	
+	applyDialogFont(parent);
     
   }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddElementAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddElementAction.java
index 664071a..a1161c6 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddElementAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddElementAction.java
@@ -153,7 +153,7 @@
 
 
 	public String getUndoDescription() {
-		return Messages.getString("_UI_ACTION_ADD"); //$NON-NLS-1$
+		return Messages._UI_ACTION_ADD; //$NON-NLS-1$
 	}
 
 
@@ -286,7 +286,7 @@
 	}
 
 	private String getDefaultNamespace() {
-		String namespace = WSDLEditorPlugin.getInstance().getPreferenceStore().getString(Messages.getString("_UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE")); //$NON-NLS-1$
+		String namespace = WSDLEditorPlugin.getInstance().getPreferenceStore().getString(Messages._UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE); //$NON-NLS-1$
 		if (!namespace.endsWith("/")) { //$NON-NLS-1$
 			namespace = namespace.concat("/"); //$NON-NLS-1$
 		}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddImportAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddImportAction.java
index e506dd1..9525492 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddImportAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddImportAction.java
@@ -32,7 +32,7 @@
   
   public AddImportAction(IEditorPart part, Definition definition, Node parentNode, String prefix, String namespace, String location)
   {
-    super(Messages.getString("_UI_ACTION_ADD_IMPORT"), "icons/import_obj.gif", parentNode, prefix, "import"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+    super(Messages._UI_ACTION_ADD_IMPORT, "icons/import_obj.gif", parentNode, prefix, "import"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	  setDefinition(definition);
 	  setComputeTopLevelRefChild(true);
 	  this.namespace = namespace;
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddWSISchemaImportAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddWSISchemaImportAction.java
index 7755774..4502eaf 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddWSISchemaImportAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/AddWSISchemaImportAction.java
@@ -45,7 +45,7 @@
     
     public String getUndoDescription()
     {
-    	return Messages.getString("_UI_ACTION_ADD_IMPORT"); //$NON-NLS-1$
+    	return Messages._UI_ACTION_ADD_IMPORT; //$NON-NLS-1$
     }
 
     protected Element getOrCreateTypesElement()
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/EditNamespacesAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/EditNamespacesAction.java
index e8dfb5e..81ebcfa 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/EditNamespacesAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/EditNamespacesAction.java
@@ -35,7 +35,7 @@
 
   public EditNamespacesAction(Definition definition)
   {
-    setText(Messages.getString("_UI_EDIT_NAMESPACES")); //$NON-NLS-1$
+    setText(Messages._UI_EDIT_NAMESPACES); //$NON-NLS-1$
     this.definition = definition;
   }
 
@@ -59,7 +59,7 @@
       }
 
 	  IPath path = new Path(definition.getDocumentBaseURI());
-      EditNamespacesDialog dialog = new EditNamespacesDialog(WSDLEditorPlugin.getShell(),  path, Messages.getString("_UI_EDIT_NAMESPACES_DIALOG_TITLE"), definition.getTargetNamespace(), namespaceInfoList); //$NON-NLS-1$
+      EditNamespacesDialog dialog = new EditNamespacesDialog(WSDLEditorPlugin.getShell(),  path, Messages._UI_EDIT_NAMESPACES_DIALOG_TITLE, definition.getTargetNamespace(), namespaceInfoList); //$NON-NLS-1$
       int rc = dialog.createAndOpen();
       if (rc == IDialogConstants.OK_ID)
       {      	
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/OpenInNewEditor.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/OpenInNewEditor.java
new file mode 100644
index 0000000..683e078
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/OpenInNewEditor.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.actions;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.util.OpenOnSelectionHelper;
+
+public class OpenInNewEditor extends BaseSelectionAction
+{
+  public static final String ID = "org.eclipse.wst.wsdl.ui.OpenInNewEditor"; //$NON-NLS-1$
+  
+  public OpenInNewEditor(IWorkbenchPart part)
+  {
+    super(part);
+    setText(Messages._UI_ACTION_OPEN_IN_NEW_EDITOR); //$NON-NLS-1$
+    setId(ID);
+    setImageDescriptor(ASDEditorPlugin.getImageDescriptorFromPlugin("wsdl_file_obj.gif")); //$NON-NLS-1$
+  }
+  
+  protected boolean calculateEnabled()
+  {
+    return true;
+  }
+
+  public void run()
+  {
+    if (getSelectedObjects().size() > 0)
+    {
+      Object o = getSelectedObjects().get(0);
+      // should make this generic and be able to get the owner from a facade object
+      if (o instanceof WSDLBaseAdapter)
+      {
+        WSDLBaseAdapter baseAdapter = (WSDLBaseAdapter)o;
+
+        IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+        IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+        Object object = editorPart.getAdapter(Definition.class);
+        if (object instanceof Definition)
+        {
+          EObject eObject = (EObject)baseAdapter.getTarget();
+          OpenOnSelectionHelper openHelper = new OpenOnSelectionHelper((Definition)object);
+          openHelper.openEditor(eObject);
+        }
+      }
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/SmartRenameAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/SmartRenameAction.java
index 675fe37..33bb044 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/SmartRenameAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/actions/SmartRenameAction.java
@@ -29,6 +29,7 @@
 import org.eclipse.wst.wsdl.PortType;
 import org.eclipse.wst.wsdl.WSDLElement;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.commands.AddBaseParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
 import org.eclipse.xsd.XSDElementDeclaration;
 import org.w3c.dom.Node;
@@ -47,7 +48,9 @@
 	protected Object element;
 	protected String newName;
 	private List messageReferences; // This variable should be accessed by method getAllMessageReferences()
-	protected Node node;   
+	protected Node node;
+	private boolean renameParent = true;
+	private String oldName;
 	
 	public SmartRenameAction(Object element, String newName) {
 		setText("Smart Rename Action"); // Do not translate //$NON-NLS-1$
@@ -61,12 +64,20 @@
 	}
 
 	public String getUndoDescription() {
-	  return Messages.getString("_UI_ACTION_RENAME");  //$NON-NLS-1$
+	  return Messages._UI_ACTION_RENAME;  //$NON-NLS-1$
+	}
+	
+	/*
+	 * boolean argument is used to determine if the top level (parent) object should be renamed
+	 * itself.  Otherwise, only the "child" objects will be renamed.
+	 */
+	public void run(boolean renameParent) {
+		this.renameParent = renameParent;
+		run();
 	}
 
 	public void run() {
 		RenameAction renamer;
-		String oldName;
 		
 		beginRecording();
 		if (element instanceof Operation) {
@@ -77,9 +88,11 @@
 				return;
 			}
 			
-			// Rename Operation 
-			renamer = new RenameAction(operation, newName);
-			renamer.run();
+			// Rename Operation
+			if (renameParent) {
+				renamer = new RenameAction(operation, newName);
+				renamer.run();
+			}
 			
 			// Rename Input
 			Input input = operation.getEInput();
@@ -170,7 +183,9 @@
 				return;
 			}
 			
-			input.setName(newName);
+			if (renameParent) {
+				input.setName(newName);
+			}
 
 //			 Rename Messages and Parts
 			Message msg;
@@ -203,7 +218,9 @@
 				return;
 			}
 			
-			output.setName(newName);
+			if (renameParent) {
+				output.setName(newName);
+			}
 
 //			 Rename Messages and Parts
 			Message msg;
@@ -234,8 +251,10 @@
 			}
 			
 			// Rename the Fault
-			renamer = new RenameAction(fault, newName);
-			renamer.run();
+			if (renameParent) {
+				renamer = new RenameAction(fault, newName);
+				renamer.run();
+			}
 
 			// Rename the Message and Parts
 			if (msg != null) {
@@ -259,10 +278,14 @@
 				return;
 			}
 
-			renameMessageHelper(msg, computeNewMessageName(msg, oldName, newName));
+			String newMessageName = computeNewMessageName(msg, oldName, newName);
+			if (renameParent) {
+				renameMessageHelper(msg, newMessageName);
+			}
 					
 			if (msg.getEParts() != null)
-				renamePartsHelper(msg.getEParts(), oldMessageName, msg.getQName().getLocalPart(), true);
+				renamePartsHelper(msg.getEParts(), oldMessageName, newMessageName, true);
+//				renamePartsHelper(msg.getEParts(), oldMessageName, msg.getQName().getLocalPart(), true);
 		}
 		else if (element instanceof Part) {
 			Part part = (Part) element;
@@ -272,8 +295,10 @@
 				return;
 			}
 			
-			renamer = new RenameAction(element, newName);
-			renamer.run();
+			if (renameParent) {
+				renamer = new RenameAction(element, newName);
+				renamer.run();
+			}
 			
 //			Rename Elements
 			renameXSDElement(part, oldPartName, newName);
@@ -282,8 +307,10 @@
 			Port port = (Port) element;
 			String oldPortName = port.getName();
 			
-			renamer = new RenameAction(element, newName);
-			renamer.run();
+			if (renameParent) {
+				renamer = new RenameAction(element, newName);
+				renamer.run();
+			}
 
 //			Rename Binding
 			Binding binding = port.getEBinding();
@@ -319,8 +346,11 @@
 					renamer.run();
 					
 					// Rename Elements
-					renameXSDElement(part, oldPartName, newPartName);
+//					renameXSDElement(part, oldPartName, newPartName);
 				}
+				
+				// Rename Elements
+				renameXSDElement(part, oldSubString, newSubString);
 			}
 		}
 	}
@@ -532,7 +562,7 @@
 	
 	private void renameXSDElement(Part part, String oldXSDName, String newXSDName) {
 		XSDElementDeclaration elementDeclaration = part.getElementDeclaration();
-		if (elementDeclaration != null && oldXSDName.equals(elementDeclaration.getName())) {
+		if (elementDeclaration != null && elementDeclaration.getName().startsWith(oldXSDName)) {
 			renameElementDeclarationHelper(elementDeclaration, oldXSDName, newXSDName);
 			
 			// Here we rename the element reference.
@@ -540,12 +570,25 @@
 			QName qname = new QName(part.getElementName().getNamespaceURI(), newXSDName);
 			part.setElementName(qname);			
 		}
-	}
-	
-	private void renameElementDeclarationHelper(XSDElementDeclaration elementDeclaration, String oldXSDName, String newXSDName) {
-		if (elementDeclaration != null && elementDeclaration.getName().equals(oldXSDName)) {
-			elementDeclaration.setName(newXSDName);
+		else if (elementDeclaration != null && element instanceof Operation) {
+			Operation operation = (Operation) element;
+			if (AddBaseParameterCommand.getParameterPattern(operation, true) == AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT) {
+				if (elementDeclaration.getName().equals(oldName)) {
+					renameElementDeclarationHelper(elementDeclaration, oldName, newName);
+					
+					// Here we rename the element reference.
+					//
+					QName qname = new QName(part.getElementName().getNamespaceURI(), newName);
+					part.setElementName(qname);	
+				}
+			}
 		}
 	}
 	
-}
+	private void renameElementDeclarationHelper(XSDElementDeclaration elementDeclaration, String oldXSDName, String newXSDName) {
+		if (elementDeclaration != null && elementDeclaration.getName().startsWith(oldXSDName)) {
+			String newElementName = replaceSectionWithSubString(elementDeclaration.getName(), oldXSDName, newXSDName, 0);
+			elementDeclaration.setName(newElementName);
+		}
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/WSDLAdapterFactory.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/WSDLAdapterFactory.java
index dd2e02f..74a8b77 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/WSDLAdapterFactory.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/WSDLAdapterFactory.java
@@ -43,13 +43,17 @@
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Message;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11MessageReference;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Operation;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForAttribute;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForElement;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Service;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Type;
 import org.eclipse.wst.wsdl.ui.internal.adapters.specialized.W11AddressExtensibilityElementAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.specialized.W11ExtensibilityElementAdapter;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
+import org.eclipse.xsd.XSDAttributeUse;
 import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDElementDeclaration;
 import org.eclipse.xsd.XSDSchema;
 
 public class WSDLAdapterFactory extends AdapterFactoryImpl
@@ -126,6 +130,14 @@
       {
     	  adapter = new W11ParameterForPart(); 
       }
+      else if (target instanceof XSDElementDeclaration)
+      {
+          adapter = new W11ParameterForElement();
+      }
+      else if (target instanceof XSDAttributeUse)
+      {
+          adapter = new W11ParameterForAttribute();
+      }        
       else if (target instanceof Message || 
                target instanceof XSDConcreteComponent)
       {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/WSDLBaseAdapter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/WSDLBaseAdapter.java
index e57fe7e..89461cb 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/WSDLBaseAdapter.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/WSDLBaseAdapter.java
@@ -20,13 +20,12 @@
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.WSDLElement;
-import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Description;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11RenameCommand;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.IActionProvider;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObjectListener;
@@ -102,7 +101,16 @@
 	public void notifyChanged(Notification msg)
 	{
 	  super.notifyChanged(msg);
-	  notifyListeners(this, null);
+      try
+      {
+	    notifyListeners(this, null);
+      }
+      catch (Exception e)
+      {        
+        // TODO... exception should never happen here.. but they do
+        // dumping the stack to the console until we track these down
+        e.printStackTrace();
+      }
 	}
 	
 	protected void notifyListeners(Object changedObject, String property)
@@ -112,7 +120,7 @@
 	  for (Iterator i = clonedListenerList.iterator(); i.hasNext(); )
 	  {
 	    IASDObjectListener listener = (IASDObjectListener)i.next();
-	    listener.propertyChanged(this, null);
+	    listener.propertyChanged(this, property);
 	  }      
 	}
 	
@@ -121,21 +129,36 @@
 	}
 	
 	public boolean isReadOnly() {
-		IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-		
-		if (window != null && window.getActivePage() != null) {
-			IEditorPart editor = window.getActivePage().getActiveEditor();
-			
-			if (target instanceof WSDLElement && editor instanceof ASDMultiPageEditor) {
-				Definition definition = ((WSDLElement) target).getEnclosingDefinition();
-				W11Description description = (W11Description) ((ASDMultiPageEditor) editor).getModel();
-				if (!definition.equals(description.getTarget())) {
-					return true;
+		Definition definition = null;
+		try	{
+			IEditorPart editorPart = null;
+			IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+			if (window != null)	{
+				IWorkbenchPage page = window.getActivePage();
+				if (page != null) {
+					editorPart = page.getActiveEditor();
 				}
 			}
+			if (target instanceof WSDLElement) {
+				definition = ((WSDLElement) target).getEnclosingDefinition();
+			}
+			if (editorPart == null) {
+				return fallBackCheckIsReadOnly();
+			}
+
+			Definition editorDefinition = (Definition) editorPart.getAdapter(Definition.class);
+			if (definition != null && definition == editorDefinition) {
+				return false;
+			}
+			else {
+				return fallBackCheckIsReadOnly();
+			}
+		}
+		catch(Exception e) {
+
 		}
 		
-		return fallBackCheckIsReadOnly();
+		return true;
 	}
 	
 	private boolean fallBackCheckIsReadOnly() {
@@ -152,4 +175,8 @@
 		}
 		return true;
 	}
+  
+  public Object getOwner() {
+    return owner;
+  }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11AddPartAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11AddPartAction.java
index 2590aa7..b53a248 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11AddPartAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11AddPartAction.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.actions;
 
+import org.eclipse.gef.EditPart;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.ui.IWorkbenchPart;
@@ -17,15 +18,18 @@
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.MessageReference;
+import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.ui.internal.InternalWSDLMultiPageEditor;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Description;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11MessageReference;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.ParameterEditPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessage;
-import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddMessageCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
 import org.eclipse.wst.wsdl.ui.internal.util.WSDLAdapterFactoryHelper;
@@ -36,7 +40,7 @@
 	public W11AddPartAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_PART")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_PART); //$NON-NLS-1$
 		setImageDescriptor(WSDLEditorPlugin.getImageDescriptor("icons/part_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -51,8 +55,8 @@
 				messageRef = (MessageReference) ((W11MessageReference) o).getTarget();
 				message = messageRef.getEMessage();
 			}
-			else if (o instanceof IParameter) {
-				IParameter param = (IParameter) o;
+			else if (o instanceof W11ParameterForPart) {
+				W11ParameterForPart param = (W11ParameterForPart) o;
 				if (param.getOwner() instanceof IMessage) {
 					iMessage = (IMessage) param.getOwner();
 				}
@@ -60,6 +64,11 @@
 					messageRef = (MessageReference) ((W11MessageReference) param.getOwner()).getTarget();
 					message = messageRef.getEMessage();
 				}
+				
+				if (message == null) {
+					Part part = (Part) param.getTarget();
+					message = (Message) part.eContainer();
+				}
 			}
 			else if (o instanceof IMessage) {
 				iMessage = (IMessage) o;
@@ -78,12 +87,23 @@
 			if (message != null) {
 				iMessage = (IMessage) WSDLAdapterFactoryHelper.getInstance().adapt(message);
 			}
-			
+
 			if (iMessage != null) {
 				Command command = iMessage.getAddPartCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object element = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	selectAndDirectEdit(element);
+			    }
 			}
 		}  
 	}
+	
+	protected void doDirectEdit(EditPart ep) {
+		if (ep instanceof ParameterEditPart) {
+			((ParameterEditPart) ep).performDirectEdit(null);
+		}
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11OpenImportAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11OpenImportAction.java
new file mode 100644
index 0000000..7f428bb
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11OpenImportAction.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.adapters.actions;
+
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Import;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Import;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+
+public class W11OpenImportAction extends BaseSelectionAction {
+	public static String ID = "ASDOpenImportAction";  //$NON-NLS-1$
+	
+	public W11OpenImportAction(IWorkbenchPart part)	{
+		super(part);
+		setId(ID);
+		setText(Messages._UI_ACTION_OPEN_IMPORT); //$NON-NLS-1$
+	}
+	
+	public void run() {
+		if (getSelectedObjects().size() > 0 && getSelectedObjects().get(0) instanceof W11Import) {
+			Import theImport = getWSDLImport((W11Import) getSelectedObjects().get(0));
+			
+			Definition definition = theImport.getEnclosingDefinition();
+			org.eclipse.wst.wsdl.ui.internal.util.OpenOnSelectionHelper helper = new org.eclipse.wst.wsdl.ui.internal.util.OpenOnSelectionHelper(definition);
+		    helper.openEditor((org.eclipse.emf.ecore.EObject) theImport);
+		}
+	}
+	
+	  protected boolean calculateEnabled() {
+		  boolean enabled = super.calculateEnabled();
+		  if (enabled) {
+			  if (getSelectedObjects().size() > 0 && getSelectedObjects().get(0) instanceof W11Import) {
+					Import theImport = getWSDLImport((W11Import) getSelectedObjects().get(0));
+					
+					if (theImport != null) {
+						String location = theImport.getLocationURI();
+					
+						if (location == null || location.trim().equals(""))
+							enabled = false;
+					}
+			  }
+		  }
+		  
+		  return enabled;
+	  }
+	  
+	  private Import getWSDLImport(W11Import w11Import) {
+		  return (Import) ((W11Import) w11Import).getTarget();
+	  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingElementAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingElementAction.java
index 9863c8d..df68ffc 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingElementAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingElementAction.java
@@ -11,17 +11,15 @@
 package org.eclipse.wst.wsdl.ui.internal.adapters.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
-import org.eclipse.wst.xsd.ui.internal.editor.XSDElementReferenceEditManager;
 
 public class W11SetExistingElementAction extends BaseSelectionAction {
 	public static String ID = "ASDSetExistingElementAction"; //$NON-NLS-1$
@@ -30,7 +28,7 @@
 	public W11SetExistingElementAction(IWorkbenchPart part) {
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_EXISTING_ELEMENT")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_EXISTING_ELEMENT); //$NON-NLS-1$
 //		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/message_obj.gif"));
 	}
 	
@@ -44,9 +42,8 @@
 			}
 		}
 		
-		if (wsdlBaseAdapter != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(XSDElementReferenceEditManager.class);
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getXSDElementReferenceEditManager(wsdlBaseAdapter);
+		if (wsdlBaseAdapter != null && refManager != null) {
 			IComponentDialog dialog = refManager.getBrowseDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingMessageAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingMessageAction.java
index 6a4392a..0f765d6 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingMessageAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingMessageAction.java
@@ -11,14 +11,12 @@
 package org.eclipse.wst.wsdl.ui.internal.adapters.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
-import org.eclipse.wst.wsdl.ui.internal.edit.W11MessageReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 
@@ -30,7 +28,7 @@
 	public W11SetExistingMessageAction(IWorkbenchPart part) {
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_EXISTING_MESSAGE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_EXISTING_MESSAGE); //$NON-NLS-1$
 //		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/message_obj.gif"));
 	}
 	
@@ -44,9 +42,8 @@
 			}
 		}
 		
-		if (messageReference != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(W11MessageReferenceEditManager.class);
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getMessageReferenceEditManager(messageReference);
+		if (messageReference != null && refManager != null) {
 			IComponentDialog dialog = refManager.getBrowseDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingTypeAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingTypeAction.java
index 351f0fe..8e82b48 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingTypeAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetExistingTypeAction.java
@@ -11,17 +11,15 @@
 package org.eclipse.wst.wsdl.ui.internal.adapters.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
-import org.eclipse.wst.xsd.ui.internal.editor.XSDTypeReferenceEditManager;
 
 public class W11SetExistingTypeAction extends BaseSelectionAction {
 	public static String ID = "ASDSetExistingTypeAction"; //$NON-NLS-1$
@@ -30,7 +28,7 @@
 	public W11SetExistingTypeAction(IWorkbenchPart part) {
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_EXISTING_TYPE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_EXISTING_TYPE); //$NON-NLS-1$
 //		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/message_obj.gif"));
 	}
 	
@@ -43,10 +41,9 @@
 				}
 			}
 		}
-		
-		if (wsdlBaseAdapter != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(XSDTypeReferenceEditManager.class);
+
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getXSDTypeReferenceEditManager(wsdlBaseAdapter);
+		if (wsdlBaseAdapter != null && refManager != null) {
 			IComponentDialog dialog = refManager.getBrowseDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewElementAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewElementAction.java
index d779134..7882da4 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewElementAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewElementAction.java
@@ -11,17 +11,15 @@
 package org.eclipse.wst.wsdl.ui.internal.adapters.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
-import org.eclipse.wst.xsd.ui.internal.editor.XSDElementReferenceEditManager;
 
 public class W11SetNewElementAction extends BaseSelectionAction {
 	public static String ID = "ASDSetNewElementAction"; //$NON-NLS-1$
@@ -30,7 +28,7 @@
 	public W11SetNewElementAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_NEW_ELEMENT")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_NEW_ELEMENT); //$NON-NLS-1$
 //		setImageDescriptor(WSDLEditorPlugin.getImageDescriptor("icons/service_obj.gif"));
 	}
 	
@@ -44,10 +42,9 @@
 			}
 		}
 		
-		if (wsdlBaseAdapter != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(XSDElementReferenceEditManager.class);
-			IComponentDialog dialog = refManager.getNewDialog();
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getXSDElementReferenceEditManager(wsdlBaseAdapter);
+        if (wsdlBaseAdapter != null && refManager != null) {
+            IComponentDialog dialog = refManager.getNewDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
 				refManager.modifyComponentReference(wsdlBaseAdapter, spec);
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewMessageAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewMessageAction.java
index ac4271d..2ef914f 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewMessageAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewMessageAction.java
@@ -11,14 +11,12 @@
 package org.eclipse.wst.wsdl.ui.internal.adapters.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
-import org.eclipse.wst.wsdl.ui.internal.edit.W11MessageReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 
@@ -29,7 +27,7 @@
 	public W11SetNewMessageAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_NEW_MESSAGE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_NEW_MESSAGE); //$NON-NLS-1$
 //		setImageDescriptor(WSDLEditorPlugin.getImageDescriptor("icons/service_obj.gif"));
 	}
 	
@@ -47,9 +45,8 @@
 			}
 		}
 		
-		if (messageReference != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(W11MessageReferenceEditManager.class);
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getMessageReferenceEditManager(messageReference);
+        if (messageReference != null && refManager != null) {
 			IComponentDialog dialog = refManager.getNewDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewTypeAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewTypeAction.java
index c5b6c08..a40e6f3 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewTypeAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/actions/W11SetNewTypeAction.java
@@ -11,14 +11,21 @@
 package org.eclipse.wst.wsdl.ui.internal.adapters.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.wsdl.WSDLElement;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.wsdl.ui.internal.edit.WSDLXSDTypeReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
+import org.eclipse.wst.wsdl.ui.internal.util.WSDLAdapterFactoryHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 import org.eclipse.wst.xsd.ui.internal.editor.XSDTypeReferenceEditManager;
@@ -30,7 +37,7 @@
 	public W11SetNewTypeAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_NEW_TYPE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_NEW_TYPE); //$NON-NLS-1$
 //		setImageDescriptor(WSDLEditorPlugin.getImageDescriptor("icons/service_obj.gif"));
 	}
 	
@@ -44,9 +51,8 @@
 			}
 		}
 		
-		if (wsdlBaseAdapter != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(XSDTypeReferenceEditManager.class);
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getXSDTypeReferenceEditManager(wsdlBaseAdapter);
+		if (wsdlBaseAdapter != null && refManager != null) {
 			IComponentDialog dialog = refManager.getNewDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
@@ -56,4 +62,21 @@
 		
 		wsdlBaseAdapter = null;
 	}
+    
+    protected ComponentReferenceEditManager getComponentReferenceEditManager() {
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+        if (page.getActiveEditor().getAdapter(XSDTypeReferenceEditManager.class) != null) {
+            return (ComponentReferenceEditManager) page.getActiveEditor().getAdapter(XSDTypeReferenceEditManager.class);
+        }
+        else {
+            IEditorInput input = page.getActiveEditor().getEditorInput();
+            if (input instanceof IFileEditorInput) {
+                WSDLElement element = (WSDLElement) wsdlBaseAdapter.getTarget();
+                IDescription description = (IDescription) WSDLAdapterFactoryHelper.getInstance().adapt(element.getEnclosingDefinition());
+                return new WSDLXSDTypeReferenceEditManager(((IFileEditorInput) input).getFile(), null, description);
+            }
+        }
+
+        return null;
+    }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Binding.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Binding.java
index ba5a969..af9349c 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Binding.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Binding.java
@@ -13,16 +13,22 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-
+import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.wsdl.Binding;
+import org.eclipse.wst.wsdl.BindingFault;
 import org.eclipse.wst.wsdl.BindingOperation;
+import org.eclipse.wst.wsdl.ExtensibilityElement;
+import org.eclipse.wst.wsdl.Fault;
+import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.PortType;
 import org.eclipse.wst.wsdl.binding.http.HTTPBinding;
 import org.eclipse.wst.wsdl.binding.soap.SOAPBinding;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11DeleteCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11GenerateBindingCommand;
@@ -32,10 +38,16 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetExistingInterfaceAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetNewInterfaceAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.BindingContentPlaceHolder;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IInterface;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
+import org.eclipse.wst.wsdl.ui.internal.util.WSDLAdapterFactoryHelper;
+import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.custom.NodeCustomizationRegistry;
+import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 
 public class W11Binding extends WSDLBaseAdapter implements IBinding {
 
@@ -49,26 +61,108 @@
 	}
     
     public List getBindingContentList()
-    {     
+    {
+      List adapterList = new ArrayList();
       List list = new ArrayList();
+
+      List bindingOperations = copyList(((Binding)target).getEBindingOperations()); 
+      List operations = copyList(((Binding)target).getEPortType().getEOperations());
+      
+      // Determine if we need placeholders for Operations
+	  List toAdaptList = new ArrayList();
+      
+	  Iterator bindingOpIt = bindingOperations.iterator();
+	  while (bindingOpIt.hasNext()) {
+		  BindingOperation item = (BindingOperation) bindingOpIt.next();
+		  operations.remove(item.getEOperation());
+	  }
+	  
+      Iterator operationsIt = operations.iterator();
+      while (operationsIt.hasNext()) {
+    	  Operation op = (Operation) operationsIt.next();
+    	  toAdaptList.add(op);
+    	  toAdaptList.add(op.getEInput());
+    	  toAdaptList.add(op.getEOutput());
+    	  toAdaptList.addAll(op.getEFaults());
+      }
+
+      Iterator it = toAdaptList.iterator();
+      while (it.hasNext()) {
+          Object o = it.next(); 
+          if (o != null)
+          {  
+    	    Object adapted = WSDLAdapterFactoryHelper.getInstance().adapt((Notifier)o);
+    	    BindingContentPlaceHolder placeHolder = new BindingContentPlaceHolder(adapted);
+    	    adapterList.add(placeHolder);
+          }  
+      }
+      
       for (Iterator i = ((Binding)target).getEBindingOperations().iterator(); i.hasNext(); )
       {
         BindingOperation bindingOperation = (BindingOperation)i.next();
+        Operation operation = bindingOperation.getEOperation();
+        
         list.add(bindingOperation);
+        
+        // Handle Input
         if (bindingOperation.getEBindingInput() != null)
         {
           list.add(bindingOperation.getEBindingInput());
-        }  
+        }
+        else if (bindingOperation.getEBindingInput() == null && operation.getEInput() != null) {
+        	// Need a placeholder
+        	Object adaptedObject = createAdapter(operation.getEInput());
+        	BindingContentPlaceHolder temp = new BindingContentPlaceHolder(adaptedObject);
+        	adapterList.add(temp);
+        }
+        
+        // Handle Output
         if (bindingOperation.getEBindingOutput() != null)
         {
           list.add(bindingOperation.getEBindingOutput());
-        } 
-        list.addAll(bindingOperation.getEBindingFaults());
-      } 
-      List adapterList = new ArrayList();
+        }
+        else if (bindingOperation.getEBindingOutput() == null && operation.getEOutput() != null) {
+        	// Need a placeholder
+        	Object adaptedObject = createAdapter(operation.getEOutput());
+        	BindingContentPlaceHolder temp = new BindingContentPlaceHolder(adaptedObject);
+        	adapterList.add(temp);
+        }
+
+        // Handle Faults
+        if (operation != null)
+        {  
+        List faults = copyList(operation.getEFaults());
+        List bindingFaults = copyList(bindingOperation.getEBindingFaults());
+        for (int index = 0; index < bindingFaults.size(); index++) {
+        	BindingFault bindingFault = (BindingFault) bindingFaults.get(index);
+        	list.add(bindingFault);
+        	
+        	faults.remove(bindingFault.getEFault());        	
+        }
+        
+        // Left over faults need placeholders
+        Iterator remaningFaults = faults.iterator();
+        while (remaningFaults.hasNext()) {
+        	Object adaptedObject = createAdapter((Fault) remaningFaults.next());
+        	BindingContentPlaceHolder temp = new BindingContentPlaceHolder(adaptedObject);
+        	adapterList.add(temp);
+        }
+      }
+      }
+
       populateAdapterList(list, adapterList);
       return adapterList;
     }
+    
+    private List copyList(List origList) {
+    	List newList = new ArrayList();
+    	Iterator it = origList.iterator();
+    	while (it.hasNext()) {
+    		newList.add(it.next());
+    	}
+    	
+    	return newList;
+    }
 
 	public List getExtensiblityObjects() {
 
@@ -99,15 +193,17 @@
 	}
 	
 	public String[] getActions(Object object) {
-		String[] actionIDs = new String[6];
-		actionIDs[0] = ASDGenerateBindingAction.ID;
-		actionIDs[1] = BaseSelectionAction.SUBMENU_START_ID + Messages.getString("_UI_ACTION_SET_PORTTYPE"); //$NON-NLS-1$
-		actionIDs[2] = ASDSetNewInterfaceAction.ID;
-		actionIDs[3] = ASDSetExistingInterfaceAction.ID;
-		actionIDs[4] = BaseSelectionAction.SUBMENU_END_ID;
-		actionIDs[5] = ASDDeleteAction.ID;
-		
-		return actionIDs;
+    List actionIDs = new ArrayList();
+    actionIDs.add(ASDGenerateBindingAction.ID);
+    actionIDs.add(BaseSelectionAction.SUBMENU_START_ID + Messages._UI_ACTION_SET_PORTTYPE); //$NON-NLS-1$
+    actionIDs.add(ASDSetNewInterfaceAction.ID);
+    actionIDs.add(ASDSetExistingInterfaceAction.ID);
+    actionIDs.add(BaseSelectionAction.SUBMENU_END_ID);
+    actionIDs.add(ASDDeleteAction.ID);
+    if (isReadOnly()) {
+      actionIDs.add(OpenInNewEditor.ID);
+    }
+    return (String [])actionIDs.toArray(new String[0]);
 	}
 	
 	public Command getSetInterfaceCommand(IInterface newInterface) {
@@ -123,26 +219,41 @@
 		return new W11DeleteCommand(this);
 	}
 
+    
+    private ILabelProvider getLabelProvider(Node node)
+    {
+      String namespace = node.getNamespaceURI();      
+      if (namespace != null)
+      {  
+        NodeCustomizationRegistry registry = XSDEditorPlugin.getDefault().getNodeCustomizationRegistry();      
+        return registry.getLabelProvider(namespace);
+      }        
+      return null;
+    }
+    
   public Image getImage()
   {
-    // TODO (cs) this is evil code, we need an extension driven
-    // way to compute this stuff so don't hardcode HTTP or SOAP stuff
-    //
-    String protocol = getProtocol();
-    String imageName = "icons/binding_obj.gif"; //$NON-NLS-1$
-    if (protocol != null)
+    Image image = null;
+    List list = ((Binding) target).getExtensibilityElements();
+    if (list.size() > 0)
     {  
-      if (protocol.equals("HTTP")) //$NON-NLS-1$
-      {
-        imageName = "icons/httpbinding_obj.gif"; //$NON-NLS-1$
-      }  
-      else if (protocol.equals("SOAP")) //$NON-NLS-1$
-      {
-        imageName = "icons/soapbinding_obj.gif"; //$NON-NLS-1$
-      }  
-    }
-    return WSDLEditorPlugin.getInstance().getImage(imageName);    
-  }
+       ExtensibilityElement ee = (ExtensibilityElement)list.get(0);
+       Element element = ee.getElement();
+       if (element != null)
+       {  
+         ILabelProvider labelProvider = getLabelProvider(element);
+         if (labelProvider != null)
+         {
+           image= labelProvider.getImage(element);
+         }
+       }
+    }        
+    if (image == null)
+    {
+      image = WSDLEditorPlugin.getInstance().getImage("icons/binding_obj.gif");         
+    }  
+    return image;
+   }
 
   public String getText()
   {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11BindingMessageReference.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11BindingMessageReference.java
index 89eef5f..84ef174 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11BindingMessageReference.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11BindingMessageReference.java
@@ -10,9 +10,10 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.basic;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.wsdl.BindingFault;
@@ -61,26 +62,44 @@
   
   public String getName()
   {
-	  String name = ""; //$NON-NLS-1$
+	  String name = null;
 	  if (target instanceof BindingInput)
 	  {
-		  name = "input";
+		  name = ((BindingInput) target).getName();
 	  }
 	  else if (target instanceof BindingOutput)
 	  {
-		  name = "output";
+		  name = ((BindingOutput) target).getName();
 	  } 
-	  else //if (target instanceof BindingFault)
+	  else if (target instanceof BindingFault)
 	  {
-		  name = "fault";
-	  }  
+		  name = ((BindingFault) target).getName();
+	  }
+	  
+	  if (name == null) {
+		  name = ""; //$NON-NLS-1$
+	  }
 
 	  return name;
   }
 
   public String getText()
   {
-    return getName();
+	  String text = "";
+	  if (target instanceof BindingInput)
+	  {
+		  text = "binding input";
+	  }
+	  else if (target instanceof BindingOutput)
+	  {
+		  text = "binding output";
+	  } 
+	  else if (target instanceof BindingFault)
+	  {
+		  text = "binding fault";
+	  }
+	  
+	  return text;
   }
 
   public IMessageReference getMessageReference()
@@ -104,5 +123,13 @@
   public List getExtensiblityObjects()
   {
     return Collections.EMPTY_LIST;
-  }  
+  }
+  
+  public String[] getActions(Object object) {    
+    Collection actionIDs = new ArrayList();
+//    if (isReadOnly()) {
+//      actionIDs.add(OpenInNewEditor.ID);
+//    }
+    return (String [])actionIDs.toArray(new String[0]);
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11BindingOperation.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11BindingOperation.java
index 2e3ded4..2c097a9 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11BindingOperation.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11BindingOperation.java
@@ -11,13 +11,14 @@
 package org.eclipse.wst.wsdl.ui.internal.adapters.basic;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.wsdl.BindingOperation;
 import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBindingOperation;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IOperation;
@@ -54,8 +55,9 @@
   
   public String getName()
   {
-	  BindingOperation bindingOperation = (BindingOperation)target;
-	  return bindingOperation.getEOperation().getName();
+    BindingOperation bindingOperation = (BindingOperation)target;
+    Operation operation = bindingOperation.getEOperation();
+    return operation != null ? operation.getName() : null;
   }
 
   public List getExtensiblityObjects()
@@ -91,6 +93,14 @@
 
   public String getText()
   {
-    return getName();
+    return "binding operation";
+  }
+  
+  public String[] getActions(Object object) {    
+    Collection actionIDs = new ArrayList();
+    if (isReadOnly()) {
+      actionIDs.add(OpenInNewEditor.ID);
+    }
+    return (String [])actionIDs.toArray(new String[0]);
   }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11CategoryAdapter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11CategoryAdapter.java
index d8df6e6..7a1337d 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11CategoryAdapter.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11CategoryAdapter.java
@@ -12,7 +12,6 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
@@ -23,11 +22,12 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddMessageAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddSchemaAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddServiceAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObjectListener;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ICategoryAdapter;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
 
-public class W11CategoryAdapter extends WSDLBaseAdapter implements ICategoryAdapter, ITreeElement {
+public class W11CategoryAdapter extends WSDLBaseAdapter implements ICategoryAdapter, ITreeElement, IASDObjectListener {
 	  public final static int IMPORTS = 1;
 	  public final static int TYPES = 2;
 	  public final static int SERVICES = 3;
@@ -35,12 +35,12 @@
 	  public final static int INTERFACES = 6;
 	  public final static int MESSAGES = 7;
 	  
-	  public static String IMPORTS_HEADER_TEXT = Messages.getString("_UI_FOLDER_IMPORTS"); //$NON-NLS-1$
-	  public static String TYPES_HEADER_TEXT = Messages.getString("_UI_FOLDER_TYPES"); //$NON-NLS-1$
-	  public static String SERVICE_HEADER_TEXT = Messages.getString("_UI_FOLDER_SERVICES"); //$NON-NLS-1$
-	  public static String BINDING_HEADER_TEXT = Messages.getString("_UI_FOLDER_BINDINGS"); //$NON-NLS-1$
-	  public static String INTERFACE_HEADER_TEXT = Messages.getString("_UI_FOLDER_PORTTYPES"); //$NON-NLS-1$
-	  public static String MESSAGE_HEADER_TEXT = Messages.getString("_UI_FOLDER_MESSAGES"); //$NON-NLS-1$
+	  public static String IMPORTS_HEADER_TEXT = Messages._UI_FOLDER_IMPORTS; //$NON-NLS-1$
+	  public static String TYPES_HEADER_TEXT = Messages._UI_FOLDER_TYPES; //$NON-NLS-1$
+	  public static String SERVICE_HEADER_TEXT = Messages._UI_FOLDER_SERVICES; //$NON-NLS-1$
+	  public static String BINDING_HEADER_TEXT = Messages._UI_FOLDER_BINDINGS; //$NON-NLS-1$
+	  public static String INTERFACE_HEADER_TEXT = Messages._UI_PORT_TYPE; //$NON-NLS-1$
+	  public static String MESSAGE_HEADER_TEXT = Messages._UI_FOLDER_MESSAGES; //$NON-NLS-1$
 
 	  protected String text;
 	  protected Image image;
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Description.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Description.java
index 6211102..1ef1d2f 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Description.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Description.java
@@ -13,7 +13,6 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.impl.NotificationImpl;
@@ -30,16 +29,26 @@
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddMessageCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddSchemaCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddServiceCommand;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11EditNamespacesCommand;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddBindingAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddInterfaceAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddServiceAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
 import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
+import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
+import org.eclipse.wst.xml.core.internal.contentmodel.util.DOMNamespaceInfoManager;
+import org.w3c.dom.Element;
 
 public class W11Description extends WSDLBaseAdapter implements IDescription {
+	protected List categories = new ArrayList();
+	
 	protected W11CategoryAdapter getCategory(int categoryId) {
-		Iterator it = getCategoryAdapters().iterator();
+		return getCategory(categoryId, getCategoryAdapters());
+	}
+	
+	protected W11CategoryAdapter getCategory(int categoryId, List list) {
+		Iterator it = list.iterator();
 		while (it.hasNext()) {
 			W11CategoryAdapter adapter = (W11CategoryAdapter) it.next();
 			if (adapter.getGroupType() == categoryId) {
@@ -50,10 +59,37 @@
 		return null;
 	}
 	
-	private List getCategoryAdapters() {
-		return createCategoryAdapters();
+	protected List getCategoryAdapters() {
+	    // just set categoryadapters' children if category adapters are
+	    // already created
+	    if (categories.size() == 0) {
+	    	categories = createCategoryAdapters();
+	    }
+	    else {
+	    	W11CategoryAdapter category = getCategory(W11CategoryAdapter.IMPORTS, categories);
+	    	category.setChildren(getImports());
+	    	
+	    	category = getCategory(W11CategoryAdapter.TYPES, categories);
+	    	addListenerToTypes(category);
+
+	    	category = getCategory(W11CategoryAdapter.SERVICES, categories);
+	    	category.setChildren(getServices());
+
+	    	category = getCategory(W11CategoryAdapter.BINDINGS, categories);
+	    	category.setChildren(getBindings());
+
+	    	category = getCategory(W11CategoryAdapter.INTERFACES, categories);
+	    	category.setChildren(getInterfaces());
+
+	    	category = getCategory(W11CategoryAdapter.MESSAGES, categories);
+	    	category.setChildren(getMessages());
+	    }
+    	return categories;
 	}
 	
+	// TODO: rmah: right now it looks like the definition needs to know too much about the categories
+	// We should make the categories more self-sufficient.... so it knows how to compute it's children
+	// based on it's kind
 	protected List createCategoryAdapters() {
 		List categories = new ArrayList();
 		
@@ -67,36 +103,55 @@
 		String categoryTitle = W11CategoryAdapter.IMPORTS_HEADER_TEXT;
 		Image categoryImage = WSDLEditorPlugin.getInstance().getImage("icons/importheader_obj.gif"); //$NON-NLS-1$
 		W11CategoryAdapter category = new W11CategoryAdapter(this, categoryTitle, categoryImage, importList, W11CategoryAdapter.IMPORTS);
+		registerListener(category);
 		categories.add(category);
 		
 		categoryTitle = W11CategoryAdapter.TYPES_HEADER_TEXT;
 		categoryImage = WSDLEditorPlugin.getInstance().getImage("icons/types_obj.gif"); //$NON-NLS-1$
-		category = new W11CategoryAdapter(this, categoryTitle, categoryImage, schemaList, W11CategoryAdapter.TYPES);
+		category = new W11TypesCategoryAdapter(this, categoryTitle, categoryImage, W11CategoryAdapter.TYPES);
+		addListenerToTypes(category);
+		registerListener(category);
 		categories.add(category);
 		
 		categoryTitle = W11CategoryAdapter.SERVICE_HEADER_TEXT;
 		categoryImage = WSDLEditorPlugin.getInstance().getImage("icons/serviceheader_obj.gif"); //$NON-NLS-1$
 		category = new W11CategoryAdapter(this, categoryTitle, categoryImage, serviceList, W11CategoryAdapter.SERVICES);
+		registerListener(category);
 		categories.add(category);
 		
 		categoryTitle = W11CategoryAdapter.BINDING_HEADER_TEXT;
 		categoryImage = WSDLEditorPlugin.getInstance().getImage("icons/bindingheader_obj.gif"); //$NON-NLS-1$
 		category = new W11CategoryAdapter(this, categoryTitle, categoryImage, bindingList, W11CategoryAdapter.BINDINGS);
+		registerListener(category);
 		categories.add(category);
 		
 		categoryTitle = W11CategoryAdapter.INTERFACE_HEADER_TEXT;
 		categoryImage = WSDLEditorPlugin.getInstance().getImage("icons/porttypeheader_obj.gif"); //$NON-NLS-1$
 		category = new W11CategoryAdapter(this, categoryTitle, categoryImage, interfaceList, W11CategoryAdapter.INTERFACES);
+		registerListener(category);
 		categories.add(category);
 		
 		categoryTitle = W11CategoryAdapter.MESSAGE_HEADER_TEXT;
 		categoryImage = WSDLEditorPlugin.getInstance().getImage("icons/messageheader_obj.gif"); //$NON-NLS-1$
 		category = new W11CategoryAdapter(this, categoryTitle, categoryImage, messageList, W11CategoryAdapter.MESSAGES);
+		registerListener(category);
 		categories.add(category);
 		
 		return categories;
 	  }
 	
+	// Special case:
+	// We need to have the Types object inform our facade (W11TypesCategoryAdapter) of it's
+	// changes.  This is different from the rest of the W11CategoryAdapters which listens
+	// to the Definition object.
+	private void addListenerToTypes(W11CategoryAdapter category) {
+		Definition def = (Definition) this.getTarget();
+		Types types = def.getETypes();
+		if (types != null && !types.eAdapters().contains(category)) {
+			types.eAdapters().add(category);
+		}	
+	}
+	
 	public String getTargetNamespace() {
 		return ((Definition) target).getTargetNamespace();
 	}
@@ -202,12 +257,22 @@
 		return new W11AddMessageCommand((Definition) target);	
 	}
 	
+	public Command getEditNamespacesCommand() {
+		return new W11EditNamespacesCommand((Definition) target);
+	}
+	
+	public List getNamespacesInfo() {
+		DOMNamespaceInfoManager namespaceInfoManager = new DOMNamespaceInfoManager();
+		Element element = WSDLEditorUtil.getInstance().getElementForObject((Definition) target);
+		return namespaceInfoManager.getNamespaceInfoList(element);
+	}
+	
 	public Image getImage() {
 		return null;
 	}
 	
 	public String getText() {
-		return "description";
+		return "definition";
 	}
 	
 	public ITreeElement[] getChildren() {
@@ -228,6 +293,7 @@
 	}
 	
 	public void notifyChanged(final Notification msg) {
+		// TODO: rmah: This code should be moved into W11CategoryAdapter
 		class CategoryNotification extends NotificationImpl {
 			protected Object category;
 			
@@ -251,35 +317,38 @@
 			adapter.setChildren(getImports());
 			notifyListeners(new CategoryNotification(adapter), adapter.getText());
 		}
-		if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_ETypes()) {
-			W11CategoryAdapter adapter = getCategory(W11CategoryAdapter.IMPORTS);
+		else if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_ETypes()) {
+			W11CategoryAdapter adapter = getCategory(W11CategoryAdapter.TYPES);
 			Assert.isTrue(adapter != null);
 			adapter.setChildren(getImports());
 			notifyListeners(new CategoryNotification(adapter), adapter.getText());
 		}
-		if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_EServices()) {
+		else if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_EServices()) {
 			W11CategoryAdapter adapter = getCategory(W11CategoryAdapter.SERVICES);
 			Assert.isTrue(adapter != null);
 			adapter.setChildren(getServices());
 			notifyListeners(new CategoryNotification(adapter), adapter.getText());
 		}
-		if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_EBindings()) {
+		else if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_EBindings()) {
 			W11CategoryAdapter adapter = getCategory(W11CategoryAdapter.BINDINGS);
 			Assert.isTrue(adapter != null);
 			adapter.setChildren(getBindings());
 			notifyListeners(new CategoryNotification(adapter), adapter.getText());
 		}
-		if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_EPortTypes()) {
+		else if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_EPortTypes()) {
 			W11CategoryAdapter adapter = getCategory(W11CategoryAdapter.INTERFACES);
 			Assert.isTrue(adapter != null);
 			adapter.setChildren(getInterfaces());
 			notifyListeners(new CategoryNotification(adapter), adapter.getText());
 		}
-		if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_EMessages()) {
+		else if (msg.getFeature() == WSDLPackage.eINSTANCE.getDefinition_EMessages()) {
 			W11CategoryAdapter adapter = getCategory(W11CategoryAdapter.MESSAGES);
 			Assert.isTrue(adapter != null);
 			adapter.setChildren(getMessages());
 			notifyListeners(new CategoryNotification(adapter), adapter.getText());
 		}
+		else {
+			notifyListeners(null, null);
+		}
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11EndPoint.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11EndPoint.java
index dd39505..86d031e 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11EndPoint.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11EndPoint.java
@@ -11,6 +11,7 @@
 package org.eclipse.wst.wsdl.ui.internal.adapters.basic;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 
@@ -24,6 +25,7 @@
 import org.eclipse.wst.wsdl.binding.soap.SOAPAddress;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11DeleteCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11SetAddressCommand;
@@ -57,9 +59,7 @@
 	}
     
     protected List getAddressExtensiblityElements()
-    {    
-      if (addressExtensiblityElements == null || addressExtensiblityElements.size() == 0)
-      {
+    {       
         addressExtensiblityElements = new ArrayList();
         thingsToListenTo = new ArrayList();
         Port port = (Port) getTarget();          
@@ -81,7 +81,7 @@
           IASDObject object = (IASDObject)i.next();
           object.registerListener(this);
         }  
-      }  
+       
       return addressExtensiblityElements;
     }
     
@@ -144,15 +144,18 @@
 	}
 	
 	public String[] getActions(Object object) {
-		String[] actionIDs = new String[6];
-		actionIDs[0] = ASDAddEndPointAction.ID;
-		actionIDs[1] = BaseSelectionAction.SUBMENU_START_ID + Messages.getString("_UI_ACTION_SET_BINDING"); //$NON-NLS-1$
-		actionIDs[2] = ASDSetNewBindingAction.ID;
-		actionIDs[3] = ASDSetExistingBindingAction.ID;
-		actionIDs[4] = BaseSelectionAction.SUBMENU_END_ID;
-		actionIDs[5] = ASDDeleteAction.ID;
-		
-		return actionIDs;
+    Collection actionIDs = new ArrayList();
+
+    actionIDs.add(ASDAddEndPointAction.ID);
+    actionIDs.add(BaseSelectionAction.SUBMENU_START_ID + Messages._UI_ACTION_SET_BINDING); //$NON-NLS-1$
+    actionIDs.add(ASDSetNewBindingAction.ID);
+    actionIDs.add(ASDSetExistingBindingAction.ID);
+    actionIDs.add(BaseSelectionAction.SUBMENU_END_ID);
+    actionIDs.add(ASDDeleteAction.ID);
+    if (isReadOnly()) {
+      actionIDs.add(OpenInNewEditor.ID);
+    }
+    return (String [])actionIDs.toArray(new String[0]);
 	}
 	
 	public Command getSetBindingCommand(IBinding binding) {
@@ -194,4 +197,27 @@
 	public ITreeElement getParent() {
 		return null;
 	}
+	
+	// TODO: rmah: This method should be defined in the IEndPoint Interface.
+	// Do this post 1.5....
+	public String getProtocol() {
+		String protocol = "";
+		
+		List list = getAddressExtensiblityElements();
+        if (list.size() > 0) {
+        	W11AddressExtensibilityElementAdapter addressEE = (W11AddressExtensibilityElementAdapter)list.get(0);
+        	Object target = addressEE.getTarget();
+        	
+        	// TODO: rmah: We should not using hardcoded strings as the returned Protocol.  We need to get
+        	// the protocol dynamically....
+        	if (target instanceof SOAPAddress) {
+        		protocol = "SOAP";
+        	}
+        	else if (target instanceof HTTPAddress) {
+        		protocol = "HTTP";
+        	}
+        }	
+
+		return protocol;
+	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Import.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Import.java
index 18fa96c..41981cc 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Import.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Import.java
@@ -15,6 +15,7 @@
 import org.eclipse.wst.wsdl.Import;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11OpenImportAction;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11DeleteCommand;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDDeleteAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
@@ -49,9 +50,9 @@
 	}
 	
 	public String[] getActions(Object object) {
-		String[] actionIDs = new String[1];
-		actionIDs[0] = ASDDeleteAction.ID;
-		
+		String[] actionIDs = new String[2];
+		actionIDs[0] = W11OpenImportAction.ID;
+		actionIDs[1] = ASDDeleteAction.ID;    
 		return actionIDs;
 	}
 	
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Interface.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Interface.java
index 0c15b80..54eeee8 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Interface.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Interface.java
@@ -12,11 +12,11 @@
 
 import java.util.ArrayList;
 import java.util.List;
-
 import org.eclipse.gef.commands.Command;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.wsdl.PortType;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddOperationCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11DeleteCommand;
@@ -39,11 +39,13 @@
 	}
 	
 	public String[] getActions(Object object) {
-		String[] actionIDs = new String[2];
-		actionIDs[0] = ASDAddOperationAction.ID;
-		actionIDs[1] = ASDDeleteAction.ID;
-		
-		return actionIDs;
+    List actionIDs = new ArrayList();
+    actionIDs.add(ASDAddOperationAction.ID);
+    actionIDs.add(ASDDeleteAction.ID);
+    if (isReadOnly()) {
+      actionIDs.add(OpenInNewEditor.ID);
+    }
+    return (String [])actionIDs.toArray(new String[0]);
 	}
 	
 	public Command getAddOperationCommand() {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Message.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Message.java
index 353c47a..0d56436 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Message.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Message.java
@@ -13,13 +13,13 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11AddPartAction;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddPartCommand;
@@ -42,7 +42,7 @@
 			Adapter adapter = WSDLAdapterFactoryHelper.getInstance().adapt(component);
 			adapterList.add(adapter);			
 		}
-		
+
 		return adapterList;
 	}
 	
@@ -51,15 +51,21 @@
 	}
 
 	public String getName() {
-		return ((Message) target).getQName().getLocalPart();
+		if (((Message) target).getQName() != null) {
+			return ((Message) target).getQName().getLocalPart();
+		}
+		
+		return "";
 	}
 	
 	public String[] getActions(Object object) {
-		String[] actionIDs = new String[2];
-		actionIDs[0] = W11AddPartAction.ID;
-		actionIDs[1] = ASDDeleteAction.ID;
-		
-		return actionIDs;
+    List actionIDs = new ArrayList();
+    actionIDs.add(W11AddPartAction.ID);
+    actionIDs.add(ASDDeleteAction.ID);
+    if (isReadOnly()) {
+      actionIDs.add(OpenInNewEditor.ID);
+    }
+    return (String [])actionIDs.toArray(new String[0]);
 	}
 	
 	public Command getAddPartCommand() {
@@ -69,11 +75,6 @@
 	public Command getDeleteCommand() {
 		return new W11DeleteCommand(this);
 	}
-
-	public Command getSetNameCommand(String newName) {
-
-		return null;
-	}
 	
 	public Image getImage() {
 		return WSDLEditorPlugin.getInstance().getImage("icons/message_obj.gif"); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11MessageReference.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11MessageReference.java
index 9e3c66d..fcee503 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11MessageReference.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11MessageReference.java
@@ -21,19 +21,26 @@
 import org.eclipse.wst.wsdl.Fault;
 import org.eclipse.wst.wsdl.Input;
 import org.eclipse.wst.wsdl.MessageReference;
+import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.Output;
+import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11AddPartAction;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetExistingMessageAction;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetNewMessageAction;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddFaultParameterCommand;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddInputParameterCommand;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddOutputParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11DeleteCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11ReorderParametersCommand;
+import org.eclipse.wst.wsdl.ui.internal.adapters.visitor.W11FindInnerElementVisitor;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddFaultAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddOperationAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDDeleteAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.ModelDiagnosticInfo;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObjectListener;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
@@ -41,6 +48,8 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
 import org.eclipse.wst.wsdl.ui.internal.visitor.WSDLVisitorForParameters;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.ProductCustomizationProvider;
+import org.eclipse.xsd.XSDElementDeclaration;
 
 
 public class W11MessageReference extends WSDLBaseAdapter implements IMessageReference, IASDObjectListener
@@ -48,7 +57,8 @@
   protected int messageKind = -1;
   protected List parameters = null;
   protected List otherThingsToListenTo = null;
-
+  private String previewString = "";
+  
   public W11MessageReference(int messageKind)
   {
     this.messageKind = messageKind;
@@ -60,6 +70,9 @@
   }
   
   public String getPreview() {
+	  return "  (" + previewString + ")  ";
+	  
+	  /*
 	  String previewString = "()";
 	  List params = getParameters();
 	  // For now, just look at the first Part for the preview
@@ -70,6 +83,34 @@
 	  }	  
 	  
 	  return previewString;
+	  */
+  }
+  
+  private String getMessageString(String key, Object[] args) {
+	  String string = null;
+
+	  Object object = WSDLEditorPlugin.getInstance().getProductCustomizationProvider();
+	  if (object instanceof ProductCustomizationProvider) {
+		  ProductCustomizationProvider productCustomizationProvider = (ProductCustomizationProvider)object;
+		  String newString = productCustomizationProvider.getProductString(key, args);
+		  if (newString != null) {
+			  string = newString;
+		  }
+	  }
+
+	  return string;
+  }
+  
+  private String getInvalidElementReferenceString() {
+	  String string = null;
+	  String[] args = new String[1];
+	  args[0] = "element";
+	  string = getMessageString("_UI_LABEL_INVALID_ARG_REFERENCE", args);
+	  if (string == null) {
+		  string = "Invalid element reference";
+	  }
+	  
+	  return string;
   }
   
   // Convenience method
@@ -103,19 +144,12 @@
   
   public String getName()
   {
-    if (getKind() == KIND_INPUT)
-    {
-      return "input";
-    }
-    else if (getKind() == KIND_OUTPUT)
-    {
-      return "output";
-    }
-    else if (getKind() == KIND_FAULT)
-    {
-      return "fault";
-    }
-    return "NoName";
+	  MessageReference messageRef = getMessageReference();
+	  if (messageRef.getName() != null) {
+		  return messageRef.getName();
+	  }
+	  
+	  return "";
   }
 
   /*
@@ -204,11 +238,14 @@
 	  actions.add(ASDAddFaultAction.ID);
 	  actions.add(W11AddPartAction.ID);
 	  actions.add(ASDDeleteAction.ID);
-	  actions.add(BaseSelectionAction.SUBMENU_START_ID + Messages.getString("_UI_ACTION_SET_MESSAGE")); //$NON-NLS-1$
+	  actions.add(BaseSelectionAction.SUBMENU_START_ID + Messages._UI_ACTION_SET_MESSAGE); //$NON-NLS-1$
 	  actions.add(W11SetNewMessageAction.ID);
 	  actions.add(W11SetExistingMessageAction.ID);
 	  actions.add(BaseSelectionAction.SUBMENU_END_ID);
-	  
+//    if (isReadOnly()) {
+//      actions.add(OpenInNewEditor.ID);
+//    }
+
 	  String[] actionIDs = new String[actions.size()];
 	  for (int index = 0; index < actions.size(); index++) {
 		  actionIDs[index] = (String) actions.get(index);
@@ -225,6 +262,24 @@
 	  return new W11DeleteCommand(this);
   }
   
+  public Command getAddParamterCommand() {
+      Command command = null;
+      Operation operation = (Operation)getMessageReference().eContainer();
+      if (getKind() == KIND_INPUT)
+      {    
+        command = new W11AddInputParameterCommand(operation);
+      }  
+      else if (getKind() == KIND_OUTPUT)
+      {
+        command = new W11AddOutputParameterCommand(operation);        
+      } 
+      else
+      {
+        command = new W11AddFaultParameterCommand(operation, (Fault)getMessageReference());        
+      } 
+      return command;
+  }  
+  
 	public Image getImage() {
 	    if (getKind() == KIND_INPUT)
 	    {
@@ -244,28 +299,56 @@
 	public String getText() {
 	    if (getKind() == KIND_INPUT)
 	    {
-	      return "Input(s)";
+	      return "input";
 	    }
 	    else if (getKind() == KIND_OUTPUT)
 	    {
-	      return "Output(s)";
+	      return "output";
 	    }
 	    else if (getKind() == KIND_FAULT)
 	    {
-	      return "Fault(s)";
+	      return getName();
 	    }
 	    return "NoName";
 	}
+    
+	public List getParameters2() 
+    {
+	  if (parameters == null)
+	  {
+	    parameters = new ArrayList();
+	    otherThingsToListenTo = new ArrayList();
+	    WSDLVisitorForParameters visitorForParameters = new WSDLVisitorForParameters();
+	    visitorForParameters.visitMessageReference(getMessageReference());
+	    populateAdapterList(visitorForParameters.concreteComponents, parameters);
+	    populateAdapterList(visitorForParameters.thingsToListenTo, otherThingsToListenTo);
+
+	    // now we listen to all the 'things we need to listen to'
+	    //
+	    for (Iterator i = otherThingsToListenTo.iterator(); i.hasNext();)
+	    {
+	      Adapter adapter = (Adapter) i.next();
+	      if (adapter instanceof IASDObject)
+	      {
+	        IASDObject asdObject = (IASDObject) adapter;
+	        asdObject.registerListener(this);
+	      }
+	    } 
+	  }
+
+	  return parameters;
+	}    
 	
 	public ITreeElement[] getChildren() {
+      /*
 		List parts = getParameters();
 		ITreeElement[] treeElements = new ITreeElement[parts.size()];
 		
 		for (int index = 0; index < parts.size(); index++) {
 			treeElements[index] = (ITreeElement) parts.get(index);
 		}
-		
-		return treeElements;
+		*/
+		return ITreeElement.EMPTY_LIST;
 	}
 
 	public boolean hasChildren() {
@@ -279,4 +362,133 @@
 	public ITreeElement getParent() {
 		return null;
 	}
+
+	private void processAdvancedW11MessageReference() {
+		diagnosticMessages = new ArrayList();
+
+		MessageReference messageRef = (MessageReference) getTarget();
+		List parts = new ArrayList();
+		if (messageRef.getEMessage() != null) {
+			if (messageRef.getEMessage().getEParts() != null) {
+				parts = messageRef.getEMessage().getEParts();
+			}
+		}
+
+		if (messageRef == null || messageRef.getEMessage() == null) {
+			addErrorDiagnosticMessage(getUndefinedArg1String("message"));
+		}
+		else if (parts.size() <= 0) {
+			String[] args = new String[1];
+			args[0] = "part";
+			addWarningDiagnosticMessage(getStringForKey("_UI_LABEL_NO_OBJECT_SPECIFIED_ARG1", args));
+		}
+	}
+
+	private void processSimplifiedW11MessageReference() {
+		diagnosticMessages = new ArrayList();
+		
+		MessageReference messageRef = (MessageReference) getTarget();
+		  if (messageRef == null || messageRef.getEMessage() == null) {
+			  addErrorDiagnosticMessage(getUndefinedArg1String("message"));
+		  }
+		  else if (messageRef.getEMessage().getEParts().size() <= 0) {
+			  addWarningDiagnosticMessage(getNoParametersSpecifiedString());
+		  }
+		  else {
+			  Part part = (Part) messageRef.getEMessage().getEParts().get(0);
+			  XSDElementDeclaration xsdElement = part.getElementDeclaration();
+			  if (xsdElement == null || xsdElement.getSchema() == null) {
+				  // No XSD Element
+				  addErrorDiagnosticMessage(getUndefinedArg1String("element"));
+			  }
+			  else {
+				  MyInnerElementVisitor visitor = new MyInnerElementVisitor();
+				  visitor.findErrorsAndWarnings(xsdElement);
+				  diagnosticMessages.addAll(visitor.getDiagnosticMessages());
+			  }
+		  }
+	}
+
+	private void addErrorDiagnosticMessage(String txt) {
+		diagnosticMessages.add(new ModelDiagnosticInfo(txt, ModelDiagnosticInfo.ERROR_TYPE, null));
+	}
+	
+	private void addWarningDiagnosticMessage(String txt) {
+		diagnosticMessages.add(new ModelDiagnosticInfo(txt, ModelDiagnosticInfo.WARNING_TYPE, null));		
+	}
+	
+	protected List diagnosticMessages = new ArrayList();
+	
+	// TODO: rmah: Post WTP 1.5, we should rename this to be something like getAdvancedW11MessageReference()
+	public List getDiagnosticMessages() {
+		processAdvancedW11MessageReference();
+		return diagnosticMessages;
+	}
+	
+	// TODO: rmah: Post WTP 1.5, we should rename this to be something like getSimplifiedW11MessageReference()
+	public List getDiagnosticMessages2() {
+		processSimplifiedW11MessageReference();
+		return diagnosticMessages;
+	}
+	
+	private class MyInnerElementVisitor extends W11FindInnerElementVisitor {
+		private List diagMessages = new ArrayList();
+		
+		public void findErrorsAndWarnings(XSDElementDeclaration xsdElement) {
+			if (xsdElement.getTypeDefinition() == null || xsdElement.getTypeDefinition().getSchema() == null) {
+				// No XSD type (non anonymous) defined
+				diagMessages.add(new ModelDiagnosticInfo(getUndefinedArg1String("type"), ModelDiagnosticInfo.ERROR_TYPE, null));
+			}
+
+			XSDElementDeclaration innerElement = super.getInnerXSDElement(xsdElement);
+			if (innerElement.equals(xsdElement)) {
+				diagMessages.add(new ModelDiagnosticInfo(getNoParametersSpecifiedString(), ModelDiagnosticInfo.WARNING_TYPE, null));
+			}
+		}
+		
+		public List getDiagnosticMessages() {
+			return diagMessages;
+		}
+	}
+	
+	  private String getUndefinedArg1String(String arg) {
+		  String[] args = new String[1];
+		  args[0] = arg;
+		  String newString = getStringForKey("_UI_LABEL_UNDEFINED_ARG1", args);
+		  return newString;
+	  }
+	  
+	  private String getNoParametersSpecifiedString() {
+		  String string = null;
+		  String[] args = new String[0];
+		  string = getStringForKey("_UI_LABEL_NO_PARAMETERS_SPECIFIED", args);
+		  return string;
+	  }
+	  
+	  private String getStringForKey(String key, Object[] args) {
+		  String newString = "";
+		  newString = Messages.getString(key, args);
+		  
+		  Object object = WSDLEditorPlugin.getInstance().getProductCustomizationProvider();
+		  if (object instanceof ProductCustomizationProvider) {
+			  ProductCustomizationProvider productCustomizationProvider = (ProductCustomizationProvider)object;
+			  String customizedString = "";
+			  if (args == null) {
+				  customizedString = productCustomizationProvider.getProductString(key);
+			  }
+			  else {
+				  customizedString = productCustomizationProvider.getProductString(key, args);
+			  }
+			  
+			  if (customizedString != null && !customizedString.equals("")) {
+				  newString = customizedString;
+			  }
+		  }
+
+		  if (newString == null) {
+			  newString = "";
+		  }
+
+		  return newString;
+	  }
   }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Operation.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Operation.java
index 84e5d57..e63a67e 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Operation.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Operation.java
@@ -19,11 +19,14 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.wsdl.Fault;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.wsdl.Input;
 import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.Output;
+import org.eclipse.wst.wsdl.ui.internal.DefaultEditorMode;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddFaultParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddInputParameterCommand;
@@ -39,6 +42,8 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IOperation;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
+import org.eclipse.wst.wsdl.ui.internal.commands.AddBaseParameterCommand;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.EditorModeManager;
 
 public class W11Operation extends WSDLBaseAdapter implements IOperation {
 	public List getMessages()
@@ -100,6 +105,9 @@
 		actions.addAll(getValidInputOutpuActions());
 		actions.add(ASDAddFaultAction.ID);
 		actions.add(ASDDeleteAction.ID);
+    if (isReadOnly()) {
+      actions.add(OpenInNewEditor.ID);
+    }
 		
 		String[] actionIDs = new String[actions.size()];
 		for (int index = 0; index < actions.size(); index++) {
@@ -110,19 +118,39 @@
 	}
 	
 	public Command getAddInputCommand() {
-		return new W11AddInputParameterCommand(getOperation());
+		W11AddInputParameterCommand command = new W11AddInputParameterCommand(getOperation());
+		
+        IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+        EditorModeManager manager = (EditorModeManager) editor.getAdapter(EditorModeManager.class);
+		if (manager.getCurrentMode().getId() != DefaultEditorMode.class.getName()) {
+			command.setParameterPattern(AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT);
+		}
+
+		return command;
 	}
 	
 	public Command getAddOutputCommand() {
-		return new W11AddOutputParameterCommand(getOperation());
+		W11AddOutputParameterCommand command = new W11AddOutputParameterCommand(getOperation());
+		
+        IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+        EditorModeManager manager = (EditorModeManager) editor.getAdapter(EditorModeManager.class);
+		if (manager.getCurrentMode().getId() != DefaultEditorMode.class.getName()) {
+			command.setParameterPattern(AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT);
+		}
+
+		return command;
 	}
 	
 	public Command getAddFaultCommand(Object fault) {
-		Fault aFault = null;
-		if (fault instanceof Fault) {
-			aFault = (Fault) fault;
+		W11AddFaultParameterCommand command = new W11AddFaultParameterCommand(getOperation(), null);
+		
+        IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+        EditorModeManager manager = (EditorModeManager) editor.getAdapter(EditorModeManager.class);
+		if (manager.getCurrentMode().getId() != DefaultEditorMode.class.getName()) {
+			command.setParameterPattern(AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT);
 		}
-		return new W11AddFaultParameterCommand(getOperation(), aFault);
+
+		return command;
 	}
 	
 	public Command getReorderMessageReferencesCommand(IMessageReference leftSibling, IMessageReference rightSibling, IMessageReference movingMessageRef) {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForAttribute.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForAttribute.java
new file mode 100644
index 0000000..5aaa7c0
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForAttribute.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.adapters.basic;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetExistingTypeAction;
+import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetNewTypeAction;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11DeleteParameterCommand;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDDeleteAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.ProductCustomizationProvider;
+import org.eclipse.xsd.XSDAttributeDeclaration;
+import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+//import com.ibm.ccl.soa.sdo.wsdl.ui.internal.commands.SDOW11DeleteCommand;
+
+public class W11ParameterForAttribute extends WSDLBaseAdapter implements IParameter {
+	
+	protected XSDAttributeUse getXSDAttributeUse() {
+		return (XSDAttributeUse) target;
+	}
+
+	protected XSDAttributeDeclaration getXSDAtttributeDeclaration() {
+		XSDAttributeUse attrUse = getXSDAttributeUse();
+		return attrUse.getAttributeDeclaration();		
+	}
+	
+	public Object getOwner() {
+		return (IMessageReference) owner;
+	}
+
+	public String getName() {
+		return getXSDAtttributeDeclaration().getName();
+	}
+	
+	public String getComponentName() {
+		XSDAttributeDeclaration attrDecl = getXSDAtttributeDeclaration();
+		
+		if (attrDecl.getType() != null) {
+			return attrDecl.getType().getName();
+		}
+		
+		return "error: could not get type name"; //$NON-NLS-1$
+	}
+	
+	public String getPreview() {
+		return ""; //$NON-NLS-1$
+	}
+
+	public String getComponentNameQualifier() {
+        XSDTypeDefinition td = getXSDAtttributeDeclaration().getTypeDefinition();
+        return td != null ? td.getTargetNamespace() : null;
+	}
+	
+	  public String[] getActions(Object object) {
+          List actions = new ArrayList();
+          //list.add(ASDAddOperationAction.ID);
+          //list.add(ASDAddInputAction.ID);
+          //list.add(ASDAddOutputAction.ID);
+          //list.add(ASDAddFaultAction.ID);
+          actions.add(BaseSelectionAction.SUBMENU_START_ID + Messages._UI_ACTION_SET_TYPE); //$NON-NLS-1$
+          actions.add(W11SetNewTypeAction.ID);
+          actions.add(W11SetExistingTypeAction.ID);
+          actions.add(BaseSelectionAction.SUBMENU_END_ID);
+
+          actions.add(ASDDeleteAction.ID);    
+          String[] result = new String[actions.size()];
+          actions.toArray(result);
+          return result;
+	}
+
+	public Command getDeleteCommand() {
+        return new W11DeleteParameterCommand(this);
+	}
+	
+	public Command getSetTypeCommand(String id) {
+		return null;
+	}
+
+	public Image getImage() {
+		return null;
+	}
+	
+	public String getText() {
+		return getParameterString() + " - attribute"; 
+	}
+	
+	private String getParameterString() {
+		String string = "";
+		Object object = WSDLEditorPlugin.getInstance().getProductCustomizationProvider();
+		if (object instanceof ProductCustomizationProvider) {
+			ProductCustomizationProvider productCustomizationProvider = (ProductCustomizationProvider)object;
+			String newString = productCustomizationProvider.getProductString("_UI_LABEL_PARAMETER");
+			if (newString != null) {
+				string = newString;
+			}
+		}
+
+		return string;
+	}
+	  
+	public ITreeElement[] getChildren() {
+		return new ITreeElement[0];
+	}
+
+	public boolean hasChildren() {
+		return false;
+	}
+
+	public ITreeElement getParent() {
+		return null;
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForElement.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForElement.java
new file mode 100644
index 0000000..712fca2
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForElement.java
@@ -0,0 +1,149 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.adapters.basic;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetExistingTypeAction;
+import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetNewTypeAction;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11DeleteParameterCommand;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11RenameCommand;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11SetTypeCommand;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDDeleteAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.ProductCustomizationProvider;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDTypeDefinition;
+
+
+public class W11ParameterForElement extends WSDLBaseAdapter implements IParameter
+{
+  protected XSDElementDeclaration getXSDElementDeclaration()
+  {
+    return ((XSDElementDeclaration) target).getResolvedElementDeclaration();
+  }
+
+  public String getName()
+  {
+    return getXSDElementDeclaration().getName();
+  }
+
+  public String getComponentName()
+  {
+	String compName = "";// + Messages.getString("_UI_LABEL_NO_TYPE_SPECIFIED") + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+    XSDTypeDefinition anonymousType = getXSDElementDeclaration().getAnonymousTypeDefinition();
+    XSDTypeDefinition td = getXSDElementDeclaration().getTypeDefinition();
+    
+    if (anonymousType != null) {
+        compName = "**anonymous**"; 
+    }
+
+    return (td != null && td.getName() != null) ? td.getName() : compName;
+  }
+  
+  public String getPreview() {
+	  return ""; //$NON-NLS-1$
+  }
+
+  public String getComponentNameQualifier()
+  {
+    XSDTypeDefinition td = getXSDElementDeclaration().getTypeDefinition();
+    return td != null ? td.getTargetNamespace() : null;
+   }
+  
+  public String[] getActions(Object object) {
+	  List actions = new ArrayList();
+	  //list.add(ASDAddOperationAction.ID);
+      //list.add(ASDAddInputAction.ID);
+      //list.add(ASDAddOutputAction.ID);
+      //list.add(ASDAddFaultAction.ID);
+      actions.add(BaseSelectionAction.SUBMENU_START_ID + Messages._UI_ACTION_SET_TYPE); //$NON-NLS-1$
+      actions.add(W11SetNewTypeAction.ID);
+      actions.add(W11SetExistingTypeAction.ID);
+      actions.add(BaseSelectionAction.SUBMENU_END_ID);
+     
+      actions.add(ASDDeleteAction.ID);	  
+      String[] result = new String[actions.size()];
+      actions.toArray(result);
+	  return result;
+  }
+
+  public Command getDeleteCommand()
+  {
+    return new W11DeleteParameterCommand(this);
+  }
+
+  public Command getSetTypeCommand(String actionId) {
+	  return new W11SetTypeCommand(this.getTarget(), actionId);
+  }
+  
+  public Command getSetNameCommand(String newName) {    
+    return new W11RenameCommand(this, newName) {
+      public void execute() {
+  		try {
+			beginRecording(getXSDElementDeclaration().getElement());
+			getXSDElementDeclaration().setName(newName);
+  		}
+  		finally {
+  			endRecording(getXSDElementDeclaration().getElement());
+  		}
+      }
+    };  
+  }
+  
+  public Object getOwner()
+  {
+	  return (IMessageReference) owner;
+  }
+  
+	public Image getImage() {
+		return null;
+	}
+	
+	public String getText() {
+		return getParameterString() + " - element"; 
+	}
+	
+	  private String getParameterString() {
+		  String string = "";
+		  Object object = WSDLEditorPlugin.getInstance().getProductCustomizationProvider();
+		  if (object instanceof ProductCustomizationProvider) {
+			  ProductCustomizationProvider productCustomizationProvider = (ProductCustomizationProvider)object;
+			  String newString = productCustomizationProvider.getProductString("_UI_LABEL_PARAMETER");
+			  if (newString != null) {
+				  string = newString;
+			  }
+		  }
+
+		  return string;
+	  }
+	
+	public ITreeElement[] getChildren() {
+		return new ITreeElement[0];
+	}
+
+	public boolean hasChildren() {
+		return false;
+	}
+
+	public ITreeElement getParent() {
+		return null;
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForPart.java
index 270e027..36725f4 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11ParameterForPart.java
@@ -13,7 +13,6 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-
 import org.eclipse.gef.commands.Command;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.ui.part.MultiPageEditorPart;
@@ -22,6 +21,7 @@
 import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11AddPartAction;
 import org.eclipse.wst.wsdl.ui.internal.adapters.actions.W11SetExistingElementAction;
@@ -35,12 +35,15 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddOperationAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDDeleteAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.ModelDiagnosticInfo;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IOperation;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
 import org.eclipse.wst.wsdl.ui.internal.visitor.WSDLVisitorForParameters;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.ProductCustomizationProvider;
 import org.eclipse.xsd.XSDAttributeUse;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
 import org.eclipse.xsd.XSDElementDeclaration;
 
 
@@ -60,17 +63,21 @@
   {
     if (getPart().getElementDeclaration() != null)
     {  
-      return "[Element] " + getPart().getElementDeclaration().getName();
+      return getPart().getElementDeclaration().getName();
     }
     else if (getPart().getTypeDefinition() != null)
     {
-      return "[Type] " + getPart().getTypeDefinition().getName();
+      return getPart().getTypeDefinition().getName();
     }
     else
     {
-      return "(no name specified)";
+      return getNoNameSpecifiedString();
     }  
   }
+  
+  private String getNoNameSpecifiedString() {
+	  return "";
+  }
 
   public String getComponentNameQualifier()
   {
@@ -139,17 +146,21 @@
 		  actions.addAll(((W11Operation) operation).getValidInputOutpuActions());
 		  actions.add(ASDAddFaultAction.ID);
 		  
-		  actions.add(BaseSelectionAction.SUBMENU_START_ID + Messages.getString("_UI_ACTION_SET_TYPE")); //$NON-NLS-1$
+		  actions.add(BaseSelectionAction.SUBMENU_START_ID + Messages._UI_ACTION_SET_TYPE); //$NON-NLS-1$
 		  actions.add(W11SetNewTypeAction.ID);
 		  actions.add(W11SetExistingTypeAction.ID);
 		  actions.add(BaseSelectionAction.SUBMENU_END_ID);
 
-		  actions.add(BaseSelectionAction.SUBMENU_START_ID + Messages.getString("_UI_ACTION_SET_ELEMENT")); //$NON-NLS-1$
+		  actions.add(BaseSelectionAction.SUBMENU_START_ID + Messages._UI_ACTION_SET_ELEMENT); //$NON-NLS-1$
 		  actions.add(W11SetNewElementAction.ID);
 		  actions.add(W11SetExistingElementAction.ID);
 		  actions.add(BaseSelectionAction.SUBMENU_END_ID);		  
 		  
 		  actions.add(ASDDeleteAction.ID);
+      
+      if (isReadOnly()) {
+        actions.add(OpenInNewEditor.ID);
+      }
 		  
 		  String[] actionIDs = new String[actions.size()];
 		  for (int index = 0; index < actions.size(); index++) {
@@ -182,6 +193,29 @@
 	public Image getImage() {
 		return WSDLEditorPlugin.getInstance().getImage("icons/part_obj.gif"); //$NON-NLS-1$
 	}
+    
+    public Image getSecondaryImage() {
+      
+      if (getPart().getElementDeclaration() != null)
+      {  
+        return WSDLEditorPlugin.getInstance().getImage("icons/element_obj.gif");
+      }
+      else if (getPart().getTypeDefinition() != null)
+      {
+        if (getPart().getTypeDefinition() instanceof XSDComplexTypeDefinition)
+        {  
+          return WSDLEditorPlugin.getInstance().getImage("icons/complextype_obj.gif");
+        }
+        else
+        {
+          return WSDLEditorPlugin.getInstance().getImage("icons/simpletype_obj.gif");
+        }  
+      }
+      else
+      {  
+        return WSDLEditorPlugin.getInstance().getImage("icons/part_obj.gif"); //$NON-NLS-1$
+      }  
+    }    
 	
 	public String getText() {
 		return "part";
@@ -206,4 +240,56 @@
 	public Command getSetElementCommand(String actionId) {
 		return new W11SetElementCommand((Part) this.getTarget(), actionId);
 	}
+	
+	// TODO: We should move the isType() method to the IParameter Interface........
+	public boolean isType() {
+		Part part = (Part) target;
+		if (part.getTypeDefinition() != null) {
+			return true;
+		}
+		
+		return false;
+	}
+
+	public List getDiagnosticMessages() {
+		List errors = new ArrayList();
+		Part part = (Part) getTarget();
+		if (part.getElementDeclaration() == null && part.getTypeDefinition() == null) {
+			String[] args = new String[2];
+			args[0] = "element";
+			args[1] = "type";
+			String newString = getStringForKey("_UI_LABEL_OR_UNDEFINED_ARG2", args);
+			ModelDiagnosticInfo info = new ModelDiagnosticInfo(newString, ModelDiagnosticInfo.ERROR_TYPE, null);
+			errors.add(info);
+		}
+		
+		return errors;
+	}
+	
+	  private String getStringForKey(String key, Object[] args) {
+		  String newString = "";
+		  newString = Messages.getString(key, args);
+
+		  Object object = WSDLEditorPlugin.getInstance().getProductCustomizationProvider();
+		  if (object instanceof ProductCustomizationProvider) {
+			  ProductCustomizationProvider productCustomizationProvider = (ProductCustomizationProvider)object;
+			  String customizedString = "";
+			  if (args == null) {
+				  customizedString = productCustomizationProvider.getProductString(key);
+			  }
+			  else {
+				  customizedString = productCustomizationProvider.getProductString(key, args);
+			  }
+			  
+			  if (customizedString != null && !customizedString.equals("")) {
+				  newString = customizedString;
+			  }
+		  }
+
+		  if (newString == null) {
+			  newString = "";
+		  }
+
+		  return newString;
+	  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Service.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Service.java
index c92128c..5ff9f86 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Service.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Service.java
@@ -11,12 +11,18 @@
 package org.eclipse.wst.wsdl.ui.internal.adapters.basic;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
 import java.util.List;
-
 import org.eclipse.gef.commands.Command;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.wsdl.Binding;
+import org.eclipse.wst.wsdl.Port;
+import org.eclipse.wst.wsdl.PortType;
 import org.eclipse.wst.wsdl.Service;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddEndPointCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11DeleteCommand;
@@ -30,7 +36,14 @@
 
 	public List getEndPoints() {
 		List adapterList = new ArrayList();
-		populateAdapterList(((Service) target).getEPorts(), adapterList);
+		List endPoints = new ArrayList();
+		Iterator it = ((Service) target).getEPorts().iterator();
+		while (it.hasNext()) {
+			endPoints.add(it.next());
+		}
+		
+		Collections.sort(endPoints, new EndPointComparator());
+		populateAdapterList(endPoints, adapterList);
 
 		return adapterList;
 	}
@@ -48,11 +61,14 @@
 	}
 	
 	public String[] getActions(Object object) {
-		String[] actionIDs = new String[2];
-		actionIDs[0] = ASDAddEndPointAction.ID;
-		actionIDs[1] = ASDDeleteAction.ID;
+    List actionIDs = new ArrayList();
+		actionIDs.add(ASDAddEndPointAction.ID);
+		actionIDs.add(ASDDeleteAction.ID);
 
-		return actionIDs;
+    if (isReadOnly()) {
+      actionIDs.add(OpenInNewEditor.ID);
+    }
+    return (String [])actionIDs.toArray(new String[0]);
 	}
     
     public Command getAddEndPointCommand() {
@@ -93,4 +109,40 @@
 	public ITreeElement getParent() {
 		return null;
 	}
+    
+	private class EndPointComparator implements Comparator {
+	  public int compare(Object o1, Object o2) {
+	    if (o1 instanceof Port && o2 instanceof Port) {
+	      Binding binding1 = ((Port) o1).getEBinding();
+	      Binding binding2 = ((Port) o2).getEBinding();
+
+	      if (binding1 != null && binding2 == null) {
+	        return -1;
+	      }
+	      else if (binding1 == null && binding2 != null) {
+	        return 1;
+	      }
+	      else if (binding1 == null && binding2 == null) {
+	    	  return 0;
+	      }
+	      
+	      PortType portType1 = binding1.getEPortType();
+	      PortType portType2 = binding2.getEPortType();
+
+	      if (portType1 != null && portType2 != null) {
+	        String name1 = portType1.getQName().getLocalPart();
+	        String name2 = portType2.getQName().getLocalPart();
+	        return name1.compareTo(name2);
+	      }
+	      else if (portType1 != null && portType2 == null) {
+	        return -1;
+	      }
+	      else if (portType1 == null && portType2 != null) {
+	        return 1;
+	      }
+	    }
+
+	    return 0;
+	  }
+	}    
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Type.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Type.java
index 3021ea0..4a383a4 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Type.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11Type.java
@@ -10,10 +10,13 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.basic;
 
+import org.eclipse.gef.commands.Command;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11DeleteCommand;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDDeleteAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDOpenSchemaAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IType;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
@@ -30,9 +33,9 @@
 	}
 	
 	public String[] getActions(Object object) {
-		String[] actionIDs = new String[1];
-		actionIDs[0] = ASDDeleteAction.ID;
-		
+		String[] actionIDs = new String[2];
+		actionIDs[0] = ASDOpenSchemaAction.ID;
+		actionIDs[1] = ASDDeleteAction.ID;	
 		return actionIDs;
 	}
 	
@@ -54,4 +57,9 @@
 	public ITreeElement getParent() {
 		return null;
 	}
+	
+	// TODO: rmah: Move this method signature to the interface (IType) of this class post WTP 1.5
+	public Command getDeleteCommand() {
+		return new W11DeleteCommand(this);
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11TypesCategoryAdapter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11TypesCategoryAdapter.java
new file mode 100644
index 0000000..2a85419
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/basic/W11TypesCategoryAdapter.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.adapters.basic;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
+import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
+
+public class W11TypesCategoryAdapter extends W11CategoryAdapter {
+	public W11TypesCategoryAdapter(IDescription description, String label, Image image, int groupType) {
+		super(description, label,image, Collections.EMPTY_LIST, groupType);
+	}
+
+	public ITreeElement[] getChildren() {
+		List types = ((W11Description) getOwnerDescription()).getTypes();
+		return (ITreeElement[]) types.toArray(new ITreeElement[0]);
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddBindingCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddBindingCommand.java
index 0fb749d..e35d560 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddBindingCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddBindingCommand.java
@@ -10,19 +10,19 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Binding;
 import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddBindingCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
 
-public class W11AddBindingCommand extends Command {
-	private Definition definition;
+public class W11AddBindingCommand extends W11TopLevelElementCommand implements IASDAddCommand {
 	private String newName;
 	private Binding newBinding;
 	
 	public W11AddBindingCommand(Definition definition) {
-		this.definition = definition;
+    super(Messages._UI_ACTION_ADD_BINDING, definition);
 	}
 	
 	public void setNewBindingName(String newName) {
@@ -34,13 +34,25 @@
 	}
 	
 	public void execute() {
-		if (newName == null || newName.equals("")) { //$NON-NLS-1$
-			newName = NameUtil.buildUniqueBindingName(definition, "NewBinding"); //$NON-NLS-1$
+		try {
+			beginRecording(definition.getElement());
+			super.execute();
+			if (newName == null || newName.equals("")) { //$NON-NLS-1$
+				newName = NameUtil.buildUniqueBindingName(definition, "NewBinding"); //$NON-NLS-1$
+			}
+			
+			AddBindingCommand command = new AddBindingCommand(definition, newName);
+			command.run();
+			
+			newBinding = (Binding) command.getWSDLElement();
+			formatChild(newBinding.getElement());
 		}
-		
-		AddBindingCommand command = new AddBindingCommand(definition, newName);
-		command.run();
-		
-		newBinding = (Binding) command.getWSDLElement();
+		finally {
+			endRecording(definition.getElement());
+		}
+	}
+	
+	public Object getNewlyAddedComponent() {
+		return newBinding;
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddEndPointCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddEndPointCommand.java
index d9a0e87..064e372 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddEndPointCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddEndPointCommand.java
@@ -10,28 +10,49 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
+import java.util.List;
+
+import org.eclipse.jface.window.Window;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.wst.wsdl.Port;
 import org.eclipse.wst.wsdl.Service;
-import org.eclipse.wst.wsdl.ui.internal.commands.AddPortCommand;
-import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
+import org.eclipse.wst.wsdl.ui.internal.wizards.PortWizard;
 
-public class W11AddEndPointCommand extends Command
+public class W11AddEndPointCommand extends W11TopLevelElementCommand implements IASDAddCommand
 {
     private Service service;
+    private Port port;
     
     public W11AddEndPointCommand(Service service) {
+        super(Messages._UI_ACTION_ADD, service.getEnclosingDefinition());
         this.service = service;
     }
     
     public void execute() {
-        AddPortCommand command = new AddPortCommand(service, NameUtil.buildUniquePortName(service, "NewPort")); //$NON-NLS-1$
-        command.run();
-        Port port = (Port) command.getWSDLElement();
-        
-		// Set a default address
-		String address = "http://www.example.org/"; //$NON-NLS-1$
-		W11SetAddressCommand addressCommand = new W11SetAddressCommand(port, address);
-		addressCommand.execute();
-    }  
+		try {
+			beginRecording(definition.getElement());
+			
+	    	PortWizard wizard = new PortWizard(service);
+			WizardDialog wizardDialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
+			wizardDialog.create();
+
+			int result = wizardDialog.open();
+			if (result == Window.OK && service.getEPorts().size() > 0) {
+				List ports = service.getEPorts();
+				port = (Port) ports.get(ports.size() - 1);
+				
+				formatChild(port.getElement());
+			}
+		}
+		finally {
+			endRecording(definition.getElement());
+		}
+    }
+
+	public Object getNewlyAddedComponent() {
+		return port;
+	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddFaultParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddFaultParameterCommand.java
index dfaccaf..a84be48 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddFaultParameterCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddFaultParameterCommand.java
@@ -10,48 +10,58 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Fault;
 import org.eclipse.wst.wsdl.Operation;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddBaseParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddFaultParameterCommand;
 
-public class W11AddFaultParameterCommand extends Command {
+public class W11AddFaultParameterCommand extends W11TopLevelElementCommand implements IASDAddCommand {
 	protected Operation operation;
 	protected Fault fault;
+	protected Object newObject;
+	private int parameterPattern = -1;
 	
 	public W11AddFaultParameterCommand(Operation operation, Fault fault) {
+        super(Messages._UI_ACTION_ADD_FAULT, operation.getEnclosingDefinition());
 		this.operation = operation;
 		this.fault = fault;
 	}
 	
-	public void execute() {
-		// Determine which Pattern we should use.  For example, ADDBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT
-//		int pattern = getParameterPattern();		
-		AddFaultParameterCommand command = new AddFaultParameterCommand(operation, fault);
-		command.setStyle(AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT);
-		command.run();
+	public void setParameterPattern(int pattern) {
+		parameterPattern = pattern;
 	}
 	
-//	private int getParameterPattern() {
-//		int pattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
-//		
-//		if (operation.getEInput() != null) {
-//			Input input = operation.getEInput();
-//			
-//			if (input.getEMessage() != null) {
-//				Message message = input.getEMessage();
-//				List parts = message.getEParts();
-//				
-//				if (parts.size() > 0) {
-//					Part part = (Part) parts.get(0);
-//					if (part.getTypeDefinition() != null) {
-//						pattern = AddBaseParameterCommand.PART_COMPLEXTYPE_SEQ_ELEMENT;
-//					}
-//				}
-//			}
-//		}
-//		
-//		return pattern;
-//	}
+	public void execute() {
+		try {
+			beginRecording(operation.getElement());
+
+			if (parameterPattern == -1) {
+				// Determine which Pattern we should use.  For example, ADDBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT
+				parameterPattern = AddFaultParameterCommand.getParameterPatternForFault(operation, fault);
+				if (parameterPattern == -1) {
+					parameterPattern = AddBaseParameterCommand.getParameterPattern(operation);
+				}
+			}
+			
+			AddFaultParameterCommand command = new AddFaultParameterCommand(operation, fault);
+			command.setStyle(parameterPattern);
+			command.run();
+			fault = command.getFault();
+			newObject = command.getNewlyAddedComponentPart();
+			
+			if (command.getXSDElementDeclaration() != null) {
+				// Try to grab the "inner" XSDElement
+				newObject = getNewXSDElement(command.getXSDElementDeclaration());
+			}
+		}
+		finally {
+			endRecording(operation.getElement());
+		}
+	}
+	
+	public Object getNewlyAddedComponent() {
+		return newObject;
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddImportCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddImportCommand.java
index c7d8175..bda2f8e 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddImportCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddImportCommand.java
@@ -10,21 +10,36 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddImportCommand;
 
-public class W11AddImportCommand extends Command {
-	private Definition definition;
+public class W11AddImportCommand extends W11TopLevelElementCommand implements IASDAddCommand {
+	private Object component;
 	
 	public W11AddImportCommand(Definition definition) {
-		this.definition = definition;
+		super(Messages._UI_ACTION_ADD_IMPORT, definition);
 	}
 	
 	public void execute() {
-		String namespace = ""; //$NON-NLS-1$
-		String location = ""; //$NON-NLS-1$
-		AddImportCommand command = new AddImportCommand(definition, namespace, location);
-		command.run();
+		try {
+			beginRecording(definition.getElement());
+
+			super.execute();
+			String namespace = ""; //$NON-NLS-1$
+			String location = ""; //$NON-NLS-1$
+			AddImportCommand command = new AddImportCommand(definition, namespace, location);
+			command.run();
+			formatChild(command.getWSDLElement().getElement());
+			component = command.getWSDLElement();
+		}
+		finally {
+			endRecording(definition.getElement());
+		}
+	}
+
+	public Object getNewlyAddedComponent() {
+		return component;
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddInputParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddInputParameterCommand.java
index 1b6aaad..ea19294 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddInputParameterCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddInputParameterCommand.java
@@ -10,51 +10,61 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import java.util.List;
-
-import org.eclipse.gef.commands.Command;
-import org.eclipse.wst.wsdl.Input;
-import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.Operation;
-import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddBaseParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddInputParameterCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
 
-public class W11AddInputParameterCommand extends Command {
+public class W11AddInputParameterCommand extends W11TopLevelElementCommand implements IASDAddCommand{
 	protected Operation operation;
+	private Object input;
+	private int parameterPattern = -1;
 	
 	public W11AddInputParameterCommand(Operation operation) {
+        super(Messages._UI_ACTION_ADD_INPUT, operation.getEnclosingDefinition());
 		this.operation = operation;
 	}
 	
-	public void execute() {
-		// Determine which Pattern we should use.  For example, ADDBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT
-		int pattern = getParameterPattern();
-		AddInputParameterCommand command = new AddInputParameterCommand(operation, pattern);
-		command.run();
+	public void setParameterPattern(int pattern) {
+		parameterPattern = pattern;
 	}
 	
-	private int getParameterPattern() {
-		int pattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
-		
-		// TODO: rmah: Should we be checking if there's an existing Output.  If so, we should
-		// try to determine the pattern from there if we fail to get it from the Input???
-		if (operation.getEInput() != null) {
-			Input input = operation.getEInput();
-			
-			if (input.getEMessage() != null) {
-				Message message = input.getEMessage();
-				List parts = message.getEParts();
-				
-				if (parts.size() > 0) {
-					Part part = (Part) parts.get(0);
-					if (part.getTypeDefinition() != null) {
-						pattern = AddBaseParameterCommand.PART_COMPLEXTYPE_SEQ_ELEMENT;
-					}
+	public void execute() {
+		try {
+			beginRecording(operation.getElement());
+
+			if (parameterPattern == -1) {
+				// Determine which Pattern we should use.  For example, ADDBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT
+				parameterPattern = AddBaseParameterCommand.getParameterPattern(operation, true);
+				if (parameterPattern == -1) {
+					parameterPattern = AddBaseParameterCommand.getParameterPattern(operation);
 				}
 			}
+			
+			AddInputParameterCommand command = new AddInputParameterCommand(operation, parameterPattern);
+			command.run();
+			input = command.getNewlyAddedComponentPart();
+			
+			formatChild(operation.getEInput().getElement());
+			if (command.getXSDElementDeclaration() != null) {
+				// Try to grab the "inner" XSDElement
+				input = getNewXSDElement(command.getXSDElementDeclaration());
+				formatChild(getXSDParent(command.getXSDElementDeclaration()).getElement());
+			}
 		}
-		
-		return pattern;
+		finally {
+			endRecording(operation.getElement());
+		}
+	}
+	
+	protected XSDConcreteComponent getXSDParent(XSDConcreteComponent xsd) {
+		XSDConcreteComponent parent = xsd.getSchema();
+		return parent;
+	}
+	
+	public Object getNewlyAddedComponent() {
+		return input;
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddInterfaceCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddInterfaceCommand.java
index 54d1369..fcef7d0 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddInterfaceCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddInterfaceCommand.java
@@ -13,18 +13,19 @@
 import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.PortType;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IInterface;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddPortTypeCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
 import org.eclipse.wst.wsdl.ui.internal.util.WSDLAdapterFactoryHelper;
 
-public class W11AddInterfaceCommand extends Command {
-	private Definition definition;
+public class W11AddInterfaceCommand extends W11TopLevelElementCommand implements IASDAddCommand {
 	private String newName;
 	private PortType newPortType;
 	
 	public W11AddInterfaceCommand(Definition definition) {
-		this.definition = definition;
+    super(Messages._UI_ACTION_ADD_PORTTYPE, definition);
 	}
 	
 	public void setNewPortTypeName(String newName) {
@@ -36,18 +37,30 @@
 	}
 	
 	public void execute() {
-		if (newName == null || newName.equals("")) { //$NON-NLS-1$
-			newName = NameUtil.buildUniquePortTypeName(definition, "NewPortType"); //$NON-NLS-1$
+		try {
+			beginRecording(definition.getElement());
+			super.execute();
+			if (newName == null || newName.equals("")) { //$NON-NLS-1$
+				newName = NameUtil.buildUniquePortTypeName(definition, "NewPortType"); //$NON-NLS-1$
+			}
+			// Add the Port Type
+			AddPortTypeCommand command = new AddPortTypeCommand(definition, newName, false);
+			command.run();
+			
+			newPortType = (PortType) command.getWSDLElement();
+			
+			// Add the Operation
+			IInterface iInterface = (IInterface) WSDLAdapterFactoryHelper.getInstance().adapt(newPortType);
+			Command addOperationCommand = iInterface.getAddOperationCommand();
+			addOperationCommand.execute();
+			formatChild(newPortType.getElement());
 		}
-		// Add the Port Type
-		AddPortTypeCommand command = new AddPortTypeCommand(definition, newName, false);
-		command.run();
-		
-		newPortType = (PortType) command.getWSDLElement();
-		
-		// Add the Operation
-		IInterface iInterface = (IInterface) WSDLAdapterFactoryHelper.getInstance().adapt(newPortType);
-		Command addOperationCommand = iInterface.getAddOperationCommand();
-		addOperationCommand.execute();
+		finally {
+			endRecording(definition.getElement());
+		}
+	}
+	
+	public Object getNewlyAddedComponent() {
+		return newPortType;
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddMessageCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddMessageCommand.java
index f5ae8b0..29844e3 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddMessageCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddMessageCommand.java
@@ -10,19 +10,19 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.Message;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddMessageCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
 
-public class W11AddMessageCommand extends Command {
-    private Definition definition;
+public class W11AddMessageCommand extends W11TopLevelElementCommand implements IASDAddCommand {
     private String newName;
     private Message message;
 	
     public W11AddMessageCommand(Definition definition) {
-        this.definition = definition;
+        super(Messages._UI_ACTION_ADD_MESSAGE, definition);
     }
     
 	public void setNewMessageName(String newName) {
@@ -30,16 +30,28 @@
 	}
 
     public void execute() {
-		if (newName == null || newName.equals("")) { //$NON-NLS-1$
-			newName = NameUtil.buildUniqueMessageName(definition, "NewMessage"); //$NON-NLS-1$
-		}
-
-    	AddMessageCommand command = new AddMessageCommand(definition, newName, true);
-        command.run();
-        message = (Message) command.getWSDLElement();
+    	try {
+    		beginRecording(definition.getElement());
+    		super.execute();
+			if (newName == null || newName.equals("")) { //$NON-NLS-1$
+				newName = NameUtil.buildUniqueMessageName(definition, "NewMessage"); //$NON-NLS-1$
+			}
+	
+	    	AddMessageCommand command = new AddMessageCommand(definition, newName, true);
+	        command.run();
+	        message = (Message) command.getWSDLElement();
+	        formatChild(message.getElement());
+    	}
+    	finally {
+    		endRecording(definition.getElement());
+    	}
     }
     
     public Message getNewMessage() {
     	return message;
     }
-}
+    
+    public Object getNewlyAddedComponent() {
+    	return message;
+    }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddOperationCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddOperationCommand.java
index a5bf737..62edaad 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddOperationCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddOperationCommand.java
@@ -10,44 +10,60 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
-import org.eclipse.wst.wsdl.Message;
+import javax.wsdl.OperationType;
+
 import org.eclipse.wst.wsdl.MessageReference;
 import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.PortType;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddBaseParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddFaultCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddInputCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddInputParameterCommand;
-import org.eclipse.wst.wsdl.ui.internal.commands.AddMessageCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddMessageReferenceCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddOperationCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddOutputCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddOutputParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
-import org.eclipse.xsd.XSDTypeDefinition;
 
-public class W11AddOperationCommand extends Command {
+public class W11AddOperationCommand extends W11TopLevelElementCommand implements IASDAddCommand {
 	private PortType portType;
+	private Operation operation;
 	
 	public W11AddOperationCommand(PortType portType) {
+        super(Messages._UI_ACTION_ADD_OPERATION, portType.getEnclosingDefinition());
 		this.portType = portType;
 	}
 	
 	public void execute() {
-		String name = NameUtil.getOperationName(portType);
-		AddOperationCommand operationCommand = new AddOperationCommand(portType, name);
-		operationCommand.run();
-		Operation operation = (Operation) operationCommand.getWSDLElement();
-
-		createMessage(operation, IMessageReference.KIND_INPUT);
-		createMessage(operation, IMessageReference.KIND_OUTPUT);
-		
-		createParameter(operation, null, IMessageReference.KIND_INPUT);
-		createParameter(operation, null, IMessageReference.KIND_OUTPUT);
+		try {
+			beginRecording(portType.getElement());
+			
+			String name = NameUtil.getOperationName(portType);
+			AddOperationCommand operationCommand = new AddOperationCommand(portType, name);
+			operationCommand.run();
+			operation = (Operation) operationCommand.getWSDLElement();
+	
+			createMessage(operation, IMessageReference.KIND_INPUT);
+			createMessage(operation, IMessageReference.KIND_OUTPUT);
+	
+			createParameter(operation, null, IMessageReference.KIND_INPUT);
+			createParameter(operation, null, IMessageReference.KIND_OUTPUT);
+	
+			operation.setStyle(OperationType.REQUEST_RESPONSE);
+			formatChild(operation.getElement());
+		}
+		finally {
+			endRecording(portType.getElement());
+		}
+	}
+	
+	public Object getNewlyAddedComponent() {
+		return operation;
 	}
 	
 	private MessageReference createMessage(Operation operation, int messageKind) {
@@ -68,9 +84,9 @@
 	    messageRefCommand.run();
 	    messageRef = (MessageReference) messageRefCommand.getWSDLElement();
 	    
-	    AddMessageCommand command = new AddMessageCommand(messageRef.getEnclosingDefinition(), NameUtil.getMessageName(messageRef));
-	    command.run();
-	    messageRef.setEMessage((Message) command.getWSDLElement());
+//	    AddMessageCommand command = new AddMessageCommand(messageRef.getEnclosingDefinition(), NameUtil.getMessageName(messageRef));
+//	    command.run();
+//	    messageRef.setEMessage((Message) command.getWSDLElement());
 	    
 	    return messageRef;
 	}
@@ -80,23 +96,21 @@
 		  AddBaseParameterCommand addParameterCommand = null;
 		  
 		  if (kind == IMessageReference.KIND_INPUT) {
-			  addParameterCommand = new AddInputParameterCommand(operation, AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT);
+			  int parameterPattern = AddBaseParameterCommand.getParameterPattern(portType, true);
+			  if (parameterPattern == -1) {
+				  parameterPattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
+			  }
+			  addParameterCommand = new AddInputParameterCommand(operation, parameterPattern, true);
 		  }
 		  else if (kind == IMessageReference.KIND_OUTPUT) {
-			  addParameterCommand = new AddOutputParameterCommand(operation, AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT);
-		  }
-		  
-		  /******************************************************************************************/
-		  if (part != null) {
-			  if (part.getTypeDefinition() instanceof XSDTypeDefinition) {
-				  addParameterCommand.setStyle(AddBaseParameterCommand.PART_COMPLEXTYPE_SEQ_ELEMENT);
-			  }
-			  
-			  addParameterCommand.run();
+			  int parameterPattern = AddBaseParameterCommand.getParameterPattern(portType, false);
+			  if (parameterPattern == -1) {
+				  parameterPattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
+			  }			  
+			  addParameterCommand = new AddOutputParameterCommand(operation, parameterPattern);
 		  }
 		  
 		  if (parameter == null && addParameterCommand != null) {
-			  // Create a Part --> Anonymous --> Sequence --> Element pattern
 			  addParameterCommand.run();
 		  }
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddOutputParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddOutputParameterCommand.java
index f7ad437..1f14d56 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddOutputParameterCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddOutputParameterCommand.java
@@ -10,51 +10,71 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import java.util.List;
-
-import org.eclipse.gef.commands.Command;
-import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.Operation;
-import org.eclipse.wst.wsdl.Output;
-import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddBaseParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddOutputParameterCommand;
+import org.eclipse.xsd.XSDConcreteComponent;
 
-public class W11AddOutputParameterCommand extends Command {
+public class W11AddOutputParameterCommand extends W11TopLevelElementCommand implements IASDAddCommand {
 	protected Operation operation;
+	private Object output;
+	private int parameterPattern = -1;
 	
 	public W11AddOutputParameterCommand(Operation operation) {
+        super(Messages._UI_ACTION_ADD_OUTPUT, operation.getEnclosingDefinition());
 		this.operation = operation;
 	}
 	
-	public void execute() {
-		// Determine which Pattern we should use.  For example, ADDBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT
-		int pattern = getParameterPattern();
-		AddOutputParameterCommand command = new AddOutputParameterCommand(operation, pattern);
-		command.run();		
+	public void setParameterPattern(int pattern) {
+		parameterPattern = pattern;
 	}
 	
-	private int getParameterPattern() {
-		int pattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
-		
-		// TODO: rmah: Should we be checking if there's an existing Input.  If so, we should
-		// try to determine the pattern from there if we fail to get it from the Output???
-		if (operation.getEOutput() != null) {
-			Output output = operation.getEOutput();
-			
-			if (output.getEMessage() != null) {
-				Message message = output.getEMessage();
-				List parts = message.getEParts();
-				
-				if (parts.size() > 0) {
-					Part part = (Part) parts.get(0);
-					if (part.getTypeDefinition() != null) {
-						pattern = AddBaseParameterCommand.PART_COMPLEXTYPE_SEQ_ELEMENT;
-					}
+	public void execute() {
+		try {
+			beginRecording(operation.getElement());
+
+			if (parameterPattern == -1) {
+				// Determine which Pattern we should use.  For example, ADDBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT
+				parameterPattern = AddBaseParameterCommand.getParameterPattern(operation, false);
+				if (parameterPattern == -1) {
+					parameterPattern = AddBaseParameterCommand.getParameterPattern(operation);
 				}
 			}
+			
+			AddOutputParameterCommand command = new AddOutputParameterCommand(operation, parameterPattern);
+			command.run();
+			output = command.getNewlyAddedComponentPart();
+			
+			formatChild(operation.getEOutput().getElement());
+			if (command.getXSDElementDeclaration() != null) {
+				// Try to grab the "inner" XSDElement
+				output = getNewXSDElement(command.getXSDElementDeclaration());
+				formatChild(getXSDParent(command.getXSDElementDeclaration()).getElement());
+			}
+		}
+		finally {
+			endRecording(operation.getElement());
+		}
+	}
+	
+	protected XSDConcreteComponent getXSDParent(XSDConcreteComponent xsd) {
+		XSDConcreteComponent parent = xsd;
+		
+		for (int index = 0; index < 4; index++) {
+			XSDConcreteComponent previous = parent;
+			parent = parent.getContainer();
+			if (parent == null) {
+				parent = previous;
+				break;
+			}
 		}
 		
-		return pattern;
+		return parent;
+	}
+	
+	public Object getNewlyAddedComponent() {
+		return output;
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddPartCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddPartCommand.java
index 7b6e56c..6504cfc 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddPartCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddPartCommand.java
@@ -10,20 +10,37 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Message;
+import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddPartCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
 
-public class W11AddPartCommand extends Command {
+public class W11AddPartCommand extends W11TopLevelElementCommand implements IASDAddCommand {
     private Message message;
+    private Part part;
     
     public W11AddPartCommand(Message message) {
+        super(Messages._UI_ACTION_ADD_PART, message.getEnclosingDefinition());
         this.message = message;
     }
     
     public void execute() {
-    	AddPartCommand command = new AddPartCommand(message, NameUtil.buildUniquePartName(message, "NewPart")); //$NON-NLS-1$
-        command.run();
-    }  
+    	try {
+    		beginRecording(message.getElement());
+
+	    	AddPartCommand command = new AddPartCommand(message, NameUtil.buildUniquePartName(message, "NewPart")); //$NON-NLS-1$
+	        command.run();
+	        part = (Part) command.getWSDLElement();
+	        formatChild(part.getElement());
+    	}
+    	finally {
+    		endRecording(message.getElement());
+    	}
+    }
+    
+	public Object getNewlyAddedComponent() {
+		return part;
+	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddSchemaCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddSchemaCommand.java
index 64f44b4..2726338 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddSchemaCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddSchemaCommand.java
@@ -14,33 +14,56 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Types;
 import org.eclipse.wst.wsdl.XSDSchemaExtensibilityElement;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddXSDSchemaCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
 
-public class W11AddSchemaCommand extends Command {
-	private Definition definition;
+public class W11AddSchemaCommand extends W11TopLevelElementCommand implements IASDAddCommand {
+	private Object schema;
 	
 	public W11AddSchemaCommand(Definition definition) {
-		this.definition = definition;
+    super(Messages._UI_ACTION_ADD_SCHEMA, definition);
 	}
 	
 	public void execute() {
-		String tns = definition.getTargetNamespace();
-		List existingNamespaces = new ArrayList();
-		Iterator eeIt = definition.getETypes().getEExtensibilityElements().iterator();
-		while (eeIt.hasNext()) {
-			Object item = eeIt.next();
-			if (item instanceof XSDSchemaExtensibilityElement) {
-				String ns = ((XSDSchemaExtensibilityElement) item).getSchema().getTargetNamespace();
-				existingNamespaces.add(ns);
+		try {
+			beginRecording(definition.getElement());
+			super.execute();
+    
+			String tns = definition.getTargetNamespace();
+			List existingNamespaces = new ArrayList();
+			Types types = definition.getETypes();
+	
+			if (types != null) {
+				Iterator eeIt = types.getEExtensibilityElements().iterator();
+				while (eeIt.hasNext()) {
+					Object item = eeIt.next();
+					if (item instanceof XSDSchemaExtensibilityElement) {
+						XSDSchemaExtensibilityElement eeElement = (XSDSchemaExtensibilityElement) item;
+						if (eeElement.getSchema() != null) {
+							String ns = eeElement.getSchema().getTargetNamespace();
+							existingNamespaces.add(ns);
+						}
+					}
+				} 
 			}
+			tns = NameUtil.getUniqueNameHelper(tns, existingNamespaces);
+			
+			AddXSDSchemaCommand command = new AddXSDSchemaCommand(definition, tns);
+			command.run();
+			formatChild(command.getWSDLElement().getElement());
+			schema = command.getWSDLElement();
 		}
-		tns = NameUtil.getUniqueNameHelper(tns, existingNamespaces);
-		
-		AddXSDSchemaCommand command = new AddXSDSchemaCommand(definition, tns);
-		command.run();
+		finally {
+			endRecording(definition.getElement());
+		}
+	}
+	
+	public Object getNewlyAddedComponent() {
+		return schema;
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddServiceCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddServiceCommand.java
index 069fcda..86e1ae2 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddServiceCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11AddServiceCommand.java
@@ -10,35 +10,44 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Definition;
-import org.eclipse.wst.wsdl.Port;
 import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.binding.soap.internal.generator.SOAPContentGenerator;
+import org.eclipse.wst.wsdl.internal.generator.PortGenerator;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.IASDAddCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddServiceCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
 
-public class W11AddServiceCommand extends Command {
-	private Definition definition;
+public class W11AddServiceCommand extends W11TopLevelElementCommand implements IASDAddCommand {
+	private Service service;
 	
 	public W11AddServiceCommand(Definition definition) {
-		this.definition = definition;
+	  super(Messages._UI_ACTION_ADD_SERVICE, definition);
 	}
 	
 	public void execute() {
-		String newName = NameUtil.buildUniqueServiceName(definition);
-		AddServiceCommand command = new AddServiceCommand(definition, newName, true);
-		command.run();
-		Service service = (Service) command.getWSDLElement();
-		if (service.getEPorts().size() > 0) {
-			Port port = (Port) service.getEPorts().get(0);
+		try {
+			beginRecording(definition.getElement());
+			super.execute();
+			String newName = NameUtil.buildUniqueServiceName(definition);
+			AddServiceCommand command = new AddServiceCommand(definition, newName, false);
+			command.run();
+			service = (Service) command.getWSDLElement();
 			
-			// Set a default protocol
+			PortGenerator portGenerator = new PortGenerator(service);
+			portGenerator.setContentGenerator(new SOAPContentGenerator());
+			portGenerator.setName(NameUtil.buildUniquePortName(service, "NewPort"));
+			portGenerator.generatePort();
 			
-			
-			// Set a default address
-			String address = "http://www.example.org/"; //$NON-NLS-1$
-			W11SetAddressCommand addressCommand = new W11SetAddressCommand(port, address);
-			addressCommand.execute();			
+			formatChild(service.getElement());
 		}
+		finally {
+			endRecording(definition.getElement());
+		}
+	}
+	
+	public Object getNewlyAddedComponent() {
+		return service;
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11DeleteCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11DeleteCommand.java
index 48fc31a..be923c8 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11DeleteCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11DeleteCommand.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Binding;
 import org.eclipse.wst.wsdl.Fault;
 import org.eclipse.wst.wsdl.Import;
@@ -23,76 +22,103 @@
 import org.eclipse.wst.wsdl.Port;
 import org.eclipse.wst.wsdl.PortType;
 import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.Types;
+import org.eclipse.wst.wsdl.WSDLElement;
+import org.eclipse.wst.wsdl.XSDSchemaExtensibilityElement;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Binding;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11EndPoint;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Interface;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Operation;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Service;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Type;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IImport;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessage;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
-import org.eclipse.wst.wsdl.ui.internal.asd.facade.IType;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Element;
 
-public class W11DeleteCommand extends Command {
+public class W11DeleteCommand extends W11TopLevelElementCommand {
 	protected WSDLBaseAdapter object;
 	
 	public W11DeleteCommand(WSDLBaseAdapter object) {
+        super(Messages._UI_ACTION_DELETE, null);
 		this.object = object;
 	}
 	
 	public void execute() {
-		if (object instanceof W11Service) {
-			Service service = (Service) object.getTarget();
-			service.getEnclosingDefinition().getEServices().remove(service);
+		Element element = null;
+		if (object.getTarget() instanceof WSDLElement) {
+			element = ((WSDLElement) object.getTarget()).getElement();
 		}
-		else if (object instanceof W11EndPoint) {
-			Service service = (Service) ((W11Service) ((W11EndPoint) object).getOwnerService()).getTarget();
-			Port port = (Port) object.getTarget();
-			service.getEPorts().remove(port);
+		else if (object.getTarget() instanceof XSDConcreteComponent) {
+			element = ((XSDConcreteComponent) object.getTarget()).getElement();
 		}
-		else if (object instanceof W11Binding) {
-			Binding binding = (Binding) object.getTarget();
-			binding.getEnclosingDefinition().getEBindings().remove(binding);
-		}
-		else if (object instanceof W11Interface) {
-			PortType portType = (PortType) object.getTarget();
-			portType.getEnclosingDefinition().getEPortTypes().remove(portType);
-		}
-		else if (object instanceof W11Operation) {
-			PortType portType = (PortType) ((W11Interface) ((W11Operation) object).getOwnerInterface()).getTarget();
-			Operation operation = (Operation) object.getTarget();
-			portType.getEOperations().remove(operation);
-		}
-		else if (object instanceof IParameter) {
-			Part part = (Part) object.getTarget();
-			Message message = (Message) part.eContainer();
-			message.getEParts().remove(part);
-		}
-		else if (object instanceof IImport) {
-			Import theImport = (Import) object.getTarget();
-			theImport.getEnclosingDefinition().getEImports().remove(theImport);
-		}
-		else if (object instanceof IType) {
+		
+		try {
+			beginRecording(element);
 			
-		}
-		else if (object instanceof IMessageReference) {
-			MessageReference messageRef = (MessageReference) object.getTarget();
-			Operation operation = (Operation)messageRef.eContainer();
-			if (messageRef instanceof Input) {
-				operation.setEInput(null);
+			if (object instanceof W11Service) {
+				Service service = (Service) object.getTarget();
+				service.getEnclosingDefinition().getEServices().remove(service);
 			}
-			else if (messageRef instanceof Output) {
-				operation.setEOutput(null);
+			else if (object instanceof W11EndPoint) {
+				Service service = (Service) ((W11Service) ((W11EndPoint) object).getOwnerService()).getTarget();
+				Port port = (Port) object.getTarget();
+				service.getEPorts().remove(port);
 			}
-			else if (messageRef instanceof Fault) {
-				operation.getEFaults().remove(messageRef);
+			else if (object instanceof W11Binding) {
+				Binding binding = (Binding) object.getTarget();
+				binding.getEnclosingDefinition().getEBindings().remove(binding);
+			}
+			else if (object instanceof W11Interface) {
+				PortType portType = (PortType) object.getTarget();
+				portType.getEnclosingDefinition().getEPortTypes().remove(portType);
+			}
+			else if (object instanceof W11Operation) {
+				PortType portType = (PortType) ((W11Interface) ((W11Operation) object).getOwnerInterface()).getTarget();
+				Operation operation = (Operation) object.getTarget();
+				portType.getEOperations().remove(operation);
+			}
+			else if (object instanceof IParameter) {
+				Part part = (Part) object.getTarget();
+				Message message = (Message) part.eContainer();
+				message.getEParts().remove(part);
+			}
+			else if (object instanceof IImport) {
+				Import theImport = (Import) object.getTarget();
+				theImport.getEnclosingDefinition().getEImports().remove(theImport);
+			}
+			else if (object instanceof W11Type) {
+				W11Type w11Type = (W11Type) object;
+				XSDSchema schema = (XSDSchema)  w11Type.getTarget();
+				XSDSchemaExtensibilityElement eeElement = (XSDSchemaExtensibilityElement) schema.eContainer();
+				Types type = (Types) eeElement.getContainer();
+				type.getEExtensibilityElements().remove(eeElement);
+			}
+			else if (object instanceof IMessageReference) {
+				MessageReference messageRef = (MessageReference) object.getTarget();
+				Operation operation = (Operation)messageRef.eContainer();
+				if (messageRef instanceof Input) {
+					operation.setEInput(null);
+				}
+				else if (messageRef instanceof Output) {
+					operation.setEOutput(null);
+				}
+				else if (messageRef instanceof Fault) {
+					operation.getEFaults().remove(messageRef);
+				}
+			}
+			else if (object instanceof IMessage) {
+				Message message = (Message) object.getTarget();
+				message.getEnclosingDefinition().getEMessages().remove(message);
 			}
 		}
-		else if (object instanceof IMessage) {
-			Message message = (Message) object.getTarget();
-			message.getEnclosingDefinition().getEMessages().remove(message);
+		finally {
+			endRecording(element);
 		}
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11DeleteParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11DeleteParameterCommand.java
index fbec7ab..90125c5 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11DeleteParameterCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11DeleteParameterCommand.java
@@ -10,30 +10,50 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.WSDLElement;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11MessageReference;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
 import org.eclipse.xsd.XSDConcreteComponent;
 import org.eclipse.xsd.XSDElementDeclaration;
 import org.eclipse.xsd.XSDModelGroup;
 import org.eclipse.xsd.XSDParticle;
 import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Element;
 
 
-public class W11DeleteParameterCommand extends Command {
+public class W11DeleteParameterCommand extends W11TopLevelElementCommand {
 	private IParameter parameter;
 	
-	public W11DeleteParameterCommand(IParameter paramter) {
-		this.parameter = paramter;
+	public W11DeleteParameterCommand(IParameter param) {
+        super(Messages._UI_ACTION_DELETE, null);
+		this.parameter = param;
 	}
 	
 	public void execute() {
-	    delete();
+		Object object = ((WSDLBaseAdapter) parameter).getTarget();
+		Element element = null;
+		if (object instanceof XSDElementDeclaration) {
+			element = ((XSDElementDeclaration) object).getElement();
+		}
+		else if (object instanceof WSDLElement) {
+			element = ((Part) object).getElement();
+		}
+		
+		if (element != null) {
+			try {
+				beginRecording(element);
+				delete();
+			}
+			finally {
+				endRecording(element);
+			}
+		}
 	}
 	
 	private void delete() {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11EditNamespacesCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11EditNamespacesCommand.java
new file mode 100644
index 0000000..333d651
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11EditNamespacesCommand.java
@@ -0,0 +1,178 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+ package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
+
+import java.util.List;
+
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.xml.core.internal.contentmodel.util.DOMNamespaceInfoManager;
+import org.w3c.dom.Element;
+
+public class W11EditNamespacesCommand extends W11TopLevelElementCommand {
+	private List namespacesInfoList;
+	private String targetNamespace;
+	private String targetNamespacePrefix;
+	
+	public W11EditNamespacesCommand(Definition definition) {
+	  super(Messages._UI_EDIT_NAMESPACES, definition);
+	}
+	
+	public void setNamespacesInfo(List namespaces) {
+		namespacesInfoList = namespaces;
+	}
+	
+	public void setTargetNamespace(String tns) {
+		targetNamespace = tns;
+	}
+	
+	public void setTargetNamespacePrefix(String prefix) {
+		targetNamespacePrefix = prefix;
+	}
+	
+	public void execute() {
+		try {
+			beginRecording(definition.getElement());
+			super.execute();
+			if (targetNamespacePrefix != null) {
+				Element element = definition.getElement();
+
+				// Remove the old prefix
+				String oldPrefix = definition.getPrefix(definition.getTargetNamespace());
+				element.removeAttribute("xmlns:"+oldPrefix); 
+
+				// Set the new prefix
+				element.setAttribute("xmlns:" + targetNamespacePrefix, definition.getTargetNamespace());
+			}
+			if (targetNamespace != null) {
+				String newValue = targetNamespace;
+				String prefix = definition.getPrefix(definition.getTargetNamespace());
+				definition.setTargetNamespace(newValue);
+				definition.getElement().setAttribute("xmlns:" + prefix, newValue);
+			}
+
+			if (namespacesInfoList != null) {
+				DOMNamespaceInfoManager namespaceInfoManager = new DOMNamespaceInfoManager();
+
+				/*
+		      List namespaceInfoList = namespaceInfoManager.getNamespaceInfoList(element);
+//		      List oldNamespaceInfoList = NamespaceInfo.cloneNamespaceInfoList(namespaceInfoList);
+
+		      // here we store a copy of the old info for each NamespaceInfo
+		      // this info will be used in createPrefixMapping() to figure out how to update the document 
+		      // in response to these changes
+		      for (Iterator i = namespaceInfoList.iterator(); i.hasNext();)
+		      {
+		        NamespaceInfo info = (NamespaceInfo) i.next();
+		        NamespaceInfo oldCopy = new NamespaceInfo(info);
+		        info.setProperty("oldCopy", oldCopy); //$NON-NLS-1$
+		      }
+				 */
+
+				namespaceInfoManager.removeNamespaceInfo(definition.getElement());
+				namespaceInfoManager.addNamespaceInfo(definition.getElement(), namespacesInfoList, false);
+
+				/*
+	        // see if we need to rename any prefixes
+	        Map prefixMapping = createPrefixMapping(oldNamespaceInfoList, namespaceInfoList);
+	        if (prefixMapping.size() > 0)
+	        {
+	          //manager.getModel().aboutToChangeModel();
+	          ReplacePrefixAction replacePrefixAction = new ReplacePrefixAction(element, prefixMapping);
+	          replacePrefixAction.run();
+	          //manager.getModel().changedModel();
+	        }
+				 */   
+			}
+
+			/*
+		 // Could not modify (more specifically remove) namespaces via model.....
+		 // should revisit this
+		if (targetNamespace != null || targetNamespacePrefix != null) {
+			Map map = definition.getNamespaces();
+			String oldTargetNamespace = definition.getTargetNamespace();
+			String oldPrefix = null;
+
+			Iterator it = map.keySet().iterator();
+			while (it.hasNext()) {
+				String key = (String) it.next();
+				Object value = map.get(key);
+				if (value != null && oldTargetNamespace != null && value.equals(oldTargetNamespace)) {
+					oldPrefix = key;
+					break;
+				}
+			}
+
+			if (oldPrefix != null && !oldPrefix.equals(targetNamespacePrefix)) {
+				map.remove(oldPrefix);
+				definition.updateElement();
+			}
+
+			String tns = "";
+			String prefix = "";
+			if (targetNamespace != null) {
+				tns = targetNamespace;
+			}
+			if (targetNamespacePrefix != null) {
+				prefix = targetNamespacePrefix;
+			}
+			definition.addNamespace(prefix, tns);
+			definition.setTargetNamespace(tns);
+//			map.put(prefix, tns);
+		}
+			 */
+		}
+		finally {
+			endRecording(definition.getElement());
+		}
+	}
+	
+	/*
+	protected Map createPrefixMapping(List oldList, List newList)
+	{
+		Map map = new Hashtable();
+
+		Hashtable oldURIToPrefixTable = new Hashtable();
+		for (Iterator i = oldList.iterator(); i.hasNext();)
+		{
+			NamespaceInfo oldInfo = (NamespaceInfo) i.next();
+			oldURIToPrefixTable.put(oldInfo.uri, oldInfo);
+		}
+
+		for (Iterator i = newList.iterator(); i.hasNext();)
+		{
+			NamespaceInfo newInfo = (NamespaceInfo) i.next();
+			NamespaceInfo oldInfo = (NamespaceInfo) oldURIToPrefixTable.get(newInfo.uri != null ? newInfo.uri : ""); //$NON-NLS-1$
+
+			// if oldInfo is non null ... there's a matching URI in the old set
+			// we can use its prefix to detemine out mapping
+			//
+			// if oldInfo is null ...  we use the 'oldCopy' we stashed away 
+			// assuming that the user changed the URI and the prefix
+			if (oldInfo == null)
+			{
+				oldInfo = (NamespaceInfo) newInfo.getProperty("oldCopy"); //$NON-NLS-1$
+			}
+
+			if (oldInfo != null)
+			{
+				String newPrefix = newInfo.prefix != null ? newInfo.prefix : ""; //$NON-NLS-1$
+				String oldPrefix = oldInfo.prefix != null ? oldInfo.prefix : ""; //$NON-NLS-1$
+				if (!oldPrefix.equals(newPrefix))
+				{
+					map.put(oldPrefix, newPrefix);
+				}
+			}
+		}
+		return map;
+	}
+	*/
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11GenerateBindingCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11GenerateBindingCommand.java
index 4849ec6..f7211fc 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11GenerateBindingCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11GenerateBindingCommand.java
@@ -10,26 +10,37 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.wst.wsdl.Binding;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
 import org.eclipse.wst.wsdl.ui.internal.wizards.BindingWizard;
 
-public class W11GenerateBindingCommand extends Command {
+public class W11GenerateBindingCommand extends W11TopLevelElementCommand {
 	protected Binding binding;
 	
 	public W11GenerateBindingCommand(Binding binding) {
+        super(Messages._UI_GENERATE_BINDING_CONTENT, binding.getEnclosingDefinition());
 		this.binding = binding;
 	}
 	
 	public void execute() {
-		BindingWizard wizard = new BindingWizard(binding.getEnclosingDefinition(), binding, BindingWizard.KIND_REGENERATE_BINDING);
-		wizard.setBindingName(ComponentReferenceUtil.getName(binding));
-		wizard.setPortTypeName(ComponentReferenceUtil.getPortTypeReference(binding));
-		WizardDialog wizardDialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
-		wizardDialog.create();
-		wizardDialog.open();
+		try {
+			beginRecording(definition.getElement());
+
+			BindingWizard wizard = new BindingWizard(binding.getEnclosingDefinition(), binding, BindingWizard.KIND_REGENERATE_BINDING);
+			wizard.setBindingName(ComponentReferenceUtil.getName(binding));
+			wizard.setPortTypeName(ComponentReferenceUtil.getPortTypeReference(binding));
+			WizardDialog wizardDialog = new WizardDialog(Display.getCurrent().getActiveShell(), wizard);
+			wizardDialog.create();
+			if (wizardDialog.open() == Window.OK) {
+				formatChild(binding.getElement());
+			}
+		}
+		finally {
+			endRecording(definition.getElement());
+		}
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11RenameCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11RenameCommand.java
index 9a79442..ed92d09 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11RenameCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11RenameCommand.java
@@ -10,72 +10,247 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
+import java.util.Iterator;
+import java.util.List;
+
 import javax.xml.namespace.QName;
 
-import org.eclipse.gef.commands.Command;
+import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
 import org.eclipse.wst.wsdl.Binding;
+import org.eclipse.wst.wsdl.BindingFault;
+import org.eclipse.wst.wsdl.BindingInput;
+import org.eclipse.wst.wsdl.BindingOperation;
+import org.eclipse.wst.wsdl.BindingOutput;
 import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Fault;
+import org.eclipse.wst.wsdl.Input;
+import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.Operation;
+import org.eclipse.wst.wsdl.Output;
 import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.Port;
 import org.eclipse.wst.wsdl.PortType;
 import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.WSDLElement;
+import org.eclipse.wst.wsdl.internal.impl.DefinitionImpl;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.actions.SmartRenameAction;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Binding;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11BindingMessageReference;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11BindingOperation;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Description;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11EndPoint;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Interface;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Message;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11MessageReference;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Operation;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Service;
+import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
+import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
+import org.eclipse.wst.wsdl.ui.internal.visitor.BindingRenamer;
+import org.eclipse.wst.wsdl.ui.internal.visitor.MessageRenamer;
+import org.eclipse.wst.wsdl.ui.internal.visitor.PortTypeRenamer;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
+import org.eclipse.wst.xsd.ui.internal.refactor.PerformUnsavedRefactoringOperation;
+import org.eclipse.wst.xsd.ui.internal.refactor.RefactoringComponent;
+import org.eclipse.wst.xsd.ui.internal.refactor.XMLRefactoringComponent;
+import org.eclipse.wst.xsd.ui.internal.refactor.rename.RenameComponentProcessor;
+import org.w3c.dom.Element;
 
-public class W11RenameCommand extends Command {
+public class W11RenameCommand extends W11TopLevelElementCommand {
 	protected WSDLBaseAdapter object;
 	protected String newName = ""; //$NON-NLS-1$
-	
+
 	public W11RenameCommand(WSDLBaseAdapter object, String newName) {
+		super(Messages._UI_ACTION_RENAME, (object.getTarget() instanceof WSDLElement) ? ((WSDLElement) object.getTarget()).getEnclosingDefinition() :  null);
 		this.object = object;
 		this.newName = newName;
 	}
-	
+
 	public void execute() {
-		if (object instanceof W11Description) {
-			Definition definition = (Definition) object.getTarget();
-			String ns = definition.getQName().getNamespaceURI();
-			definition.setQName(new QName(ns, newName));
+		try {
+			beginRecording(definition.getElement());
+			String origName = null;
+			
+			if (object instanceof W11Description) {
+				Definition definition = (Definition) object.getTarget();
+				W11TopLevelElementCommand.ensureDefinition(definition);
+				String ns = definition.getQName().getNamespaceURI();
+				definition.setQName(new QName(ns, newName));
+			}
+			else if (object instanceof W11Service) {
+				Service service = (Service) object.getTarget();
+				String ns = service.getQName().getNamespaceURI();
+				service.setQName(new QName(ns, newName));
+			}
+			else if (object instanceof W11EndPoint) {
+				Port port = (Port) object.getTarget();
+				port.setName(newName);
+			}
+			else if (object instanceof W11Binding) {
+				Binding binding = (Binding) object.getTarget();
+				origName = binding.getQName().getLocalPart();
+			}
+			else if (object instanceof W11Interface) {
+				PortType portType = (PortType) object.getTarget();
+				origName = portType.getQName().getLocalPart();
+			}
+			else if (object instanceof W11Operation) {
+				Operation operation = (Operation) object.getTarget();
+				SmartRenameAction action = new SmartRenameAction(operation, newName);
+				renameOperationHelper(operation);
+				action.run();
+			}
+			else if (object instanceof W11MessageReference) {
+				WSDLElement element = (WSDLElement) ((W11MessageReference) object).getTarget();
+				renameIOFHelper(element);
+			}
+			else if (object instanceof W11Message) {
+				Message message = (Message) ((W11Message) object).getTarget();
+//				Iterator parts = message.getEParts().iterator();
+				origName = message.getQName().getLocalPart();
+				
+				SmartRenameAction action = new SmartRenameAction(message, newName);
+				action.run(false);
+//				while (parts.hasNext()) {
+//					SmartRenameAction action = new SmartRenameAction(parts.next(), newName);
+//					action.run();
+//				}
+			}
+			else if (object instanceof W11ParameterForPart) {
+				Part part = (Part) ((W11ParameterForPart) object).getTarget();
+				SmartRenameAction action = new SmartRenameAction(part, newName);
+				action.run();
+			}
+			else if (object instanceof W11BindingOperation) {
+				BindingOperation bindingOperation = (BindingOperation) ((W11BindingOperation) object).getTarget();
+				bindingOperation.setName(newName);
+				bindingOperation.getEOperation().setName(newName);
+				// TODO: We should go off and rename the associated PortType Operation
+			}
+			else if (object instanceof W11BindingMessageReference) {
+				Object bindingMessageRef = ((W11BindingMessageReference) object).getTarget();
+				if (bindingMessageRef instanceof BindingInput) {
+					((BindingInput) bindingMessageRef).setName(newName);
+					((BindingInput) bindingMessageRef).getEInput().setName(newName);
+					// TODO: We should go off and rename the associated Porttype MessageReference
+				}
+				else if (bindingMessageRef instanceof BindingOutput) {
+					((BindingOutput) bindingMessageRef).setName(newName);
+					((BindingOutput) bindingMessageRef).getEOutput().setName(newName);
+					// TODO: We should go off and rename the associated Porttype Output				
+				}
+				else if (bindingMessageRef instanceof BindingFault) {
+					((BindingFault) bindingMessageRef).setName(newName);
+					((BindingFault) bindingMessageRef).getEFault().setName(newName);
+					// TODO: We should go off and rename the associated Porttype Fault
+				}
+			}
+	
+			Object target = object.getTarget();
+			if (target instanceof WSDLElement && origName != null) {
+				WSDLElement component = (WSDLElement) target;
+				String namespace = component.getEnclosingDefinition().getTargetNamespace();
+	
+				RefactoringComponent refactoringComponent = new XMLRefactoringComponent(
+						component,
+						(IDOMElement)component.getElement(), 
+						origName,
+						namespace);
+	
+				RenameComponentProcessor processor = new RenameComponentProcessor(refactoringComponent, newName, true);    
+				RenameRefactoring refactoring = new RenameRefactoring(processor);
+				PerformUnsavedRefactoringOperation refactorOperation = new PerformUnsavedRefactoringOperation(refactoring);
+				refactorOperation.run(null); 
+				
+	            // rmah : due to the ordering in which refactoring is called
+	            // (i.e. the reference changes before the declaration changes) 
+	            // our model references may be messed up at this point.
+	            // The line of code below gets the model to fix up its references.  
+				((DefinitionImpl) component.getEnclosingDefinition()).reconcileReferences(true);
+			}
 		}
-		else if (object instanceof W11Service) {
-			Service service = (Service) object.getTarget();
-			String ns = service.getQName().getNamespaceURI();
-			service.setQName(new QName(ns, newName));
+		finally {
+			endRecording(definition.getElement());
 		}
-		else if (object instanceof W11EndPoint) {
-			Port port = (Port) object.getTarget();
-			port.setName(newName);
+	}
+
+	// TODO: We should look at using the refactor mechanism to do this renaming....
+	private void renameOperationHelper(Operation operation) {
+		Definition definition = operation.getEnclosingDefinition(); 
+		ComponentReferenceUtil util = new ComponentReferenceUtil(definition);
+		Iterator it = util.getBindingOperations(operation).iterator();
+
+		while (it.hasNext()) {
+			BindingOperation bindingOperation = (BindingOperation) it.next();
+			Element element = WSDLEditorUtil.getInstance().getElementForObject(bindingOperation);
+			if (element != null)
+			{ 
+				element.setAttribute("name", newName);
+			}
+			//		    TODO: We should go through the model to rename.... Not the Element...
+			//			bindingOperation.setName(newName);
 		}
-		else if (object instanceof W11Binding) {
-			Binding binding = (Binding) object.getTarget();
-			String ns = binding.getQName().getNamespaceURI();
-			binding.setQName(new QName(ns, newName));
+	}
+
+	// TODO: We should look at using the refactor mechanism to do this renaming....
+	private void renameIOFHelper(WSDLElement object)
+	{                         
+		Definition definition = object.getEnclosingDefinition(); 
+		ComponentReferenceUtil util = new ComponentReferenceUtil(definition);
+		List list = null;
+
+		if (object instanceof Input)
+		{
+			list = util.getBindingInputs((Input)object);
 		}
-		else if (object instanceof W11Interface) {
-			PortType portType = (PortType) object.getTarget();
-			String ns = portType.getQName().getNamespaceURI();
-			portType.setQName(new QName(ns, newName));
+		else if (object instanceof Output)
+		{
+			list = util.getBindingOutputs((Output)object);
 		}
-		else if (object instanceof W11Operation) {
-			Operation operation = (Operation) object.getTarget();
-			operation.setName(newName);
+		else // fault
+		{
+			list = util.getBindingFaults((Fault)object);
 		}
-		else if (object instanceof W11MessageReference) {
-			W11Operation w11Operation = (W11Operation) ((W11MessageReference) object).getOwnerOperation();
-			Operation operation = w11Operation.getOperation();
-			operation.setName(newName);					
+
+		if (list != null)
+		{
+			for (Iterator i = list.iterator(); i.hasNext(); )
+			{
+				Object bindingObject = i.next();
+				renameModelObjectHelper(bindingObject, newName);
+			}                                           
 		}
-		else if (object instanceof W11ParameterForPart) {
-			Part part = (Part) ((W11ParameterForPart) object).getTarget();
-			part.setName(newName);
+
+		renameModelObjectHelper(object, newName);
+	}
+
+	// TODO: We should look at using the refactor mechanism to do this renaming....
+	private void renameModelObjectHelper(Object modelObject, String theNewName)
+	{
+		// TODO: We should go through the model to rename.... Not the Element...
+		Element element = WSDLEditorUtil.getInstance().getElementForObject(modelObject);
+		if (element != null)
+		{ 
+			element.setAttribute("name", theNewName);
+		}    
+
+		if (modelObject instanceof Message)
+		{
+			MessageRenamer renamer = new MessageRenamer((Message)modelObject, theNewName);
+			renamer.visitBindings();
+		}
+		else if (modelObject instanceof PortType)
+		{
+			PortTypeRenamer renamer = new PortTypeRenamer((PortType)modelObject, theNewName);
+			renamer.visitBindings();
+		}
+		else if (modelObject instanceof Binding)
+		{
+			BindingRenamer renamer = new BindingRenamer((Binding)modelObject, theNewName);
+			renamer.visitServices();
 		}
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11ReorderMessageReferencesCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11ReorderMessageReferencesCommand.java
index fbd910b..5ce820e 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11ReorderMessageReferencesCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11ReorderMessageReferencesCommand.java
@@ -12,17 +12,18 @@
 
 import javax.wsdl.OperationType;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Operation;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Operation;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
 
-public class W11ReorderMessageReferencesCommand extends Command {
+public class W11ReorderMessageReferencesCommand extends W11TopLevelElementCommand {
 	protected IMessageReference leftSibling;
 	protected IMessageReference rightSibling;
 	protected IMessageReference movingParameter;
 	
 	public W11ReorderMessageReferencesCommand(IMessageReference leftSibling, IMessageReference rightSibling, IMessageReference movingParameter) {
+        super(Messages._UI_ACTION_REORDER_MESSAGE_REFERENCE, null);
 		this.leftSibling = leftSibling;
 		this.rightSibling = rightSibling;
 		this.movingParameter = movingParameter;
@@ -39,44 +40,48 @@
 			movingChild = (IMessageReference) movingParameter;
 		}
 		
-		if (movingChild.getKind() == IMessageReference.KIND_INPUT) {
-			W11Operation w11Operation = (W11Operation) movingChild.getOwnerOperation();
-			Operation operation = (Operation) w11Operation.getTarget();
-			
-			if (leftSibElement == null) {
-				// Input/Output style
-				setInputOutputOrder(operation, true);
-			}
-			else if (leftSibElement != null && leftSibElement.getKind() == IMessageReference.KIND_INPUT) {
-				if (rightSibling.getKind() == IMessageReference.KIND_OUTPUT) {
+		W11Operation w11Operation = (W11Operation) movingChild.getOwnerOperation();
+		Operation operation = (Operation) w11Operation.getTarget();
+		
+		try {
+			beginRecording(operation.getElement());
+
+			if (movingChild.getKind() == IMessageReference.KIND_INPUT) {
+				if (leftSibElement == null) {
 					// Input/Output style
 					setInputOutputOrder(operation, true);
 				}
-			}
-			else {
-				// Output/Input style
-				setInputOutputOrder(operation, false);
-			}
-		}
-		else if (movingChild.getKind() == IMessageReference.KIND_OUTPUT) {
-			W11Operation w11Operation = (W11Operation) movingChild.getOwnerOperation();
-			Operation operation = (Operation) w11Operation.getTarget();
-			
-			if (leftSibElement == null) {
-				// Output/Input style
-				setInputOutputOrder(operation, false);
-			}
-			else if (leftSibElement != null && leftSibElement.getKind() == IMessageReference.KIND_OUTPUT) {
-				if (rightSibling.getKind() == IMessageReference.KIND_INPUT) {
+				else if (leftSibElement != null && leftSibElement.getKind() == IMessageReference.KIND_INPUT) {
+					if (rightSibling.getKind() == IMessageReference.KIND_OUTPUT) {
+						// Input/Output style
+						setInputOutputOrder(operation, true);
+					}
+				}
+				else {
 					// Output/Input style
 					setInputOutputOrder(operation, false);
 				}
 			}
-			else {
-				// Input/Output style
-				setInputOutputOrder(operation, true);
+			else if (movingChild.getKind() == IMessageReference.KIND_OUTPUT) {
+				if (leftSibElement == null) {
+					// Output/Input style
+					setInputOutputOrder(operation, false);
+				}
+				else if (leftSibElement != null && leftSibElement.getKind() == IMessageReference.KIND_OUTPUT) {
+					if (rightSibling.getKind() == IMessageReference.KIND_INPUT) {
+						// Output/Input style
+						setInputOutputOrder(operation, false);
+					}
+				}
+				else {
+					// Input/Output style
+					setInputOutputOrder(operation, true);
+				}
 			}
 		}
+		finally {
+			endRecording(operation.getElement());
+		}
 	}
 	
 	// boolean inputFirst = true if the Input is the first in the order of Input and Output
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11ReorderParametersCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11ReorderParametersCommand.java
index 302f44c..3075e82 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11ReorderParametersCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11ReorderParametersCommand.java
@@ -12,28 +12,114 @@
 
 import java.util.List;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForAttribute;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForElement;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
 
-public class W11ReorderParametersCommand extends Command {
+public class W11ReorderParametersCommand extends W11TopLevelElementCommand {
     protected IParameter leftSibling;
     protected IParameter rightSibling;
     protected IParameter movingParameter;
     
     public W11ReorderParametersCommand(IParameter leftSibling, IParameter rightSibling, IParameter movingParameter) {
+        super(Messages._UI_ACTION_REORDER_PART, null);
         this.leftSibling = leftSibling;
         this.rightSibling = rightSibling;
         this.movingParameter = movingParameter;
     }
     
     public void execute() {
+    	if (leftSibling instanceof W11ParameterForPart ||
+    		rightSibling instanceof W11ParameterForPart ||
+    		movingParameter instanceof W11ParameterForPart) {
+    		executeForPart();
+    	}
+    	else if (leftSibling instanceof W11ParameterForElement ||
+        		 rightSibling instanceof W11ParameterForElement ||
+        		 movingParameter instanceof W11ParameterForElement) {
+    		executeForElement();
+        }
+    	else if (leftSibling instanceof W11ParameterForAttribute ||
+       		     rightSibling instanceof W11ParameterForAttribute ||
+    		     movingParameter instanceof W11ParameterForAttribute) {
+//    		executeForElement();
+    	}
+    }
+    
+    private void executeForElement() {
+    	XSDElementDeclaration leftSibElement = null;
+    	XSDElementDeclaration rightSibElement = null;
+    	XSDElementDeclaration movingChild = null;
+    	
+		XSDParticle movingParticle = null;
+		XSDParticle leftParticle = null;
+		XSDParticle rightParticle = null;
+
+		if (leftSibling instanceof W11ParameterForElement) {
+			leftSibElement = (XSDElementDeclaration) ((W11ParameterForElement) leftSibling).getTarget();
+			leftParticle = (XSDParticle) leftSibElement.eContainer();
+		}
+		if (rightSibling instanceof W11ParameterForElement) {
+			rightSibElement = (XSDElementDeclaration) ((W11ParameterForElement) rightSibling).getTarget();
+			rightParticle = (XSDParticle) rightSibElement.eContainer();
+		}
+		if (movingParameter instanceof W11ParameterForElement) {
+			movingChild = (XSDElementDeclaration) ((W11ParameterForElement) movingParameter).getTarget();
+			movingParticle = (XSDParticle) movingChild.eContainer();
+		}
+		
+		if (movingChild.equals(leftSibElement) || movingChild.equals(rightSibElement)) {
+			return;
+		}
+    	
+    	if (movingChild != null) {
+    		try {
+    			beginRecording(movingParticle.getElement());
+
+    			XSDModelGroup container = (XSDModelGroup) movingParticle.getContainer();
+    			List particles = container.getContents();
+    			
+    			particles.remove(movingParticle);
+
+    			int leftIndex = -1, rightIndex = -1;
+    			if (leftParticle != null) {
+    				leftIndex = particles.indexOf(leftParticle);
+    			}
+    			if (rightParticle!= null) {
+    				rightIndex = particles.indexOf(rightParticle);
+    			}
+
+    			if (leftIndex == -1) {
+    				// Add moving child to the front
+    				particles.add(0, movingParticle);  				
+    			}
+    			else if (rightIndex == -1) {
+    				// Add moving child to the end
+    				particles.add(movingParticle);
+    			}
+    			else {
+    				// Add moving child after the occurence of the left sibling
+    				particles.add(leftIndex + 1, movingParticle);
+    			}
+    		}
+    		finally {
+    			endRecording(movingParticle.getElement());
+    		}
+    	}
+    }
+    
+    private void executeForPart() {
 		Part leftSibElement = null;
 		Part rightSibElement = null;
 		Part movingChild = null;
-		
+
 		if (leftSibling instanceof W11ParameterForPart) {
 			leftSibElement = (Part) ((W11ParameterForPart) leftSibling).getTarget(); 
 		}
@@ -48,32 +134,38 @@
 			return;
 		}
     	
-    	if (movingChild != null) {    		
-    		Message message = (Message) movingChild.eContainer();
-			List parts = message.getEParts();
+    	if (movingChild != null) {
+    		try {
+    			beginRecording(movingChild.getElement());
+        		Message message = (Message) movingChild.eContainer();
+    			List parts = message.getEParts();
 
-			parts.remove(movingChild);
+    			parts.remove(movingChild);
 
-			int leftIndex = -1, rightIndex = -1;
-			if (leftSibElement != null) {
-				leftIndex = parts.indexOf(leftSibElement);
-			}
-			if (rightSibElement != null) {
-				rightIndex = parts.indexOf(rightSibElement);
-			}
+    			int leftIndex = -1, rightIndex = -1;
+    			if (leftSibElement != null) {
+    				leftIndex = parts.indexOf(leftSibElement);
+    			}
+    			if (rightSibElement != null) {
+    				rightIndex = parts.indexOf(rightSibElement);
+    			}
 
-			if (leftIndex == -1) {
-				// Add moving child to the front
-				parts.add(0, movingChild);  				
-			}
-			else if (rightIndex == -1) {
-				// Add moving child to the end
-				parts.add(movingChild);
-			}
-			else {
-				// Add moving child after the occurence of the left sibling
-				parts.add(leftIndex + 1, movingChild);
-			}
+    			if (leftIndex == -1) {
+    				// Add moving child to the front
+    				parts.add(0, movingChild);  				
+    			}
+    			else if (rightIndex == -1) {
+    				// Add moving child to the end
+    				parts.add(movingChild);
+    			}
+    			else {
+    				// Add moving child after the occurence of the left sibling
+    				parts.add(leftIndex + 1, movingChild);
+    			}
+    		}
+    		finally {
+    			endRecording(movingChild.getElement());
+    		}
     	}
     }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetAddressCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetAddressCommand.java
index f0e5c8f..fc00222 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetAddressCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetAddressCommand.java
@@ -14,7 +14,6 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.ExtensibilityElement;
 import org.eclipse.wst.wsdl.Port;
 import org.eclipse.wst.wsdl.binding.http.HTTPAddress;
@@ -36,20 +35,28 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-public class W11SetAddressCommand extends Command {
+public class W11SetAddressCommand extends W11TopLevelElementCommand {
 	private Port port;
 	private String newAddress;
 	
 	public W11SetAddressCommand(Port port, String newAddress) {
+        super("", port.getEnclosingDefinition());  // TODO: Need to add String here...
 		this.port = port;
 		this.newAddress = newAddress;
 	}
 	
 	public void execute() {
-		// Should the actual set address code live in it's 'own separate' command??
-		if (!setAddress()) {
-			createNewExtensibilityElement();
-			setAddress();
+		try {
+			beginRecording(port.getElement());
+
+			// Should the actual set address code live in it's 'own separate' command??
+			if (!setAddress()) {
+				createNewExtensibilityElement();
+				setAddress();
+			}
+		}
+		finally {
+			endRecording(port.getElement());
 		}
 	}
 	
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetBindingCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetBindingCommand.java
index b83d7ce..68a700f 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetBindingCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetBindingCommand.java
@@ -10,20 +10,27 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Binding;
 import org.eclipse.wst.wsdl.Port;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
 
-public class W11SetBindingCommand extends Command {
+public class W11SetBindingCommand extends W11TopLevelElementCommand {
 	private Port port;
 	private Binding binding;
 	
 	public W11SetBindingCommand(Port port, Binding binding) {
+        super(Messages._UI_ACTION_SET_BINDING, port.getEnclosingDefinition());
 		this.port = port;
 		this.binding = binding;
 	}
 	
 	public void execute() {
-		port.setEBinding(binding);
+		try {
+			beginRecording(port.getElement());
+			port.setEBinding(binding);
+		}
+		finally {
+			endRecording(port.getElement());
+		}
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetElementCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetElementCommand.java
index b18d85f..b30b124 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetElementCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetElementCommand.java
@@ -12,60 +12,64 @@
 
 import java.util.List;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.jface.window.Window;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
-import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
 import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.ui.internal.InternalWSDLMultiPageEditor;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Type;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
 import org.eclipse.wst.wsdl.ui.internal.edit.WSDLXSDElementReferenceEditManager;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 import org.eclipse.wst.xsd.ui.internal.editor.XSDElementReferenceEditManager;
 import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
 
-public class W11SetElementCommand extends Command {
+public class W11SetElementCommand extends W11TopLevelElementCommand {
 	private Object parent;
 	private String action;
 	private boolean continueApply;
 	
+	// TODO: rmah: signature of this method should changed post WTP 1.5.  Instead of taking in
+	// an "Object parent", it should be "Part parent".
 	public W11SetElementCommand(Object parent, String action) {
+        super(Messages._UI_ACTION_SET_ELEMENT, ((Part) parent).getEnclosingDefinition());
 		this.parent = parent;
 		this.action = action;
 	}
 	
 	public void execute()
 	{
-		ComponentReferenceEditManager componentReferenceEditManager = getComponentReferenceEditManager();
-		continueApply = true; 
-		if (parent instanceof Part)
-		{
-			Part part = (Part) parent;
-			if (action.equals(IParameter.SET_NEW_ACTION_ID))
+		try {
+			beginRecording(definition.getElement());
+
+			ComponentReferenceEditManager componentReferenceEditManager = getComponentReferenceEditManager();
+			continueApply = true; 
+			if (parent instanceof Part)
 			{
-				ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getNewDialog());
-				
-				// Set the reference to the new type
-				if (continueApply)
-					componentReferenceEditManager.modifyComponentReference(part, newValue);
+				Part part = (Part) parent;
+				if (action.equals(IParameter.SET_NEW_ACTION_ID))
+				{
+					ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getNewDialog());
+
+					// Set the reference to the new type
+					if (continueApply)
+						componentReferenceEditManager.modifyComponentReference(part, newValue);
+				}
+				else
+				{
+					ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getBrowseDialog());
+					if (continueApply)
+						componentReferenceEditManager.modifyComponentReference(part, newValue);
+				}
+				formatChild(part.getElement());
 			}
-			else
-			{
-				ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getBrowseDialog());
-				if (continueApply)
-					componentReferenceEditManager.modifyComponentReference(part, newValue);
-			}
-			formatChild(part.getElement());
 		}
-		
+		finally {
+			endRecording(definition.getElement());
+		}
 	}
 	
 	private Object invokeDialog(IComponentDialog dialog)
@@ -115,25 +119,4 @@
 		}  
 		return result;
 	}
-	
-	protected void formatChild(Element child)
-	{
-		if (child instanceof IDOMNode)
-		{
-			IDOMModel model = ((IDOMNode)child).getModel();
-			try
-			{
-				// tell the model that we are about to make a big model change
-				model.aboutToChangeModel();
-				
-				IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
-				formatProcessor.formatNode(child);
-			}
-			finally
-			{
-				// tell the model that we are done with the big model change
-				model.changedModel(); 
-			}
-		}
-	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetInterfaceCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetInterfaceCommand.java
index 125d46c..41882d5 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetInterfaceCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetInterfaceCommand.java
@@ -10,20 +10,27 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.wst.wsdl.Binding;
 import org.eclipse.wst.wsdl.PortType;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
 
-public class W11SetInterfaceCommand extends Command {
+public class W11SetInterfaceCommand extends W11TopLevelElementCommand {
 	private Binding binding;
 	private PortType portType;
 	
 	public W11SetInterfaceCommand(Binding binding, PortType portType) {
+        super(Messages._UI_ACTION_SET_PORTTYPE, binding.getEnclosingDefinition());
 		this.binding = binding;
 		this.portType = portType;
 	}
 	
 	public void execute() {
-		binding.setEPortType(portType);
+		try {
+			beginRecording(binding.getElement());
+			binding.setEPortType(portType);
+		}
+		finally {
+			endRecording(binding.getElement());
+		}
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetTypeCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetTypeCommand.java
index ae927c7..ae8f609 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetTypeCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11SetTypeCommand.java
@@ -12,62 +12,69 @@
 
 import java.util.List;
 
-import org.eclipse.gef.commands.Command;
 import org.eclipse.jface.window.Window;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
-import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
 import org.eclipse.wst.wsdl.WSDLElement;
 import org.eclipse.wst.wsdl.ui.internal.InternalWSDLMultiPageEditor;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Type;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
 import org.eclipse.wst.wsdl.ui.internal.edit.WSDLXSDTypeReferenceEditManager;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 import org.eclipse.wst.xsd.ui.internal.editor.XSDTypeReferenceEditManager;
 import org.eclipse.xsd.XSDConcreteComponent;
 import org.eclipse.xsd.XSDSchema;
-import org.w3c.dom.Element;
 
-public class W11SetTypeCommand extends Command {
+public class W11SetTypeCommand extends W11TopLevelElementCommand {
 	private Object parent;
 	private String action;
 	private boolean continueApply;
 	
 	public W11SetTypeCommand(Object parent, String action) {
+        super(Messages._UI_ACTION_SET_TYPE, null);
 		this.parent = parent;
 		this.action = action;
 	}
 	
 	public void execute()
 	{
-		ComponentReferenceEditManager componentReferenceEditManager = getComponentReferenceEditManager();
-		continueApply = true; 
-		if (action.equals(IParameter.SET_NEW_ACTION_ID))
-		{
-			ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getNewDialog());
-			
-			// Set the reference to the new type
-			if (continueApply)
-				componentReferenceEditManager.modifyComponentReference(parent, newValue);
+		try {
+			if (parent instanceof WSDLElement) {
+				beginRecording(((WSDLElement) parent).getElement());
+			}
+
+			ComponentReferenceEditManager componentReferenceEditManager = getComponentReferenceEditManager();
+			continueApply = true; 
+			if (action.equals(IParameter.SET_NEW_ACTION_ID))
+			{
+				ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getNewDialog());
+
+				// Set the reference to the new type
+				if (continueApply)
+					componentReferenceEditManager.modifyComponentReference(parent, newValue);
+			}
+			else
+			{
+				ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getBrowseDialog());
+				if (continueApply)
+					componentReferenceEditManager.modifyComponentReference(parent, newValue);
+			}
+
+			// Format
+			if (parent instanceof WSDLElement) {
+				formatChild(((WSDLElement) parent).getElement());
+			}
+			else if (parent instanceof XSDConcreteComponent) {
+				formatChild(((XSDConcreteComponent) parent).getElement());
+			}
 		}
-		else
-		{
-			ComponentSpecification newValue = (ComponentSpecification)invokeDialog(componentReferenceEditManager.getBrowseDialog());
-			if (continueApply)
-				componentReferenceEditManager.modifyComponentReference(parent, newValue);
-		}
-		
-		// Format
-		if (parent instanceof WSDLElement) {
-			formatChild(((WSDLElement) parent).getElement());
-		}
-		else if (parent instanceof XSDConcreteComponent) {
-			formatChild(((XSDConcreteComponent) parent).getElement());
+		finally {
+			if (parent instanceof WSDLElement) {
+				endRecording(((WSDLElement) parent).getElement());
+			}
 		}
 	}
 	
@@ -118,25 +125,4 @@
 		}  
 		return result;
 	}
-	
-	protected void formatChild(Element child)
-	{
-		if (child instanceof IDOMNode)
-		{
-			IDOMModel model = ((IDOMNode)child).getModel();
-			try
-			{
-				// tell the model that we are about to make a big model change
-				model.aboutToChangeModel();
-				
-				IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
-				formatProcessor.formatNode(child);
-			}
-			finally
-			{
-				// tell the model that we are done with the big model change
-				model.changedModel(); 
-			}
-		}
-	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11TopLevelElementCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11TopLevelElementCommand.java
new file mode 100644
index 0000000..69f6e19
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/commands/W11TopLevelElementCommand.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.wsdl.ui.internal.adapters.commands;
+
+import javax.xml.namespace.QName;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Preferences;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.sse.core.internal.encoding.CommonEncodingPreferenceNames;
+import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.adapters.visitor.W11FindInnerElementVisitor;
+import org.eclipse.wst.wsdl.util.WSDLConstants;
+import org.eclipse.wst.xml.core.internal.XMLCorePlugin;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.ProcessingInstruction;
+
+public class W11TopLevelElementCommand extends Command
+{
+  private static final String XML = "xml"; //$NON-NLS-1$
+  protected Definition definition;
+
+  public W11TopLevelElementCommand(String label, Definition definition)
+  {
+    super(label);
+    this.definition = definition;
+  }
+  
+  protected void beginRecording(Object element) {
+	  if (element instanceof IDOMNode) {
+		  ((IDOMNode) element).getModel().beginRecording(this, getUndoDescription());
+	  }
+  }
+  
+  protected void endRecording(Object element) {
+	  if (element instanceof IDOMNode) {
+		  ((IDOMNode) element).getModel().endRecording(this);
+	  }
+  }
+  
+  protected String getUndoDescription() {
+	  return getLabel();
+  }
+  
+  protected void formatChild(Element child)
+  {
+    if (child instanceof IDOMNode)
+    {
+      IDOMModel model = ((IDOMNode)child).getModel();
+      try
+      {
+        // tell the model that we are about to make a big model change
+        model.aboutToChangeModel();
+        
+        IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
+        formatProcessor.formatNode(child);
+      }
+      finally
+      {
+        // tell the model that we are done with the big model change
+        model.changedModel(); 
+      }
+    }
+  }
+
+  public void execute()
+  {
+    ensureDefinition(definition);
+  }
+  
+  protected XSDElementDeclaration getNewXSDElement(XSDElementDeclaration xsdElement) { 
+	  W11FindInnerElementVisitor visitor = new W11FindInnerElementVisitor();
+	  return visitor.getInnerXSDElement(xsdElement);
+  }
+
+  public static void ensureDefinition(Definition definition)
+  {
+    Document document = definition.getDocument();
+
+    Element definitionsElement = document.getDocumentElement();
+
+    if (definitionsElement == null)
+    {
+      String targetNamespace = getDefaultNamespace(definition);
+      definition.setQName(new QName(null, getFileName(definition)));
+      definition.setTargetNamespace(targetNamespace);
+      definition.addNamespace("wsdl", WSDLConstants.WSDL_NAMESPACE_URI); //$NON-NLS-1$
+      definition.updateElement();
+      // Moving these above updateElement() seems to cause grief with the model.
+      definition.addNamespace("tns", targetNamespace); //$NON-NLS-1$
+      definition.addNamespace("xsd", WSDLConstants.XSD_NAMESPACE_URI); //$NON-NLS-1$
+      definitionsElement = definition.getElement();
+    }
+
+    ensureXMLDirective(document);
+  }
+
+  private static void ensureXMLDirective(Document document)
+  {
+    if (hasXMLDirective(document))
+    {
+      return;
+    }
+    
+    Node firstChild = document.getFirstChild();
+    ProcessingInstruction xmlDeclaration = getXMLDeclaration(document);
+    document.insertBefore(xmlDeclaration, firstChild);
+  }
+  
+  private static boolean hasXMLDirective(Document document)
+  {
+    Node firstChild = document.getFirstChild();
+   
+    if (firstChild == null)
+    {
+      return false;
+    }
+    
+    if (firstChild.getNodeType() != Node.PROCESSING_INSTRUCTION_NODE)
+    {
+      return false;
+    }
+    
+    ProcessingInstruction processingInstruction  = (ProcessingInstruction)firstChild;
+    
+    if (!processingInstruction.getTarget().equals(XML)) 
+    {
+      return false;
+    }
+    
+    return true;
+  }
+
+  private static ProcessingInstruction getXMLDeclaration(Document document)
+  {
+    Preferences preference = XMLCorePlugin.getDefault().getPluginPreferences();
+    String charSet = preference.getString(CommonEncodingPreferenceNames.OUTPUT_CODESET);
+    if (charSet == null || charSet.trim().equals(""))
+    {
+      charSet = "UTF-8";
+    }
+    ProcessingInstruction xmlDeclaration = document.createProcessingInstruction(XML, "version=\"1.0\" encoding=\"" + charSet + "\"");
+    return xmlDeclaration;
+    
+  }
+  private static String getDefaultNamespace(Definition definition)
+  {
+    String namespace = WSDLEditorPlugin.getInstance().getPreferenceStore().getString(Messages._UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE);
+
+    if (!namespace.endsWith("/"))
+    {
+      namespace = namespace.concat("/");
+    }
+
+    namespace += getFileName(definition) + "/";
+
+    return namespace;
+
+  }
+
+  private static String getFileName(Definition definition)
+  {
+    String fileLocation = definition.getLocation();
+    IPath filePath = new Path(fileLocation);
+    return filePath.removeFileExtension().lastSegment().toString();
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/visitor/W11FindInnerElementVisitor.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/visitor/W11FindInnerElementVisitor.java
new file mode 100644
index 0000000..c961ea3
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/adapters/visitor/W11FindInnerElementVisitor.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.adapters.visitor;
+
+import org.eclipse.xsd.XSDElementDeclaration;
+
+/*
+ * Class used to find and return the "inner" XSDElement when given an XSDElement.
+ * This class extends W11XSDVisitor which removes the need for this class to reimplement
+ * the actual traversal of the XSD Model to locate the inner XSDElement.
+ * 
+ * By default, this class will locate the inner XSDElement at depth 2.  However, this depth
+ * can be changed by calling setElementDepth(newDepth).
+ */
+public class W11FindInnerElementVisitor extends W11XSDVisitor {
+	  protected XSDElementDeclaration elementAtDepth;
+	  protected int elementDepth = 2;
+	  protected int depth = 1;
+	  
+	  public XSDElementDeclaration getInnerXSDElement(XSDElementDeclaration xsdElement) {
+		  elementAtDepth = xsdElement;
+		  depth = 1;
+		  visitElementDeclaration(xsdElement);
+		  
+		  return elementAtDepth;
+	  }
+	  
+	  public void visitElementDeclaration(XSDElementDeclaration element) {
+		  if (depth == elementDepth) {
+			  elementAtDepth = element;
+		  }
+		  depth++;
+		  
+		  super.visitElementDeclaration(element);
+	  }
+	  
+	  public void setElementDepth(int elementDepth) {
+		  this.elementDepth = elementDepth; 
+	  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddBaseParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddBaseParameterCommand.java
index 52eee0a..277a995 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddBaseParameterCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddBaseParameterCommand.java
@@ -15,31 +15,44 @@
 import java.util.List;
 import java.util.Map;
 
+import org.eclipse.wst.sse.core.internal.format.IStructuredFormatProcessor;
 import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Fault;
+import org.eclipse.wst.wsdl.Input;
 import org.eclipse.wst.wsdl.Message;
 import org.eclipse.wst.wsdl.MessageReference;
 import org.eclipse.wst.wsdl.Operation;
+import org.eclipse.wst.wsdl.Output;
 import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.PortType;
+import org.eclipse.wst.wsdl.WSDLElement;
 import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
 import org.eclipse.wst.wsdl.ui.internal.util.XSDComponentHelper;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xml.core.internal.provisional.format.FormatProcessorXML;
 import org.eclipse.xsd.XSDComplexTypeDefinition;
 import org.eclipse.xsd.XSDElementDeclaration;
 import org.eclipse.xsd.XSDModelGroup;
 import org.eclipse.xsd.XSDNamedComponent;
+import org.eclipse.xsd.XSDParticle;
 import org.eclipse.xsd.XSDSchema;
 import org.eclipse.xsd.XSDSimpleTypeDefinition;
 import org.eclipse.xsd.XSDTypeDefinition;
+import org.w3c.dom.Element;
 
 public abstract class AddBaseParameterCommand {
 	public static int PART_ELEMENT_SEQ_ELEMENT     = 0;
 	public static int PART_ELEMENT                 = 1;
 	public static int PART_COMPLEXTYPE_SEQ_ELEMENT = 2;
 	public static int PART_COMPLEXTYPE             = 3;
+	public static int PART_SIMPLETYPE			   = 4;
 
 	protected int style = 0;
 	protected Operation operation;
 	protected XSDElementDeclaration newXSDElement;
+	protected Part newPart;
 	
 	protected String newAnonymousXSDElementName;
 	protected String newXSDElementName;
@@ -69,60 +82,65 @@
 		return false;
 	}
 	
+	protected XSDElementDeclaration createPartElementSeqElementPattern(Part part, XSDElementDeclaration partElement) {
+		XSDElementDeclaration returnedXSDElement = null;
+		
+		XSDElementDeclaration originalElement = null;
+		XSDElementDeclaration anonXSDElement = null;
+		
+		// Create the XSDElement (anonymous) referenced by the Part if necessary
+		if (partElement == null || partElement.getAnonymousTypeDefinition() == null || partElement.getSchema() == null) {
+			anonXSDElement = XSDComponentHelper.createAnonymousXSDElementDefinition(getAnonymousXSDElementBaseName(), part);
+//			part.setElementDeclaration(anonXSDElement);
+			String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), anonXSDElement);
+			ComponentReferenceUtil.setComponentReference(part, false, prefixedName);
+			part.setTypeDefinition(null);
+			
+			if (partElement != null && partElement.getSchema() != null) {
+				originalElement = partElement;
+				// Remove the 'original' XSDElement as a Global Element
+				partElement.getSchema().getContents().remove(partElement);
+			}
+		}
+		else {
+			anonXSDElement = partElement;
+		}
+		
+		// Add the 'original' XSDElement if it's type wasn't anonymous
+		if (originalElement != null) {
+			XSDComponentHelper.addXSDElementToModelGroup(anonXSDElement, originalElement);
+		}
+		
+		// Create a new XSDElement
+		XSDModelGroup modelGroup = XSDComponentHelper.getXSDModelGroup(anonXSDElement, part.getEnclosingDefinition());
+		returnedXSDElement = XSDComponentHelper.createXSDElementDeclarationCommand(null, getNewXSDElementBaseName(), modelGroup);
+		
+		// Add the newly created XSDElement to the ModelGroup
+		XSDComponentHelper.addXSDElementToModelGroup(anonXSDElement, returnedXSDElement);
+
+		formatChild(anonXSDElement.getElement());
+		return returnedXSDElement;
+	}
+	
 	protected XSDElementDeclaration createPartElementReferenceComponents(Part part) {
 		XSDElementDeclaration returnedXSDElement = null;
 		XSDElementDeclaration partElement = part.getElementDeclaration();
 		
 		if (style == PART_ELEMENT_SEQ_ELEMENT) {
-			XSDElementDeclaration originalElement = null;
-			XSDElementDeclaration anonXSDElement = null;
-			
-			// Create the XSDElement (anonymous) referenced by the Part if necessary
-			if (partElement == null || partElement.getAnonymousTypeDefinition() == null) {
-				anonXSDElement = XSDComponentHelper.createAnonymousXSDElementDefinition(getAnonymousXSDElementBaseName(), part);
-//				part.setElementDeclaration(anonXSDElement);
-				String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), anonXSDElement);
-				ComponentReferenceUtil.setComponentReference(part, false, prefixedName);
-				part.setTypeDefinition(null);
-				
-				if (partElement != null) {
-					originalElement = partElement;
-					// Remove the 'original' XSDElement as a Global Element
-					partElement.getSchema().getContents().remove(partElement);
-				}
-			}
-			else {
-				anonXSDElement = partElement;
-			}
-			
-			// Create a new XSDElement
-			XSDModelGroup modelGroup = XSDComponentHelper.getXSDModelGroup(anonXSDElement, part.getEnclosingDefinition());
-			returnedXSDElement = XSDComponentHelper.createXSDElementDeclarationCommand(null, getNewXSDElementBaseName(), modelGroup);
-			
-			// Add the newly created XSDElement to the ModelGroup
-			XSDComponentHelper.addXSDElementToModelGroup(anonXSDElement, returnedXSDElement);
-			
-			// Add the 'original' XSDElement if it's type wasn't anonymous
-			if (originalElement != null) {
-				XSDComponentHelper.addXSDElementToModelGroup(anonXSDElement, originalElement);
-			}
+			returnedXSDElement = createPartElementSeqElementPattern(part, partElement);
 		}
 		else if (style == PART_ELEMENT) {
 			if (partElement == null) {
 				returnedXSDElement = XSDComponentHelper.createXSDElementDeclarationCommand(part.getEnclosingDefinition(), getNewXSDElementBaseName(), part);
+				if (returnedXSDElement != null && !returnedXSDElement.equals(part.getElementDeclaration())) {
+//					part.setElementDeclaration(returnedXSDElement);
+					String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), returnedXSDElement);
+					ComponentReferenceUtil.setComponentReference(part, false, prefixedName);
+				}
 			}
 			else {
-				// TODO: What should we do here.....  We can default to the PART_ELEMENT_SEQ_ELEMENT style
-				// since it handles 'multiple' XSDElements.... OR ..... we can 'overwrite and set a new
-				// XSDElement
+				returnedXSDElement = createPartElementSeqElementPattern(part, partElement);
 			}
-			
-			if (returnedXSDElement != null && !returnedXSDElement.equals(part.getElementDeclaration())) {
-//				part.setElementDeclaration(returnedXSDElement);
-				String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), returnedXSDElement);
-				ComponentReferenceUtil.setComponentReference(part, false, prefixedName);
-
-			}	
 		}
 		
 		return returnedXSDElement;
@@ -164,8 +182,7 @@
 //			part.setTypeDefinition(topLevelType);
 			String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), topLevelType);
 			ComponentReferenceUtil.setComponentReference(part, true, prefixedName);
-
-			
+			formatChild(topLevelType.getElement());
 		}
 		else if (style == PART_COMPLEXTYPE) {
 			XSDComplexTypeDefinition complexType = null;
@@ -189,6 +206,7 @@
 //				part.setTypeDefinition(complexType);
 				String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), complexType);
 				ComponentReferenceUtil.setComponentReference(part, true, prefixedName);
+				formatChild(complexType.getElement());
 			}	
 		}
 		
@@ -202,7 +220,7 @@
 		Message message = messageRef.getEMessage();
 		Part part = null;
 		
-		if (message == null) {
+		if (message == null || message.eContainer() == null) {
 			// Create Message
 			AddMessageCommand command = new AddMessageCommand(messageRef.getEnclosingDefinition(), getWSDLMessageName());
 			command.run();
@@ -212,32 +230,68 @@
 		
 		if (message.getEParts().size() == 0) {
 			// Create Part
-			AddPartCommand command = new AddPartCommand(message, getWSDLPartName());
+			String partName = getWSDLPartName();
+			if (style == PART_ELEMENT_SEQ_ELEMENT) {
+				partName = getDocLitWrappedPartName();
+			}
+			AddPartCommand command = new AddPartCommand(message, partName);
 			command.run();
 			part = (Part) command.getWSDLElement();
 		}
 		else {
-			part = (Part) message.getEParts().get(0);
+			// there is an existing Part
+//			part = (Part) message.getEParts().get(0);
 		}
+		formatChild(message.getElement());
 		
 		return part;
 	}
 	
+	protected String getDocLitWrappedPartName() {
+		return "parameters";
+	}
+
 	protected XSDElementDeclaration createXSDObjects(Part part) {
 		XSDElementDeclaration returnedXSDElement = null;
 		if (isPartElementReference()) {
 			// Is a Part --> Element reference
+			if (part == null && getMessageReference() != null && getMessageReference().getEMessage() != null) {
+				part = (Part) getMessageReference().getEMessage().getEParts().get(0);
+			}
+			
 			returnedXSDElement = createPartElementReferenceComponents(part);
 		}
 		else {
 			// Is a Part --> Complex Type reference
-			returnedXSDElement = createPartComplexTypeReference(part);
+//			returnedXSDElement = createPartComplexTypeReference(part);
+			
+			// If it's a Part --> Type reference, adding a new parameter always means adding a new Part
+			// with a string reference.  Because of this case, we should really rename this method instead
+			// of createXSDObjects() since we may end up creating a Part.
+			if (part == null && getMessageReference() != null && getMessageReference().getEMessage() != null) {
+				List partNames = new ArrayList();
+				Message message = getMessageReference().getEMessage();
+				Iterator it = message.getEParts().iterator();
+				while (it.hasNext()) {
+					Part item = (Part) it.next();
+					partNames.add(item.getName());
+				}
+				String partName = NameUtil.getUniqueNameHelper(getWSDLPartName(), partNames);
+				AddPartCommand command = new AddPartCommand(message, partName);
+				command.run();
+				newPart = (Part) command.getWSDLElement();
+			}
 		}
 		
 		return returnedXSDElement;
 	}
 	
-    private String getPrefixedComponentName(Definition definition, XSDNamedComponent component) {
+	// TODO: rmah: Post WTP 1.5, this method should be made abstract
+	public MessageReference getMessageReference() {
+		return null;
+	}
+	
+    protected String getPrefixedComponentName(Definition definition, XSDNamedComponent component) {
     	String name = component.getName();
     	String tns = component.getTargetNamespace();
         List prefixes = getPrefixes(definition, tns);
@@ -260,6 +314,246 @@
         }
         return list;
     }
+    
+    public static int getParameterPattern(WSDLElement element) {
+    	int pattern = -1;
+    	
+    	if (element instanceof Operation) {
+    		pattern = getPattern((Operation) element);
+    		
+			PortType pt = (PortType) ((Operation) element).getContainer();
+    		if (pattern == -1) {
+    			// let's try to search other Operations in the same PortType
+    			Iterator opIt = pt.getEOperations().iterator();
+    			while (pattern == -1 && opIt.hasNext()) {
+    				Operation item = (Operation) opIt.next();
+    				if (!item.equals(element)) {
+    					pattern = getPattern(item);
+    				}
+    			}
+    		}
+
+    		if (pattern == -1) {
+    			// let's try to search other Operations in OTHER PortTypes
+    			Iterator ptIt = pt.getEnclosingDefinition().getEPortTypes().iterator();
+    			while (pattern == -1 && ptIt.hasNext()) {
+    				PortType item = (PortType) ptIt.next();
+    				if (!item.equals(pt)) {
+    					pattern = getPattern(item);
+    				}
+    			}
+    		}
+    	}
+    	else if (element instanceof PortType) {
+    		PortType pt = (PortType) element;
+    		pattern = getPattern(pt);
+    		
+    		if (pattern == -1) {
+    			// let's try to search other Operations in OTHER PortTypes
+    			Iterator ptIt = pt.getEnclosingDefinition().getEPortTypes().iterator();
+    			while (pattern == -1 && ptIt.hasNext()) {
+    				PortType item = (PortType) ptIt.next();
+    				if (!item.equals(pt)) {
+    					pattern = getPattern(item);
+    				}
+    			}
+    		}
+    	}
+    	
+    	if (pattern == -1) {
+    		pattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
+    	}
+
+    	return pattern;
+    }
+    
+    public static int getParameterPattern(WSDLElement element, boolean useInput) {
+    	int pattern = -1;
+    	
+    	if (element instanceof Operation) {
+    		Operation op = (Operation) element;
+    		if (useInput && op.getEInput() != null) {
+				pattern = getPattern(op.getEInput().getEMessage());
+			}
+			if (!useInput && op.getEOutput() != null){
+				pattern = getPattern(op.getEOutput().getEMessage());
+			}
+    		
+			PortType pt = (PortType) op.getContainer();
+    		if (pattern == -1) {
+    			// let's try to search other Operations in the same PortType
+    			Iterator opIt = pt.getEOperations().iterator();
+    			while (pattern == -1 && opIt.hasNext()) {
+    				Operation item = (Operation) opIt.next();
+    				if (!item.equals(element)) {
+    					if (useInput && item.getEInput() != null) {
+    						pattern = getPattern(item.getEInput().getEMessage());
+    					}
+    					if (!useInput && item.getEOutput() != null){
+    						pattern = getPattern(item.getEOutput().getEMessage());
+    					}
+    				}
+    			}
+    		}
+
+    		if (pattern == -1) {
+    			// let's try to search other Operations in OTHER PortTypes
+    			Iterator ptIt = pt.getEnclosingDefinition().getEPortTypes().iterator();
+    			while (pattern == -1 && ptIt.hasNext()) {
+    				PortType item = (PortType) ptIt.next();
+    				if (!item.equals(pt)) {
+    					pattern = getPattern(item, useInput);
+    				}
+    			}
+    		}
+    	}
+    	else if (element instanceof PortType) {
+    		PortType pt = (PortType) element;
+    		pattern = getPattern(pt, useInput);
+    		
+    		if (pattern == -1) {
+    			// let's try to search other Operations in OTHER PortTypes
+    			Iterator ptIt = pt.getEnclosingDefinition().getEPortTypes().iterator();
+    			while (pattern == -1 && ptIt.hasNext()) {
+    				PortType item = (PortType) ptIt.next();
+    				if (!item.equals(pt)) {
+    					pattern = getPattern(item, useInput);
+    				}
+    			}
+    		}
+    	}
+    	
+    	return pattern;
+    }
+    
+    private static int getPattern(PortType portType) {
+    	int pattern = -1;
+    	Iterator opIt = portType.getEOperations().iterator();
+    	while (pattern == -1 && opIt.hasNext()) {
+    		Operation op = (Operation) opIt.next();
+    		pattern = getPattern(op);
+    	}
+    	
+    	return pattern;
+    }
+
+    private static int getPattern(PortType portType, boolean useInput) {
+    	int pattern = -1;
+    	Iterator opIt = portType.getEOperations().iterator();
+    	while (pattern == -1 && opIt.hasNext()) {
+    		Operation op = (Operation) opIt.next();
+    		if (useInput && op.getEInput() != null) {
+    			pattern = getPattern(op.getEInput().getEMessage());
+    		}
+    		if (!useInput && op.getEOutput() != null) {
+    			pattern = getPattern(op.getEOutput().getEMessage());
+    		}
+    	}
+    	
+    	return pattern;
+    }
+    
+    private static int getPattern(Operation operation) {
+		int pattern = -1;
+		
+    	Input input = operation.getEInput();
+		Output output = operation.getEOutput();
+		List faults = operation.getEFaults();
+		
+		if (input != null) {
+			pattern = getPattern(input.getEMessage());
+		}
+		
+		if (pattern == -1 && output != null) {
+			pattern = getPattern(output.getEMessage());
+		}
+		
+		if (pattern == -1 && faults.size() > 0) {
+			Iterator faultIt = faults.iterator();
+			while (pattern == -1 && faultIt.hasNext()) {
+				Fault fault = (Fault) faultIt.next();
+				pattern = getPattern(fault.getEMessage());
+			}
+		}
+		
+		return pattern;
+    }
+    
+    private static int getPattern(Message message) {
+    	int pattern = -1;
+		if (message != null) {
+			Iterator parts = message.getEParts().iterator();
+			while (parts.hasNext()) {
+				Part part = (Part) parts.next();
+				if (part.getElementDeclaration() != null) {
+					pattern = AddBaseParameterCommand.PART_ELEMENT;
+
+					XSDElementDeclaration xsdElement = part.getElementDeclaration();
+					if (isSequencePattern(xsdElement.getTypeDefinition())) {
+						pattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;	
+					}					
+					break;
+				}
+				else if (part.getTypeDefinition() != null) {
+					pattern = AddBaseParameterCommand.PART_SIMPLETYPE;
+					
+					if (part.getTypeDefinition() instanceof XSDComplexTypeDefinition) {
+						pattern = AddBaseParameterCommand.PART_COMPLEXTYPE;
+						
+						XSDComplexTypeDefinition xsdType = (XSDComplexTypeDefinition) part.getTypeDefinition();
+						if (isSequencePattern(xsdType)) {
+							pattern = AddBaseParameterCommand.PART_COMPLEXTYPE_SEQ_ELEMENT; 
+						}
+					}
+					break;
+				}
+			}
+		}
+		
+		return pattern;
+    }
+    
+    private static boolean isSequencePattern(XSDTypeDefinition type) {
+    	boolean isSequencePattern = false;
+    	
+    	if (type instanceof XSDComplexTypeDefinition) {
+    		XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition) type;
+
+	    	if (complexType.getContent() instanceof XSDParticle) {
+				XSDParticle particle = (XSDParticle) complexType.getContent();
+				if (particle.getContent() instanceof XSDModelGroup) {
+					isSequencePattern = true;
+				}
+			}
+    	}
+    	
+    	return isSequencePattern;
+    }
+    
+    protected void formatChild(Element child)
+    {
+      if (child instanceof IDOMNode)
+      {
+        IDOMModel model = ((IDOMNode)child).getModel();
+        try
+        {
+          // tell the model that we are about to make a big model change
+          model.aboutToChangeModel();
+          
+          IStructuredFormatProcessor formatProcessor = new FormatProcessorXML();
+          formatProcessor.formatNode(child);
+        }
+        finally
+        {
+          // tell the model that we are done with the big model change
+          model.changedModel(); 
+        }
+      }
+    }
+    
+    public Part getNewlyAddedComponentPart() {
+    	return newPart;
+    }
 
 	protected abstract String getAnonymousXSDElementBaseName();
 	protected abstract String getNewXSDElementBaseName();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddExtensionElementCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddExtensionElementCommand.java
index 055bb22..1831640 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddExtensionElementCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddExtensionElementCommand.java
@@ -11,9 +11,9 @@
 package org.eclipse.wst.wsdl.ui.internal.commands;
 
 import org.eclipse.wst.wsdl.ExtensibleElement;
+import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceTable;
 import org.eclipse.wst.xsd.ui.internal.common.commands.AddExtensionCommand;
 import org.eclipse.xsd.XSDElementDeclaration;
-import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -36,18 +36,12 @@
     super.execute();
     Element parentElement = input.getElement();
     Document doc = parentElement.getOwnerDocument();
-    Element rootElement = doc.createElementNS(extensionsSchemaSpec.getNamespaceURI(), element.getName());
     
-//  TODO (cs) gotta fix this... need a simple way to compute a unique prefix
-//    createUniquePrefix(parentElement);
-    String prefix = "p"; 
-    rootElement.setPrefix(prefix);
-    newElement = rootElement;
+    Element newElement = doc.createElementNS(extensionsSchemaSpec.getNamespaceURI(), element.getName());
     
-    Attr nsURIAttribute = doc.createAttribute("xmlns:"+prefix);
-    nsURIAttribute.setValue(extensionsSchemaSpec.getNamespaceURI());
-    rootElement.setAttributeNode(nsURIAttribute);
-    parentElement.appendChild(rootElement);
+    String prefix = addNamespaceDeclarationIfRequired(doc.getDocumentElement(), "p", extensionsSchemaSpec.getNamespaceURI());
+    newElement.setPrefix(prefix);
+    parentElement.appendChild(newElement);
   }
 
   public void undo()
@@ -58,4 +52,28 @@
   {
     return newElement;
   }
+  
+  private String addNamespaceDeclarationIfRequired(Element rootElement, String prefixHint, String namespace)
+  {
+    String prefix = null;      
+    NamespaceTable namespaceTable = new NamespaceTable(rootElement.getOwnerDocument());
+    namespaceTable.addElement(rootElement);
+    prefix = namespaceTable.getPrefixForURI(namespace);
+    if (prefix == null)
+    { 
+      String basePrefix = prefixHint;
+      prefix = basePrefix;
+      String xmlnsColon = "xmlns:"; //$NON-NLS-1$
+      String attributeName = xmlnsColon + prefix;
+      int count = 0;
+      while (rootElement.getAttribute(attributeName) != null)
+      {
+        count++;
+        prefix = basePrefix + count;
+        attributeName = xmlnsColon + prefix;
+      }      
+      rootElement.setAttribute(attributeName, namespace);  
+    }    
+    return prefix;
+  }  
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddFaultParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddFaultParameterCommand.java
index ab8a4f4..928aec5 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddFaultParameterCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddFaultParameterCommand.java
@@ -10,15 +10,88 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.commands;
 
+import java.util.Iterator;
+import java.util.List;
+
 import org.eclipse.wst.wsdl.Fault;
+import org.eclipse.wst.wsdl.Message;
+import org.eclipse.wst.wsdl.MessageReference;
 import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDTypeDefinition;
 
 public class AddFaultParameterCommand extends AddBaseParameterCommand {
 	protected Fault fault;
 	private String faultName;
 	
+    public static int getParameterPatternForFault(Operation operation, Fault fault) {
+    	int pattern = -1;
+    	if (fault != null) {
+    		pattern = getPattern(fault.getEMessage());
+    	}
+		if (pattern == -1) {
+			pattern = AddBaseParameterCommand.getParameterPattern(operation);
+		}
+		
+		return pattern;
+    }
+    
+    private static int getPattern(Message message) {
+    	int pattern = -1;
+		if (message != null) {
+			Iterator parts = message.getEParts().iterator();
+			while (parts.hasNext()) {
+				Part part = (Part) parts.next();
+				if (part.getElementDeclaration() != null) {
+					pattern = AddBaseParameterCommand.PART_ELEMENT;
+
+					XSDElementDeclaration xsdElement = part.getElementDeclaration();
+					if (isSequencePattern(xsdElement.getTypeDefinition())) {
+						pattern = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;	
+					}					
+					break;
+				}
+				else if (part.getTypeDefinition() != null) {
+					pattern = AddBaseParameterCommand.PART_SIMPLETYPE;
+					
+					if (part.getTypeDefinition() instanceof XSDComplexTypeDefinition) {
+						pattern = AddBaseParameterCommand.PART_COMPLEXTYPE;
+						
+						XSDComplexTypeDefinition xsdType = (XSDComplexTypeDefinition) part.getTypeDefinition();
+						if (isSequencePattern(xsdType)) {
+							pattern = AddBaseParameterCommand.PART_COMPLEXTYPE_SEQ_ELEMENT; 
+						}
+					}
+					break;
+				}
+			}
+		}
+		
+		return pattern;
+    }
+    
+    private static boolean isSequencePattern(XSDTypeDefinition type) {
+    	boolean isSequencePattern = false;
+    	
+    	if (type instanceof XSDComplexTypeDefinition) {
+    		XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition) type;
+
+	    	if (complexType.getContent() instanceof XSDParticle) {
+				XSDParticle particle = (XSDParticle) complexType.getContent();
+				if (particle.getContent() instanceof XSDModelGroup) {
+					isSequencePattern = true;
+				}
+			}
+    	}
+    	
+    	return isSequencePattern;
+    }
+	
 	public AddFaultParameterCommand(Operation operation, Fault fault) {
 		super(operation, AddBaseParameterCommand.PART_ELEMENT);
 		this.fault = fault;
@@ -35,6 +108,7 @@
 		}
 		
 		Part part = createWSDLComponents(fault);
+		newPart = part;
 		
 		// Create necessary XSD Objects starting with the Part reference
 		newXSDElement = createXSDObjects(part);
@@ -59,6 +133,8 @@
 	protected String getWSDLMessageName() {
 		if (newWSDLMessageName == null) {
 			newWSDLMessageName = operation.getName() + "_" + getFaultName() + "Msg"; //$NON-NLS-1$ //$NON-NLS-2$
+			List usedNames = NameUtil.getUsedMessageNames(operation.getEnclosingDefinition());
+			newWSDLMessageName = NameUtil.getUniqueNameHelper(newWSDLMessageName, usedNames);
 		}
 		
 		return newWSDLMessageName;
@@ -84,4 +160,13 @@
 
 		return faultName;
 	}
+	
+	// TODO: remove this method and use getMessageReference() instead
+	public Fault getFault() {
+		return fault;
+	}
+	
+	public MessageReference getMessageReference() {
+		return fault;
+	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddInputParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddInputParameterCommand.java
index 1c451cf..2723f2f 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddInputParameterCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddInputParameterCommand.java
@@ -10,15 +10,38 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.commands;
 
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
 import org.eclipse.wst.wsdl.Input;
+import org.eclipse.wst.wsdl.Message;
+import org.eclipse.wst.wsdl.MessageReference;
 import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.ui.internal.adapters.visitor.W11FindInnerElementVisitor;
+import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
+import org.eclipse.wst.wsdl.ui.internal.util.XSDComponentHelper;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDTypeDefinition;
 
-public class AddInputParameterCommand extends AddBaseParameterCommand {	
+public class AddInputParameterCommand extends AddBaseParameterCommand {
+	protected boolean createXSDObjects = true;
+	protected boolean reuseExistingMessage = false;
+	private Input input;
 	public AddInputParameterCommand(Operation operation, int style) {
 		super(operation, style);
 	}
+
+	public AddInputParameterCommand(Operation operation, int style, boolean reuseMessage) {
+		super(operation, style);
+		reuseExistingMessage = reuseMessage;
+	}
 	
 	/*
 	 * 
@@ -26,22 +49,105 @@
 	public void run() {
 		Part part = null;
 		if (operation.getEInput() != null) {
-			part = createWSDLComponents(operation.getEInput());
+			input = operation.getEInput();
 		}
 		else {
 			AddInputCommand command = new AddInputCommand(operation, null);
 			command.run();
-			Input input = (Input) command.getWSDLElement();
+			input = (Input) command.getWSDLElement();
+		}
+		
+		if (style == AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT) {
+			part = createDocLitWrappedWSDLComponents(input);
+		}
+		else {
 			part = createWSDLComponents(input);
 		}
 		
+		newPart = part;
 		// Create necessary XSD Objects starting with the Part reference
-		newXSDElement = createXSDObjects(part);
+		if (createXSDObjects)
+			newXSDElement = createXSDObjects(part);
+	}
+	
+	protected Part createDocLitWrappedWSDLComponents(MessageReference messageRef) {
+		Message message = messageRef.getEMessage();
+		Part part = null;
+
+		if (reuseExistingMessage && message == null) {
+			// See if we can use an existing Message
+			Message existingMessage = null;
+			String messageName = getIdealMessageName(messageRef);
+			Iterator messages = messageRef.getEnclosingDefinition().getEMessages().iterator();
+			while (messages.hasNext()) {
+				Message item = (Message) messages.next();
+				QName itemName = item.getQName();
+				if (itemName != null && itemName.getLocalPart() != null && messageName.equals(itemName.getLocalPart())) {
+					existingMessage = item;
+					break;
+				}
+			}
+
+			if (existingMessage != null) {
+				if (existingMessage.getEParts().size() > 0) {
+					// See if existing Message has a Part referencing an XSD Element with the proper name
+					Part existingPart = (Part) existingMessage.getEParts().get(0);
+					if (!(existingPart.getName().equals(getDocLitWrappedPartName()))) {
+						message = null;
+					}
+					else {
+						XSDElementDeclaration existingElement = existingPart.getElementDeclaration();
+						if (existingElement != null && existingElement.getName().equals(operation.getName())) {
+							// There is an existing XSD Element with the proper name
+							// See if the XSD Element has an anonymous type with a sequence and an XSD Element
+							W11FindInnerElementVisitor visitor = new W11FindInnerElementVisitor();
+							XSDElementDeclaration innerElement = visitor.getInnerXSDElement(existingElement);
+							if (!innerElement.equals(existingElement)) {
+								// Found an existing inner XSD Element
+								createXSDObjects = false;
+
+								// set the MessageReference --> Message reference
+								messageRef.setEMessage(existingMessage);
+								message = existingMessage;
+							}
+						}
+					}
+				}
+			}
+		}
+
+		if (message == null || message.eContainer() == null) {
+			// Create Message
+			AddMessageCommand command = new AddMessageCommand(messageRef.getEnclosingDefinition(), getWSDLMessageName());
+			command.run();
+			message = (Message) command.getWSDLElement();
+			messageRef.setEMessage(message);
+		}
+
+
+		if (message.getEParts().size() == 0) {
+			// Create Part
+			String partName = getDocLitWrappedPartName();
+			AddPartCommand command = new AddPartCommand(message, partName);
+			command.run();
+			part = (Part) command.getWSDLElement();
+		}
+		else {
+			part = (Part) message.getEParts().get(0);
+		}
+		formatChild(message.getElement());
+
+		return part;
 	}
 	
 	protected String getAnonymousXSDElementBaseName() {
 		if (newAnonymousXSDElementName == null) {
-			newAnonymousXSDElementName = operation.getName() + "Request";  //$NON-NLS-1$
+			if (this.style == AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT) {
+				newAnonymousXSDElementName = operation.getName();
+			}
+			else {
+				newAnonymousXSDElementName = getWSDLPartName();
+			}
 		}
 		
 		return newAnonymousXSDElementName;
@@ -49,9 +155,10 @@
 	
 	protected String getNewXSDElementBaseName() {
 		if (newXSDElementName == null) {
-			newXSDElementName = "input"; //$NON-NLS-1$
+			newXSDElementName = "in"; //$NON-NLS-1$
+//			newXSDElementName = getWSDLPartName();
 		}
-		
+
 		return newXSDElementName;
 	}
 	
@@ -72,4 +179,107 @@
 		
 		return newWSDLPartName;
 	}
+	
+	// TODO: remove this method and use getMessageReference() instead
+	public Input getInput() {
+		return input;
+	}
+
+	protected XSDElementDeclaration createPartElementSeqElementPattern(Part part, XSDElementDeclaration partElement) {
+		XSDElementDeclaration returnedXSDElement = null;
+
+		XSDElementDeclaration originalElement = null;
+		XSDElementDeclaration anonXSDElement = null;
+
+		// Create the XSDElement (anonymous) referenced by the Part if necessary
+		if (partElement == null || partElement.getAnonymousTypeDefinition() == null) {
+			//Find an existing XSDElement to use if possible
+			XSDElementDeclaration existingElement = null;
+			String idealElementName = getAnonymousXSDElementBaseName();
+			XSDSchema schema = XSDComponentHelper.getXSDSchema(part.getEnclosingDefinition());
+			if (schema != null) {
+				Iterator it = schema.getElementDeclarations().iterator();
+				while (existingElement == null && it.hasNext()) {
+					XSDElementDeclaration item = (XSDElementDeclaration) it.next();
+					if (item.getName().equals(idealElementName)) {
+						// found an element we can use.  Confirm it has a doc-lit-wrapped pattern
+						// See if the XSD Element has an anonymous type with a sequence and an XSD Element
+						existingElement = item;
+
+						XSDTypeDefinition xsdType = item.getAnonymousTypeDefinition();
+						if (xsdType != null) {
+							List contents = xsdType.eContents();
+							if (contents.size() > 0 && contents.get(0) instanceof XSDParticle) {
+								XSDParticle particle = (XSDParticle) contents.get(0);
+								List particleContents = particle.eContents();
+								if (particleContents.size() > 0 && particleContents.get(0) instanceof XSDModelGroup) {
+									XSDModelGroup modelGroup = (XSDModelGroup) particleContents.get(0);
+									List modelContents = modelGroup.eContents();
+									if (modelContents.size() > 0 && modelContents.get(0) instanceof XSDParticle) {
+										XSDParticle innerParticle = (XSDParticle) modelContents.get(0);
+										List innerContents = innerParticle.eContents();
+										if (innerContents.size() > 0 && innerContents.get(0) instanceof XSDElementDeclaration) {
+											// inner XSD Element exists
+											// reuse existing element
+											String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), existingElement);
+											ComponentReferenceUtil.setComponentReference(part, false, prefixedName);
+											return existingElement;
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+
+			if (existingElement == null) {
+				anonXSDElement = XSDComponentHelper.createAnonymousXSDElementDefinition(getAnonymousXSDElementBaseName(), part);
+//				part.setElementDeclaration(anonXSDElement);
+				String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), anonXSDElement);
+				ComponentReferenceUtil.setComponentReference(part, false, prefixedName);
+				part.setTypeDefinition(null);
+
+				if (partElement != null && partElement.getSchema() != null) {
+					originalElement = partElement;
+					// Remove the 'original' XSDElement as a Global Element
+					partElement.getSchema().getContents().remove(partElement);
+				}
+			}
+			else {
+				anonXSDElement = existingElement;
+				// reuse existing element
+				String prefixedName = getPrefixedComponentName(part.getEnclosingDefinition(), existingElement);
+				ComponentReferenceUtil.setComponentReference(part, false, prefixedName);
+			}
+		}
+		else {
+			anonXSDElement = partElement;
+		}
+
+		// Create a new XSDElement
+		XSDModelGroup modelGroup = XSDComponentHelper.getXSDModelGroup(anonXSDElement, part.getEnclosingDefinition());
+		returnedXSDElement = XSDComponentHelper.createXSDElementDeclarationCommand(null, getNewXSDElementBaseName(), modelGroup);
+
+		// Add the newly created XSDElement to the ModelGroup
+		XSDComponentHelper.addXSDElementToModelGroup(anonXSDElement, returnedXSDElement);
+
+		// Add the 'original' XSDElement if it's type wasn't anonymous
+		if (originalElement != null) {
+			XSDComponentHelper.addXSDElementToModelGroup(anonXSDElement, originalElement);
+		}
+		formatChild(anonXSDElement.getElement());
+		return returnedXSDElement;
+	}
+	
+	private String getIdealMessageName(MessageReference messageRef) {	    
+		String messageName = "NewMessage"; //$NON-NLS-1$
+		messageName = operation.getName() + "Request";
+		
+		return messageName;
+	}
+	
+	public MessageReference getMessageReference() {
+		return input;
+	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddOutputParameterCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddOutputParameterCommand.java
index 0868d0f..664c7f2 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddOutputParameterCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddOutputParameterCommand.java
@@ -10,12 +10,15 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.commands;
 
+import org.eclipse.wst.wsdl.MessageReference;
 import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.Output;
 import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
 
 public class AddOutputParameterCommand extends AddBaseParameterCommand {
+	private Output output;
+	
 	public AddOutputParameterCommand(Operation operation, int style) {
 		super(operation, style);
 	}
@@ -26,22 +29,29 @@
 	public void run() {
 		Part part = null;
 		if (operation.getEOutput() != null) {
+			output = operation.getEOutput();
 			part = createWSDLComponents(operation.getEOutput());
 		}
 		else {
 			AddOutputCommand command = new AddOutputCommand(operation, null);
 			command.run();
-			Output output = (Output) command.getWSDLElement();
+			output = (Output) command.getWSDLElement();
 			part = createWSDLComponents(output);
 		}
 		
+		newPart = part;
 		// Create necessary XSD Objects starting with the Part reference
 		newXSDElement = createXSDObjects(part);
 	}
 	
 	protected String getAnonymousXSDElementBaseName() {
 		if (newAnonymousXSDElementName == null) {
-			newAnonymousXSDElementName = operation.getName() + "Response";  //$NON-NLS-1$
+			if (this.style == AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT) {
+				newAnonymousXSDElementName = operation.getName() + "Response"; //$NON-NLS-1$;
+			}
+			else {
+				newAnonymousXSDElementName = getWSDLPartName();
+			}
 		}
 		
 		return newAnonymousXSDElementName;
@@ -49,7 +59,8 @@
 	
 	protected String getNewXSDElementBaseName() {
 		if (newXSDElementName == null) {
-			newXSDElementName = "output"; //$NON-NLS-1$
+			newXSDElementName = "out"; //$NON-NLS-1$
+//			newXSDElementName = getWSDLPartName();
 		}
 		
 		return newXSDElementName;
@@ -72,4 +83,13 @@
 		
 		return newWSDLPartName;
 	}
+	
+	// TODO: remove this method and use getMessageReference() instead
+	public Output getOutput() {
+		return output;
+	}
+	
+	public MessageReference getMessageReference() {
+		return output;
+	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddPartCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddPartCommand.java
index b96db38..f4908a6 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddPartCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddPartCommand.java
@@ -22,7 +22,6 @@
 import org.eclipse.wst.wsdl.WSDLFactory;
 import org.eclipse.wst.wsdl.XSDSchemaExtensibilityElement;
 import org.eclipse.wst.wsdl.internal.impl.PartImpl;
-import org.eclipse.wst.wsdl.internal.impl.WSDLElementImpl;
 import org.eclipse.wst.wsdl.util.WSDLConstants;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
 import org.eclipse.xsd.XSDElementDeclaration;
@@ -159,7 +158,7 @@
     if (!definition.getNamespaces().containsValue(typeOrElementName.getNamespaceURI()))
     {
       definition.addNamespace("p",typeOrElementName.getNamespaceURI()); //$NON-NLS-1$
-      ((WSDLElementImpl)definition).updateElement(false);
+//      ((WSDLElementImpl)definition).updateElement(false);
     }
   }
   
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddXSDSchemaCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddXSDSchemaCommand.java
index 18c4a6f..2079164 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddXSDSchemaCommand.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/commands/AddXSDSchemaCommand.java
@@ -57,6 +57,10 @@
     // TBD - Check if multiple schemas with the same targetNamespace can co-exist.
     Types types = getTypes();
     types.addExtensibilityElement(extensibilityElement);
+    
+    if (definition.getETypes() == null) {
+    	definition.setETypes(types);
+    }
   }
 
   private Types getTypes()
@@ -67,9 +71,9 @@
       return types;
     else
     {
-      AddTypesCommand command = new AddTypesCommand(definition);
-      command.run();
-      return (Types)command.getWSDLElement();
+        types = WSDLFactory.eINSTANCE.createTypes();
+        types.setEnclosingDefinition(definition);
+        return types;
     }
   }
   
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/GenerateBindingOnSaveDialog.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/GenerateBindingOnSaveDialog.java
index 77a78cc..b755906 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/GenerateBindingOnSaveDialog.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/GenerateBindingOnSaveDialog.java
@@ -25,9 +25,9 @@
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
 
 public class GenerateBindingOnSaveDialog extends MessageDialog implements SelectionListener {
-	private static String dialogTitle = Messages.getString("_UI_REGEN_BINDINDS_ON_SAVE");		// TODO: Translations needed.... //$NON-NLS-1$
-	private static String dialogMessage = Messages.getString("_UI_REGEN_BINDINGS_ON_SAVE_QUESTIONMARK"); //$NON-NLS-1$
-	private static String[] buttons = new String[]{Messages.getString("_UI_YES_LABEL"), Messages.getString("_UI_NO_LABEL"), Messages.getString("_UI_CANCEL_LABEL")}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	private static String dialogTitle = Messages._UI_REGEN_BINDINDS_ON_SAVE;		// TODO: Translations needed.... //$NON-NLS-1$
+	private static String dialogMessage = Messages._UI_REGEN_BINDINGS_ON_SAVE_QUESTIONMARK; //$NON-NLS-1$
+	private static String[] buttons = new String[]{Messages._UI_YES_LABEL, Messages._UI_NO_LABEL, Messages._UI_CANCEL_LABEL}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 	
 	private Button rememberDecisionBox;
 	private boolean rememberDecision = false;
@@ -49,7 +49,7 @@
 		new Label(comp, SWT.NONE);
 		
 		rememberDecisionBox = new Button(comp, SWT.CHECK);
-		rememberDecisionBox.setText(Messages.getString("_UI_REMEMBER_MY_DECISION_LABEL"));	// TODO: Externalize... //$NON-NLS-1$
+		rememberDecisionBox.setText(Messages._UI_REMEMBER_MY_DECISION_LABEL);
 		rememberDecisionBox.addSelectionListener(this);
 
 		return parent;
@@ -58,9 +58,9 @@
 	private void storePromptPreference(int swtValue) {
 		// Store the new preference for displaying this dialog.
 		if (rememberDecision) {
-			WSDLEditorPlugin.getInstance().getPluginPreferences().setValue(Messages.getString("_UI_PREF_PAGE_PROMPT_REGEN_BINDING_ON_SAVE"), false); //$NON-NLS-1$
+			WSDLEditorPlugin.getInstance().getPluginPreferences().setValue(Messages._UI_PREF_PAGE_PROMPT_REGEN_BINDING_ON_SAVE, false); //$NON-NLS-1$
 		
-			String generateID = Messages.getString("_UI_PREF_PAGE_AUTO_REGENERATE_BINDING"); //$NON-NLS-1$
+			String generateID = Messages._UI_PREF_PAGE_AUTO_REGENERATE_BINDING; //$NON-NLS-1$
 			if (swtValue == SWT.YES) {
 				WSDLEditorPlugin.getInstance().getPluginPreferences().setValue(generateID, true);
 			}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/NewComponentDialog.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/NewComponentDialog.java
index a4cdacf..c273682 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/NewComponentDialog.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/NewComponentDialog.java
@@ -106,7 +106,7 @@
     composite.setLayoutData(gdFill);
 
     Label nameLabel = new Label(composite, SWT.NONE);
-    nameLabel.setText(Messages.getString("_UI_LABEL_NAME")); //$NON-NLS-1$
+    nameLabel.setText(Messages._UI_LABEL_NAME); //$NON-NLS-1$
 
     nameField = new Text(composite, SWT.SINGLE | SWT.BORDER);
     GridData gd= new GridData();
@@ -146,7 +146,7 @@
   	Iterator iterator = usedNames.iterator();
   	while (iterator.hasNext()) {
   		if (name.equalsIgnoreCase((String) iterator.next())) {
-  			return Messages.getString("_UI_LABEL_WARNING_DUPLICATE_NAME_EXISTS"); //$NON-NLS-1$
+  			return Messages._UI_LABEL_WARNING_DUPLICATE_NAME_EXISTS; //$NON-NLS-1$
   		}
   	}
   	
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/ProtocolComponentControl.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/ProtocolComponentControl.java
index a38b47d..d1231fd 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/ProtocolComponentControl.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/ProtocolComponentControl.java
@@ -29,11 +29,13 @@
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.part.PageBook;
 import org.eclipse.wst.wsdl.internal.generator.BaseGenerator;
 import org.eclipse.wst.wsdl.internal.generator.ContentGenerator;
 import org.eclipse.wst.wsdl.internal.generator.extension.ContentGeneratorExtensionFactoryRegistry;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.wizards.ContentGeneratorOptionsPage;
 
 public abstract class ProtocolComponentControl extends Composite implements SelectionListener, ModifyListener
@@ -57,7 +59,7 @@
   protected String name;
   protected String refName;
 
-  protected String UNSPECIFIED = Messages.getString("_UI_UNSPECIFIED"); //$NON-NLS-1$
+  protected String UNSPECIFIED = Messages._UI_UNSPECIFIED; //$NON-NLS-1$
   //protected BindingGenerator bindingGenerator;
 
   public ProtocolComponentControl(Composite parent, BaseGenerator generator, boolean showOverwriteButton)
@@ -86,8 +88,9 @@
     gdName.grabExcessHorizontalSpace= true;
     componentNameField.setLayoutData(gdName);
     componentNameField.addModifyListener(this);
+    PlatformUI.getWorkbench().getHelpSystem().setHelp(componentNameField, ASDEditorCSHelpIds.PROTOCOL_COMPONENT_NAME_TEXT);
     //createPlaceHolder(labelValueComposite);
-
+    
     // row 2
     //
     Label refNameLabel = new Label(labelValueComposite, SWT.NONE);
@@ -98,6 +101,7 @@
     gdRefName.grabExcessHorizontalSpace= true;
     refNameCombo.setLayoutData(gdRefName);
     refNameCombo.addSelectionListener(this);
+    PlatformUI.getWorkbench().getHelpSystem().setHelp(refNameCombo, ASDEditorCSHelpIds.PROTOCOL_COMPONENT_REF_COMBO);
 
     //refBrowseButton = new Button(labelValueComposite, SWT.NONE);
     //refBrowseButton.setText("  ...  ");
@@ -112,13 +116,14 @@
     // row 3
     //
     Label protocolLabel = new Label(labelValueComposite, SWT.NONE);
-    protocolLabel.setText(Messages.getString("_UI_LABEL_BINDING_PROTOCOL")); //$NON-NLS-1$
+    protocolLabel.setText(Messages._UI_LABEL_BINDING_PROTOCOL); //$NON-NLS-1$
     protocolCombo = new Combo(labelValueComposite, SWT.READ_ONLY);
     GridData gdProtocol= new GridData();
     gdProtocol.horizontalAlignment= GridData.FILL;
     gdProtocol.grabExcessHorizontalSpace= true;
     protocolCombo.setLayoutData(gdProtocol);
     protocolCombo.addSelectionListener(this);
+    PlatformUI.getWorkbench().getHelpSystem().setHelp(protocolCombo, ASDEditorCSHelpIds.PROTOCOL_COMPONENT_PROTOCOL_COMBO);
     //createPlaceHolder(labelValueComposite);
 
     // optional overwrite button
@@ -126,8 +131,9 @@
     if (showOverwriteButton)
     {
       overwriteButton = new Button(this, SWT.CHECK);
-      overwriteButton.setText(Messages.getString("_UI_CHECKBOX_OVERWRITE")); //$NON-NLS-1$
+      overwriteButton.setText(Messages._UI_CHECKBOX_OVERWRITE); //$NON-NLS-1$
       overwriteButton.addSelectionListener(this);
+      PlatformUI.getWorkbench().getHelpSystem().setHelp(overwriteButton, ASDEditorCSHelpIds.pROTOCOL_COMPONENT_OVERWRITE_CHECKBOX);
     }
 
     // protocol specific settings
@@ -164,7 +170,7 @@
 
   public String getComponentNameLabelText()
   {
-    return Messages.getString("_UI_LABEL_NAME"); //$NON-NLS-1$
+    return Messages._UI_LABEL_NAME; //$NON-NLS-1$
   }
 
   private GridData createGridData(boolean both, int span)
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/W11BrowseComponentDialog.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/W11BrowseComponentDialog.java
index b83e517..cc4a7e9 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/W11BrowseComponentDialog.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/W11BrowseComponentDialog.java
@@ -62,11 +62,11 @@
 	    	WSDLComponentDescriptionProvider descriptionProvider = new WSDLComponentDescriptionProvider();
 	    	final WSDLBindingSearchListProvider searchListProvider = new WSDLBindingSearchListProvider(definition);
 	    	ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
-	    	configuration.setFilterLabelText(Messages.getString("_UI_LABEL_NAME_FILTER"));
+	    	configuration.setFilterLabelText(Messages._UI_LABEL_NAME_FILTER);
 	        configuration.setDescriptionProvider(descriptionProvider);
 	        configuration.setSearchListProvider(searchListProvider);
 	        
-	        String dialogTitle = Messages.getString("_UI_TITLE_SPECIFY_BINDING"); //$NON-NLS-1$
+	        String dialogTitle = Messages._UI_TITLE_SPECIFY_BINDING; //$NON-NLS-1$
 	        dialog = new ScopedComponentSearchListDialog(shell, dialogTitle, configuration);
 	        
 	        IFile file = getFile();
@@ -80,12 +80,12 @@
 	      final WSDLInterfaceSearchListProvider searchListProvider = new WSDLInterfaceSearchListProvider(definition);
 	     
 	      ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
-	      configuration.setFilterLabelText(Messages.getString("_UI_LABEL_NAME_FILTER"));
+	      configuration.setFilterLabelText(Messages._UI_LABEL_NAME_FILTER);
 	      configuration.setDescriptionProvider(descriptionProvider);
 	      configuration.setSearchListProvider(searchListProvider);
 	      //configuration.setNewComponentHandler(new NewTypeButtonHandler());
 	      
-	      String dialogTitle = Messages.getString("_UI_TITLE_SPECIFY_PORTTYPE"); //$NON-NLS-1$
+	      String dialogTitle = Messages._UI_TITLE_SPECIFY_PORTTYPE; //$NON-NLS-1$
 	      dialog = new ScopedComponentSearchListDialog(shell, dialogTitle, configuration);
 	      
 	      IFile file = getFile();
@@ -99,12 +99,12 @@
 	      final WSDLMessageSearchListProvider searchListProvider = new WSDLMessageSearchListProvider(definition);
 	     
 	      ComponentSearchListDialogConfiguration configuration = new ComponentSearchListDialogConfiguration();
-	      configuration.setFilterLabelText(Messages.getString("_UI_LABEL_NAME_FILTER"));
+	      configuration.setFilterLabelText(Messages._UI_LABEL_NAME_FILTER);
 	      configuration.setDescriptionProvider(descriptionProvider);
 	      configuration.setSearchListProvider(searchListProvider);
 	      //configuration.setNewComponentHandler(new NewTypeButtonHandler());
 	      
-	      String dialogTitle = Messages.getString("_UI_TITLE_SPECIFY_MESSAGE"); //$NON-NLS-1$
+	      String dialogTitle = Messages._UI_TITLE_SPECIFY_MESSAGE; //$NON-NLS-1$
 	      dialog = new ScopedComponentSearchListDialog(shell, dialogTitle, configuration);
 	      
 	      IFile file = getFile();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/W11NewComponentDialog.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/W11NewComponentDialog.java
index a041c6b..c0219a7 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/W11NewComponentDialog.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/dialogs/W11NewComponentDialog.java
@@ -10,12 +10,17 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.dialogs;
 
+import java.util.List;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.common.core.search.pattern.QualifiedName;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.wsdl.Definition;
@@ -24,7 +29,7 @@
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddBindingCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddInterfaceCommand;
 import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11AddMessageCommand;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.search.IWSDLSearchConstants;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
@@ -46,21 +51,26 @@
 		
 		Shell shell = Display.getCurrent().getActiveShell();
 		if (qualifiedName == IWSDLSearchConstants.BINDING_META_NAME) {
-			String dialogTitle = Messages.getString("_UI_LABEL_NEW_BINDING"); //$NON-NLS-1$
+			String dialogTitle = Messages._UI_LABEL_NEW_BINDING; //$NON-NLS-1$
 			String baseName = NameUtil.buildUniqueBindingName(getDefinition(), "NewBinding"); //$NON-NLS-1$
-			dialog = new NewComponentDialog(shell, dialogTitle, baseName);
+			List usedNames = NameUtil.getUsedBindingNames(getDefinition());
+			dialog = new NewComponentDialog(shell, dialogTitle, baseName, usedNames);
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, ASDEditorCSHelpIds.NEW_BINDING_DIALOG);
 		}
 		else if (qualifiedName == IWSDLSearchConstants.PORT_TYPE_META_NAME) {
-			String dialogTitle = Messages.getString("_UI_LABEL_NEW_PORTTYPE"); //$NON-NLS-1$
+			String dialogTitle = Messages._UI_LABEL_NEW_PORTTYPE; //$NON-NLS-1$
 			String baseName = NameUtil.buildUniquePortTypeName(getDefinition(), "NewPortType"); //$NON-NLS-1$
-			dialog = new NewComponentDialog(shell, dialogTitle, baseName);
+			List usedNames = NameUtil.getUsedPortTypeNames(getDefinition());
+			dialog = new NewComponentDialog(shell, dialogTitle, baseName, usedNames);
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, ASDEditorCSHelpIds.NEW_PORTTYPE_DIALOG);
 		}
 		else if (qualifiedName == IWSDLSearchConstants.MESSAGE_META_NAME) {
-			String dialogTitle = Messages.getString("_UI_LABEL_NEW_MESSAGE"); //$NON-NLS-1$
+			String dialogTitle = Messages._UI_LABEL_NEW_MESSAGE; //$NON-NLS-1$
 			String baseName = NameUtil.buildUniqueMessageName(getDefinition(), "NewMessage"); //$NON-NLS-1$
-			dialog = new NewComponentDialog(shell, dialogTitle, baseName);
+			List usedNames = NameUtil.getUsedMessageNames(getDefinition());
+			dialog = new NewComponentDialog(shell, dialogTitle, baseName, usedNames);
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, ASDEditorCSHelpIds.NEW_MESSAGE_DIALOG);
 		}
-
 	}
 	
 	private Definition getDefinition() {
@@ -86,8 +96,7 @@
 			if (qualifiedName == IWSDLSearchConstants.BINDING_META_NAME) {
 				W11AddBindingCommand command = (W11AddBindingCommand) description.getAddBindingCommand();
 				command.setNewBindingName(dialog.getName());
-			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
-			    stack.execute(command);
+                execute(command);
 			    
 			    Object newWSDLObject = command.getNewBinding();
 			    newObject = (IASDObject) WSDLAdapterFactoryHelper.getInstance().adapt((Notifier) newWSDLObject);
@@ -95,8 +104,7 @@
 			else if (qualifiedName == IWSDLSearchConstants.PORT_TYPE_META_NAME) {
 				W11AddInterfaceCommand command = (W11AddInterfaceCommand) description.getAddInterfaceCommand();
 				command.setNewPortTypeName(dialog.getName());
-			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
-			    stack.execute(command);
+                execute(command);
 			    
 			    Object newWSDLObject = command.getNewPortType();
 			    newObject = (IASDObject) WSDLAdapterFactoryHelper.getInstance().adapt((Notifier) newWSDLObject);
@@ -104,8 +112,7 @@
 			else if (qualifiedName == IWSDLSearchConstants.MESSAGE_META_NAME) {
 				W11AddMessageCommand command = (W11AddMessageCommand) description.getAddMessageCommand();
 				command.setNewMessageName(dialog.getName());
-			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
-			    stack.execute(command);
+				execute(command);
 			    
 			    Object newWSDLObject = command.getNewMessage();
 			    newObject = (IASDObject) WSDLAdapterFactoryHelper.getInstance().adapt((Notifier) newWSDLObject);
@@ -114,4 +121,15 @@
 		
 		return rValue;
 	}
+    
+    private void execute(Command command) {
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+        if (page.getActiveEditor().getAdapter(CommandStack.class) != null) {
+            CommandStack stack = (CommandStack) page.getActiveEditor().getAdapter(CommandStack.class);
+            stack.execute(command);
+        }
+        else {
+            command.execute();
+        }
+    }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLBaseSearchListProvider.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLBaseSearchListProvider.java
index ca043c6..94fe343 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLBaseSearchListProvider.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLBaseSearchListProvider.java
@@ -11,20 +11,29 @@
 package org.eclipse.wst.wsdl.ui.internal.edit;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.scope.SearchScope;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentList;
 import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentSearchListProvider;
+import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Import;
 import org.eclipse.wst.wsdl.WSDLElement;
 import org.eclipse.wst.wsdl.internal.impl.ImportImpl;
 
 public abstract class WSDLBaseSearchListProvider implements IComponentSearchListProvider {
+	
+	protected Definition definition;
+	
 	protected void createWSDLComponentObjects(IComponentList list, List inputComponents, QualifiedName metaName) {
 		Iterator it = inputComponents.iterator();
 		while (it.hasNext()) {
@@ -64,4 +73,38 @@
 		
 		return list;
 	}
+	
+	//TODO (trung) make this one abstract when we are in development phase again
+	protected List getSearchingComponents(Definition importDefinition) {
+		return new ArrayList();
+	}
+	
+	protected void getImportedComponents(IComponentList list, QualifiedName metaName, HashMap exclusions) {		
+		Iterator importsIt = getWSDLFileImports(definition.getEImports()).iterator();
+		while (importsIt.hasNext()) {
+			Import importItem = (Import) importsIt.next();
+			String location = importItem.getDefinition().getDocumentBaseURI();
+			exclusions.put(location, Boolean.TRUE );
+			Definition importDefinition = importItem.getEDefinition();
+			if (importDefinition != null)
+			{
+		  	  List importedComponents = getSearchingComponents(importDefinition);			
+			  createWSDLComponentObjects(list, importedComponents, metaName);
+			}
+		}
+	}
+	
+	protected void searchOutsideCurrentResource(IComponentList list, SearchScope scope, QualifiedName metaName, Map exclusions) {
+		if (scope != null) {
+			WSDLComponentFinder finder = new WSDLComponentFinder(metaName);
+			Iterator it = finder.getWorkbenchResourceComponents(scope).iterator(); 
+			while (it.hasNext()) {
+				ComponentSpecification item = (ComponentSpecification) it.next();
+				String itemURI = URIHelper.getPlatformURI(item.getFile());
+				if (exclusions.get(itemURI) == null){
+					list.add(item);
+				}
+			}
+		}
+	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLBindingSearchListProvider.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLBindingSearchListProvider.java
index 70499f9..a43c715 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLBindingSearchListProvider.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLBindingSearchListProvider.java
@@ -10,19 +10,16 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.edit;
 
-import java.util.Iterator;
+import java.util.HashMap;
 import java.util.List;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.wst.common.core.search.scope.SearchScope;
 import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentList;
 import org.eclipse.wst.wsdl.Definition;
-import org.eclipse.wst.wsdl.Import;
 import org.eclipse.wst.wsdl.ui.internal.search.IWSDLSearchConstants;
 
 public class WSDLBindingSearchListProvider extends WSDLBaseSearchListProvider {
-	private Definition definition;
-	
 	public WSDLBindingSearchListProvider(Definition definition) {
 		this.definition = definition;
 	}
@@ -30,23 +27,18 @@
 	public void populateComponentList(IComponentList list, SearchScope scope, IProgressMonitor pm) {
 		// Grab explictly defined components
 		createWSDLComponentObjects(list, definition.getEBindings(), IWSDLSearchConstants.BINDING_META_NAME);
+
+		// Files excluded if we search with the search engine later
+		HashMap exclusions = new HashMap();	
+		exclusions.put(definition.getDocumentBaseURI(), Boolean.TRUE);		
 		
-		// Grab directly imported components
-		Iterator importsIt = getWSDLFileImports(definition.getEImports()).iterator();
-		while (importsIt.hasNext()) {
-			Import importItem = (Import) importsIt.next();
-			Definition importDefinition = importItem.getEDefinition();
-			List importedComponents = importDefinition.getEBindings();
-			
-			createWSDLComponentObjects(list, importedComponents, IWSDLSearchConstants.BINDING_META_NAME);
-		}
-		
-		if (scope != null) {
-			WSDLComponentFinder finder = new WSDLComponentFinder(IWSDLSearchConstants.BINDING_META_NAME);
-			Iterator it = finder.getWorkbenchResourceComponents(scope).iterator();
-			while (it.hasNext()) {
-				list.add(it.next());
-			}
-		}
+		// Grab directly imported components and update the exclusions 'list'
+		getImportedComponents(list, IWSDLSearchConstants.BINDING_META_NAME, exclusions);
+
+		searchOutsideCurrentResource(list, scope, IWSDLSearchConstants.BINDING_META_NAME, exclusions);
+	}
+
+	protected List getSearchingComponents(Definition importDefinition) {
+		return importDefinition.getEBindings();
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLInterfaceSearchListProvider.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLInterfaceSearchListProvider.java
index 1412c0a..f3e8268 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLInterfaceSearchListProvider.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLInterfaceSearchListProvider.java
@@ -10,19 +10,16 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.edit;
 
-import java.util.Iterator;
+import java.util.HashMap;
 import java.util.List;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.wst.common.core.search.scope.SearchScope;
 import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentList;
 import org.eclipse.wst.wsdl.Definition;
-import org.eclipse.wst.wsdl.Import;
 import org.eclipse.wst.wsdl.ui.internal.search.IWSDLSearchConstants;
 
 public class WSDLInterfaceSearchListProvider extends WSDLBaseSearchListProvider {
-	private Definition definition;
-	
 	public WSDLInterfaceSearchListProvider(Definition definition) {
 		this.definition = definition;
 	}
@@ -30,23 +27,18 @@
 	public void populateComponentList(IComponentList list, SearchScope scope, IProgressMonitor pm) {
 		// Grab explictly defined components
 		createWSDLComponentObjects(list, definition.getEPortTypes(), IWSDLSearchConstants.PORT_TYPE_META_NAME);
+
+		// Files excluded if we search with the search engine later
+		HashMap exclusions = new HashMap();	
+		exclusions.put(definition.getDocumentBaseURI(), Boolean.TRUE);		
 		
-		// Grab directly imported components
-		Iterator importsIt = getWSDLFileImports(definition.getEImports()).iterator();
-		while (importsIt.hasNext()) {
-			Import importItem = (Import) importsIt.next();
-			Definition importDefinition = importItem.getEDefinition();
-			List importedComponents = importDefinition.getEPortTypes();
-			
-			createWSDLComponentObjects(list, importedComponents, IWSDLSearchConstants.PORT_TYPE_META_NAME);
-		}
-		
-		if (scope != null) {
-			WSDLComponentFinder finder = new WSDLComponentFinder(IWSDLSearchConstants.PORT_TYPE_META_NAME);
-			Iterator it = finder.getWorkbenchResourceComponents(scope).iterator();
-			while (it.hasNext()) {
-				list.add(it.next());
-			}
-		}
+		// Grab directly imported components and update the exclusions 'list'
+		getImportedComponents(list, IWSDLSearchConstants.PORT_TYPE_META_NAME, exclusions);
+
+		searchOutsideCurrentResource(list, scope, IWSDLSearchConstants.PORT_TYPE_META_NAME, exclusions);
 	}
+
+	protected List getSearchingComponents(Definition importDefinition) {
+		return importDefinition.getEPortTypes();
+	}	
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLMessageSearchListProvider.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLMessageSearchListProvider.java
index 0fa2855..c28d4ec 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLMessageSearchListProvider.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLMessageSearchListProvider.java
@@ -10,42 +10,35 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.edit;
 
-import java.util.Iterator;
+import java.util.HashMap;
 import java.util.List;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.wst.common.core.search.scope.SearchScope;
 import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentList;
 import org.eclipse.wst.wsdl.Definition;
-import org.eclipse.wst.wsdl.Import;
 import org.eclipse.wst.wsdl.ui.internal.search.IWSDLSearchConstants;
 
 public class WSDLMessageSearchListProvider extends WSDLBaseSearchListProvider {
-	private Definition definition;
-	
 	public WSDLMessageSearchListProvider(Definition definition) {
 		this.definition = definition;
 	}
+	
 	public void populateComponentList(IComponentList list, SearchScope scope, IProgressMonitor pm) {
 		// Grab explictly defined components
 		createWSDLComponentObjects(list, definition.getEMessages(), IWSDLSearchConstants.MESSAGE_META_NAME);
+
+		// Files excluded if we search with the search engine later
+		HashMap exclusions = new HashMap();	
+		exclusions.put(definition.getDocumentBaseURI(), Boolean.TRUE);		
 		
-		// Grab directly imported components
-		Iterator importsIt = getWSDLFileImports(definition.getEImports()).iterator();
-		while (importsIt.hasNext()) {
-			Import importItem = (Import) importsIt.next();
-			Definition importDefinition = importItem.getEDefinition();
-			List importedComponents = importDefinition.getEMessages();
-			
-			createWSDLComponentObjects(list, importedComponents, IWSDLSearchConstants.MESSAGE_META_NAME);
-		}
+		// Grab directly imported components and update the exclusions 'list'
+		getImportedComponents(list, IWSDLSearchConstants.MESSAGE_META_NAME, exclusions);		
 		
-		if (scope != null) {
-			WSDLComponentFinder finder = new WSDLComponentFinder(IWSDLSearchConstants.MESSAGE_META_NAME);
-			Iterator it = finder.getWorkbenchResourceComponents(scope).iterator();
-			while (it.hasNext()) {
-				list.add(it.next());
-			}
-		}
+		searchOutsideCurrentResource(list, scope, IWSDLSearchConstants.MESSAGE_META_NAME, exclusions);
 	}
+
+	protected List getSearchingComponents(Definition importDefinition) {
+		return importDefinition.getEMessages();
+	}	
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLXSDElementReferenceEditManager.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLXSDElementReferenceEditManager.java
index e211ca8..272880b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLXSDElementReferenceEditManager.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLXSDElementReferenceEditManager.java
@@ -20,11 +20,11 @@
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.common.ui.internal.search.dialogs.IComponentList;
 import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Type;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddXSDElementDeclarationCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.WSDLSetComponentHelper;
-import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
-import org.eclipse.wst.xsd.ui.internal.dialogs.NewTypeDialog;
 import org.eclipse.wst.xsd.ui.internal.editor.XSDElementReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
 import org.eclipse.xsd.XSDSchema;
@@ -34,11 +34,13 @@
 		super(currentFile, schemas);
 	}
 	
-	public IComponentDialog getNewDialog()
-	{
-		return new NewTypeDialog();
+	public WSDLXSDElementReferenceEditManager(IFile currentFile, XSDSchema[] schemas, IDescription description) {
+		super(currentFile, null);
+		if (schemas == null || schemas.length == 0) {
+			setSchemas(getInlineSchemas(description));
+		}
 	}
-	
+
 	public void modifyComponentReference(Object referencingObject, ComponentSpecification component) {
 		if (referencingObject instanceof Adapter) {
 			Adapter adapter = (Adapter) referencingObject;
@@ -87,6 +89,17 @@
 		this.schemas = schemas;
 	}
 	
+	private XSDSchema[] getInlineSchemas(IDescription description) {
+		List types = description.getTypes();
+		XSDSchema[] schemas = new XSDSchema[types.size()];
+		for (int index = 0; index < types.size(); index++) {
+			W11Type type = (W11Type) types.get(index);
+			schemas[index] = (XSDSchema) type.getTarget();
+		}
+		
+		return schemas;
+	}
+	
 	private class ElementComponentList implements IComponentList {
 		private List list = new ArrayList();
 		
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLXSDTypeReferenceEditManager.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLXSDTypeReferenceEditManager.java
index b14db45..620e533 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLXSDTypeReferenceEditManager.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/edit/WSDLXSDTypeReferenceEditManager.java
@@ -10,14 +10,20 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.edit;
 
+import java.util.List;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Type;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddXSDTypeDefinitionCommand;
 import org.eclipse.wst.wsdl.ui.internal.util.WSDLSetComponentHelper;
+import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
+import org.eclipse.wst.xsd.ui.internal.dialogs.NewTypeDialog;
 import org.eclipse.wst.xsd.ui.internal.editor.XSDTypeReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.search.IXSDSearchConstants;
 import org.eclipse.xsd.XSDAttributeUse;
@@ -30,6 +36,27 @@
 		super(currentFile, schemas);
 	}
 	
+	public WSDLXSDTypeReferenceEditManager(IFile currentFile, XSDSchema[] schemas, IDescription description) {
+		super(currentFile, null);
+		if (schemas == null || schemas.length == 0) {
+			setSchemas(getInlineSchemas(description));
+		}
+	}
+	
+	public IComponentDialog getNewDialog()
+	{
+		if (schemas.length > 0) {
+			NewTypeDialog newTypeDialog = new NewTypeDialog(schemas[0]);
+			newTypeDialog.allowAnonymousType(false);
+			return newTypeDialog;
+		}
+		else {
+			NewTypeDialog newTypeDialog = new NewTypeDialog();
+			newTypeDialog.allowAnonymousType(false);
+			return newTypeDialog;
+		}
+	}	
+
 	public void modifyComponentReference(Object referencingObject, ComponentSpecification component) {
 		if (referencingObject instanceof Adapter) {
 			Adapter adapter = (Adapter) referencingObject;
@@ -70,4 +97,15 @@
 	public void setSchemas(XSDSchema[] schemas) {
 		this.schemas = schemas;
 	}
+	
+	private XSDSchema[] getInlineSchemas(IDescription description) {
+		List types = description.getTypes();
+		XSDSchema[] schemas = new XSDSchema[types.size()];
+		for (int index = 0; index < types.size(); index++) {
+			W11Type type = (W11Type) types.get(index);
+			schemas[index] = (XSDSchema) type.getTarget();
+		}
+		
+		return schemas;
+	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/extensions/INodeReconciler.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/extensions/INodeReconciler.java
index 63b2547..4692d3e 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/extensions/INodeReconciler.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/extensions/INodeReconciler.java
@@ -12,7 +12,9 @@
 
 import org.w3c.dom.Element;
 
-
+/**
+ * @depreacted
+ */
 public interface INodeReconciler
 {
   public void notifyChanged(Object modelObject, Element element, int eventType, Object feature, Object oldValue, Object newValue, int index);                                         
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/filter/HttpExtensiblityElementFilter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/filter/HttpExtensiblityElementFilter.java
index 25142df..c608f66 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/filter/HttpExtensiblityElementFilter.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/filter/HttpExtensiblityElementFilter.java
@@ -21,7 +21,7 @@
 	
   public boolean isValidContext(Element parentElement, String localName)
   {
-  	boolean result = false;
+  	boolean result = true;   
     
     String parentElementName = parentElement.getLocalName();
 	if (parentElementName.equals("binding")) //$NON-NLS-1$
@@ -45,8 +45,7 @@
 	else if (parentElementName.equals("port")) //$NON-NLS-1$
 	{
 	  result = localName.equals("address"); 	   //$NON-NLS-1$
-	}	
-    
+	}	    
     return result;
   }     
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/filter/SoapExtensiblityElementFilter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/filter/SoapExtensiblityElementFilter.java
index 3500d08..ade3eb7 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/filter/SoapExtensiblityElementFilter.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/filter/SoapExtensiblityElementFilter.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.filter;
 
+import org.eclipse.wst.wsdl.util.WSDLConstants;
 import org.w3c.dom.Element;
 
 public class SoapExtensiblityElementFilter implements ExtensiblityElementFilter
@@ -20,32 +21,41 @@
 	
   public boolean isValidContext(Element parentElement, String localName)
   {
-  	boolean result = false;
+  	boolean result = true;
 
-    String parentElementName = parentElement.getLocalName();
-	if (parentElementName.equals("binding")) //$NON-NLS-1$
-	{
-	  result = localName.equals("binding"); 	   //$NON-NLS-1$
-	}	  
-	else if (parentElementName.equals("operation")) //$NON-NLS-1$
-	{
-	  result = localName.equals("operation");  //$NON-NLS-1$
-	}
-	else if (parentElementName.equals("input") ||  //$NON-NLS-1$
-	         parentElementName.equals("output")) //$NON-NLS-1$
-	{
-	  result = localName.equals("body") ||  //$NON-NLS-1$
-	           localName.equals("header"); 	   //$NON-NLS-1$
-	}	
-	else if (parentElementName.equals("fault")) //$NON-NLS-1$
-	{
-	  result = localName.equals("fault"); 	   //$NON-NLS-1$
-	}
-	else if (parentElementName.equals("port")) //$NON-NLS-1$
-	{
-	  result = localName.equals("address"); 	   //$NON-NLS-1$
-	}	
-
+    String parentElementName = parentElement.getLocalName();    
+    if (parentElement.getNamespaceURI().equals(WSDLConstants.WSDL_NAMESPACE_URI))
+    { 
+      // here we assume the parent element is the WSDL binding 
+      // skeleton and that the 'localName' is the SOAP extension element
+      //      
+      if (parentElementName.equals("binding")) //$NON-NLS-1$
+      {
+        result = localName.equals("binding"); 	   //$NON-NLS-1$
+      }	  
+      else if (parentElementName.equals("operation")) //$NON-NLS-1$
+      {
+        result = localName.equals("operation");  //$NON-NLS-1$
+      }
+      else if (parentElementName.equals("input") ||  //$NON-NLS-1$
+          parentElementName.equals("output")) //$NON-NLS-1$
+      {
+        result = localName.equals("body") ||  //$NON-NLS-1$
+        localName.equals("header"); 	   //$NON-NLS-1$
+      }	
+      else if (parentElementName.equals("fault")) //$NON-NLS-1$
+      {
+        result = localName.equals("fault"); 	   //$NON-NLS-1$
+      }
+      else if (parentElementName.equals("port")) //$NON-NLS-1$
+      {
+        result = localName.equals("address"); 	   //$NON-NLS-1$
+      }
+      else
+      {
+        result = false;        
+      }  
+    }    
     return result;
   }     
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/icons/bind_asct_val_not_obj.gif b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/icons/bind_asct_val_not_obj.gif
new file mode 100644
index 0000000..f1c7310
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/icons/bind_asct_val_not_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/icons/bind_asct_val_obj.gif b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/icons/bind_asct_val_obj.gif
new file mode 100644
index 0000000..62ad9be
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/icons/bind_asct_val_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/icons/quickassist.gif b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/icons/quickassist.gif
new file mode 100644
index 0000000..94ae2a0
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/icons/quickassist.gif
Binary files differ
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/messages.properties b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/messages.properties
index eaef358..c79360d 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/messages.properties
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/messages.properties
@@ -23,6 +23,9 @@
 _UI_ACTION_ADD_IMPORT=Add Import
 _UI_ACTION_ADD_BINDING=Add Binding
 _UI_ACTION_ADD_PART=Add Part
+_UI_ACTION_REORDER_PART=Reorder Part
+_UI_ACTION_REORDER_MESSAGE_REFERENCE=Reorder Message Reference
+_UI_ACTION_OPEN_IN_NEW_EDITOR=Open In New Editor
 _UI_ACTION_EXISTING_MESSAGE=Existing Message...
 _UI_ACTION_EXISTING_ELEMENT=Existing Element...
 _UI_ERROR_NAMESPACE_INVALID=The target namespace is invalid
@@ -64,7 +67,8 @@
 _UI_FOLDER_IMPORTS=Imports
 _UI_FOLDER_SERVICES=Services
 _UI_FOLDER_BINDINGS=Bindings
-_UI_FOLDER_PORTTYPES=Interfaces
+_UI_FOLDER_INTERFACES=Interfaces
+_UI_FOLDER_PORTTYPES=PortTypes
 _UI_FOLDER_MESSAGES=Messages
 _UI_ACTION_NEW_MESSAGE=New Message...
 _UI_ACTION_NEW_ELEMENT=New Element...
@@ -74,6 +78,7 @@
 _UI_CHECKBOX_OVERWRITE=Overwrite existing binding information
 _UI_ACTION_SET_PORTTYPE=Set PortType
 _UI_ACTION_ADD=Add
+_UI_ACTION_OPEN_IMPORT=Open Import
 _UI_UNSPECIFIED=(unspecified)
 _UI_LABEL_NAME=Name
 _UI_LABEL_TYPE=Type
@@ -85,6 +90,8 @@
 _UI_LABEL_MESSAGE=Message
 _UI_LABEL_REMOVE=Remove
 _UI_TITLE_SELECT=Select
+_UI_TITLE_SELECT_FILE = Select File
+_UI_DESCRIPTION_SELECT_WSDL_OR_XSD = Select a WSDL or XSD file to import.
 _UI_TITLE_OPTIONS=Options
 _UI_YES_LABEL=Yes
 _UI_PORT_TYPE=Port Type
@@ -96,4 +103,16 @@
 _WARN_NAME_MUST_CONTAIN_AT_LEAST_ONE_CHAR=IWAX1415W Name field must contain at least one character
 _WARN_NAME_HAS_SPACE=IWAX1402W Name field cannot contain a space
 _WARN_NAME_INVALID_FIRST=IWAX1403W First character in name field must be one of the following ('_', ':', 'letter')
-_WARN_NAME_INVALID_CHAR=IWAX1404W Name field contains invalid character ('
\ No newline at end of file
+_WARN_NAME_INVALID_CHAR=IWAX1404W Name field contains invalid character ('
+_WARN_WSI_COMPLIANCE_SOAP_PROTOCOL=WS-I compliance warning: protocol should be SOAP
+_ERROR_WSI_COMPLIANCE_SOAP_PROTOCOL=WS-I compliance error: protocol must be SOAP
+_WARN_WSI_COMPLIANCE_RPC_ENCODING=WS-I compliance warning: binding should not be rpc encoded
+_ERROR_WSI_COMPLIANCE_RPC_ENCODING=WS-I compliance error: binding cannot be rpc encoded
+_WSI_COMPLIANCE_LINK_TEXT=Modify project compliance setting
+
+_UI_LABEL_UNDEFINED_ARG1={0} undefined
+_UI_LABEL_UNDEFINED_ARG2={0} undefined: '{1}'
+_UI_LABEL_OR_UNDEFINED_ARG2={0} or {1} undefined
+_UI_LABEL_OR_UNDEFINED_ARG3={0} or {1} undefined: '{2}'
+_UI_LABEL_NO_OBJECT_SPECIFIED_ARG1=no {0} specified
+_UI_LABEL_NO_PARAMETERS_SPECIFIED=no parameters specified
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/EditorModeSectionFilter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/EditorModeSectionFilter.java
new file mode 100644
index 0000000..88a70dd
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/EditorModeSectionFilter.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.properties.sections;
+
+public abstract class EditorModeSectionFilter
+{
+  public abstract boolean isApplicable(Class sectionClass, Object object);
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ExtensionsSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ExtensionsSection.java
index bf47483..56dab89 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ExtensionsSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ExtensionsSection.java
@@ -16,6 +16,7 @@
 import java.util.List;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.gef.commands.Command;
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.Viewer;
@@ -26,20 +27,29 @@
 import org.eclipse.wst.wsdl.ExtensibleElement;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.AbstractModelCollection;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddExtensionElementCommand;
 import org.eclipse.wst.wsdl.ui.internal.filter.ExtensiblityElementFilter;
+import org.eclipse.wst.wsdl.ui.internal.text.WSDLModelAdapter;
+import org.eclipse.wst.xml.core.internal.document.ElementImpl;
 import org.eclipse.wst.xsd.ui.internal.common.commands.AddExtensionCommand;
+import org.eclipse.wst.xsd.ui.internal.common.commands.RemoveExtensionNodeCommand;
 import org.eclipse.wst.xsd.ui.internal.common.properties.sections.AbstractExtensionsSection;
 import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.AddExtensionsComponentDialog;
 import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.DOMExtensionTreeContentProvider;
 import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.DOMExtensionTreeLabelProvider;
 import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.ExtensionsSchemasRegistry;
+import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.custom.NodeCustomizationRegistry;
+import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin;
 import org.eclipse.xsd.XSDAttributeDeclaration;
 import org.eclipse.xsd.XSDElementDeclaration;
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 
 public class W11ExtensionsSection extends AbstractExtensionsSection
 {
+  WSDLModelAdapter modelAdapter;
+  
   public W11ExtensionsSection()
   {
     super();
@@ -50,12 +60,13 @@
   protected AddExtensionCommand getAddExtensionCommand(Object o)
   {
     AddExtensionCommand addExtensionCommand = null;
-    if (input instanceof ExtensibleElement)
+    ExtensibleElement extensibleElement = getExtensibleElement(input);
+    if (extensibleElement != null)
     {  
       if (o instanceof XSDElementDeclaration)
       {
         XSDElementDeclaration element = (XSDElementDeclaration) o;
-        addExtensionCommand = new AddExtensionElementCommand(Messages.getString("_UI_LABEL_ADD_EXTENSION_ELEMENT"), (ExtensibleElement)input, element); //$NON-NLS-1$
+        addExtensionCommand = new AddExtensionElementCommand(Messages._UI_LABEL_ADD_EXTENSION_ELEMENT, extensibleElement, element); //$NON-NLS-1$
       }
       else if (o instanceof XSDAttributeDeclaration)
       {
@@ -67,53 +78,82 @@
 
   protected Command getRemoveExtensionCommand(Object o)
   {
-    // TODO Auto-generated method stub
+    if (o instanceof Node)
+    {
+      return new RemoveExtensionNodeCommand("remove", (Node)o);
+    }  
     return null;
   }
   
+  
   // TODO (cs) the AbstractExtensionsSection is polluted with XSD specic stuff
   // need to clean that up!!
   // TODO (cs) we should avoid referencing WSDL model objects ... go thru facade instead
   public void setInput(IWorkbenchPart part, ISelection selection)
-  {
+  {    
     super.setInput(part, selection);
-    if (input instanceof Adapter)
+    isReadOnly = true;    
+    ExtensibleElement extensibleElement = getExtensibleElement(input);
+    if (extensibleElement != null)
+    {    
+      Element element = extensibleElement.getElement();
+      if (element instanceof ElementImpl)
+      {  
+        isReadOnly = false;
+        modelAdapter = WSDLModelAdapter.lookupOrCreateModelAdapter(element.getOwnerDocument());
+        modelAdapter.getModelReconcileAdapter().addListener(internalNodeAdapter);
+      }         
+    }       
+    addButton.setEnabled(!isReadOnly);
+    removeButton.setEnabled(!isReadOnly);         
+  }
+  
+  public void dispose()
+  {
+    super.dispose();
+    if (modelAdapter != null)
     {
-      input = ((Adapter)input).getTarget();
+      modelAdapter.getModelReconcileAdapter().removeListener(internalNodeAdapter);
+    }  
+  }
+  
+  // TODO (cs) in the future we need to 'fix' things so that we can rid of this method
+  // we need a way to do all of this via the facade so that we don't have any direct 
+  // dependency on the WSDL1.1 model./ Similarly this class shouldn't need to 'know'
+  // about AbstractModelCollection this is an underlying detail that needs to be hidden
+  // 
+  private static ExtensibleElement getExtensibleElement(Object o)
+  {
+    if (o instanceof AbstractModelCollection)
+    {         
+      o = ((AbstractModelCollection)o).getModel();
+    }  
+    if (o instanceof Adapter)
+    {
+      // TODO (cs) we need a way to do all of this via the facade
+      // so that we don't have any direct dependency on the WSDL1.1 model
+      // of course at the moment we call this class the W11ExtensionSections
+      // so that's not a problem.  In the future though we'll want to reuse this 
+      // class for WSDL 2.0.
+      //       
+      o = ((Adapter)o).getTarget();
+    }      
+    if (o instanceof ExtensibleElement)
+    {
+      return (ExtensibleElement)o;
     }
-    if (input instanceof ExtensibleElement)
-    {
-      isReadOnly = false;
-      //addButton.setEnabled(true);
-      //removeButton.setEnabled(true);      
-    }  
-    else
-    {
-      isReadOnly = true;      
-      //addButton.setEnabled(false);  
-      //removeButton.setEnabled(false); 
-    }  
+    return null;
   }
 
   protected AddExtensionsComponentDialog createAddExtensionsComponentDialog()
-  {
-    // IDEA (cs) we need a way to do all of this via the adapter
-    // so that we don't have any direct dependency on the WSDL1.1 model
-    // of course at the moment we call this class the W11ExtensionSections
-    // so that's not a problem.  In the future though we'll want to reuse this 
-    // class for WSDL 2.0.
-    //
-    if (input instanceof Adapter)
-    {
-      input = ((Adapter)input).getTarget();
-    }
-    if (input instanceof ExtensibleElement)
-    {    
-      ExtensibleElement extensibleElement = (ExtensibleElement)input;
+  {    
+    ExtensibleElement extensibleElement = getExtensibleElement(input);
+    if (extensibleElement != null)
+    {  
       AddExtensionsComponentDialog dialog = new AddExtensionsComponentDialog(composite.getShell(), getExtensionsSchemasRegistry());   
       dialog.addElementsTableFilter(new AddExtensionsComponentDialogFilter(extensibleElement.getElement()));
       return dialog;
-    }
+    }      
     return null;
   }
 
@@ -121,19 +161,20 @@
   {
     return WSDLEditorPlugin.getInstance().getExtensionsSchemasRegistry();
   }
+  
+  protected IPreferenceStore getPrefStore()
+  {
+	return WSDLEditorPlugin.getInstance().getPreferenceStore();
+  }
  
   static class WSDLExtensionTreeContentProvider extends DOMExtensionTreeContentProvider
   {
     public java.lang.Object[] getElements(java.lang.Object inputElement)
     {         
-      if (inputElement instanceof Adapter)
+      ExtensibleElement extensibleElement = getExtensibleElement(inputElement);
+      if (extensibleElement != null)
       {
-        inputElement = ((Adapter)inputElement).getTarget();
-      }  
-      if (inputElement instanceof ExtensibleElement)
-      {        
-        List domElementList = new ArrayList();
-        ExtensibleElement extensibleElement = (ExtensibleElement) inputElement;        
+        List domElementList = new ArrayList();     
         for (Iterator i = extensibleElement.getExtensibilityElements().iterator(); i.hasNext(); )
         {
           ExtensibilityElement element = (ExtensibilityElement)i.next();
@@ -148,28 +189,37 @@
   
   static class WSDLExtensionTreeLabelProvider extends DOMExtensionTreeLabelProvider
   {
+    private ILabelProvider getLabelProvider(Node node)
+    {
+      String namespace = node.getNamespaceURI();      
+      if (namespace != null)
+      {  
+        NodeCustomizationRegistry registry = XSDEditorPlugin.getDefault().getNodeCustomizationRegistry();      
+        return registry.getLabelProvider(namespace);
+      }        
+      return null;
+    }
+    
     public Image getImage(Object object)
     {
       if (object instanceof Element)
       {
         Element element = (Element)object;
-        ExtensionsSchemasRegistry registry = WSDLEditorPlugin.getInstance().getExtensionsSchemasRegistry();      
-        ILabelProvider provider = registry.getLabelProvider(element);
+        ILabelProvider provider = getLabelProvider(element);
         if (provider != null)
         {
           return provider.getImage(element);
-        }
+        }          
       }
       return super.getImage(object);
     }
 
-    public String Text(Object object)
+    public String getText(Object object)
     {
       if (object instanceof Element)
       {
         Element element = (Element)object;
-        ExtensionsSchemasRegistry registry = WSDLEditorPlugin.getInstance().getExtensionsSchemasRegistry();      
-        ILabelProvider provider = registry.getLabelProvider(element);
+        ILabelProvider provider = getLabelProvider(element);
         if (provider != null)
         {
           return provider.getText(element);
@@ -206,4 +256,10 @@
       return true;
     }
   }
+  
+  protected boolean isTreeViewerInputElement(Element element)
+  {
+    ExtensibleElement extensibleElement = getExtensibleElement(input);
+    return extensibleElement != null && extensibleElement.getElement() == element;
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11MessageReferenceSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11MessageReferenceSection.java
index c4a0369..3b08b38 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11MessageReferenceSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11MessageReferenceSection.java
@@ -18,26 +18,28 @@
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.wsdl.MessageReference;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11MessageReference;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.properties.sections.NameSection;
-import org.eclipse.wst.wsdl.ui.internal.edit.W11MessageReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 
 public class W11MessageReferenceSection extends NameSection {
-	protected static String NEW_STRING = Messages.getString("_UI_BUTTON_NEW"); //$NON-NLS-1$
-	protected static String BROWSE_STRING = Messages.getString("_UI_BUTTON_BROWSE"); //$NON-NLS-1$
+	protected static String NEW_STRING = Messages._UI_BUTTON_NEW; //$NON-NLS-1$
+	protected static String BROWSE_STRING = Messages._UI_BUTTON_BROWSE; //$NON-NLS-1$
 	
 	protected CLabel comboLabel; 
 	protected CCombo combo;
+	protected ComponentReferenceEditManager refManager;
 
 	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
 	{
@@ -53,8 +55,9 @@
 		combo.setBackground(composite.getBackground());
 		combo.addListener(SWT.Modify, this);
 		combo.addSelectionListener(this);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(combo, ASDEditorCSHelpIds.PROPERTIES_MESSAGE_REF_MESSAGE_COMBO);
 		
-		comboLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_LABEL_MESSAGE") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		comboLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_MESSAGE + ":"); //$NON-NLS-1$ //$NON-NLS-2$
 		data = new FormData();
 		data.left = new FormAttachment(0, 0);
 		data.right = new FormAttachment(combo, -ITabbedPropertyConstants.HSPACE);
@@ -77,7 +80,7 @@
 		if (nameText.isFocusControl()) {
 			return;
 		}
-		setListenerEnabled(true);
+		setListenerEnabled(false);
 		String refName = ""; //$NON-NLS-1$
 		
 		combo.removeAll();
@@ -126,8 +129,13 @@
 	}
 	
 	protected ComponentReferenceEditManager getComponentReferenceEditManager() {
-		ASDMultiPageEditor editor = (ASDMultiPageEditor) ASDEditorPlugin.getActiveEditor();
-		return (ComponentReferenceEditManager) editor.getAdapter(W11MessageReferenceEditManager.class);
+		if (refManager != null) {
+			return refManager;
+		}
+
+		refManager = ReferenceEditManagerHelper.getMessageReferenceEditManager((IASDObject) getModel());
+        
+		return refManager;
 	}
 
 	
@@ -136,6 +144,21 @@
 		return false;
 	}
 	
+	public void handleEvent(Event event)
+	{
+		if (event.widget == combo) {
+			if (isListenerEnabled() && !isInDoHandle) 
+			{
+				isInDoHandle = true;
+				startDelayedEvent(event);
+				isInDoHandle = false;
+			}
+		}
+		else {
+			super.handleEvent(event);
+		}
+	}
+	
 	public void doHandleEvent(Event event)
 	{
 		super.doHandleEvent(event);
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ParameterSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ParameterSection.java
index 205ecf5..8af01ab 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ParameterSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ParameterSection.java
@@ -16,53 +16,59 @@
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.layout.FormAttachment;
 import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
 import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
 import org.eclipse.wst.wsdl.ui.internal.asd.properties.sections.ParameterSection;
 import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
-import org.eclipse.wst.xsd.ui.internal.editor.XSDElementReferenceEditManager;
 
 public class W11ParameterSection extends ParameterSection {
 	protected Button typeRadio;
 	protected Button elementRadio;
+	protected ComponentReferenceEditManager refManager;
 	
 	public void createControlArea()	{
 		super.createControlArea();
 		FormData data;
 		
-		typeRadio = getWidgetFactory().createButton(composite, Messages.getString("_UI_LABEL_TYPE"), SWT.RADIO); //$NON-NLS-1$
-		elementRadio = getWidgetFactory().createButton(composite, Messages.getString("_UI_LABEL_ELEMENT"), SWT.RADIO);	 //$NON-NLS-1$
-		CLabel referenceKindLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_LABEL_REFERENCE_KIND") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
-		
-		typeRadio.addSelectionListener(this);
-		elementRadio.addSelectionListener(this);
+		CLabel referenceKindLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_REFERENCE_KIND + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		Composite comp = getWidgetFactory().createComposite(composite);
+		GridLayout layout = new GridLayout();
+		layout.numColumns = 2;
+		layout.marginHeight = 0;
+		layout.marginWidth = 0;
+		layout.marginRight = 5;
+		comp.setLayout(layout);
 		
 		data = new FormData();
 		data.left = new FormAttachment(0, 0);
-		data.right = new FormAttachment(typeRadio, -ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(typeRadio, 0, SWT.CENTER);
+		data.right = new FormAttachment(comp, -ITabbedPropertyConstants.HSPACE);
+		data.top = new FormAttachment(comp, 0, SWT.CENTER);
 		referenceKindLabel.setLayoutData(data);
 		
+		typeRadio = getWidgetFactory().createButton(comp, Messages._UI_LABEL_TYPE, SWT.RADIO); //$NON-NLS-1$
+		elementRadio = getWidgetFactory().createButton(comp, Messages._UI_LABEL_ELEMENT, SWT.RADIO);	 //$NON-NLS-1$
+		typeRadio.addSelectionListener(this);
+		elementRadio.addSelectionListener(this);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(typeRadio, ASDEditorCSHelpIds.PROPERTIES_PART_TYPE_RADIO);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(elementRadio, ASDEditorCSHelpIds.PROPERTIES_PART_ELEMENT_RADIO);
+		
 		data = new FormData();
 		data.left = new FormAttachment(0, 100);
-		data.right = new FormAttachment(elementRadio, -ITabbedPropertyConstants.HSPACE);
 		data.top = new FormAttachment(combo, +ITabbedPropertyConstants.VSPACE);
-		typeRadio.setLayoutData(data);
-		
-		data = new FormData();
-		data.left = new FormAttachment(0, 160);
-		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
-		data.top = new FormAttachment(combo, +ITabbedPropertyConstants.VSPACE);
-		elementRadio.setLayoutData(data);
+		comp.setLayoutData(data);
 	}
 	
 	public void doWidgetSelected(SelectionEvent e) {
@@ -70,12 +76,12 @@
 		Part part = (Part) parameter.getTarget();
 		
 		if (e.widget == typeRadio && typeRadio.getSelection()) {
-			comboLabel.setText(Messages.getString("_UI_LABEL_TYPE") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+			comboLabel.setText(Messages._UI_LABEL_TYPE+ ":"); //$NON-NLS-1$ //$NON-NLS-2$
 			ComponentReferenceUtil.setComponentReference(part, true, null);
 			super.refreshCombo();
 		}
 		else if (e.widget == elementRadio && elementRadio.getSelection()) {
-			comboLabel.setText(Messages.getString("_UI_LABEL_ELEMENT") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+			comboLabel.setText(Messages._UI_LABEL_ELEMENT + ":"); //$NON-NLS-1$ //$NON-NLS-2$
 			ComponentReferenceUtil.setComponentReference(part, false, null);
 			refreshElementCombo();
 		}
@@ -108,6 +114,7 @@
 		}
 		
 		super.doHandleEvent(event);
+		refresh();
 	}
 	
 	protected void refreshElementCombo() {
@@ -127,8 +134,10 @@
 				name = param.getName();
 				elementName = param.getComponentName();
 			}
-			
-			nameText.setText(name);
+
+			if (!nameText.isFocusControl()) {
+				nameText.setText(name);
+			}
 			
 			// Populate the Combo
 			combo.removeAll();
@@ -142,8 +151,7 @@
 					combo.add((String) specs[index].getName());
 				}
 			}
-			
-			
+
 			// Display the element in the Combo
 			String[] items = combo.getItems();
 			int index;
@@ -166,6 +174,8 @@
 	}
 	
 	public void refresh() {
+		setListenerEnabled(false);
+		
 		Object model = getModel();
 		if (model instanceof W11ParameterForPart) {
 			W11ParameterForPart param = (W11ParameterForPart) model;
@@ -173,11 +183,13 @@
 			if (part.getTypeDefinition() != null) {
 				typeRadio.setSelection(true);
 				elementRadio.setSelection(false);
+				comboLabel.setText(Messages._UI_LABEL_TYPE + ":"); //$NON-NLS-1$ //$NON-NLS-2$
 				handleTypeScenario = true;
 			}
 			else if (part.getElementDeclaration() != null) {
 				typeRadio.setSelection(false);
 				elementRadio.setSelection(true);
+				comboLabel.setText(Messages._UI_LABEL_ELEMENT + ":"); //$NON-NLS-1$ //$NON-NLS-2$
 				handleTypeScenario = false;
 				refreshElementCombo();			
 			}
@@ -192,10 +204,16 @@
 		setControlForegroundColor(typeRadio);
 		
 		super.refresh();
+		setListenerEnabled(true);
 	}
 	
 	protected ComponentReferenceEditManager getElementComponentReferenceEditManager() {
-		ASDMultiPageEditor editor = (ASDMultiPageEditor) ASDEditorPlugin.getActiveEditor();
-		return (ComponentReferenceEditManager) editor.getAdapter(XSDElementReferenceEditManager.class);
+		if (refManager != null) {
+			return refManager;
+		}
+		
+		refManager = ReferenceEditManagerHelper.getXSDElementReferenceEditManager((IASDObject) getModel());
+		
+		return refManager;
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ParameterSectionFilter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ParameterSectionFilter.java
index 0c237f6..9c5d82b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ParameterSectionFilter.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/properties/sections/W11ParameterSectionFilter.java
@@ -9,20 +9,38 @@
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.properties.sections;
-
 import org.eclipse.jface.viewers.IFilter;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.EditorModeManager;
 
-public class W11ParameterSectionFilter implements IFilter {
-	// rmah: we should consider other ways of 'extending' this capability
-	// rather than simply checking a variable....
-	public static boolean showW11ParameterSection = true;
-	
-	public boolean select(Object toTest) {
-		if (toTest instanceof IParameter && showW11ParameterSection) {
-			return true;
-		}
-		
-		return false;
-	}
+public class W11ParameterSectionFilter implements IFilter
+{
+  public boolean select(Object toTest)
+  {
+    boolean result = false;
+    if (toTest instanceof IParameter)
+    {  
+      result = true;
+      try
+      {
+        IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+        EditorModeManager manager = (EditorModeManager) editor.getAdapter(EditorModeManager.class);
+        if (manager != null)
+        {
+          EditorModeSectionFilter filter = (EditorModeSectionFilter) manager.getCurrentMode().getAdapter(EditorModeSectionFilter.class);
+          if (filter != null)
+          {
+            result = filter.isApplicable(W11ParameterSection.class, toTest);
+          }
+        }
+      }
+      catch (Exception e)
+      {
+        e.printStackTrace();
+      }
+    }
+    return result;
+  }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLHyperlinkDetector.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLHyperlinkDetector.java
index 9d6f78b..af67d47 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLHyperlinkDetector.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLHyperlinkDetector.java
@@ -21,13 +21,13 @@
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.eclipse.wst.xsd.ui.internal.editor.BaseHyperlinkDetector;
+import org.eclipse.wst.xsd.ui.internal.editor.XSDHyperlinkDetector;
 /**
  * Detects hyperlinks for WSDL files. Used by the WSDL text editor to provide a
  * "Go to declaration" functionality similar with the one provided by the Java
  * editor.
  */
-public class WSDLHyperlinkDetector extends BaseHyperlinkDetector
+public class WSDLHyperlinkDetector extends XSDHyperlinkDetector
 {
   /*
    * (non-Javadoc)
@@ -95,7 +95,8 @@
    */
   protected boolean isLinkableAttribute(String name)
   {
-    boolean isLinkable = name.equals(WSDLConstants.BINDING_ATTRIBUTE) || 
+    boolean isLinkable = super.isLinkableAttribute(name)||
+    name.equals(WSDLConstants.BINDING_ATTRIBUTE) || 
     name.equals(WSDLConstants.ELEMENT_ATTRIBUTE) || 
     name.equals(WSDLConstants.TYPE_ATTRIBUTE) || 
     name.equals(WSDLConstants.MESSAGE_ATTRIBUTE); 
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelAdapter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelAdapter.java
index 482c69a..3687ba5 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelAdapter.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelAdapter.java
@@ -10,10 +10,17 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.text;
 
+import java.lang.reflect.InvocationTargetException;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.progress.IProgressService;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.wsdl.Definition;
@@ -22,9 +29,12 @@
 import org.eclipse.wst.wsdl.internal.util.WSDLResourceFactoryImpl;
 import org.eclipse.wst.wsdl.ui.internal.extensions.ExtensibleTypeSystemProvider;
 import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
+import org.eclipse.wst.wsdl.util.WSDLResourceImpl;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xsd.ui.internal.util.ModelReconcileAdapter;
 import org.eclipse.wst.xsd.ui.internal.util.XSDSchemaLocationResolverAdapterFactory;
+import org.eclipse.xsd.util.XSDResourceImpl;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
@@ -32,6 +42,7 @@
 {
   protected ResourceSet resourceSet;
   protected Definition definition;
+  private ModelReconcileAdapter modelReconcileAdapter;
 
   public Definition getDefinition()
   {
@@ -52,24 +63,32 @@
   {
   }
 
+  /**
+   * @deprecated
+   */
   public Definition createDefinition(Element element, Document document)
-  {     
+  {
+    return createDefinition(document);
+  }
+
+  public Definition createDefinition(final Document document)
+  {
     try
-    {    	
-      IDOMNode domNode = (IDOMNode)element;
+    {
+      IDOMNode domNode = (IDOMNode) document;
       String baseLocation = "blankWSDL.wsdl"; //$NON-NLS-1$
-      if (domNode != null) {
-    	  baseLocation = domNode.getModel().getBaseLocation();
+      if (domNode != null)
+      {
+        baseLocation = domNode.getModel().getBaseLocation();
       }
-      else if (document instanceof IDOMNode){
-    	  IDOMModel domModel = ((IDOMNode) document).getModel();
-    	  baseLocation = domModel.getBaseLocation();
+      else if (document instanceof IDOMNode)
+      {
+        IDOMModel domModel = ((IDOMNode) document).getModel();
+        baseLocation = domModel.getBaseLocation();
       }
-          
       resourceSet = new ResourceSetImpl();
       resourceSet.getAdapterFactories().add(new WSDLModelLocatorAdapterFactory());
       resourceSet.getAdapterFactories().add(new XSDSchemaLocationResolverAdapterFactory());
-                     
       // TODO.. .revist the best approach to obtain a URI from the SSE model
       //
       URI uri = null;
@@ -80,26 +99,60 @@
       else
       {
         uri = URI.createFileURI(baseLocation);
-      }            
-      
+      }
       definition = WSDLFactory.eINSTANCE.createDefinition();
       definition.setDocumentBaseURI(uri.toString());
       definition.setDocument(document);
-      definition.setElement(element);
-      
+
       WSDLResourceFactoryImpl resourceFactory = new WSDLResourceFactoryImpl();
       Resource resource = resourceFactory.createResource(uri);
-      resourceSet.getResources().add(resource);       
+      resourceSet.getResources().add(resource);
       resource.getContents().add(definition);
-      resource.setModified(false);    
-      ((DefinitionImpl)definition).reconcileReferences(true);    
-                 
+      resource.setModified(false);
+
+      IRunnableWithProgress setElementOperation = new IRunnableWithProgress()
+      {
+        public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException
+        {
+          // Use the animated flavour as we don't know beforehand how many ticks we need.
+          // The task name will be displayed by the code in WSDLResourceImpl and XSDResourceImpl.
+          
+          monitor.beginTask("", IProgressMonitor.UNKNOWN); //$NON-NLS-1$
+
+          Map loadOptions = resourceSet.getLoadOptions();
+          
+          loadOptions.put(WSDLResourceImpl.WSDL_PROGRESS_MONITOR, monitor);
+          loadOptions.put(XSDResourceImpl.XSD_PROGRESS_MONITOR, monitor);
+          
+          definition.setElement(document.getDocumentElement());
+          ((DefinitionImpl) definition).reconcileReferences(true);
+          
+          loadOptions.remove(WSDLResourceImpl.WSDL_PROGRESS_MONITOR);
+          loadOptions.remove(XSDResourceImpl.XSD_PROGRESS_MONITOR);
+        }
+      };
+
+      IProgressService progressService = PlatformUI.getWorkbench().getProgressService();
+      try
+      {
+        progressService.busyCursorWhile(setElementOperation);
+      }
+      catch (InvocationTargetException e)
+      {
+        e.printStackTrace();
+      }
+      catch (InterruptedException e)
+      {
+        e.printStackTrace();
+      }             
+      
       // attach an adapter to keep the WSDL model and DOM in sync
       //
-      new WSDLModelReconcileAdapter(document, definition);
-
+      modelReconcileAdapter = new WSDLModelReconcileAdapter(document, definition);
+      domNode.getModel().addModelStateListener(modelReconcileAdapter);
+      
       // TODO... CS : revisit this line
-      // currently this is used to associate a 'type' system with the definition      
+      // currently this is used to associate a 'type' system with the definition
       // I suspect that this could be made a whole lot more simple
       //
       WSDLEditorUtil.getInstance().setTypeSystemProvider(definition, new ExtensibleTypeSystemProvider());
@@ -110,4 +163,25 @@
     }
     return definition;
   }
+  
+  public ModelReconcileAdapter getModelReconcileAdapter()
+  {
+    return modelReconcileAdapter;
+  }  
+  
+  public static WSDLModelAdapter lookupOrCreateModelAdapter(Document document)
+  {
+    WSDLModelAdapter adapter = null;
+    if (document instanceof INodeNotifier)
+    {
+      INodeNotifier notifier = (INodeNotifier)document;
+      adapter = (WSDLModelAdapter)notifier.getAdapterFor(WSDLModelAdapter.class);
+      if (adapter == null)
+      {
+        adapter = new WSDLModelAdapter();       
+        notifier.addAdapter(adapter);        
+      } 
+    }   
+    return adapter;
+  }  
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelQueryExtension.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelQueryExtension.java
index 7639b90..c92e4c1 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelQueryExtension.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelQueryExtension.java
@@ -45,18 +45,19 @@
   {
     return elementName.equals("body") || elementName.equals("header") || elementName.equals("fault") || elementName.equals("urlReplacement") || elementName.equals("urlEncoded"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
   }
-
+  
   
   public boolean isApplicableChildElement(Node parentNode, String namespace, String name)
   {
-    boolean result = true;
+    boolean result = true;    
+    
     if (parentNode.getNodeType() == Node.ELEMENT_NODE)
     {
       Element element = (Element) parentNode;
       String parentElementNamespaceURI = parentNode.getNamespaceURI();
       String parentElementName = parentNode.getLocalName();
       // only filter children for 'non-schema' elements
-      //      
+      //   
       if (!WSDLConstants.XSD_NAMESPACE_URI.equals(parentElementNamespaceURI))
       {
         if (parentElementName != null && name != null)
@@ -76,7 +77,18 @@
             {
               // eclipse all schema elements, except for 'schema' withing wsdl types elements 
               result = parentElementName.equals("types") && name.equals("schema"); //$NON-NLS-1$ //$NON-NLS-2$
-            }   
+            }
+            else if (namespace.equals(WSDLConstants.WSDL_NAMESPACE_URI))
+            {
+              // cs : the 'required' attribute is burned into WSDL schema as the 'base' extensibility element
+              // the WTP WSDL validator complains when these are present so this line filters them out
+              // of the content assist and extension details view.  As far as I can tell no one actually uses 'em
+              // in practise ... so filtering them out should be ok.  
+              //
+              // TODO (cs) how come the schema says their ok but the validator doesn't like them?
+              //
+              result = !name.equals("required");
+            }  
             else
             {
               // TODO.. we should investigate removing the  ExtensiblityElementFilter extension point
@@ -91,6 +103,10 @@
           }
         }
       }
+      else
+      {
+        return super.isApplicableChildElement(parentNode, namespace, name);
+      }
     }
     return result;
   }
@@ -100,7 +116,7 @@
     if (WSDLConstants.WSDL_NAMESPACE_URI.equals(namespace))
     {
       List list = new ArrayList();
-      ComponentReferenceUtil util = new ComponentReferenceUtil(lookupOrCreateDefinition(element));
+      ComponentReferenceUtil util = new ComponentReferenceUtil(lookupOrCreateDefinition(element.getOwnerDocument()));
       String currentElementName = element.getLocalName();
       if (checkName(name, "message")) //$NON-NLS-1$
       {
@@ -138,24 +154,29 @@
     }
   }
 
-  
+  /**
+   * @deprecated
+   */
   protected XSDSchema lookupOrCreateSchemaForElement(Element element)
   {       
+    return lookupOrCreateSchema(element);
+  }
+  
+  private XSDSchema lookupOrCreateSchema(Element element)
+  {   
     XSDSchema schema = null;
-    Definition definition = lookupOrCreateDefinition(element);
+    Definition definition = lookupOrCreateDefinition(element.getOwnerDocument());
     Object o = WSDLEditorUtil.getInstance().findModelObjectForElement(definition, element);
     if (o instanceof XSDConcreteComponent)
     {
       schema = ((XSDConcreteComponent) o).getSchema();
     } 
-    return schema;
+    return schema;    
   }
   
-  
-  protected Definition lookupOrCreateDefinition(Element element)
+  protected Definition lookupOrCreateDefinition(Document document)
   {
     Definition definition = null;
-    Document document = element.getOwnerDocument();
     if (document instanceof INodeNotifier)
     {
       INodeNotifier notifier = (INodeNotifier) document;
@@ -164,7 +185,7 @@
       {
         adapter = new WSDLModelAdapter();
         notifier.addAdapter(adapter);
-        adapter.createDefinition(document.getDocumentElement(), document);
+        adapter.createDefinition(document);
       }
       definition = adapter.getDefinition();
     }
@@ -174,7 +195,7 @@
   
   protected TypesHelper getTypesHelper(final Element element)
   {
-    XSDSchema schema = lookupOrCreateSchemaForElement(element);
+    XSDSchema schema = lookupOrCreateSchema(element);
     return new TypesHelper(schema)
     {
       // TODO... it seems as though the model is not correctly
@@ -184,7 +205,7 @@
       protected List getPrefixesForNamespace(String namespace)
       {
         List list = super.getPrefixesForNamespace(namespace);
-        Definition definition = lookupOrCreateDefinition(element);
+        Definition definition = lookupOrCreateDefinition(element.getOwnerDocument());
         if (definition != null)
         {  
           Map map = definition.getNamespaces();
@@ -204,5 +225,13 @@
         return list;
       }       
     };    
-  }  
+  } 
+  
+  /**   
+   * @deprecated
+   */
+  protected Definition lookupOrCreateDefinition(Element element)
+  {
+    return lookupOrCreateDefinition(element.getOwnerDocument());
+  } 
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelReconcileAdapter.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelReconcileAdapter.java
index e4ff700..7720768 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelReconcileAdapter.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/text/WSDLModelReconcileAdapter.java
@@ -10,21 +10,22 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.text;
 
-import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.internal.impl.DefinitionImpl;
 import org.eclipse.wst.wsdl.internal.impl.WSDLElementImpl;
 import org.eclipse.wst.wsdl.internal.impl.XSDSchemaExtensibilityElementImpl;
 import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
 import org.eclipse.wst.wsdl.util.WSDLConstants;
+import org.eclipse.wst.xsd.ui.internal.util.ModelReconcileAdapter;
+import org.eclipse.xsd.XSDConcreteComponent;
 import org.eclipse.xsd.impl.XSDSchemaImpl;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 
-class WSDLModelReconcileAdapter extends DocumentAdapter
+class WSDLModelReconcileAdapter extends ModelReconcileAdapter
 {                             
   protected Definition definition;
 
@@ -33,90 +34,82 @@
     super(document);
     this.definition = definition;
   } 
-   
-     
-  public void notifyChanged(INodeNotifier notifier, int eventType, Object feature, Object oldValue, Object newValue, int index) 
-  {                      
-    if (eventType == INodeNotifier.ADD)
+
+  // This method is clever enough to deal with 'bad' documents that happen 
+  // to have more than one root element.  It picks of the first 'matching' element.
+  //
+  // TODO (cs) why aren't we calling this from the WSDLModelAdapter when the model is initialized?
+  //
+  private Element getDefinitionElement(Document document)
+  {
+    Element definitionElement = null;    
+    for (Node node = document.getFirstChild(); node != null; node = node.getNextSibling())
     {
-      if (newValue instanceof Element)
+      if (node.getNodeType() == Node.ELEMENT_NODE)
       {
-        adapt((Element)newValue);
-
-        // See Bug 5366
-        // We need to sync up the Model and the DOM
-        Element newDocumentElement = (Element)newValue;
-        String wsdlPrefix = newDocumentElement.getPrefix();
-        if (wsdlPrefix == null) wsdlPrefix = ""; //$NON-NLS-1$
-        String ns = definition != null ? definition.getNamespace(wsdlPrefix) : ""; //$NON-NLS-1$
-        if (ns != null && ns.equals(WSDLConstants.WSDL_NAMESPACE_URI)
-           && newDocumentElement.getLocalName().equals(WSDLConstants.DEFINITION_ELEMENT_TAG)) // &&
-           // !isValidDefinition)
+        Element element = (Element)node;
+        if (WSDLEditorUtil.getInstance().getWSDLType(element) == WSDLConstants.DEFINITION)
         {
-//          System.out.println("****** Setting new definition");
-          definition.setElement(newDocumentElement);
+          definitionElement = element;
+          break;
         }
       }
-    }   
-
-    switch (eventType)
-    {                  
-      // we make the assumption that reconciling will only be triggered by one of these notifications 
-      // (ADD and REMOVE notifications are omitted)
-      //
-      case INodeNotifier.CHANGE: 
-      case INodeNotifier.STRUCTURE_CHANGED:
-      case INodeNotifier.CONTENT_CHANGED:
-      {                      
-        if (notifier instanceof Element)
-        {
-          reconcileModelObjectForElement((Element)notifier, eventType, feature, oldValue, newValue, index);
-        }
-        else if (notifier instanceof Document)
-        {
-          Document document = (Document)notifier;
-          Element definitionElement = null;          
-
-          for (Node node = document.getFirstChild(); node != null; node = node.getNextSibling())
-          {
-            if (node.getNodeType() == Node.ELEMENT_NODE)
-            {
-              Element element = (Element)node;
-              if (WSDLEditorUtil.getInstance().getWSDLType(element) == WSDLConstants.DEFINITION)
-              {
-                definitionElement = element;
-                break;
-              }
-            }
-          }
-         
-          // TODO... revisit definition.removeAllContent() and who should call this?
-          //
-          if (definitionElement != null)
-          {
-//            isValidDefinition = true;
-//            System.out.println("VALID DEFINITION ELEMENT");
-            WSDLModelAdapter modelAdapter = (WSDLModelAdapter) notifier.getAdapterFor(WSDLModelAdapter.class);
-            if (modelAdapter != null) {
-              definition = modelAdapter.getDefinition();
-              if (definition == null) definition = modelAdapter.createDefinition(definitionElement, document);
-            }
-            ((DefinitionImpl)definition).elementChanged(definitionElement);
-          }
-          else
-          {
-//            System.out.println("INVALID DEFINITION ELEMENT");
-//            isValidDefinition = false;
-            ((DefinitionImpl)definition).removeAll();
-          }
-        }
-        break;
-      }
     }
+    return definitionElement;
   }
-
-  protected void reconcileModelObjectForElement(Element element, int eventType, Object feature, Object oldValue, Object newValue, int index)
-  {                                                                  
+  
+  protected void handleNodeChanged(Node node)
+  {
+    if (node instanceof Element)
+    {
+      reconcileModelObjectForElement((Element)node);      
+    }
+    else if (node instanceof Document)
+    {
+      // The document changed so we may need to fix up the 
+      // definition's root element
+      Document document = (Document)node;    
+      Element definitionElement = getDefinitionElement(document);
+      if (definitionElement != null && definitionElement != definition.getElement())
+      {   
+        // here we handle the case where a new 'definition' element was added
+        //(e.g. the file was totally blank and then we type in the root element)        
+        // See Bug 5366
+        //
+        if (definitionElement.getLocalName().equals(WSDLConstants.DEFINITION_ELEMENT_TAG))         
+        {  
+          //System.out.println("****** Setting new definition");
+          definition.setElement(definitionElement);
+        }
+      }      
+      else if (definitionElement != null)
+      {       
+        // handle the case where the definition element's content has changed
+        // 
+        ((DefinitionImpl)definition).elementChanged(definitionElement);
+      }      
+      else if (definitionElement == null)
+      {
+        // if there's no definition element clear out the WSDL
+        //
+        ((DefinitionImpl)definition).removeAll();
+        
+        // The removeAll() call does not remove namespaces as well and the model
+        // does not reconcile well in this case. Also reset the definition name and target
+        // namespace.
+        
+        definition.getNamespaces().clear();
+        definition.setQName(null);
+        definition.setTargetNamespace(null);
+        
+        // Reset the document because removeAll() sets the document to null as well.
+        definition.setDocument(document);
+      }
+    }         
+  }
+       
+  private void reconcileModelObjectForElement(Element element)
+  {
     Object modelObject = WSDLEditorUtil.getInstance().findModelObjectForElement(definition, element);  
     if (modelObject != null)
     {
@@ -130,43 +123,32 @@
       {
         ((WSDLElementImpl)modelObject).elementChanged(element);
       }
-    }     
-  }   
-}
-
-
-abstract class DocumentAdapter implements INodeAdapter
-{
-  Document document;
-  
-  public DocumentAdapter(Document document)
-  {
-    this.document = document;
-    ((INodeNotifier)document).addAdapter(this);
-    if (document.getDocumentElement() != null) adapt(document.getDocumentElement());
-  }
-
-  public void adapt(Element element)
-  {
-    if (((INodeNotifier)element).getExistingAdapter(this) == null)
-    {
-      ((INodeNotifier)element).addAdapter(this);
-
-      for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling())
+      else if (modelObject instanceof XSDConcreteComponent)
       {
-        if (child.getNodeType() == Node.ELEMENT_NODE)
-        {
-          adapt((Element)child);
-        }
-      }
+        ((XSDConcreteComponent)modelObject).elementChanged(element);        
+      }  
+    }     
+  }  
+
+  /**
+   * @deprecated
+   */
+  protected void reconcileModelObjectForElement(Element element, int eventType, Object feature, Object oldValue, Object newValue, int index)
+  {                                          
+    reconcileModelObjectForElement(element);
+  }  
+  
+  public void modelDirtyStateChanged(IStructuredModel model, boolean isDirty)
+  {
+    if (!isDirty)
+    {  
+      // cs : At this time (when a save occurs) it's a good opportunity
+      // to update the model to ensure it's in sync with the source. 
+      // That way if the incremental sync between DOM and model has gotten
+      // the model out of whack we'll be able to put things right at this point.
+      //   
+      // TODO (cs) need to do more to ensure model is sync'd up properly      
+      ((DefinitionImpl)definition).reconcileReferences(true);
     }
   }
-
-  public boolean isAdapterForType(Object type)
-  {
-    return type == this;
-  }
-
-  abstract public void notifyChanged
-    (INodeNotifier notifier, int eventType, Object feature, Object oldValue, Object newValue, int index);
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/ComponentReferenceUtil.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/ComponentReferenceUtil.java
index 409e675..10f30ec 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/ComponentReferenceUtil.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/ComponentReferenceUtil.java
@@ -104,7 +104,9 @@
 
   protected static boolean isMatchingBinding(Operation operation, BindingOperation bindingOperation)
   {
-    return isEqual(operation.getName(), bindingOperation.getName()) && isEqualInputName(operation, bindingOperation) && isEqualOutputName(operation, bindingOperation);
+    return isEqual(operation.getName(), bindingOperation.getName()); /* &&
+    			   isEqualInputName(operation, bindingOperation) &&
+    			   isEqualOutputName(operation, bindingOperation);*/
   }
 
   public List getPortsForPortType(PortType portType)
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/CreateWSDLElementHelper.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/CreateWSDLElementHelper.java
index 9dae335..c03eb1e 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/CreateWSDLElementHelper.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/CreateWSDLElementHelper.java
@@ -13,6 +13,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import javax.wsdl.OperationType;
+
 import org.eclipse.wst.wsdl.Binding;
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.Fault;
@@ -29,12 +31,15 @@
 import org.eclipse.wst.wsdl.XSDSchemaExtensibilityElement;
 import org.eclipse.wst.wsdl.internal.impl.MessageReferenceImpl;
 import org.eclipse.wst.wsdl.internal.impl.WSDLElementImpl;
+import org.eclipse.wst.wsdl.ui.internal.commands.AddBaseParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddBindingCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddFaultCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddInputCommand;
+import org.eclipse.wst.wsdl.ui.internal.commands.AddInputParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddMessageCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddOperationCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddOutputCommand;
+import org.eclipse.wst.wsdl.ui.internal.commands.AddOutputParameterCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddPartCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddPortCommand;
 import org.eclipse.wst.wsdl.ui.internal.commands.AddPortTypeCommand;
@@ -141,11 +146,23 @@
 		AddOperationCommand action = new AddOperationCommand(portType, operationName);
 		action.run();
 		Operation operation = (Operation) action.getWSDLElement();
-  		CreateWSDLElementHelper.createOutput(portType, operation);
-		CreateWSDLElementHelper.createInput(portType, operation, null);
+		
+		int style = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
+  		if (PART_TYPE_OR_DEFINITION == PART_INFO_TYPE_DEFINITION) {
+  			style = AddBaseParameterCommand.PART_SIMPLETYPE;
+  		}
+  		else if (PART_TYPE_OR_DEFINITION == PART_INFO_ELEMENT_DECLARATION) {
+  			style = AddBaseParameterCommand.PART_ELEMENT_SEQ_ELEMENT;
+//  			style = AddBaseParameterCommand.PART_ELEMENT;
+  		}
+  		
+		AddInputParameterCommand inputCommand = new AddInputParameterCommand(operation, style);
+		inputCommand.run();
+		AddOutputParameterCommand outputCommand = new AddOutputParameterCommand(operation, style);
+		outputCommand.run();
+		operation.setStyle(OperationType.REQUEST_RESPONSE);
 
-//  		((PortTypeImpl) portType).updateElement(false);
-   		return operation;
+		return operation;
   	}
 
   	public static Input createInput(PortType portType, Operation operation, String inputName) {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/NameUtil.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/NameUtil.java
index b413157..eb9920f 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/NameUtil.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/NameUtil.java
@@ -439,7 +439,8 @@
 		messageNames.add(((Message) messageIt.next()).getQName().getLocalPart());
 	}
 	
-	String requestResponseString = getRequestOrResponse(messageRef) + "Msg"; //$NON-NLS-1$
+//	String requestResponseString = getRequestOrResponse(messageRef) + "Msg"; //$NON-NLS-1$
+	String requestResponseString = getRequestOrResponse(messageRef); //$NON-NLS-1$
 	messageName = getUniqueNameHelper(operation.getName() + requestResponseString, messageNames);
 	
 	return messageName;
@@ -453,18 +454,22 @@
 	String operationName = operation.getName();
 	String appendString = "";    	   //$NON-NLS-1$
 	if (messageRef instanceof Input) {
-		appendString = "Parameters"; //$NON-NLS-1$
+//		appendString = "Parameters"; //$NON-NLS-1$
+		appendString = "Request"; //$NON-NLS-1$
 	}
 	else if (messageRef instanceof Output) {
-		appendString = "Result"; //$NON-NLS-1$
+//		appendString = "Result"; //$NON-NLS-1$
+		appendString = "Response"; //$NON-NLS-1$
 	}
 	else if (messageRef instanceof Fault) {
-		appendString = "Fault"; //$NON-NLS-1$
+//		appendString = "Fault"; //$NON-NLS-1$
+		appendString = "_Fault"; //$NON-NLS-1$
 	}
 	partName = operationName + appendString;
 	
 	List usedPartNames = new ArrayList();
 	if (message != null) {
+		partName = message.getQName().getLocalPart();
 		Iterator partIt = message.getEParts().iterator();
 		while (partIt.hasNext()) {
 			usedPartNames.add(((Part) partIt.next()).getName());
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/NodeAssociationManager.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/NodeAssociationManager.java
index 37bec3b..01c0513 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/NodeAssociationManager.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/NodeAssociationManager.java
@@ -13,28 +13,48 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.wst.wsdl.XSDSchemaExtensibilityElement;
+import org.eclipse.wst.wsdl.ui.internal.xsd.XSDNodeAssociationProvider;
 import org.eclipse.wst.wsdl.ui.internal.extensions.INodeAssociationProvider;
 import org.eclipse.wst.wsdl.ui.internal.extensions.WSDLNodeAssociationProvider;
+import org.eclipse.wst.xsd.ui.internal.adapters.CategoryAdapter;
+import org.eclipse.xsd.XSDConcreteComponent;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
 public class NodeAssociationManager
 {                   
-  protected INodeAssociationProvider provider;
+  protected INodeAssociationProvider wsdlProvider;
+  protected INodeAssociationProvider xsdProvider;
 
   public NodeAssociationManager()
   {             
-	  provider = new WSDLNodeAssociationProvider();
+	  wsdlProvider = new WSDLNodeAssociationProvider();
+	  xsdProvider = new XSDNodeAssociationProvider();
   }        
 
   protected INodeAssociationProvider getAppicableProvider(Object object)
   {
-    return provider;
+	  if (object instanceof XSDSchemaExtensibilityElement || 
+	            object instanceof XSDConcreteComponent ||
+	            object instanceof CategoryAdapter) {// ||
+//	            object instanceof Category) {
+		  return xsdProvider;
+	  }
+	  
+	  return wsdlProvider;
   }
         
 
   public Object getModelObjectForNode(Object rootObject, Element targetNode)
-  {                                                                       
+  {                                
+    if (targetNode != null && targetNode.getParentNode() == null)
+    {
+      // The element was already removed from the DOM, common scenario during undo.
+      // The parent element's reconciliation will take care of reconciling it.
+      return null;
+    }
+    
     int currentIndex = 0;
 
     Element[] elementChain = getParentElementChain((Element)targetNode);
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/OpenOnSelectionHelper.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/OpenOnSelectionHelper.java
index 1f87ba7..3b6531f 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/OpenOnSelectionHelper.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/OpenOnSelectionHelper.java
@@ -15,6 +15,7 @@
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.ui.IEditorPart;
@@ -35,6 +36,9 @@
 import org.eclipse.wst.wsdl.internal.util.WSDLSwitch;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
 import org.eclipse.wst.wsdl.util.WSDLConstants;
+import org.eclipse.wst.xsd.ui.internal.editor.XSDHyperlinkTargetLocator;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDPackage;
 import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -304,4 +308,19 @@
     return attr != null && value.equals(attr.getName());
   }
 
+  public Object defaultCase(EObject object)
+  {
+    EClass theEClass = object.eClass();
+    
+    if (theEClass.eContainer() == XSDPackage.eINSTANCE)
+    {
+      // Handle navigation between inline schema components.
+      
+      XSDHyperlinkTargetLocator xsdHyperlinkTargetLocator = new XSDHyperlinkTargetLocator();
+      String attributeName = attr != null ? attr.getName(): null;
+      return xsdHyperlinkTargetLocator.locate((XSDConcreteComponent) object, attributeName);
+    }
+    
+    return super.defaultCase(object);
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/ReferenceEditManagerHelper.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/ReferenceEditManagerHelper.java
new file mode 100644
index 0000000..63120cf
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/ReferenceEditManagerHelper.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.util;
+
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.wsdl.WSDLElement;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Binding;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Description;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11EndPoint;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11MessageReference;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.wsdl.ui.internal.edit.W11BindingReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.edit.W11InterfaceReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.edit.W11MessageReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.edit.WSDLXSDElementReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.edit.WSDLXSDTypeReferenceEditManager;
+import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
+import org.eclipse.wst.xsd.ui.internal.editor.XSDElementReferenceEditManager;
+import org.eclipse.wst.xsd.ui.internal.editor.XSDTypeReferenceEditManager;
+
+public class ReferenceEditManagerHelper {
+
+    
+    public static ComponentReferenceEditManager getBindingReferenceEditManager(IASDObject asdObject) {
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+        if (page.getActiveEditor().getAdapter(W11InterfaceReferenceEditManager.class) != null) {
+            return  (ComponentReferenceEditManager) page.getActiveEditor().getAdapter(W11BindingReferenceEditManager.class);
+        }
+        else { 
+            IEditorInput input = page.getActiveEditor().getEditorInput();
+            if (input instanceof IFileEditorInput && asdObject instanceof W11EndPoint) {
+                WSDLElement element = (WSDLElement) ((W11EndPoint) asdObject).getTarget(); 
+                IDescription description = (IDescription) WSDLAdapterFactoryHelper.getInstance().adapt(element.getEnclosingDefinition());
+                return new W11BindingReferenceEditManager((W11Description) description, ((IFileEditorInput) input).getFile());
+            }
+        }
+        
+        return null;
+    }
+
+    public static ComponentReferenceEditManager getInterfaceReferenceEditManager(IASDObject asdObject) {
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+        if (page.getActiveEditor().getAdapter(W11InterfaceReferenceEditManager.class) != null) {
+            return (ComponentReferenceEditManager) page.getActiveEditor().getAdapter(W11InterfaceReferenceEditManager.class);
+        }
+        else {
+            IEditorInput input = page.getActiveEditor().getEditorInput();
+            if (input instanceof IFileEditorInput && asdObject instanceof W11Binding) {
+                WSDLElement element = (WSDLElement) ((W11Binding) asdObject ).getTarget();
+                IDescription description = (IDescription) WSDLAdapterFactoryHelper.getInstance().adapt(element.getEnclosingDefinition());
+                return new W11InterfaceReferenceEditManager((W11Description) description, ((IFileEditorInput) input).getFile());
+            }
+        }
+        
+        return null;
+    }
+
+    public static ComponentReferenceEditManager getMessageReferenceEditManager(IASDObject asdObject) {
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+        if (page.getActiveEditor().getAdapter(W11MessageReferenceEditManager.class) != null) {
+            return (ComponentReferenceEditManager) page.getActiveEditor().getAdapter(W11MessageReferenceEditManager.class);
+        }
+        else {
+            IEditorInput input = page.getActiveEditor().getEditorInput();
+            if (input instanceof IFileEditorInput && asdObject instanceof W11MessageReference) {
+                WSDLElement element = (WSDLElement) ((W11MessageReference) asdObject).getTarget();
+                IDescription description = (IDescription) WSDLAdapterFactoryHelper.getInstance().adapt(element.getEnclosingDefinition());
+                return new W11MessageReferenceEditManager((W11Description) description, ((IFileEditorInput) input).getFile());
+            }
+        }
+   
+        return null;
+    }
+
+    public static ComponentReferenceEditManager getXSDElementReferenceEditManager(IASDObject asdObject) {
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+        if (page.getActiveEditor().getAdapter(XSDElementReferenceEditManager.class) != null) {
+            return (ComponentReferenceEditManager) page.getActiveEditor().getAdapter(XSDElementReferenceEditManager.class);
+        }
+        else {
+            IEditorInput input = page.getActiveEditor().getEditorInput();
+            if (input instanceof IFileEditorInput && asdObject instanceof W11ParameterForPart) {
+                WSDLElement element = (WSDLElement) ((W11ParameterForPart) asdObject).getTarget();
+                IDescription description = (IDescription) WSDLAdapterFactoryHelper.getInstance().adapt(element.getEnclosingDefinition());
+                return new WSDLXSDElementReferenceEditManager(((IFileEditorInput) input).getFile(), null, description);
+            }
+        }
+        
+        return null;
+    }
+
+    public static ComponentReferenceEditManager getXSDTypeReferenceEditManager(IASDObject asdObject) {
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+        if (page.getActiveEditor().getAdapter(XSDTypeReferenceEditManager.class) != null) {
+            return (ComponentReferenceEditManager) page.getActiveEditor().getAdapter(XSDTypeReferenceEditManager.class);
+        }
+        else {
+            IEditorInput input = page.getActiveEditor().getEditorInput();
+            if (input instanceof IFileEditorInput && asdObject instanceof IParameter && asdObject instanceof WSDLBaseAdapter) {
+                WSDLElement element = (WSDLElement) ((WSDLBaseAdapter) asdObject).getTarget();
+                IDescription description = (IDescription) WSDLAdapterFactoryHelper.getInstance().adapt(element.getEnclosingDefinition());
+                return new WSDLXSDTypeReferenceEditManager(((IFileEditorInput) input).getFile(), null, description);
+            }
+        }
+
+        return null;
+    }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/W11OpenExternalEditorHelper.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/W11OpenExternalEditorHelper.java
index c8f3445..4ee22f8 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/W11OpenExternalEditorHelper.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/W11OpenExternalEditorHelper.java
@@ -21,6 +21,7 @@
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
 import org.eclipse.wst.common.uriresolver.internal.util.URIHelper;
 import org.eclipse.wst.wsdl.Part;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
@@ -52,7 +53,7 @@
 			Object notifier = ((WSDLBaseAdapter) object).getTarget();
 			Object openOnModel = getModelToOpenOn(notifier);
 			
-			if (openOnModel != null) {
+			if (openOnModel instanceof XSDConcreteComponent) {
 				openXSDEditor((XSDConcreteComponent) openOnModel);
 			}
 		}
@@ -81,12 +82,12 @@
 				if (workbenchWindow != null) {
 					IWorkbenchPage page = workbenchWindow.getActivePage();
 					try {
-						XSDFileEditorInput editorInput = new XSDFileEditorInput(file, schema);
-						
-						IEditorPart editorPart = null;
-						
-						if (isInlineSchema(file)) {
-							editorInput.setEditorName(Messages.getString("_UI_LABEL_INLINE_SCHEMA_OF") + file.getName()); //$NON-NLS-1$
+            
+            IEditorPart editorPart = null;
+            if (isInlineSchema(file)) {
+              XSDFileEditorInput editorInput = new XSDFileEditorInput(file, schema);
+					
+							editorInput.setEditorName(Messages._UI_LABEL_INLINE_SCHEMA_OF + file.getName()); //$NON-NLS-1$
 							IEditorReference [] refs = page.getEditorReferences();
 							int length = refs.length;
 							for (int i = 0; i < length; i++)
@@ -113,7 +114,9 @@
 							}
 						}
 						else {
-							editorPart = page.openEditor(editorInput, "org.eclipse.wst.xsd.ui.internal.editor.InternalXSDMultiPageEditor", true); //$NON-NLS-1$
+              // Should open in default editor
+              editorPart = IDE.openEditor(page, file, true);
+              // editorPart = page.openEditor(new FileEditorInput(file), "org.eclipse.wst.xsd.ui.internal.editor.InternalXSDMultiPageEditor", true); //$NON-NLS-1$
 						}
 						
 						if (editorPart instanceof InternalXSDMultiPageEditor)
@@ -146,7 +149,8 @@
 	
 	protected Object getModelToOpenOn(Object object) {
 		if (object instanceof XSDElementDeclaration) {
-			return ((XSDElementDeclaration) object).getTypeDefinition();
+			XSDElementDeclaration xsdElement = ((XSDElementDeclaration) object).getResolvedElementDeclaration();
+			return xsdElement.getTypeDefinition();
 		}
 		else if (object instanceof Part) {
 			Object elementOrType = ((Part) object).getElementDeclaration();
@@ -157,7 +161,7 @@
 			return elementOrType;
 		}
 		
-		return null;
+		return object;
 	}
 	
 	/**
@@ -168,4 +172,29 @@
 		// Should there be a better test for this?  The IFiles are different so we can't use file == wsdlFile.
 		return file.getFullPath().equals(wsdlFile.getFullPath());
 	}
+	
+	public boolean isValid() {
+		if (object instanceof WSDLBaseAdapter) {
+			Object notifier = ((WSDLBaseAdapter) object).getTarget();
+			Object openOnModel = getModelToOpenOn(notifier);
+
+			// We check to ensure it's element != null.  If it does, then it's a sign of a
+			// bad reference (is invalid).
+			if (openOnModel instanceof XSDConcreteComponent && ((XSDConcreteComponent) openOnModel).getElement() != null) {
+				XSDConcreteComponent xsdComponent = (XSDConcreteComponent) openOnModel;
+
+				XSDSchema schema = getSchema(xsdComponent);
+				if (schema != null) {
+					String schemaLocation = URIHelper.removePlatformResourceProtocol(schema.getSchemaLocation());
+					IPath schemaPath = new Path(schemaLocation);
+					IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(schemaPath);
+					if (file != null && file.exists()) {
+						return true;
+					}
+				}
+			}
+		}
+
+		return false;
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/WSDLEditorUtil.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/WSDLEditorUtil.java
index 6d96fc0..5446fdc 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/WSDLEditorUtil.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/WSDLEditorUtil.java
@@ -10,12 +10,15 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.util;
 
+import java.io.InputStream;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.List;
 
 import javax.xml.namespace.QName;
+import javax.xml.transform.TransformerFactory;
 
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.ExtensibleElement;
@@ -28,6 +31,11 @@
 import org.eclipse.wst.wsdl.util.WSDLConstants;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.DefaultHandler;
 
 public class WSDLEditorUtil extends WSDLConstants
 {
@@ -220,4 +228,67 @@
   	
   	return childList;
   }
+  
+  public static String getTargetNamespaceURIForSchema(String uri)
+  {
+    String result = null;
+    try
+    {             
+      URL url = new URL(uri);
+      InputStream inputStream = url.openStream();
+      result = WSDLEditorUtil.getTargetNamespaceURIForSchema(inputStream); 
+    }
+    catch (Exception e)
+    {      
+    }  
+    return result;
+  }
+
+  public static String getTargetNamespaceURIForSchema(InputStream input)
+  {  
+    TargetNamespaceURIContentHandler handler = new TargetNamespaceURIContentHandler();                                                                  
+    ClassLoader prevClassLoader = Thread.currentThread().getContextClassLoader();
+    Thread.currentThread().setContextClassLoader(WSDLEditorUtil.class.getClassLoader());
+    // Line below is a hack to get XMLReader working
+    TransformerFactory transformerFactory = TransformerFactory.newInstance();
+    try
+    {
+    	XMLReader reader = org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
+    	reader.setContentHandler(handler);
+    	reader.parse(new InputSource(input));
+    }
+    catch (Exception e)
+    {      
+    }
+    finally
+    {
+      Thread.currentThread().setContextClassLoader(prevClassLoader);
+    }
+    return handler.targetNamespaceURI;
+  }  
+
+  protected static class TargetNamespaceURIContentHandler extends DefaultHandler
+  {       
+    public String targetNamespaceURI;
+
+    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
+    {            
+      if (localName.equals("schema") || localName.equals("definitions"))
+      {               
+        int nAttributes = attributes.getLength();
+        for (int i = 0; i < nAttributes; i++)
+        {
+          if (attributes.getLocalName(i).equals("targetNamespace"))
+          {
+            targetNamespaceURI = attributes.getValue(i);
+            break;
+          }
+        }
+      }                                    
+      // todo there's a ice way to do this I'm sure    
+      // here I intentially cause an exception... 
+      String x = null;
+      x.length();
+    }
+  }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/WSDLSetComponentHelper.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/WSDLSetComponentHelper.java
index 9609702..d97c5ae 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/WSDLSetComponentHelper.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/WSDLSetComponentHelper.java
@@ -124,7 +124,7 @@
                     importLocation = getNormalizedLocation(importDefinition.getLocation()); 
                 }            
     
-                if (importLocation.equals(spec.getFile().getLocation().toOSString())) {
+                if (spec.getFile().getLocation().equals(new Path(importLocation))) {
                     foundMatch = true;
                     break;
                 }
@@ -159,7 +159,7 @@
                 String resolvedString = resolvedSchema.getSchemaLocation();
                 String importLocation = getNormalizedLocation(resolvedString);
                 
-                if (importLocation.equals(spec.getFile().getLocation().toOSString())) {
+                if (spec.getFile().getLocation().equals(new Path(importLocation))) {
                     foundMatch = true;
                     break;
                 }
@@ -226,7 +226,7 @@
         }
         uniquePrefix = tempPrefix + i;
       }
-      return uniquePrefix;    
+      return uniquePrefix;
     } 
     
     private String getNormalizedLocation(String location) {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/XSDComponentHelper.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/XSDComponentHelper.java
index f0bd784..a1f94d1 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/XSDComponentHelper.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/util/XSDComponentHelper.java
@@ -254,7 +254,8 @@
 				Object eeElement = eeIt.next();
 				if (eeElement instanceof XSDSchemaExtensibilityElement) {
 					XSDSchemaExtensibilityElement ee = (XSDSchemaExtensibilityElement) eeElement;
-					if (ee.getSchema().getTargetNamespace().equals(wsdlTargetNamespace)) {
+					if (ee.getSchema().getTargetNamespace() != null &&
+						ee.getSchema().getTargetNamespace().equals(wsdlTargetNamespace)) {
 						schema = ee.getSchema();
 						break;
 					}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/visitor/WSDLVisitorForParameters.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/visitor/WSDLVisitorForParameters.java
index 9498e61..6c4410b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/visitor/WSDLVisitorForParameters.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/visitor/WSDLVisitorForParameters.java
@@ -1,16 +1,7 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2006 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.visitor;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.wst.wsdl.Message;
@@ -19,7 +10,6 @@
 import org.eclipse.wst.wsdl.ui.internal.adapters.visitor.W11XSDVisitorForFields;
 import org.eclipse.xsd.XSDComplexTypeDefinition;
 import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
 import org.eclipse.xsd.XSDTypeDefinition;
 
 public class WSDLVisitorForParameters
@@ -41,13 +31,13 @@
       // should be used to deduce the parameters
       // TODO (cs) we need to revist this, multiple parts need to be considered
       //
-    	if (message != null) {
-    		thingsToListenTo.add(message);
-    		List parts = message.getEParts();
-    		if (parts.size() > 0) {
-    			visitPart((Part) parts.get(0));
-    		}
-    	}
+        if (message != null) {
+            thingsToListenTo.add(message);
+            for (Iterator i = message.getEParts().iterator(); i.hasNext(); )
+            { 
+              visitPart((Part)i.next());
+            }
+        }
     }
 
     void visitPart(Part part)
@@ -57,10 +47,6 @@
       {
         visitXSDElementDeclaration(part.getElementDeclaration());
       }
-      else if (part.getTypeDefinition() instanceof XSDComplexTypeDefinition)
-      {
-        visitXSDComplextTypeDefinition((XSDComplexTypeDefinition) part.getTypeDefinition());
-      }
       else
       // if (part.getTypeDefinition() instanceof XSDSimpleTypeDefinition)
       {
@@ -71,14 +57,19 @@
     void visitXSDElementDeclaration(XSDElementDeclaration ed)
     {
       XSDTypeDefinition td = ed.getTypeDefinition();
-      if (td instanceof XSDSimpleTypeDefinition)
-      {
-        concreteComponents.add(ed);
-      }
-      else if (td instanceof XSDComplexTypeDefinition)
-      {
-        thingsToListenTo.add(ed);
-        visitXSDComplextTypeDefinition((XSDComplexTypeDefinition) td);
+      if (td != null)
+      {  
+        if (td.getName() != null)
+        {
+          concreteComponents.add(ed);
+        }
+        else if (td instanceof XSDComplexTypeDefinition)
+        {
+          // we're dealing with an anonymous locally defined type
+          // se we need to visit it's children
+          thingsToListenTo.add(ed);
+          visitXSDComplextTypeDefinition((XSDComplexTypeDefinition) td);
+        }
       }
     }
 
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/BindingWizard.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/BindingWizard.java
index 015519d..831c434 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/BindingWizard.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/BindingWizard.java
@@ -21,12 +21,14 @@
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.sse.core.internal.encoding.CommonEncodingPreferenceNames;
 import org.eclipse.wst.wsdl.Binding;
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.internal.generator.BindingGenerator;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.dialogs.ProtocolComponentControl;
 import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
@@ -76,7 +78,7 @@
     this.kind = kind;	
 	bindingGenerator = new BindingGenerator(definition, binding);
 
-    setWindowTitle(Messages.getString("_UI_BINDING_WIZARD")); //$NON-NLS-1$
+    setWindowTitle(Messages._UI_BINDING_WIZARD); //$NON-NLS-1$
     //setDefaultPageImageDescriptor(ImageDescriptor.createFromFile(WSDLEditorPlugin.class, "icons/NewXML.gif"));
   }
 
@@ -189,7 +191,7 @@
   
   private String getDefaultNamespace(Definition definition)
   {
-    String namespace = WSDLEditorPlugin.getInstance().getPreferenceStore().getString(Messages.getString("_UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE")); //$NON-NLS-1$
+    String namespace = WSDLEditorPlugin.getInstance().getPreferenceStore().getString(Messages._UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE); //$NON-NLS-1$
     if (!namespace.endsWith("/")) { //$NON-NLS-1$
     	namespace = namespace.concat("/"); //$NON-NLS-1$
     }
@@ -209,7 +211,7 @@
     Node node = document;
     if (node instanceof IDOMNode)
     {
-      ((IDOMNode)node).getModel().beginRecording(this, Messages.getString("_UI_ACTION_ADD_BINDING"));   //$NON-NLS-1$
+      ((IDOMNode)node).getModel().beginRecording(this, Messages._UI_ACTION_ADD_BINDING);   //$NON-NLS-1$
     }
   }
   
@@ -228,8 +230,8 @@
     public BindingWizardOptionsPage()
     {
       super("SpecifyBindingPage"); //$NON-NLS-1$
-      setTitle(Messages.getString("_UI_TITLE_SPECIFY_BINDING_DETAILS")); //$NON-NLS-1$
-      setDescription(Messages.getString("_UI_SPECIFY_BINDING_DETAILS_LABEL")); //$NON-NLS-1$
+      setTitle(Messages._UI_TITLE_SPECIFY_BINDING_DETAILS); //$NON-NLS-1$
+      setDescription(Messages._UI_SPECIFY_BINDING_DETAILS_LABEL); //$NON-NLS-1$
     }
 
     protected BindingGenerator getBindingGenerator()
@@ -242,6 +244,7 @@
       ProtocolComponentControl protocolComponentControl = new BindingProtocolComponentControl(parent, bindingGenerator, true);
       protocolComponentControl.initFields();
       setControl(protocolComponentControl);
+      PlatformUI.getWorkbench().getHelpSystem().setHelp(protocolComponentControl, ASDEditorCSHelpIds.BINDING_WIZARD);
     }
   }
 
@@ -264,7 +267,7 @@
 
     public String getRefNameLabelText()
     {
-      return Messages.getString("_UI_PORT_TYPE"); //$NON-NLS-1$
+      return Messages._UI_PORT_TYPE; //$NON-NLS-1$
     }
 
     public List getRefNames()
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/HttpBindingOptionsPage.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/HttpBindingOptionsPage.java
index 13cb02d..1958675 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/HttpBindingOptionsPage.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/HttpBindingOptionsPage.java
@@ -67,7 +67,7 @@
     separator.setLayoutData(gd);
 
     Label optionsHeading = new Label(control, SWT.NONE);
-    optionsHeading.setText(Messages.getString("_UI_LABEL_HTTP_BINDING_OPTIONS")); //$NON-NLS-1$
+    optionsHeading.setText(Messages._UI_LABEL_HTTP_BINDING_OPTIONS); //$NON-NLS-1$
 
     getButton = new Button(control, SWT.RADIO);
     getButton.setText("HTTP GET"); //$NON-NLS-1$
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/NamespaceTable.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/NamespaceTable.java
index b9f5c6a..341c10e 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/NamespaceTable.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/NamespaceTable.java
@@ -58,7 +58,7 @@
 {
   protected static final String NAMESPACE_URI = XMLCommonResources.getInstance().getString("_UI_LABEL_NAMESPACE_NAME"); 
   protected static final String PREFIX = XMLCommonResources.getInstance().getString("_UI_LABEL_PREFIX"); 
-  protected static final String INCLUDE = Messages.getString("_UI_TITLE_SELECT"); //$NON-NLS-1$
+  protected static final String INCLUDE = Messages._UI_TITLE_SELECT; //$NON-NLS-1$
     
   protected List namespaceInfoList = new Vector();
   protected List checkedList = new Vector();
@@ -100,7 +100,7 @@
     setLayoutData(fillGD);             
     
     Group namespaceInfoGroup = new Group(this, SWT.NONE);
-    namespaceInfoGroup.setText(Messages.getString("_UI_LABEL_NAMESPACE_URIS_TO_BE_INCLUDED")); //$NON-NLS-1$
+    namespaceInfoGroup.setText(Messages._UI_LABEL_NAMESPACE_URIS_TO_BE_INCLUDED); //$NON-NLS-1$
     namespaceInfoGroup.setLayout(new GridLayout());   
     GridData gd = fillGD;
     if (widthHint != -1)
@@ -328,7 +328,7 @@
     gd.grabExcessHorizontalSpace = true;
 
     addButton = new Button(buttonComposite, SWT.NONE);
-    addButton.setText(Messages.getString("_UI_ACTION_ADD")); //$NON-NLS-1$
+    addButton.setText(Messages._UI_ACTION_ADD); //$NON-NLS-1$
     addButton.setLayoutData(gd);//ViewUtility.createHorizontalFill());
     addButton.addSelectionListener(selectionListener);
   }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/NewWSDLWizard.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/NewWSDLWizard.java
index 409cecb..282ee73 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/NewWSDLWizard.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/NewWSDLWizard.java
@@ -18,6 +18,8 @@
 import javax.xml.namespace.QName;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
@@ -29,15 +31,20 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IEditorDescriptor;
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.PreferencesUtil;
 import org.eclipse.ui.part.FileEditorInput;
 import org.eclipse.wst.common.ui.internal.UIPlugin;
 import org.eclipse.wst.sse.core.internal.encoding.CommonEncodingPreferenceNames;
+import org.eclipse.wst.ws.internal.plugin.WSPlugin;
+import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
+import org.eclipse.wst.ws.internal.ui.wsi.properties.WSICompliancePropertyPage;
 import org.eclipse.wst.wsdl.Binding;
 import org.eclipse.wst.wsdl.Port;
 import org.eclipse.wst.wsdl.Service;
@@ -223,12 +230,12 @@
 
 		// Need new icon
 		this.setDefaultPageImageDescriptor(ImageDescriptor.createFromFile(InternalWSDLMultiPageEditor.class, "icons/new_wsdl_wiz.gif")); //$NON-NLS-1$
-		this.setWindowTitle(Messages.getString("_UI_TITLE_NEW_WSDL_FILE")); //$NON-NLS-1$
+		this.setWindowTitle(Messages._UI_TITLE_NEW_WSDL_FILE); //$NON-NLS-1$
 	}
 
 	public void addPages() {
 		newFilePage = new WSDLNewFilePage(selection);
-		optionsPage = new WSDLNewFileOptionsPage(Messages.getString("_UI_TITLE_OPTIONS"), Messages.getString("_UI_TITLE_OPTIONS"), null); //$NON-NLS-1$ //$NON-NLS-2$
+		optionsPage = new WSDLNewFileOptionsPage(Messages._UI_TITLE_OPTIONS, Messages._UI_TITLE_OPTIONS, null); //$NON-NLS-1$ //$NON-NLS-2$
 		addPage(newFilePage);
 		addPage(optionsPage);
 	}
@@ -406,4 +413,31 @@
 			return validator;
 		}
 	} // ///////////////////////// here
+	
+	
+	public void openProjectWSIProperties() {
+		Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+		IProject targetProject = ResourcesPlugin.getWorkspace().getRoot().getFile(newFilePage.getContainerFullPath().append(newFilePage.getFileName())).getProject();
+		//PreferencesUtil.createPropertyDialogOn(shell,targetProject,null,null,null).open();
+
+		PreferencesUtil.createPropertyDialogOn(shell,targetProject,WSICompliancePropertyPage.PAGE_ID ,new String[] {WSICompliancePropertyPage.PAGE_ID},null).open();
+	}
+	
+	  public String getWSIPreferences() {
+		  IProject targetProject = ResourcesPlugin.getWorkspace().getRoot().getFile(newFilePage.getContainerFullPath().append(newFilePage.getFileName())).getProject();
+		  PersistentWSIContext WSISSBcontext = WSPlugin.getInstance().getWSISSBPContext();
+		  
+		     if (WSISSBcontext.projectStopNonWSICompliances(targetProject))
+		      {
+		        return (PersistentWSIContext.STOP_NON_WSI);
+		      } 
+		      else if (WSISSBcontext.projectWarnNonWSICompliances(targetProject))
+		      {
+		        return (PersistentWSIContext.WARN_NON_WSI);
+		      }
+		      else 
+		      {
+		    	return (PersistentWSIContext.IGNORE_NON_WSI);
+		      }
+	  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/PortWizard.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/PortWizard.java
index d7d0e80..f1466fd 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/PortWizard.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/PortWizard.java
@@ -18,10 +18,12 @@
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.wsdl.Service;
 import org.eclipse.wst.wsdl.internal.generator.PortGenerator;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.dialogs.ProtocolComponentControl;
 import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
 import org.eclipse.wst.wsdl.ui.internal.util.NameUtil;
@@ -48,7 +50,7 @@
   {
     super();
     portGenerator = new PortGenerator(service);
-    setWindowTitle(Messages.getString("_UI_PORT_WIZARD")); //$NON-NLS-1$
+    setWindowTitle(Messages._UI_PORT_WIZARD); //$NON-NLS-1$
     //setDefaultPageImageDescriptor(ImageDescriptor.createFromFile(WSDLEditorPlugin.class, "icons/NewXML.gif"));
   }
 
@@ -96,8 +98,8 @@
     public PortWizardOptionsPage(int style)
     {
       super("SpecifyPortPage"); //$NON-NLS-1$
-      setTitle(Messages.getString("_UI_SPECIFY_PORT_DETAILS")); //$NON-NLS-1$
-      setDescription(Messages.getString("_UI_SPECIFY_PORT_DETAILS_TO_BE_CREATED")); //$NON-NLS-1$
+      setTitle(Messages._UI_SPECIFY_PORT_DETAILS); //$NON-NLS-1$
+      setDescription(Messages._UI_SPECIFY_PORT_DETAILS_TO_BE_CREATED); //$NON-NLS-1$
     }
 
     public PortGenerator getGenerator()
@@ -110,6 +112,7 @@
       ProtocolComponentControl protocolComponentControl = new PortProtocolComponentControl(parent, portGenerator);
       protocolComponentControl.initFields();
       setControl(protocolComponentControl);
+      PlatformUI.getWorkbench().getHelpSystem().setHelp(protocolComponentControl, ASDEditorCSHelpIds.PORT_WIZARD);
     }
   }
 
@@ -123,7 +126,7 @@
 
     public String getRefNameLabelText()
     {
-      return Messages.getString("_UI_BINDING"); //$NON-NLS-1$
+      return Messages._UI_BINDING; //$NON-NLS-1$
     }
 
     public List getRefNames()
@@ -145,8 +148,9 @@
 		  optionsPage = new SoapBindingOptionsPage();
 	  }
 	  else if (protocolSelection.equals("HTTP")) { //$NON-NLS-1$
-		  optionsPage = new SoapBindingOptionsPage();
+		  optionsPage = new HttpBindingOptionsPage();
 	  }	  
+	  // TODO: We need to eventually put this back in
 //      ContentGeneratorExtension extension = WSDLEditorPlugin.getInstance().getContentGeneratorExtensionRegistry().getContentGeneratorExtension(protocol);
 //      if (extension != null)
 //      {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/SoapBindingOptionsPage.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/SoapBindingOptionsPage.java
index d36c7fc..d38309d 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/SoapBindingOptionsPage.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/SoapBindingOptionsPage.java
@@ -65,17 +65,17 @@
     separator.setLayoutData(gd);
 
     Label optionsHeading = new Label(control, SWT.NONE);
-    optionsHeading.setText(Messages.getString("_UI_LABEL_SOAP_BINDING_OPTIONS")); //$NON-NLS-1$
+    optionsHeading.setText(Messages._UI_LABEL_SOAP_BINDING_OPTIONS); //$NON-NLS-1$
 
     docLiteral = new Button(control, SWT.RADIO);
-    docLiteral.setText(Messages.getString("_UI_RADIO_DOCUMENT_LITERAL")); //$NON-NLS-1$
+    docLiteral.setText(Messages._UI_RADIO_DOCUMENT_LITERAL); //$NON-NLS-1$
     docLiteral.setSelection(true);
 
     rpcLiteral = new Button(control, SWT.RADIO);
-    rpcLiteral.setText(Messages.getString("_UI_RADIO_RPC_LITERAL")); //$NON-NLS-1$
+    rpcLiteral.setText(Messages._UI_RADIO_RPC_LITERAL); //$NON-NLS-1$
     
     rpcEncoded = new Button(control, SWT.RADIO);
-    rpcEncoded.setText(Messages.getString("_UI_RADIO_RPC_ENCODED")); //$NON-NLS-1$
+    rpcEncoded.setText(Messages._UI_RADIO_RPC_ENCODED); //$NON-NLS-1$
 
     if (generator.getName() != null)
     {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/WSDLNewFileOptionsPage.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/WSDLNewFileOptionsPage.java
index c217064..4a6365b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/WSDLNewFileOptionsPage.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/WSDLNewFileOptionsPage.java
@@ -20,6 +20,7 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
@@ -29,11 +30,15 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.help.WorkbenchHelp;
 import org.eclipse.ui.part.PageBook;
+import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.util.ValidateHelper;
 import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceInfo;
 import org.eclipse.wst.xml.ui.internal.dialogs.UpdateListener;
@@ -53,6 +58,7 @@
   protected Button rpcEncRadio;
   protected Button httpGetRadio;
   protected Button httpPostRadio;
+  protected Link WSIPreferenceLink;
   
 //  private BindingGenerator generator;
 
@@ -73,7 +79,7 @@
   public WSDLNewFileOptionsPage(String pageName, String title, ImageDescriptor titleImage)
   {
     super(pageName, title, titleImage);
-    setDescription(Messages.getString("_UI_DESCRIPTION_NEW_WSDL_FILE")); //$NON-NLS-1$
+    setDescription(Messages._UI_DESCRIPTION_NEW_WSDL_FILE); //$NON-NLS-1$
   }
   /**
    * @see org.eclipse.jface.dialogs.IDialogPage#createControl(Composite)
@@ -81,7 +87,7 @@
   public void createControl(Composite parent)
   {
     Composite base = new Composite(parent, SWT.NONE);
-    WorkbenchHelp.setHelp(base, Messages.getString("_UI_HELP")); //$NON-NLS-1$
+    WorkbenchHelp.setHelp(base, Messages._UI_HELP); //$NON-NLS-1$
     base.setLayout(new GridLayout());
 
     //  Group wsdlGroup = ViewUtility.createGroup(base, 2, "WSDL", false);
@@ -99,7 +105,7 @@
     gd.grabExcessHorizontalSpace = true;
 
     Label targetNamespace = new Label(wsdlGroup, SWT.LEFT);
-    targetNamespace.setText(Messages.getString("_UI_LABEL_TARGET_NAMESPACE")); //$NON-NLS-1$
+    targetNamespace.setText(Messages._UI_LABEL_TARGET_NAMESPACE); //$NON-NLS-1$
     GridData nsData = new GridData();
     nsData.horizontalAlignment = GridData.FILL;
     targetNamespace.setLayoutData(nsData);
@@ -112,9 +118,10 @@
     targetNamespaceText.setLayoutData(textData);
     
     targetNamespaceText.addModifyListener(this);
+    PlatformUI.getWorkbench().getHelpSystem().setHelp(targetNamespaceText, ASDEditorCSHelpIds.WSDL_WIZARD_OPTIONS_PAGE_TNS_TEXT);
 
     Label prefix = new Label(wsdlGroup, SWT.LEFT);
-    prefix.setText(Messages.getString("_UI_LABEL_PREFIX_WITH_COLON")); //$NON-NLS-1$\
+    prefix.setText(Messages._UI_LABEL_PREFIX_WITH_COLON); //$NON-NLS-1$\
 
     GridData prefixData = new GridData();
     prefixData.horizontalAlignment = GridData.FILL;
@@ -128,14 +135,16 @@
     prefixText.setLayoutData(prefixTextData);
 
     prefixText.addModifyListener(this);
+    PlatformUI.getWorkbench().getHelpSystem().setHelp(prefixText, ASDEditorCSHelpIds.WSDL_WIZARD_OPTIONS_PAGE_PREFIX_TEXT);
     
     //    XMLCatalog xmlCatalog = XMLCatalogRegistry.getInstance().lookupOrCreateXMLCatalog("default");
     //    SelectXMLCatalogIdPanel catalog = new SelectXMLCatalogIdPanel(base, xmlCatalog);
 
 //  Determine if the user wishes to create a skeleton WSDL.  If yes, present the user with input fields.
     createSkeletonCheckBox = new Button(base, SWT.CHECK);
-    createSkeletonCheckBox.setText(Messages.getString("_UI_LABEL_CREATE_WSDL_SKELETON")); //$NON-NLS-1$
+    createSkeletonCheckBox.setText(Messages._UI_LABEL_CREATE_WSDL_SKELETON); //$NON-NLS-1$
     createSkeletonCheckBox.setSelection(true);
+    PlatformUI.getWorkbench().getHelpSystem().setHelp(createSkeletonCheckBox, ASDEditorCSHelpIds.WSDL_WIZARD_OPTIONS_PAGE_CREATE_SKELETON_CHECKBOX);
     
     wsdlSkeletonGroup = new Composite(base, SWT.NONE);
     GridLayout layout2 = new GridLayout();
@@ -147,7 +156,7 @@
     data2.horizontalAlignment = GridData.FILL;
     wsdlSkeletonGroup.setLayoutData(data2);
 
-   createLabel(wsdlSkeletonGroup, Messages.getString("_UI_LABEL_BINDING_PROTOCOL")); //$NON-NLS-1$
+   createLabel(wsdlSkeletonGroup, Messages._UI_LABEL_BINDING_PROTOCOL); //$NON-NLS-1$
    protocolCombo = new Combo(wsdlSkeletonGroup, SWT.READ_ONLY);
    GridData dataC = new GridData();
    dataC.horizontalAlignment = GridData.FILL;
@@ -157,7 +166,8 @@
    protocolCombo.add(HTTP_PROTOCOL);
    protocolCombo.select(0);
    protocolCombo.addModifyListener(this);
-   
+   PlatformUI.getWorkbench().getHelpSystem().setHelp(protocolCombo, ASDEditorCSHelpIds.WSDL_WIZARD_OPTIONS_PAGE_PROTOCOL_COMBO);
+
    sepLabel = new Label(base, SWT.SEPARATOR | SWT.HORIZONTAL);
    GridData sepData = new GridData();
    sepData.horizontalAlignment = GridData.FILL;
@@ -178,7 +188,7 @@
    pbData.horizontalAlignment = GridData.FILL;
    soapPage.setLayoutData(pbData);
 
-   createLabel(soapPage, Messages.getString("_UI_LABEL_SOAP_BINDING_OPTIONS")); //$NON-NLS-1$
+   createLabel(soapPage, Messages._UI_LABEL_SOAP_BINDING_OPTIONS); //$NON-NLS-1$
    docLitRadio = new Button(soapPage, SWT.RADIO);
    rpcLitRadio = new Button(soapPage, SWT.RADIO);
    rpcEncRadio = new Button(soapPage, SWT.RADIO);
@@ -186,6 +196,9 @@
    rpcLitRadio.setText(SOAP_RPC_LITERAL);
    rpcEncRadio.setText(SOAP_RPC_ENCODED);
    docLitRadio.setSelection(true);
+   PlatformUI.getWorkbench().getHelpSystem().setHelp(docLitRadio, ASDEditorCSHelpIds.DOC_LIT_RADIO);
+   PlatformUI.getWorkbench().getHelpSystem().setHelp(rpcLitRadio, ASDEditorCSHelpIds.RPC_LIT_RADIO);
+   PlatformUI.getWorkbench().getHelpSystem().setHelp(rpcEncRadio, ASDEditorCSHelpIds.RPC_ENCODED_RADIO);
    
    ///////////////////////// Http Page
    httpPage = new Composite(protocolPageBook, SWT.NONE);
@@ -197,25 +210,44 @@
    pbData.horizontalAlignment = GridData.FILL;
    httpPage.setLayoutData(pbData);
    
-   createLabel(httpPage, Messages.getString("_UI_LABEL_HTTP_BINDING_OPTIONS")); // Already Externalized //$NON-NLS-1$
+   createLabel(httpPage, Messages._UI_LABEL_HTTP_BINDING_OPTIONS); // Already Externalized //$NON-NLS-1$
    httpGetRadio = new Button(httpPage, SWT.RADIO);
    httpPostRadio = new Button(httpPage, SWT.RADIO);
    httpGetRadio.setText(HTTP_GET);
    httpPostRadio.setText(HTTP_POST);
    httpGetRadio.setSelection(true);
+   PlatformUI.getWorkbench().getHelpSystem().setHelp(httpGetRadio, ASDEditorCSHelpIds.HTTP_GET_RADIO);
+   PlatformUI.getWorkbench().getHelpSystem().setHelp(httpPostRadio, ASDEditorCSHelpIds.HTTP_POST_RADIO);
    
    wsdlSkeletonGroup.setVisible(true);
    sepLabel.setVisible(true);
    protocolPageBook.showPage(soapPage);
    protocolPageBook.setVisible(true);
    
+   WSIPreferenceLink = new Link(base, SWT.NONE);
+   WSIPreferenceLink.setText("<A>" + Messages.getString("_WSI_COMPLIANCE_LINK_TEXT") + "</A>");
+   WSIPreferenceLink.addSelectionListener(new SelectionAdapter() {
+		public void widgetSelected(SelectionEvent e) {
+			getNewWSDLWizard().openProjectWSIProperties();
+			setPageComplete(isPageComplete());
+		}
+	});
+   
+   WSIPreferenceLink.setLayoutData(new GridData(GridData.GRAB_VERTICAL | GridData.VERTICAL_ALIGN_END));
    ////////////////////////// Add Selection Listeners
    createSkeletonCheckBox.addSelectionListener(this);
    
+
+   rpcEncRadio.addSelectionListener(this);
+   
+   
 //   BindingProtocolComponentControl component = new BindingProtocolComponentControl(base, generator, false);
 //   component.initFields();
    
+   PlatformUI.getWorkbench().getHelpSystem().setHelp(base, ASDEditorCSHelpIds.WSDL_WIZARD_OPTIONS_PAGE);
+
     setControl(base);
+    
   }
 
   private NewWSDLWizard getNewWSDLWizard()
@@ -236,7 +268,7 @@
 
   private String computeDefaultNamespaceName()
   {
-    String namespace = WSDLEditorPlugin.getInstance().getPreferenceStore().getString(Messages.getString("_UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE")); //$NON-NLS-1$
+    String namespace = WSDLEditorPlugin.getInstance().getPreferenceStore().getString(Messages._UI_PREF_PAGE_DEFAULT_TARGET_NAMESPACE); //$NON-NLS-1$
     if (!namespace.endsWith("/")) { //$NON-NLS-1$
     	namespace = namespace.concat("/"); //$NON-NLS-1$
     }
@@ -278,6 +310,7 @@
 
   public void modifyText(ModifyEvent e)
   {
+
     if (e.widget == targetNamespaceText)
     {
       startDelayedEvent(e);
@@ -294,6 +327,7 @@
 		else if (protocolCombo.getText().equals("HTTP")) { //$NON-NLS-1$
 			protocolPageBook.showPage(httpPage);
 		}
+		setPageComplete(isPageComplete());
 	}
   }
 
@@ -307,6 +341,9 @@
     boolean ready = true;
 
     setErrorMessage(null);
+    setMessage(null);
+
+    //this.setMessage(Messages.getString("_UI_DESCRIPTION_NEW_WSDL_FILE"),this.NONE);  //$NON-NLS-1$
 
     // so that the page doesn't immediately show up with an error
     if (targetNamespaceText.getText().trim().equals("")) //$NON-NLS-1$
@@ -323,9 +360,46 @@
       ready = false;
     }
     
+    if (createSkeletonCheckBox.getSelection()) {
+
+        if (!validateWSICompliance()) {
+        	
+        	ready = false;
+        }
+    }
+    else {
+    	this.setMessage(Messages.getString("_UI_DESCRIPTION_NEW_WSDL_FILE"),this.NONE);  //$NON-NLS-1$
+    }
+ 
     return ready;
   }
 
+  protected boolean validateWSICompliance() {
+	  String WSICompliance = getNewWSDLWizard().getWSIPreferences();
+  
+	  if (!(protocolCombo.getText().equals("SOAP"))) {
+		  if (WSICompliance.equals(PersistentWSIContext.STOP_NON_WSI)) {
+			  this.setErrorMessage(Messages.getString("_ERROR_WSI_COMPLIANCE_SOAP_PROTOCOL"));
+			  return false;
+		  } else if (WSICompliance.equals(PersistentWSIContext.WARN_NON_WSI)) {
+			  this.setMessage(Messages.getString("_WARN_WSI_COMPLIANCE_SOAP_PROTOCOL"), this.WARNING);
+			  return true;
+		  }
+	  } else if (rpcEncRadio.getSelection()) {
+		  if (WSICompliance.equals(PersistentWSIContext.STOP_NON_WSI)) {
+			  this.setErrorMessage(Messages.getString("_ERROR_WSI_COMPLIANCE_RPC_ENCODING"));
+			  return false;
+		  } else if (WSICompliance.equals(PersistentWSIContext.WARN_NON_WSI)) {
+			  this.setMessage(Messages.getString("_WARN_WSI_COMPLIANCE_RPC_ENCODING"), this.WARNING);
+			  return true;
+		  }
+	  } else {
+		  this.setMessage(Messages.getString("_UI_DESCRIPTION_NEW_WSDL_FILE"),this.NONE);  //$NON-NLS-1$
+	  }
+
+	  return true;
+  }
+  
   protected boolean validatePrefix(String prefix)
   {
     String errorMessage = ValidateHelper.checkXMLPrefix(prefix);
@@ -371,7 +445,7 @@
       //			}
       //			else
       //			{
-      setErrorMessage(Messages.getString("_UI_ERROR_NAMESPACE_INVALID")); //$NON-NLS-1$
+      setErrorMessage(Messages._UI_ERROR_NAMESPACE_INVALID); //$NON-NLS-1$
       test = false;
       //			}
     }
@@ -507,9 +581,13 @@
 
   public void widgetDefaultSelected(SelectionEvent e) {
   }
-
+  
   public void widgetSelected(SelectionEvent e) {
-  	 if (e.widget == createSkeletonCheckBox) {
+  	 if (e.widget == rpcEncRadio) {
+  		setPageComplete(isPageComplete());
+  	 }
+	  
+	  if (e.widget == createSkeletonCheckBox) {
   	 	if (createSkeletonCheckBox.getSelection()) {
   	 		wsdlSkeletonGroup.setVisible(true);
   	 		sepLabel.setVisible(true);
@@ -520,14 +598,15 @@
   	 		sepLabel.setVisible(false);
   	 		protocolPageBook.setVisible(false);
   	 	}
+  	 	setPageComplete(isPageComplete());
   	 }
   }
   
   private static final String SOAP_PROTOCOL = "SOAP"; //$NON-NLS-1$
   private static final String HTTP_PROTOCOL = "HTTP"; //$NON-NLS-1$
-  private static final String SOAP_RPC_ENCODED = Messages.getString("_UI_RADIO_RPC_ENCODED"); //$NON-NLS-1$
-  private static final String SOAP_RPC_LITERAL = Messages.getString("_UI_RADIO_RPC_LITERAL"); //$NON-NLS-1$
-  private static final String SOAP_DOCUMENT_LITERAL = Messages.getString("_UI_RADIO_DOCUMENT_LITERAL"); //$NON-NLS-1$
+  private static final String SOAP_RPC_ENCODED = Messages._UI_RADIO_RPC_ENCODED; //$NON-NLS-1$
+  private static final String SOAP_RPC_LITERAL = Messages._UI_RADIO_RPC_LITERAL; //$NON-NLS-1$
+  private static final String SOAP_DOCUMENT_LITERAL = Messages._UI_RADIO_DOCUMENT_LITERAL; //$NON-NLS-1$
   private static final String HTTP_POST = "HTTP POST"; //$NON-NLS-1$
   private static final String HTTP_GET = "HTTP GET"; //$NON-NLS-1$
 
@@ -559,7 +638,7 @@
 		info8.prefix = "xsd"; //$NON-NLS-1$
 		info8.uri = "http://www.w3.org/2001/XMLSchema"; //$NON-NLS-1$
 		namespaces.addElement(info8);
-		
+
 		return namespaces;
   }
   
@@ -608,4 +687,5 @@
   		return false;
   	}
   }
-}
+  }
+
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/WSDLNewFilePage.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/WSDLNewFilePage.java
index 4a5251a..0b5fb0d 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/WSDLNewFilePage.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/wizards/WSDLNewFilePage.java
@@ -17,6 +17,7 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
 import org.eclipse.wst.wsdl.ui.internal.Messages;
@@ -25,9 +26,9 @@
 {
   public WSDLNewFilePage(IStructuredSelection selection) 
   {
-    super(Messages.getString("_UI_TITLE_NEW_WSDL_FILE"), selection); //$NON-NLS-1$
-    setTitle(Messages.getString("_UI_TITLE_NEW_WSDL_FILE")); //$NON-NLS-1$
-    setDescription(Messages.getString("_UI_LABEL_CREATE_NEW_WSDL_FILE")); //$NON-NLS-1$
+    super(Messages._UI_TITLE_NEW_WSDL_FILE, selection); //$NON-NLS-1$
+    setTitle(Messages._UI_TITLE_NEW_WSDL_FILE); //$NON-NLS-1$
+    setDescription(Messages._UI_LABEL_CREATE_NEW_WSDL_FILE); //$NON-NLS-1$
   }
 
   public void createControl(Composite parent) 
@@ -46,7 +47,7 @@
     String extension = newName.getFileExtension();
     if (extension == null || !extension.equalsIgnoreCase("wsdl"))  //$NON-NLS-1$
     {
-      setErrorMessage(Messages.getString("_UI_ERROR_FILE_MUST_END_WITH_WSDL")); //$NON-NLS-1$
+      setErrorMessage(Messages._UI_ERROR_FILE_MUST_END_WITH_WSDL); //$NON-NLS-1$
       return false;
     }
     else 
@@ -59,7 +60,7 @@
     if (sameName != null) 
     {
 //       String qualifiedFileName = getContainerFullPath().toString() + '/' + fullFileName;
-       setErrorMessage(Messages.getString("_UI_ERROR_FILE_ALREADY_EXISTS", sameName)); //$NON-NLS-1$
+       setErrorMessage(NLS.bind(Messages._UI_ERROR_FILE_ALREADY_EXISTS, sameName)); //$NON-NLS-1$
        return false;
     }
 
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/xsd/XSDNodeAssociationProvider.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/xsd/XSDNodeAssociationProvider.java
new file mode 100644
index 0000000..29c346b
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd-wsdl11/org/eclipse/wst/wsdl/ui/internal/xsd/XSDNodeAssociationProvider.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2004 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.xsd;
+                                                                    
+import org.eclipse.wst.wsdl.XSDSchemaExtensibilityElement;
+import org.eclipse.wst.wsdl.ui.internal.extensions.INodeAssociationProvider;
+
+
+import org.eclipse.wst.xsd.ui.internal.adapters.CategoryAdapter;
+import org.eclipse.xsd.XSDConcreteComponent;
+import org.eclipse.xsd.XSDSchema;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class XSDNodeAssociationProvider implements INodeAssociationProvider
+{                    
+  public Object getModelObject(Object parentModelObject, Element[] elementChain, int start, int[] end)
+  {   
+    Object result = null;
+    if (parentModelObject instanceof XSDSchemaExtensibilityElement)
+    {
+      XSDSchemaExtensibilityElement extensibilityElement = (XSDSchemaExtensibilityElement)parentModelObject;
+      XSDSchema schema = extensibilityElement.getSchema();
+      if (schema != null)
+      {          
+        Element targetElement = elementChain[elementChain.length - 1];
+        result = schema.getCorrespondingComponent(targetElement);
+      }
+    }
+    else if (parentModelObject instanceof CategoryAdapter)
+    {
+      result = ((CategoryAdapter)parentModelObject).getXSDSchema();
+    }
+//    else if (parentModelObject instanceof Category)
+//    {
+//      result = ((Category)parentModelObject).getXSDSchema();
+//    }
+
+    return result;
+  }
+
+  public Node getNode(Object modelObject)
+  {        
+    Node node = null;
+    if (modelObject instanceof XSDSchemaExtensibilityElement)
+    {           
+      XSDSchemaExtensibilityElement extensibilityElement = (XSDSchemaExtensibilityElement)modelObject;
+      XSDSchema schema = extensibilityElement.getSchema();
+      if (schema != null)
+      {
+        node = schema.getElement();
+      }
+    }        
+    else if (modelObject instanceof XSDConcreteComponent)
+    {
+      node = ((XSDConcreteComponent)modelObject).getElement();
+    }
+    else if (modelObject instanceof CategoryAdapter)
+    {
+      node = ((CategoryAdapter)modelObject).getXSDSchema().getElement();
+    }
+//    else if (modelObject instanceof Category)
+//    {
+//      node = ((Category)modelObject).getXSDSchema().getElement();
+//    }
+    
+    return node;
+  }      
+} 
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDEditorCSHelpIds.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDEditorCSHelpIds.java
new file mode 100644
index 0000000..f2418c2
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDEditorCSHelpIds.java
@@ -0,0 +1,191 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd;
+
+public class ASDEditorCSHelpIds {
+	private static String pluginId = "org.eclipse.wst.wsdl.ui.";
+	
+	/*-------------------------------------------------------------------------------
+	New WSDL Wizard - Options page:
+	-------------------------------------------------------------------------------*/
+	public static String WSDL_WIZARD_OPTIONS_PAGE_TNS_TEXT = pluginId + "wsdlu0000";
+	public static String WSDL_WIZARD_OPTIONS_PAGE_PREFIX_TEXT = pluginId + "wsdlu0001";
+	public static String WSDL_WIZARD_OPTIONS_PAGE_CREATE_SKELETON_CHECKBOX = pluginId + "wsdlu0002";
+	public static String WSDL_WIZARD_OPTIONS_PAGE_PROTOCOL_COMBO = pluginId + "wsdlu0003";
+
+//	Soap Binding Options
+	public static String DOC_LIT_RADIO = pluginId + "wsdlu0010";
+	public static String RPC_LIT_RADIO = pluginId + "wsdlu0011";
+	public static String RPC_ENCODED_RADIO = pluginId + "wsdlu0012";
+
+//	HTTP Binding Options
+	public static String HTTP_GET_RADIO = pluginId + "wsdlu0013";
+	public static String HTTP_POST_RADIO = pluginId + "wsdlu0014";
+
+
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Design View
+	-------------------------------------------------------------------------------*/
+	public static String WSDL_DESIGN_VIEW_SERVICE_OBJECT = pluginId + "wsdlu0020";   //  Service Object                                          --> wsdlu0020
+	public static String WSDL_DESIGN_VIEW_BINDING_OBJECT = pluginId + "wsdlu0021";   //  Binding Object                                          --> wsdlu0021
+	public static String WSDL_DESIGN_VIEW_PORTTYPE_OBJECT = pluginId + "wsdlu0022";   //  PortType Object                                         --> wsdlu0022
+
+
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Outline View
+	-------------------------------------------------------------------------------*/
+	public static String WSDL_OUTLINE_VIEW_GROUP = pluginId + "wsdlu0023";   //  Imports, Types, Services, Bindings, Port Types, Messages (grouped together)             --> wsdlu0023
+
+
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Port Wizard
+	-------------------------------------------------------------------------------*/
+	public static String PORT_WIZARD = pluginId + "wsdlu0030";
+	public static String PORT_WIZARD_NAME_TEXT = pluginId + "wsdlu0031";   //  not used - dup below
+	public static String PORT_WIZARD_BINDING_COMBO = pluginId + "wsdlu0032";   //  not used - dup below
+	public static String PORT_WIZARD_PROTOCOL_COMBO = pluginId + "wsdlu0033";   //  not used - dup below
+
+
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Generate Binding Wizard
+	-------------------------------------------------------------------------------*/
+	public static String BINDING_WIZARD = pluginId + "wsdlu0040";
+	public static String PROTOCOL_COMPONENT_NAME_TEXT = pluginId + "wsdlu0041";
+	public static String PROTOCOL_COMPONENT_REF_COMBO = pluginId + "wsdlu0042";
+	public static String PROTOCOL_COMPONENT_PROTOCOL_COMBO = pluginId + "wsdlu0043";
+	public static String pROTOCOL_COMPONENT_OVERWRITE_CHECKBOX = pluginId + "wsdlu0044";
+
+	
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Edit Namespaces Dialog --- common.ui
+	-------------------------------------------------------------------------------*/
+	public static String EDIT_NS_DIALOG = pluginId + "wsdlu0050";   //  Edit Namespaces Dialog                  "dialog"        --> wsdlu0050
+	public static String EDIT_NS_DIALOG_TNS_TEXT = pluginId + "wsdlu0051";   //  Target Namespace                        "text"          --> wsdlu0051
+	public static String EDIT_NS_DIALOG_DECLARATIONS_TABLE = pluginId + "wsdlu0052";   //  Namespace Declarations                  "table"         --> wsdlu0052
+
+	public static String EDIT_NS_DIALOG_ADD_BUTTON = pluginId + "wsdlu0053";   //  Add...                                  "push button"   --> wsdlu0053
+	public static String EDIT_NS_DIALOG_EDIT_BUTTON = pluginId + "wsdlu0054";   //  Edit...                                 "push button"   --> wsdlu0054
+	public static String EDIT_NS_DIALOG_DELETE_BUTTON = pluginId + "wsdlu0055";   //  Delete                                  "push button"   --> wsdlu0055
+
+
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Add Namespace Declarations Dialog --- common.ui
+	-------------------------------------------------------------------------------*/
+	public static String ADD_NS_DECL = pluginId + "wsdlu0060";   //  Add Namespace Declarations Dialog       "dialog"        --> wsdlu0060
+	public static String ADD_NS_DECL_SELECT_REG_NS_RADIO = pluginId + "wsdlu0061";   //  Select From Registered Namespaces       "radio"         --> wsdlu0061
+	public static String ADD_NS_DECL_SPECIFY_NEW_NS_RADIO = pluginId + "wsdlu0062";   //  Specify New Namespace                   "radio"         --> wsdlu0062
+
+	// Registered Namespaces:
+	public static String ADD_NS_DECL_SELECT_NS_TO_ADD_TABLE = pluginId + "wsdlu0063";   //  Select the namespace declarations to add "table"        --> wsdlu0063
+
+	// New Namespace:
+	public static String ADD_NS_DECL_PREFIX_TEXT = pluginId + "";   //  Prefix:                                 "text"          -->(COMMON) wsdlu0064
+	public static String ADD_NS_DECL_NAMESPACE_NAME_TEXT = pluginId + "";   //  Namespace Name:                         "text"          -->(COMMON) wsdlu0065
+	public static String ADD_NS_DECL_LOCATION_HINT_TEXT = pluginId + "";   //  Location Hint:                          "text"          -->(COMMON) wsdlu0066
+	public static String ADD_NS_DECL_BROWSE_BUTTON = pluginId + "";   //  Browse...                               "push button"   -->(COMMON) wsdlu0067
+	
+	
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - New Namespace Information Dialog --- common.ui
+	-------------------------------------------------------------------------------*/
+	public static String NEW_NAMESPACE_INFO_DIALOG = pluginId + "wsdlu0068";
+
+	public static String NAMESPACE_NAME = pluginId + "wsdlu0065";
+	public static String PREFIX =         pluginId + "wsdlu0064";
+	public static String LOCATION_HINT =  pluginId + "wsdlu0066";
+	public static String BROWSE =         pluginId + "wsdlu0067";
+
+
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - New Message Dialog
+	-------------------------------------------------------------------------------*/
+	public static String NEW_MESSAGE_DIALOG = pluginId + "wsdlu0080";
+	public static String NEW_MESSAGE_DIALOG_NAME_TEXT = pluginId + "wsdlu0081";  // not used -- text will use "dialog" context Id
+
+
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Specify Message Dialog --- common.ui
+	-------------------------------------------------------------------------------*/
+	public static String SPECIFY_MESSAGE_DIALOG = pluginId + "wsdlu0082"; //                "dialog"        --> wsdlu0082
+
+	public static String SPECIFY_DIALOG_NAME_TEXT = pluginId + "wsdlu0070"; //   Name (? = character, * = any string):   "text"          -->(COMMON) wsdlu0070
+	public static String SPECIFY_DIALOG_COMPONENTS_LIST = pluginId + "wsdlu0071";  //  Components                              "list"          -->(COMMON) wsdlu0071
+
+	public static String SPECIFY_DIALOG_SEARCH_SCOPE = pluginId + "wsdlu0072"; //  Search Scope:
+	//Workspace, Enclosing Project, Current Resource, Working Sets (Grouped)          "radio"         -->(COMMON) wsdlu0072
+
+
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - New Binding Dialog
+	-------------------------------------------------------------------------------*/
+	public static String NEW_BINDING_DIALOG = pluginId + "wsdlu0083";
+	public static String NEW_BINDING_DIALOG_NAME_TEXT = pluginId + "wsdlu0084"; // not used -- text will use "dialog" context Id
+
+	
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Specify Binding Dialog --- common.ui
+	-------------------------------------------------------------------------------*/
+	public static String SPECIFY_BINDING_DIALOG = pluginId + "wsdlu0085";  //  Specify Binding Dialog                  "dialog"        --> wsdlu0085
+
+	
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - New PortType Dialog 
+	-------------------------------------------------------------------------------*/
+	public static String NEW_PORTTYPE_DIALOG = pluginId + "wsdlu0086";
+	public static String NEW_PORTTYPE_DIALOG_NAME_TEXT = pluginId + "wsdlu0087"; // not used -- text will use "dialog" context Id
+
+	
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Specify Port Type Dialog --- common.ui
+	-------------------------------------------------------------------------------*/
+	public static String SPECIFY_PORTTYPE_DIALOG = pluginId + "wsdlu0088"; //  Specify Port Type Dialog                "dialog"        --> wsdlu0088
+
+	
+	/*-------------------------------------------------------------------------------
+	WSDL Editor - Properties
+	-------------------------------------------------------------------------------*/
+	//Definition:
+	public static String PROPERTIES_NAME_TEXT = pluginId + "wsdlu0100";
+	public static String PROPERTIES_DEF_PREFIX_TEXT = pluginId + "wsdlu0101";
+	public static String PROPERTIES_DEF_TNS_TEXT = pluginId + "wsdlu0102";
+
+	//Port:
+	public static String PROPERTIES_PORT_BINDING_COMBO = pluginId + "wsdlu0103";
+	public static String PROPERTIES_PORT_ADDRESS_TEXT = pluginId + "wsdlu0104";
+	public static String PROPERTIES_PORT_PROTOCOL_TEXT = pluginId + "wsdlu0105";
+
+	//Binding:
+	public static String PROPERTIES_BINDING_PORTTYPE_COMBO = pluginId + "wsdlu0106";
+	public static String PROPERTIES_BINDING_PROTOCOL_TEXT = pluginId + "wsdlu0107";
+	public static String PROPERTIES_BINDING_GEN_BINDING_BUTTON = pluginId + "wsdlu0108";
+
+	//Input/Output/Fault:
+	public static String PROPERTIES_MESSAGE_REF_MESSAGE_COMBO = pluginId + "wsdlu0109";
+
+	//Part:
+	public static String PROPERTIES_PART_ELEMENT_COMBO = pluginId + "wsdlu0110";
+	public static String PROPERTIES_PART_TYPE_COMBO = pluginId + "wsdlu0111";
+	public static String PROPERTIES_PART_TYPE_RADIO = pluginId + "wsdlu0112";
+	public static String PROPERTIES_PART_ELEMENT_RADIO = pluginId + "wsdlu0113";
+	
+
+	public static String PROPERTIES_DOCUMENTATION_TAB = pluginId + "wsdlu0114";
+
+	public static String WSDL_WIZARD_OPTIONS_PAGE = pluginId + "wsdlu0120";  // New WSDL Wizard - options page 	--> wsdlu0120
+	public static String WSDL_DESIGN_VIEW = pluginId + "wsdlu0121"; //  Design View 				--> wsdlu0121
+	public static String WSDL_OUTLINE_VIEW = pluginId + "wsdlu0122";  // Outline View 				--> wsdlu0122
+	public static String WSDL_PROPERTIES_VIEW = pluginId + "wsdlu0123"; //  Properties View				--> wsdlu0123
+
+//	WSDL Preference Page:
+	public static String WSDL_PREF_DEFAULT_TNS = pluginId + "wsdlu0200";
+	public static String WSDL_PREF_REGEN_ON_SAVE = pluginId + "wsdlu0201";
+	public static String WSDL_PREF_PROMPT_REGEN_ON_SAVE = pluginId + "wsdlu0202";
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDEditorPlugin.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDEditorPlugin.java
index 89046b0..c7ac0be 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDEditorPlugin.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDEditorPlugin.java
@@ -56,6 +56,12 @@
 		return WSDLEditorPlugin.getImageDescriptor(path);
 	}
 	
+  public static ImageDescriptor getImageDescriptorFromPlugin(String path) {
+    // We should not know about WSDLEditorPlugin.java.  Eventually, we should move these
+    // 'generic', 'top-level' icons to the ASD level.....
+    return WSDLEditorPlugin.getImageDescriptorFromPlugin(path);
+  }
+
 	public static IEditorPart getActiveEditor() {
 		return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDLabelProvider.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDLabelProvider.java
index d727807..cc8c332 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDLabelProvider.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDLabelProvider.java
@@ -10,11 +10,15 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd;
 
+import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.EditorModeManager;
 
 public class ASDLabelProvider extends LabelProvider {
 	/**
@@ -24,6 +28,17 @@
 		super();
 	}
 	
+    private ILabelProvider getDelegate()
+    {
+      ILabelProvider labelProvider = null;   
+      IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+      EditorModeManager manager = (EditorModeManager) editor.getAdapter(EditorModeManager.class);
+      if (manager != null)
+      {
+        labelProvider = (ILabelProvider) manager.getCurrentMode().getAdapter(ILabelProvider.class);
+      }
+      return labelProvider;
+    }
 	/**
 	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
 	 */
@@ -34,8 +49,11 @@
 		Image result = null;           
 		if (object instanceof StructuredSelection) {
 			Object selected = ((StructuredSelection)object).getFirstElement();
-			
-			if (selected instanceof ITreeElement) {
+		    ILabelProvider delegate = getDelegate();
+            if (delegate != null) {
+              result = delegate.getImage(selected);
+            }
+            else if (selected instanceof ITreeElement) {
 				result = ((ITreeElement) selected).getImage();
 			}
 		}
@@ -55,12 +73,16 @@
 		if (object instanceof StructuredSelection) {
 			selected = ((StructuredSelection) object).getFirstElement();
 			
-			if (selected instanceof ITreeElement) {
-				result = ((ITreeElement) selected).getText();
-			}
+            ILabelProvider delegate = getDelegate();
+            if (delegate != null) {
+              result = delegate.getText(selected);
+            }
+            else if (selected instanceof ITreeElement) {
+                result = ((ITreeElement) selected).getText();
+            }
 			
 			if (selected instanceof IASDObject && ((IASDObject) selected).isReadOnly()) {
-				result  = result + " (" + Messages.getString("_UI_LABEL_READ_ONLY") + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+				result  = result + " (" + Messages._UI_LABEL_READ_ONLY + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			}
 		}
 		
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDMultiPageEditor.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDMultiPageEditor.java
index 1940791..a4227af 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDMultiPageEditor.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/ASDMultiPageEditor.java
@@ -18,8 +18,20 @@
 import org.eclipse.gef.editparts.ZoomManager;
 import org.eclipse.gef.ui.actions.ActionRegistry;
 import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StackLayout;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddBindingAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddEndPointAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddFaultAction;
@@ -28,22 +40,24 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddInterfaceAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddOperationAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddOutputAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddParameterAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddSchemaAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDAddServiceAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDDeleteAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDGenerateBindingAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDOpenSchemaAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetExistingBindingAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetExistingInterfaceAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetNewBindingAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetNewInterfaceAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ShowPropertiesViewAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewContextMenuProvider;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicalViewer;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.directedit.DirectEditSelectionTool;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.ASDEditPartFactory;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ASDContentOutlinePage;
-import org.eclipse.wst.wsdl.ui.internal.asd.outline.ASDContentOutlineProvider;
 import org.eclipse.wst.wsdl.ui.internal.asd.properties.sections.ASDTabbedPropertySheetPage;
 import org.eclipse.wst.wsdl.ui.internal.asd.util.IOpenExternalEditorHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.editor.CommonMultiPageEditor;
@@ -53,6 +67,7 @@
   // TODO: move to design viewer
   protected DesignViewContextMenuProvider menuProvider;
   protected IDescription model;
+  private int currentPage = -1;
   
   /**
    * Creates a multi-page editor example.
@@ -70,13 +85,46 @@
     return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor"; //$NON-NLS-1$
   }
   
+  private class InternalLayout extends StackLayout
+  {
+    public InternalLayout() {
+      super();  
+    }
+    
+    protected void layout(Composite composite, boolean flushCache) {
+      Control children[] = composite.getChildren();
+      Rectangle rect = composite.getClientArea();
+      rect.x += marginWidth;
+      rect.y += marginHeight;
+      rect.width -= 2 * marginWidth;
+      rect.height -= 2 * marginHeight;
+      
+      for (int i = 0; i < children.length; i++) {
+        if (i == 0 && modeCombo != null) { // For the drop down toolbar
+          children[i].setBounds(rect.x + rect.width - 90 - maxLength, rect.y + 10, maxLength + 60, 26);
+        }
+        else {// For the main graph viewer
+          children[i].setBounds(rect);          
+        }
+      }       
+    }               
+  }
+  
+  protected Composite createGraphPageComposite() {    
+    Composite parent = new Composite(getContainer(), SWT.FLAT);
+    parent.setLayout(new InternalLayout());
+    createViewModeToolbar(parent);
+    return parent;
+  }
+
+  
   public IContentOutlinePage getContentOutlinePage() {
 	  if ((fOutlinePage == null) || fOutlinePage.getControl() == null || (fOutlinePage.getControl().isDisposed())) {
-		  ASDContentOutlineProvider provider = new ASDContentOutlineProvider(this, model);
-      
+		  IContentProvider  provider = getEditorModeManager().getCurrentMode().getOutlineProvider();
+          
       ASDContentOutlinePage outlinePage = new ASDContentOutlinePage(this, menuProvider);
-		  outlinePage.setContentProvider(provider);
-		  outlinePage.setLabelProvider(provider);
+		  outlinePage.setContentProvider((ITreeContentProvider)provider);
+		  outlinePage.setLabelProvider((ILabelProvider)provider);
 		  outlinePage.setModel(getModel());
 		  outlinePage.addSelectionChangedListener(getSelectionManager());
       getSelectionManager().addSelectionChangedListener(outlinePage);
@@ -97,13 +145,24 @@
     createGraphPage();
     createSourcePage();
 
-    
-    
     buildAndSetModel();
     initializeGraphicalViewer();
-    setActivePage(0);
+    setActivePage(getDefaultPageTypeIndex());
+    
+    getSelectionManager().setSelection(new StructuredSelection(getModel()));
+    
+    PlatformUI.getWorkbench().getHelpSystem().setHelp(graphicalViewer.getControl(), ASDEditorCSHelpIds.WSDL_DESIGN_VIEW);
   }
   
+  protected int getDefaultPageTypeIndex() {
+	  int pageIndex = SOURCE_PAGE_INDEX;
+	  if (WSDLEditorPlugin.getInstance().getDefaultPage().equals(WSDLEditorPlugin.DESIGN_PAGE)) {
+		  pageIndex = DESIGN_PAGE_INDEX;
+	  }
+
+	  return pageIndex;
+	  }
+  
   protected ScrollingGraphicalViewer getGraphicalViewer()
   {
     return new DesignViewGraphicalViewer(this, getSelectionManager());
@@ -179,9 +238,21 @@
     action.setSelectionProvider(getSelectionManager());
     registry.registerAction(action);
     
+    action = new ASDAddParameterAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);    
+    
     action = new ASDAddSchemaAction(this);
     action.setSelectionProvider(getSelectionManager());
     registry.registerAction(action);
+    
+    action = new ASDOpenSchemaAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
+    
+    action = new ShowPropertiesViewAction(this);
+    action.setSelectionProvider(getSelectionManager());
+    registry.registerAction(action);
   }
 
   public IDescription getModel()
@@ -210,7 +281,12 @@
     {
       return getContentOutlinePage();
     }
-
+    
+    if (type == ISelectionProvider.class)
+    {
+       return getSelectionManager();
+    }
+    
     return super.getAdapter(type);
   }
 
@@ -228,5 +304,21 @@
     menuProvider = new DesignViewContextMenuProvider(graphicalViewer, getSelectionManager());
   }
   
+  protected void pageChange(int newPageIndex) {
+    currentPage = newPageIndex;
+    super.pageChange(newPageIndex);
+  }
+  
+  public void dispose() {
+	  if (currentPage == SOURCE_PAGE_INDEX) {
+		  WSDLEditorPlugin.getInstance().setDefaultPage(WSDLEditorPlugin.SOURCE_PAGE);
+	  }
+	  else {
+		  WSDLEditorPlugin.getInstance().setDefaultPage(WSDLEditorPlugin.DESIGN_PAGE);
+	  }
+
+	  super.dispose();
+  }
+  
   public abstract IOpenExternalEditorHelper getOpenExternalEditorHelper();
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/Messages.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/Messages.java
index 3d58672..edfeeb1 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/Messages.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/Messages.java
@@ -3,11 +3,17 @@
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
+import org.eclipse.osgi.util.NLS;
+
+
 public class Messages {
 	private static final String BUNDLE_NAME = "org.eclipse.wst.wsdl.ui.internal.asd.messages"; //$NON-NLS-1$
 
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
-			.getBundle(BUNDLE_NAME);
+	static {
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class); //$NON-NLS-1$
+	}
+	  
+	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
 
 	private Messages() {
 	}
@@ -20,4 +26,45 @@
 			return '!' + key + '!';
 		}
 	}
+	
+	public static String _UI_TAB_GRAPH;
+	public static String _UI_TAB_SOURCE;
+	public static String _UI_BUTTON_NEW;
+	public static String _UI_LABEL_READ_ONLY;
+	public static String _UI_LABEL_NAMESPACE;
+	public static String _UI_LABEL_PORTTYPE;
+	public static String _UI_LABEL_LOCATION;
+	public static String _UI_LABEL_ADDRESS;
+	public static String _UI_LABEL_BINDING;
+	public static String _UI_LABEL_PREFIX;
+	public static String _UI_LABEL_NAME;
+	public static String _UI_LABEL_TYPE;
+	public static String _UI_ACTION_ADD_SERVICE;
+	public static String _UI_ACTION_ADD_MESSAGE;
+	public static String _UI_ACTION_ADD_OPERATION;
+	public static String _UI_ACTION_ADD_IMPORT;
+	public static String _UI_ACTION_ADD_OUTPUT;
+	public static String _UI_ACTION_ADD_FAULT;
+	public static String _UI_ACTION_ADD_PORT;
+	public static String _UI_ACTION_ADD_PORTTYPE;
+	public static String _UI_ACTION_DELETE;
+	public static String _UI_BUTTON_BROWSE;
+	public static String _UI_ACTION_NEW_PORTTYPE;
+	public static String _UI_ACTION_NEW_BINDING;
+	public static String _UI_ACTION_EXISTING_PORTTYPE;
+	public static String _UI_GENERATE_BINDING_CONTENT;
+	public static String _UI_ACTION_EXISTING_BINDING;
+	public static String _UI_LABEL_BINDING_PROTOCOL;
+	public static String _UI_LABEL_TARGET_NAMESPACE;
+	public static String _UI_ACTION_ADD_BINDING;
+	public static String _UI_ACTION_ADD_SCHEMA;
+	public static String _UI_ACTION_ADD_INPUT;
+	public static String _UI_SECTION_ADVANCED_ATTRIBUTES;
+
+	public static String _UI_ACTION_EDIT_NAMESPACES;
+	public static String _UI_ACTION_OPEN_SCHEMA;
+	public static String _UI_TOOLTIP_RENAME_REFACTOR;
+
+	public static String _UI_LABEL_RIGHT_CLICK_TO_INSERT_CONTENT;
+	public static String _UI_ACTION_SHOW_PROPERTIES;
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddBindingAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddBindingAction.java
index 65921ae..1ea5445 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddBindingAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddBindingAction.java
@@ -24,7 +24,7 @@
 	public ASDAddBindingAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_BINDING")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_BINDING); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/binding_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -40,6 +40,11 @@
 				Command command = ((IDescription) o).getAddBindingCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object object = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	performSelection(object);
+			    }
 			}
 		}  
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddEndPointAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddEndPointAction.java
index 336a58b..d6a7e31 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddEndPointAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddEndPointAction.java
@@ -24,7 +24,7 @@
 	public ASDAddEndPointAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_PORT")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_PORT); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/port_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -44,6 +44,11 @@
                 Command command = service.getAddEndPointCommand();
                 CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
                 stack.execute(command);
+                
+			    if (command instanceof IASDAddCommand) {
+			    	Object element = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	selectAndDirectEdit(element);
+			    }
             }
 		}  
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddFaultAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddFaultAction.java
index 9b0b242..1c18836 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddFaultAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddFaultAction.java
@@ -26,7 +26,7 @@
 	public ASDAddFaultAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_FAULT"));   //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_FAULT);   //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/fault_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -52,6 +52,11 @@
 				Command command = iOperation.getAddFaultCommand(possibleFault);
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object object = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	performSelection(object);
+			    }
 			}
 		}  
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddImportAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddImportAction.java
index 48b4f94..a8ce0be 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddImportAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddImportAction.java
@@ -24,7 +24,7 @@
 	public ASDAddImportAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_IMPORT")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_IMPORT); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/import_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -40,6 +40,11 @@
 				Command command = ((IDescription) o).getAddImportCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object object = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	performSelection(object);
+			    }
 			}
 		}  
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddInputAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddInputAction.java
index 53b922d..ff5f9aa 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddInputAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddInputAction.java
@@ -25,7 +25,7 @@
 	public ASDAddInputAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_INPUT"));   //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_INPUT);   //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/input_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -48,6 +48,11 @@
 				Command command = iOperation.getAddInputCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object object = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	performSelection(object);
+			    }
 			}
 		}  
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddInterfaceAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddInterfaceAction.java
index eb8e770..1063801 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddInterfaceAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddInterfaceAction.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.actions;
 
+import org.eclipse.gef.EditPart;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.ui.IWorkbenchPart;
@@ -24,7 +25,7 @@
 	public ASDAddInterfaceAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_PORTTYPE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_PORTTYPE); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/porttype_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -40,7 +41,18 @@
 				Command command = ((IDescription) o).getAddInterfaceCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object element = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	selectAndDirectEdit(element);
+			    }
 			}
 		}  
 	}
+	
+	/*
+	 * @deprecated.  To be removed post WTP 1.5
+	 */
+	protected void doDirectEdit(EditPart ep) {
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddMessageAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddMessageAction.java
index c75b41f..acd07a8 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddMessageAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddMessageAction.java
@@ -24,7 +24,7 @@
 	public ASDAddMessageAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_MESSAGE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_MESSAGE); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/message_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -40,6 +40,11 @@
 				Command command = ((IDescription) o).getAddMessageCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object object = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	performSelection(object);
+			    }
 			}
 		}  
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddOperationAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddOperationAction.java
index 6981f2c..152762b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddOperationAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddOperationAction.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.actions;
 
+import org.eclipse.gef.EditPart;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.ui.IWorkbenchPart;
@@ -26,7 +27,7 @@
 	public ASDAddOperationAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_OPERATION")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_OPERATION); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/operation_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -52,7 +53,18 @@
 				Command command = theInterface.getAddOperationCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object element = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	selectAndDirectEdit(element);
+			    }
 			}
 		}  
 	}
+	
+	/*
+	 * @deprecated.  To be removed post WTP 1.5
+	 */
+	protected void doDirectEdit(EditPart ep) {
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddOutputAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddOutputAction.java
index 9366de9..ca36abf 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddOutputAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddOutputAction.java
@@ -25,7 +25,7 @@
 	public ASDAddOutputAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_OUTPUT")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_OUTPUT); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/output_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -48,6 +48,11 @@
 				Command command = iOperation.getAddOutputCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object object = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	performSelection(object);
+			    }
 			}
 		}  
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddParameterAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddParameterAction.java
new file mode 100644
index 0000000..5722bce
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddParameterAction.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.actions;
+
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11MessageReference;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+
+public class ASDAddParameterAction extends BaseSelectionAction { 
+    public static String ID = "ASDAddParameterAction";  //$NON-NLS-1$
+    
+    public ASDAddParameterAction(IWorkbenchPart part)   {
+        super(part);
+        setId(ID);
+        setText("Add Parameter");   //$NON-NLS-1$
+        setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/input_obj.gif")); //$NON-NLS-1$
+    }
+    
+    public void run() {
+        if (getSelectedObjects().size() > 0) {
+            Object o = getSelectedObjects().get(0);
+            IMessageReference messageReference = null;
+            
+            if (o instanceof IMessageReference)
+            {
+              messageReference = (IMessageReference)o;
+            }  
+            else if (o instanceof IParameter) {
+                messageReference = ((IMessageReference) ((IParameter) o).getOwner());
+            }
+            
+            if (messageReference instanceof W11MessageReference) {
+                W11MessageReference w11MessageReference = (W11MessageReference)messageReference;              
+                Command command = w11MessageReference.getAddParamterCommand();
+                CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
+                stack.execute(command);
+                
+			    if (command instanceof IASDAddCommand) {
+			    	Object object = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	selectAndDirectEdit(object);
+			    }
+            }
+        }  
+    }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddSchemaAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddSchemaAction.java
index 8db9804..1904b2d 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddSchemaAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddSchemaAction.java
@@ -24,7 +24,7 @@
 	public ASDAddSchemaAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_SCHEMA")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_SCHEMA); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/xsd_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -40,6 +40,11 @@
 				Command command = ((IDescription) o).getAddSchemaCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object object = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	performSelection(object);
+			    }
 			}
 		}  
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddServiceAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddServiceAction.java
index 6ede763..ec6368f 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddServiceAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDAddServiceAction.java
@@ -10,11 +10,13 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.actions;
 
+import org.eclipse.gef.EditPart;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.ServiceEditPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ICategoryAdapter;
 
@@ -24,7 +26,7 @@
 	public ASDAddServiceAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_ADD_SERVICE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_ADD_SERVICE); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/service_obj.gif")); //$NON-NLS-1$
 	}
 	
@@ -40,7 +42,18 @@
 				Command command = ((IDescription) o).getAddServiceCommand();
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+			    
+			    if (command instanceof IASDAddCommand) {
+			    	Object element = ((IASDAddCommand) command).getNewlyAddedComponent();
+			    	selectAndDirectEdit(element);
+			    }
 			}
 		}  
 	}
+	
+	protected void doDirectEdit(EditPart ep) {
+		if (ep instanceof ServiceEditPart) {
+			((ServiceEditPart) ep).performDirectEdit(null);
+		}
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDDeleteAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDDeleteAction.java
index c169d8d..21c4573 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDDeleteAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDDeleteAction.java
@@ -10,9 +10,14 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.actions;
 
+import java.util.Iterator;
+
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.wsdl.WSDLElement;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Type;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
@@ -31,13 +36,14 @@
 	public ASDDeleteAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_DELETE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_DELETE); //$NON-NLS-1$
 		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/delete_obj.gif")); //$NON-NLS-1$
 	}
 	
 	public void run() {
-		if (getSelectedObjects().size() > 0) {
-			Object object = getSelectedObjects().get(0);
+		Iterator it = getSelectedObjects().iterator();
+		while (it.hasNext()) {
+			Object object = it.next();
 			Command command = null;
 			
 			if (object instanceof IService) {
@@ -67,10 +73,21 @@
 			else if (object instanceof IMessage) {
 				command = ((IMessage) object).getDeleteCommand();
 			}
+			 // TODO (cs) Provide getDeleteCommand() on ASDObject then no 'else if' tests needed at all...
+			else if (object instanceof W11Type) {
+				command = ((W11Type) object).getDeleteCommand();
+			}
 			
 			if (command != null) {
 			    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
 			    stack.execute(command);
+
+			    if (object instanceof WSDLBaseAdapter) {
+			    	Object target = ((WSDLBaseAdapter) object).getTarget();
+			    	if (target instanceof WSDLElement) {
+			    		performSelection(((WSDLElement) target).getEnclosingDefinition());
+			    	}
+			    }
 			}
 		}  
 	}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDDirectEditAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDDirectEditAction.java
new file mode 100644
index 0000000..26d5bd6
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDDirectEditAction.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.actions;
+
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.ui.actions.DirectEditAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
+
+public class ASDDirectEditAction extends DirectEditAction {
+	protected ISelectionProvider provider;
+	
+	/**
+	 * Same as {@link #DirectEditAction(IWorkbenchPart)}.
+	 * @param editor the editor
+	 */
+	public ASDDirectEditAction(IEditorPart editor) {
+		super((IWorkbenchPart)editor);
+	}
+
+	/**
+	 * Constructs a DirectEditAction using the specified part.
+	 * @param part the workbench part
+	 */
+	public ASDDirectEditAction(IWorkbenchPart part) {
+		super(part);
+	}
+	
+	  /* (non-Javadoc)
+	   * @see org.eclipse.gef.ui.actions.SelectionAction#getSelection()
+	   */
+	  protected ISelection getSelection()
+	  {
+		  // If we're in this action, we assume the action was initiated via the graphical viewer.
+		  // We use the graphical view to obtain the selected edit part because for us, one model
+		  // may drive more than one edit part.  So we need to find the exact edit part we wish to
+		  // direct edit.  The preferred method of determining the edit part would have been to go
+		  // through the selection manager, then through the edit part registry.  However, the selection
+		  // manager only returns the model object (not the edit part).... and since the model object
+		  // may drive more than one edit part, the edit part registry may return the "wrong" edit
+		  // part for direct editing.  Thus we look call GraphicalViewer.getFocusEditPart().
+		  IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+		  Object object = editor.getAdapter(GraphicalViewer.class);
+		  if (object instanceof GraphicalViewer) {
+			  Object selection = ((GraphicalViewer) object).getFocusEditPart();
+			  return new StructuredSelection(selection);
+		  }
+	    
+	    return super.getSelection();
+	  }
+	  
+	  /* (non-Javadoc)
+	   * @see org.eclipse.gef.ui.actions.SelectionAction#setSelectionProvider(org.eclipse.jface.viewers.ISelectionProvider)
+	   */
+	  public void setSelectionProvider(ISelectionProvider provider)
+	  {
+	    super.setSelectionProvider(provider);
+	    this.provider = provider;
+	  }
+	  
+	  protected boolean calculateEnabled() {
+		  Object selection = ((IStructuredSelection) getSelection()).getFirstElement();
+		  
+		  if (selection instanceof IASDObject) {
+			  return  !((IASDObject) selection).isReadOnly();
+		  }
+		  
+		  return true;
+	  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDEditNamespacesAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDEditNamespacesAction.java
new file mode 100644
index 0000000..f5b727e
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDEditNamespacesAction.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.actions;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Description;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11EditNamespacesCommand;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
+import org.eclipse.wst.wsdl.ui.internal.asd.outline.ICategoryAdapter;
+import org.eclipse.wst.wsdl.ui.internal.dialogs.EditNamespacesDialog;
+
+public class ASDEditNamespacesAction extends BaseSelectionAction {
+	public static String ID = "ASDEditNamespacesAction";  //$NON-NLS-1$
+	
+	private IDescription description;
+	
+	public ASDEditNamespacesAction(IWorkbenchPart part, IDescription description) {
+		super(part);
+		setId(ID);
+		String text = Messages._UI_EDIT_NAMESPACES; //$NON-NLS-1$
+		setText(text);
+		
+		this.description = description;
+	}
+	
+	public void run() {
+		Object o = description;
+		if (getSelectedObjects().size() > 0) {
+			if (o instanceof ICategoryAdapter) {
+				o = ((ICategoryAdapter) o).getOwnerDescription();
+			}
+		}
+		
+		if (o instanceof IDescription) {
+			// TODO: The code below is not generic.  We need to revisit this to ensure it is
+			// generic.  IDescription needs a getNamespacesInfo() and getEditNamespacesCommand()...
+			IDescription description = (IDescription) o;
+			W11Description w11Description = (W11Description) o;
+			Definition definition = (Definition) w11Description.getTarget();
+			
+			IPath path = new Path(definition.getDocumentBaseURI());
+			List namespaceInfoList = w11Description.getNamespacesInfo();
+			String tns = description.getTargetNamespace();
+			EditNamespacesDialog dialog = new EditNamespacesDialog(WSDLEditorPlugin.getShell(), path, Messages._UI_EDIT_NAMESPACES_DIALOG_TITLE, tns, namespaceInfoList); //$NON-NLS-1$
+			int rc = dialog.createAndOpen();
+			if (rc == IDialogConstants.OK_ID) {
+				List newInfoList = dialog.getNamespaceInfoList();
+				W11EditNamespacesCommand command = (W11EditNamespacesCommand) w11Description.getEditNamespacesCommand();
+				command.setNamespacesInfo(newInfoList);
+				command.setTargetNamespace(dialog.getTargetNamespace());
+				CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
+			    stack.execute(command);
+		    }
+		}
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDGenerateBindingAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDGenerateBindingAction.java
index f86b172..1f2db6a 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDGenerateBindingAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDGenerateBindingAction.java
@@ -23,7 +23,7 @@
 	public ASDGenerateBindingAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_GENERATE_BINDING_CONTENT"));   //$NON-NLS-1$
+		setText(Messages._UI_GENERATE_BINDING_CONTENT);   //$NON-NLS-1$
 //		setImageDescriptor(WSDLEditorPlugin.getImageDescriptor("icons/input_obj.gif"));
 	}
 	
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDOpenSchemaAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDOpenSchemaAction.java
new file mode 100644
index 0000000..bb11ca5
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDOpenSchemaAction.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.actions;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IType;
+import org.eclipse.wst.wsdl.ui.internal.asd.util.IOpenExternalEditorHelper;
+
+public class ASDOpenSchemaAction extends BaseSelectionAction {
+	public static String ID = "ASDOpenSchemaAction";  //$NON-NLS-1$
+	
+	public ASDOpenSchemaAction(IWorkbenchPart part)	{
+		super(part);
+		setId(ID);
+		setText(Messages._UI_ACTION_OPEN_SCHEMA); //$NON-NLS-1$
+//		setImageDescriptor(ASDEditorPlugin.getImageDescriptor("icons/binding_obj.gif")); //$NON-NLS-1$
+	}
+	
+	public void run() {
+		if (getSelectedObjects().size() > 0) {
+			Object o = getSelectedObjects().get(0);
+			
+			if (o instanceof IType) {
+				IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+				if (editor instanceof ASDMultiPageEditor) {
+					IOpenExternalEditorHelper helper = ((ASDMultiPageEditor) editor).getOpenExternalEditorHelper();
+					helper.setModel(o);
+					helper.openExternalEditor();
+				}
+			}
+		}  
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetExistingBindingAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetExistingBindingAction.java
index 7cf20d5..3578522 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetExistingBindingAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetExistingBindingAction.java
@@ -11,13 +11,11 @@
 package org.eclipse.wst.wsdl.ui.internal.asd.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IEndPoint;
-import org.eclipse.wst.wsdl.ui.internal.edit.W11BindingReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 
@@ -28,7 +26,7 @@
 	public ASDSetExistingBindingAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_EXISTING_BINDING")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_EXISTING_BINDING); //$NON-NLS-1$
 //		setImageDescriptor(WSDLEditorPlugin.getImageDescriptor("icons/service_obj.gif"));
 	}
 	
@@ -46,11 +44,8 @@
 			}
 		}
 		
-		if (endPoint != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			// TODO: rmah: We should not know about W11BindingReferenceEditManager here....  We should a better
-			// way to retrieve the appropriate Reference Manager
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(W11BindingReferenceEditManager.class);
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getBindingReferenceEditManager(endPoint);
+		if (endPoint != null && refManager != null) {
 			IComponentDialog dialog = refManager.getBrowseDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetExistingInterfaceAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetExistingInterfaceAction.java
index 10f8e16..4605ca8 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetExistingInterfaceAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetExistingInterfaceAction.java
@@ -11,13 +11,11 @@
 package org.eclipse.wst.wsdl.ui.internal.asd.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
-import org.eclipse.wst.wsdl.ui.internal.edit.W11InterfaceReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 
@@ -28,7 +26,7 @@
 	public ASDSetExistingInterfaceAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_EXISTING_PORTTYPE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_EXISTING_PORTTYPE); //$NON-NLS-1$
 //		setImageDescriptor(WSDLEditorPlugin.getImageDescriptor("icons/service_obj.gif"));
 	}
 	
@@ -46,11 +44,8 @@
 			}
 		}
 		
-		if (binding != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			// TODO: rmah: We should not know about W11InterfaceReferenceEditManager here....  We should a better
-			// way to retrieve the appropriate Reference Manager
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(W11InterfaceReferenceEditManager.class);
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getInterfaceReferenceEditManager(binding);
+        if (binding != null && refManager != null) {
 			IComponentDialog dialog = refManager.getBrowseDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetNewBindingAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetNewBindingAction.java
index f193119..a6da98c 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetNewBindingAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetNewBindingAction.java
@@ -11,13 +11,11 @@
 package org.eclipse.wst.wsdl.ui.internal.asd.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IEndPoint;
-import org.eclipse.wst.wsdl.ui.internal.edit.W11BindingReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 
@@ -28,7 +26,7 @@
 	public ASDSetNewBindingAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_NEW_BINDING")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_NEW_BINDING); //$NON-NLS-1$
 //		setImageDescriptor(WSDLEditorPlugin.getImageDescriptor("icons/service_obj.gif"));
 	}
 	
@@ -46,11 +44,8 @@
 			}
 		}
 		
-		if (endPoint != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			// TODO: rmah: We should not know about W11BindingReferenceEditManager here....  We should a better
-			// way to retrieve the appropriate Reference Manager
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(W11BindingReferenceEditManager.class);
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getBindingReferenceEditManager(endPoint);
+        if (endPoint != null && refManager != null) {
 			IComponentDialog dialog = refManager.getNewDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetNewInterfaceAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetNewInterfaceAction.java
index c93281a..02aec42 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetNewInterfaceAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ASDSetNewInterfaceAction.java
@@ -11,13 +11,11 @@
 package org.eclipse.wst.wsdl.ui.internal.asd.actions;
 
 import org.eclipse.jface.window.Window;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
-import org.eclipse.wst.wsdl.ui.internal.edit.W11InterfaceReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.IComponentDialog;
 
@@ -28,7 +26,7 @@
 	public ASDSetNewInterfaceAction(IWorkbenchPart part)	{
 		super(part);
 		setId(ID);
-		setText(Messages.getString("_UI_ACTION_NEW_PORTTYPE")); //$NON-NLS-1$
+		setText(Messages._UI_ACTION_NEW_PORTTYPE); //$NON-NLS-1$
 //		setImageDescriptor(WSDLEditorPlugin.getImageDescriptor("icons/service_obj.gif"));
 	}
 	
@@ -46,11 +44,8 @@
 			}
 		}
 		
-		if (binding != null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			// TODO: rmah: We should not know about W11InterfaceReferenceEditManager here....  We should a better
-			// way to retrieve the appropriate Reference Manager
-			ComponentReferenceEditManager refManager = (ComponentReferenceEditManager) editor.getAdapter(W11InterfaceReferenceEditManager.class);
+        ComponentReferenceEditManager refManager = ReferenceEditManagerHelper.getInterfaceReferenceEditManager(binding);
+		if (binding != null && refManager != null) {
 			IComponentDialog dialog = refManager.getNewDialog();
 			if (dialog.createAndOpen() == Window.OK) {
 				ComponentSpecification spec = dialog.getSelectedComponent();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/BaseSelectionAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/BaseSelectionAction.java
index cd1232b..d875006 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/BaseSelectionAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/BaseSelectionAction.java
@@ -14,13 +14,26 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
 import org.eclipse.gef.ui.actions.SelectionAction;
+import org.eclipse.gef.ui.parts.AbstractEditPartViewer;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.AbstractModelCollection;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
+import org.eclipse.wst.wsdl.ui.internal.util.WSDLAdapterFactoryHelper;
 
 public abstract class BaseSelectionAction extends SelectionAction
 {
@@ -81,4 +94,64 @@
 	  
 	  return true;
   }
+  
+  protected void selectAndDirectEdit(final Object o) {
+	  Runnable runnable = new Runnable() {
+		  public void run() {
+			  if (o instanceof Notifier) {
+				  performSelection(o);
+				  activateDirectEdit();
+			  }
+		  }};
+		  Display.getCurrent().asyncExec(runnable);
+  }
+
+	protected void activateDirectEdit() {
+		IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
+		if (!(part instanceof ContentOutline)) {
+			IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+			Object graphicalViewer = editor.getAdapter(GraphicalViewer.class);
+			if (graphicalViewer instanceof AbstractEditPartViewer) {
+				AbstractEditPartViewer viewer = (AbstractEditPartViewer) graphicalViewer;
+				Object obj = viewer.getSelectedEditParts().get(0);
+				// todo: rmah: we need to completely remove all implementations of doDirectEdit().
+				// Use performRequest() instead.
+//				doDirectEdit((EditPart) obj);
+				Request request = new Request();
+				request.setType(RequestConstants.REQ_DIRECT_EDIT);
+				((EditPart) obj).performRequest(request);
+			}
+		}
+	}
+	
+	protected void doDirectEdit(EditPart ep) {
+		Request request = new Request();
+		request.setType(RequestConstants.REQ_DIRECT_EDIT);
+		ep.performRequest(request);
+	}
+	
+    protected void performSelection(Object object) {
+		// TODO: We shouldn't know about WSDLBaseAdapter here....
+    	if (object instanceof WSDLBaseAdapter) {
+    		object = ((WSDLBaseAdapter) object).getTarget();
+    	}
+		if (!(object instanceof Notifier)) {
+			return;
+		}
+		
+		Notifier element = (Notifier) object;
+		
+    	try {
+			// TODO: We shouldn't know about WSDLAdapterFactoryHelper here....
+	    	Object adapted = WSDLAdapterFactoryHelper.getInstance().adapt(element);
+	        IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+	        if (editor != null && editor.getAdapter(ISelectionProvider.class) != null) {
+	        	ISelectionProvider provider = (ISelectionProvider) editor.getAdapter(ISelectionProvider.class);
+	        	if (provider != null) {
+	        		provider.setSelection(new StructuredSelection(adapted));
+	        	}
+	        }
+    	}
+    	catch (Exception e) {}
+    }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/IASDAddCommand.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/IASDAddCommand.java
new file mode 100644
index 0000000..552ee0b
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/IASDAddCommand.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.actions;
+
+public interface IASDAddCommand {
+	public Object getNewlyAddedComponent();
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ShowPropertiesViewAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ShowPropertiesViewAction.java
new file mode 100644
index 0000000..8f447ac
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/actions/ShowPropertiesViewAction.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.actions;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+
+
+/**
+ * Show the properties view in the current perspective.
+ */
+public class ShowPropertiesViewAction extends BaseSelectionAction
+{
+	public static final String ID = "org.eclipse.wst.wsdl.ui.internal.asd.actions.ShowPropertiesViewAction"; //$NON-NLS-1$
+	public static final String PROPERTIES_VIEW_ID = "org.eclipse.ui.views.PropertySheet"; //$NON-NLS-1$
+	
+  protected static ImageDescriptor enabledImage, disabledImage;
+
+	public ShowPropertiesViewAction(IWorkbenchPart part)
+  {
+		super(part);
+		setId(ID);
+		setText(Messages._UI_ACTION_SHOW_PROPERTIES);
+		setToolTipText(getText());
+    setImageDescriptor(ASDEditorPlugin.getImageDescriptorFromPlugin("icons/elcl16/showproperties_obj.gif") ); //$NON-NLS-1$
+	  setDisabledImageDescriptor(ASDEditorPlugin.getImageDescriptorFromPlugin("icons/dlcl16/showproperties_obj.gif") ); //$NON-NLS-1$
+	}
+  
+  protected boolean calculateEnabled()
+  {
+    return true;
+  }
+  
+  public void run()
+  {
+    try
+    {
+      getWorkbenchPart().getSite().getPage().showView(PROPERTIES_VIEW_ID);
+    }
+    catch (PartInitException pie)
+    {
+
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewContextMenuProvider.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewContextMenuProvider.java
index 0fcd8fa..6e0d22e 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewContextMenuProvider.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewContextMenuProvider.java
@@ -23,12 +23,16 @@
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ShowPropertiesViewAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.ColumnEditPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.IActionProvider;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.ContextMenuParticipant;
+import org.eclipse.wst.xsd.ui.internal.adt.editor.EditorModeManager;
 
 
 public class DesignViewContextMenuProvider extends ContextMenuProvider
@@ -62,6 +66,12 @@
   public void buildContextMenu(IMenuManager menu)
   {
 	IMenuManager currentMenu = menu;
+    
+    IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+	EditorModeManager manager = (EditorModeManager)editor.getAdapter(EditorModeManager.class);
+	ContextMenuParticipant contextMenuParticipant = manager != null ? manager.getCurrentMode().getContextMenuParticipant() : null;
+
+        
     currentMenu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
     ActionRegistry registry = getEditorActionRegistry();
     ISelection selection = selectionProvider.getSelection();
@@ -72,31 +82,48 @@
     {
       Object selectedObject = ((StructuredSelection) selection).getFirstElement();
       selectedObject = getAppropriateSelection(selectedObject);
+
+      if (contextMenuParticipant != null)
+      {
+        // Convert editparts to model objects as selections
+        Object o = selectedObject;
+        if (o instanceof EditPart)
+        {
+          o = ((EditPart)selectedObject).getModel();
+        }                   
+        contextMenuParticipant.contributeActions(o, menu);
+      }  
+      
       if (selectedObject instanceof IActionProvider)
       {
         IActionProvider actionProvider = (IActionProvider) selectedObject;
         String[] actions = actionProvider.getActions(activePart);
         for (int i = 0; i < actions.length; i++)
         {
-        	String id = actions[i];
-        	if (id.startsWith(BaseSelectionAction.SUBMENU_START_ID)) {
-        		String text = id.substring(BaseSelectionAction.SUBMENU_START_ID.length());
-        		IMenuManager subMenu = new MenuManager(text);
-        		currentMenu.add(subMenu);
-        		currentMenu = subMenu;
-        	}
-        	else if (id.startsWith(BaseSelectionAction.SUBMENU_END_ID)) {
-        		currentMenu = getParentMenu(menu, currentMenu);
-        	}
-        	else {
-	            IAction action = registry.getAction(id);
-	            if (action != null) {
-	            	action.isEnabled();
-	            	currentMenu.add(action);
-	            }
-        	}
-        }
+          String id = actions[i];          
+          if (contextMenuParticipant == null || contextMenuParticipant.isApplicable(selectedObject, id))
+          {          
+            if (id.startsWith(BaseSelectionAction.SUBMENU_START_ID)) {
+              String text = id.substring(BaseSelectionAction.SUBMENU_START_ID.length());
+              IMenuManager subMenu = new MenuManager(text);
+              currentMenu.add(subMenu);
+              currentMenu = subMenu;
+            }
+            else if (id.startsWith(BaseSelectionAction.SUBMENU_END_ID)) {
+              currentMenu = getParentMenu(menu, currentMenu);
+            }
+            else 
+            {
+              IAction action = registry.getAction(id);
+              if (action != null) {
+                action.isEnabled();
+                currentMenu.add(action);
+              }
+            }
+          }  
+        }     
         
+        menu.add(registry.getAction(ShowPropertiesViewAction.ID));
         menu.add(new Separator());       
         menu.add(new Separator("refactoring-slot-temp"));  //$NON-NLS-1$
         menu.add(new Separator());       
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewGraphicalViewer.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewGraphicalViewer.java
index acf78c4..d602a70 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewGraphicalViewer.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewGraphicalViewer.java
@@ -13,7 +13,6 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
 import org.eclipse.jface.viewers.ISelection;
@@ -23,6 +22,7 @@
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.xsd.ui.internal.adt.design.BaseGraphicalViewerKeyHandler;
 import org.eclipse.wst.xsd.ui.internal.adt.editor.CommonSelectionManager;
 
 public class DesignViewGraphicalViewer extends ScrollingGraphicalViewer implements ISelectionChangedListener
@@ -39,6 +39,8 @@
 	    addSelectionChangedListener(internalSelectionProvider);    
 	    internalSelectionProvider.addSelectionChangedListener(manager);
 	    manager.addSelectionChangedListener(this);  
+        
+	    setKeyHandler(new BaseGraphicalViewerKeyHandler(this));
 	  }
 	  
 	  // this method is called when something changes in the selection manager
@@ -77,7 +79,8 @@
 	    return result;
 	  }
 	  
-	  /*
+
+      /*
 	   * We need to convert from edit part selections to model object selections
 	   */
 	  class ASDSelectionChangedListener implements ISelectionProvider, ISelectionChangedListener
@@ -145,4 +148,4 @@
 	      notifyListeners(newEvent);
 	    }
 	  } 
-	}
\ No newline at end of file
+}    
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewGraphicsConstants.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewGraphicsConstants.java
index 7411527..c4e8b43 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewGraphicsConstants.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/DesignViewGraphicsConstants.java
@@ -36,6 +36,9 @@
   public final static Color tableMessageHeadingColor = new Color(null, 230, 240, 245);
   public final static Color tableCellSelectionColor = new Color(null, 238, 232, 170); //new Color(null, 240, 230, 140); //1, 15, 42);
 
+  public final static Color readOnlyTableOperationHeadingColor = new Color(null, 239, 243, 255);
+  public final static Color readOnlyMessageRefHeadingColor = new Color(null, 245, 245, 245);
+  
   public final static Color readOnlyBackgroundColor = ColorConstants.white;
   public final static Color readOnlyLabelColor = ColorConstants.gray;
   public final static Color labelColor = ColorConstants.black;
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/KeyboardDragImpl.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/KeyboardDragImpl.java
new file mode 100644
index 0000000..a84adf1
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/KeyboardDragImpl.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.design;
+
+import org.eclipse.draw2d.PositionConstants;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.BaseSelectionAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IOperation;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.xsd.ui.internal.adt.design.IKeyboardDrag;
+import org.eclipse.wst.xsd.ui.internal.adt.design.editpolicies.KeyBoardAccessibilityEditPolicy;
+
+public class KeyboardDragImpl extends BaseSelectionAction implements IKeyboardDrag {
+
+	public KeyboardDragImpl() {
+		super(null);
+	}
+	
+	public void performKeyboardDrag(GraphicalEditPart movingElement, int direction) {
+
+		KeyBoardAccessibilityEditPolicy policy = (KeyBoardAccessibilityEditPolicy)movingElement.getEditPolicy(KeyBoardAccessibilityEditPolicy.KEY);
+		
+		EditPart rightElement = policy.getRelativeEditPart(movingElement, direction);
+		policy = (KeyBoardAccessibilityEditPolicy)rightElement.getEditPolicy(KeyBoardAccessibilityEditPolicy.KEY);
+		EditPart leftElement = (policy != null)? policy.getRelativeEditPart(rightElement, direction): null;
+		  
+		Object leftSibElement = (leftElement != null)? leftElement.getModel() : null;
+		Object rightSibElement = (rightElement != null)? rightElement.getModel() : null;
+		if (direction == PositionConstants.SOUTH) {
+			leftSibElement = rightSibElement;
+			rightSibElement = leftSibElement;
+		} else if (direction != PositionConstants.NORTH) return;
+		
+		Object source = movingElement.getModel();
+
+		if (source instanceof IMessageReference) {
+  			
+			if(!(leftSibElement instanceof IMessageReference)) leftSibElement = null;
+			if(!(rightSibElement instanceof IMessageReference)) rightSibElement = null;
+			
+			Object messageRefOwner = ((IMessageReference) source).getOwnerOperation();
+  			if (messageRefOwner instanceof IOperation) {
+  				IMessageReference leftSib = (IMessageReference) leftSibElement;
+  				IMessageReference rightSib = (IMessageReference) rightSibElement;
+  				IMessageReference movingSib = (IMessageReference) source;
+  				Command command = ((IOperation) messageRefOwner).getReorderMessageReferencesCommand(leftSib, rightSib, movingSib);
+  				command.execute();
+  				performSelection(source);
+  			}
+  		}
+  		else if (source instanceof IParameter) {
+  			
+  			if(!(leftSibElement instanceof IParameter)) leftSibElement = null;
+			if(!(rightSibElement instanceof IParameter)) rightSibElement = null;
+			
+  			Object paramOwner = ((IParameter) source).getOwner();
+  			if (paramOwner instanceof IMessageReference) {
+  				IParameter leftSib = (IParameter) leftSibElement;
+  				IParameter rightSib = (IParameter) rightSibElement;
+  				IParameter movingSib = (IParameter) source;
+  				Command command = ((IMessageReference) paramOwner).getReorderParametersCommand(leftSib, rightSib, movingSib);
+  				command.execute();
+  				performSelection(source);
+  			}
+  		}
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ASDCCombo.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ASDCCombo.java
new file mode 100644
index 0000000..4a9b1da
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ASDCCombo.java
@@ -0,0 +1,1514 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.design.directedit;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWTException;
+import org.eclipse.swt.accessibility.ACC;
+import org.eclipse.swt.accessibility.AccessibleAdapter;
+import org.eclipse.swt.accessibility.AccessibleControlAdapter;
+import org.eclipse.swt.accessibility.AccessibleControlEvent;
+import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.accessibility.AccessibleTextAdapter;
+import org.eclipse.swt.accessibility.AccessibleTextEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Layout;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.TypedListener;
+import org.eclipse.swt.widgets.Widget;
+
+/*
+ * rmah:
+ * This class is a copy of CCombo.  We copy it because we wish to align
+ * the Text of the Combo in our own special way.  However there is no
+ * way to access the Text object within CCombo.....
+ * Bug for this issue to be opened
+ */
+
+/**
+ * The CCombo class represents a selectable user interface object
+ * that combines a text field and a list and issues notification
+ * when an item is selected from the list.
+ * <p>
+ * Note that although this class is a subclass of <code>Composite</code>,
+ * it does not make sense to add children to it, or set a layout on it.
+ * </p>
+ * <dl>
+ * <dt><b>Styles:</b>
+ * <dd>BORDER, READ_ONLY, FLAT</dd>
+ * <dt><b>Events:</b>
+ * <dd>Selection</dd>
+ * </dl>
+ */
+public final class ASDCCombo extends Composite {
+
+	Text text;
+	List list;
+	int visibleItemCount = 5;
+	Shell popup;
+	Button arrow;
+	boolean hasFocus;
+	Listener listener, filter;
+	Color foreground, background;
+	Font font;
+	private int textIndent = 5;
+	
+/**
+ * Constructs a new instance of this class given its parent
+ * and a style value describing its behavior and appearance.
+ * <p>
+ * The style value is either one of the style constants defined in
+ * class <code>SWT</code> which is applicable to instances of this
+ * class, or must be built by <em>bitwise OR</em>'ing together 
+ * (that is, using the <code>int</code> "|" operator) two or more
+ * of those <code>SWT</code> style constants. The class description
+ * lists the style constants that are applicable to the class.
+ * Style bits are also inherited from superclasses.
+ * </p>
+ *
+ * @param parent a widget which will be the parent of the new instance (cannot be null)
+ * @param style the style of widget to construct
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
+ * </ul>
+ *
+ * @see SWT#BORDER
+ * @see SWT#READ_ONLY
+ * @see SWT#FLAT
+ * @see Widget#getStyle()
+ */
+public ASDCCombo (Composite parent, int style) {
+	super (parent, style = checkStyle (style));
+	
+	int textStyle = SWT.SINGLE;
+	if ((style & SWT.READ_ONLY) != 0) textStyle |= SWT.READ_ONLY;
+	if ((style & SWT.FLAT) != 0) textStyle |= SWT.FLAT;
+	text = new Text (this, textStyle);
+	int arrowStyle = SWT.ARROW | SWT.DOWN;
+	if ((style & SWT.FLAT) != 0) arrowStyle |= SWT.FLAT;
+	arrow = new Button (this, arrowStyle);
+
+	listener = new Listener () {
+		public void handleEvent (Event event) {
+			if (popup == event.widget) {
+				popupEvent (event);
+				return;
+			}
+			if (text == event.widget) {
+				textEvent (event);
+				return;
+			}
+			if (list == event.widget) {
+				listEvent (event);
+				return;
+			}
+			if (arrow == event.widget) {
+				arrowEvent (event);
+				return;
+			}
+			if (ASDCCombo.this == event.widget) {
+				comboEvent (event);
+				return;
+			}
+			if (getShell () == event.widget) {
+				handleFocus (SWT.FocusOut);
+			}
+		}
+	};
+	filter = new Listener() {
+		public void handleEvent(Event event) {
+			Shell shell = ((Control)event.widget).getShell ();
+			if (shell == ASDCCombo.this.getShell ()) {
+				handleFocus (SWT.FocusOut);
+			}
+		}
+	};
+	
+	int [] comboEvents = {SWT.Dispose, SWT.Move, SWT.Resize};
+	for (int i=0; i<comboEvents.length; i++) this.addListener (comboEvents [i], listener);
+	
+	int [] textEvents = {SWT.KeyDown, SWT.KeyUp, SWT.MenuDetect, SWT.Modify, SWT.MouseDown, SWT.MouseUp, SWT.Traverse, SWT.FocusIn};
+	for (int i=0; i<textEvents.length; i++) text.addListener (textEvents [i], listener);
+	
+	int [] arrowEvents = {SWT.Selection, SWT.FocusIn};
+	for (int i=0; i<arrowEvents.length; i++) arrow.addListener (arrowEvents [i], listener);
+	
+	createPopup(null, -1);
+	initAccessible();
+}
+static int checkStyle (int style) {
+	int mask = SWT.BORDER | SWT.READ_ONLY | SWT.FLAT | SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT;
+	return style & mask;
+}
+/**
+ * Adds the argument to the end of the receiver's list.
+ *
+ * @param string the new item
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the string is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see #add(String,int)
+ */
+public void add (String string) {
+	checkWidget();
+	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	list.add (string);
+}
+/**
+ * Adds the argument to the receiver's list at the given
+ * zero-relative index.
+ * <p>
+ * Note: To add an item at the end of the list, use the
+ * result of calling <code>getItemCount()</code> as the
+ * index or use <code>add(String)</code>.
+ * </p>
+ *
+ * @param string the new item
+ * @param index the index for the item
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the string is null</li>
+ *    <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list (inclusive)</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see #add(String)
+ */
+public void add (String string, int index) {
+	checkWidget();
+	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	list.add (string, index);
+}
+/**
+ * Adds the listener to the collection of listeners who will
+ * be notified when the receiver's text is modified, by sending
+ * it one of the messages defined in the <code>ModifyListener</code>
+ * interface.
+ *
+ * @param listener the listener which should be notified
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see ModifyListener
+ * @see #removeModifyListener
+ */
+public void addModifyListener (ModifyListener listener) {
+	checkWidget();
+	if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	TypedListener typedListener = new TypedListener (listener);
+	addListener (SWT.Modify, typedListener);
+}
+/**
+ * Adds the listener to the collection of listeners who will
+ * be notified when the receiver's selection changes, by sending
+ * it one of the messages defined in the <code>SelectionListener</code>
+ * interface.
+ * <p>
+ * <code>widgetSelected</code> is called when the combo's list selection changes.
+ * <code>widgetDefaultSelected</code> is typically called when ENTER is pressed the combo's text area.
+ * </p>
+ *
+ * @param listener the listener which should be notified
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see SelectionListener
+ * @see #removeSelectionListener
+ * @see SelectionEvent
+ */
+public void addSelectionListener(SelectionListener listener) {
+	checkWidget();
+	if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	TypedListener typedListener = new TypedListener (listener);
+	addListener (SWT.Selection,typedListener);
+	addListener (SWT.DefaultSelection,typedListener);
+}
+void arrowEvent (Event event) {
+	switch (event.type) {
+		case SWT.FocusIn: {
+			handleFocus (SWT.FocusIn);
+			break;
+		}
+		case SWT.Selection: {
+			dropDown (!isDropped ());
+			break;
+		}
+	}
+}
+/**
+ * Sets the selection in the receiver's text field to an empty
+ * selection starting just before the first character. If the
+ * text field is editable, this has the effect of placing the
+ * i-beam at the start of the text.
+ * <p>
+ * Note: To clear the selected items in the receiver's list, 
+ * use <code>deselectAll()</code>.
+ * </p>
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see #deselectAll
+ */
+public void clearSelection () {
+	checkWidget ();
+	text.clearSelection ();
+	list.deselectAll ();
+}
+void comboEvent (Event event) {
+	switch (event.type) {
+		case SWT.Dispose:
+			if (popup != null && !popup.isDisposed ()) {
+				list.removeListener (SWT.Dispose, listener);
+				popup.dispose ();
+			}
+			Shell shell = getShell ();
+			shell.removeListener (SWT.Deactivate, listener);
+			Display display = getDisplay ();
+			display.removeFilter (SWT.FocusIn, filter);
+			popup = null;  
+			text = null;  
+			list = null;  
+			arrow = null;
+			break;
+		case SWT.Move:
+			dropDown (false);
+			break;
+		case SWT.Resize:
+			internalLayout (false);
+			break;
+	}
+}
+
+public Point computeSize (int wHint, int hHint, boolean changed) {
+	checkWidget ();
+	int width = 0, height = 0;
+	String[] items = list.getItems ();
+	int textWidth = 0;
+	GC gc = new GC (text);
+	int spacer = gc.stringExtent (" ").x; //$NON-NLS-1$
+	for (int i = 0; i < items.length; i++) {
+		textWidth = Math.max (gc.stringExtent (items[i]).x, textWidth);
+	}
+	gc.dispose();
+	Point textSize = text.computeSize (SWT.DEFAULT, SWT.DEFAULT, changed);
+	Point arrowSize = arrow.computeSize (SWT.DEFAULT, SWT.DEFAULT, changed);
+	Point listSize = list.computeSize (SWT.DEFAULT, SWT.DEFAULT, changed);
+	int borderWidth = getBorderWidth ();
+	
+	height = Math.max (textSize.y, arrowSize.y);
+	width = Math.max (textWidth + 2*spacer + arrowSize.x + 2*borderWidth, listSize.x);
+	if (wHint != SWT.DEFAULT) width = wHint;
+	if (hHint != SWT.DEFAULT) height = hHint;
+	return new Point (width + 2*borderWidth, height + 2*borderWidth);
+}
+void createPopup(String[] items, int selectionIndex) {		
+		// create shell and list
+		popup = new Shell (getShell (), SWT.NO_TRIM | SWT.ON_TOP);
+		int style = getStyle ();
+		int listStyle = SWT.SINGLE | SWT.V_SCROLL;
+		if ((style & SWT.FLAT) != 0) listStyle |= SWT.FLAT;
+		if ((style & SWT.RIGHT_TO_LEFT) != 0) listStyle |= SWT.RIGHT_TO_LEFT;
+		if ((style & SWT.LEFT_TO_RIGHT) != 0) listStyle |= SWT.LEFT_TO_RIGHT;
+		list = new List (popup, listStyle);
+		if (font != null) list.setFont (font);
+		if (foreground != null) list.setForeground (foreground);
+		if (background != null) list.setBackground (background);
+		
+		int [] popupEvents = {SWT.Close, SWT.Paint, SWT.Deactivate};
+		for (int i=0; i<popupEvents.length; i++) popup.addListener (popupEvents [i], listener);
+		int [] listEvents = {SWT.MouseUp, SWT.Selection, SWT.Traverse, SWT.KeyDown, SWT.KeyUp, SWT.FocusIn, SWT.Dispose};
+		for (int i=0; i<listEvents.length; i++) list.addListener (listEvents [i], listener);
+		
+		if (items != null) list.setItems (items);
+		if (selectionIndex != -1) list.setSelection (selectionIndex);
+}
+/**
+ * Deselects the item at the given zero-relative index in the receiver's 
+ * list.  If the item at the index was already deselected, it remains
+ * deselected. Indices that are out of range are ignored.
+ *
+ * @param index the index of the item to deselect
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void deselect (int index) {
+	checkWidget ();
+	list.deselect (index);
+}
+/**
+ * Deselects all selected items in the receiver's list.
+ * <p>
+ * Note: To clear the selection in the receiver's text field,
+ * use <code>clearSelection()</code>.
+ * </p>
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see #clearSelection
+ */
+public void deselectAll () {
+	checkWidget ();
+	list.deselectAll ();
+}
+void dropDown (boolean drop) {
+	if (drop == isDropped ()) return;
+	if (!drop) {
+		popup.setVisible (false);
+		text.selectAll();
+		if (!isDisposed ()&& arrow.isFocusControl()) {
+			text.setFocus();
+		}
+		return;
+	}
+
+	if (getShell() != popup.getParent ()) {
+		String[] items = list.getItems ();
+		int selectionIndex = list.getSelectionIndex ();
+		list.removeListener (SWT.Dispose, listener);
+		popup.dispose();
+		popup = null;
+		list = null;
+		createPopup (items, selectionIndex);
+	}
+	
+	Point size = getSize ();
+	int itemCount = list.getItemCount ();
+	itemCount = (itemCount == 0) ? visibleItemCount : Math.min(visibleItemCount, itemCount);
+	int itemHeight = list.getItemHeight () * itemCount;
+	Point listSize = list.computeSize (SWT.DEFAULT, itemHeight, false);
+	list.setBounds (1, 1, Math.max (size.x - 2, listSize.x), listSize.y);
+	
+	int index = list.getSelectionIndex ();
+	if (index != -1) list.setTopIndex (index);
+	Display display = getDisplay ();
+	Rectangle listRect = list.getBounds ();
+	Rectangle parentRect = display.map (getParent (), null, getBounds ());
+	Point comboSize = getSize ();
+	Rectangle displayRect = getMonitor ().getClientArea ();
+	int width = Math.max (comboSize.x, listRect.width + 2);
+	int height = listRect.height + 2;
+	int x = parentRect.x;
+	int y = parentRect.y + comboSize.y;
+	if (y + height > displayRect.y + displayRect.height) y = parentRect.y - height;
+	if (x + width > displayRect.x + displayRect.width) x = displayRect.x + displayRect.width - listRect.width;
+	popup.setBounds (x, y, width, height);
+	popup.setVisible (true);
+	list.setFocus ();
+}
+/*
+ * Return the lowercase of the first non-'&' character following
+ * an '&' character in the given string. If there are no '&'
+ * characters in the given string, return '\0'.
+ */
+char _findMnemonic (String string) {
+	if (string == null) return '\0';
+	int index = 0;
+	int length = string.length ();
+	do {
+		while (index < length && string.charAt (index) != '&') index++;
+		if (++index >= length) return '\0';
+		if (string.charAt (index) != '&') return Character.toLowerCase (string.charAt (index));
+		index++;
+	} while (index < length);
+ 	return '\0';
+}
+/* 
+ * Return the Label immediately preceding the receiver in the z-order, 
+ * or null if none. 
+ */
+Label getAssociatedLabel () {
+	Control[] siblings = getParent ().getChildren ();
+	for (int i = 0; i < siblings.length; i++) {
+		if (siblings [i] == this) {
+			if (i > 0 && siblings [i-1] instanceof Label) {
+				return (Label) siblings [i-1];
+			}
+		}
+	}
+	return null;
+}
+public Control [] getChildren () {
+	checkWidget();
+	return new Control [0];
+}
+/**
+ * Gets the editable state.
+ *
+ * @return whether or not the receiver is editable
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ * 
+ * @since 3.0
+ */
+public boolean getEditable () {
+	checkWidget ();
+	return text.getEditable();
+}
+/**
+ * Returns the item at the given, zero-relative index in the
+ * receiver's list. Throws an exception if the index is out
+ * of range.
+ *
+ * @param index the index of the item to return
+ * @return the item at the given index
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public String getItem (int index) {
+	checkWidget();
+	return list.getItem (index);
+}
+/**
+ * Returns the number of items contained in the receiver's list.
+ *
+ * @return the number of items
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public int getItemCount () {
+	checkWidget ();
+	return list.getItemCount ();
+}
+/**
+ * Returns the height of the area which would be used to
+ * display <em>one</em> of the items in the receiver's list.
+ *
+ * @return the height of one item
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public int getItemHeight () {
+	checkWidget ();
+	return list.getItemHeight ();
+}
+/**
+ * Returns an array of <code>String</code>s which are the items
+ * in the receiver's list. 
+ * <p>
+ * Note: This is not the actual structure used by the receiver
+ * to maintain its list of items, so modifying the array will
+ * not affect the receiver. 
+ * </p>
+ *
+ * @return the items in the receiver's list
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public String [] getItems () {
+	checkWidget ();
+	return list.getItems ();
+}
+public Menu getMenu() {
+	return text.getMenu();
+}
+/**
+ * Returns a <code>Point</code> whose x coordinate is the start
+ * of the selection in the receiver's text field, and whose y
+ * coordinate is the end of the selection. The returned values
+ * are zero-relative. An "empty" selection as indicated by
+ * the the x and y coordinates having the same value.
+ *
+ * @return a point representing the selection start and end
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public Point getSelection () {
+	checkWidget ();
+	return text.getSelection ();
+}
+/**
+ * Returns the zero-relative index of the item which is currently
+ * selected in the receiver's list, or -1 if no item is selected.
+ *
+ * @return the index of the selected item
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public int getSelectionIndex () {
+	checkWidget ();
+	return list.getSelectionIndex ();
+}
+public int getStyle () {
+	int style = super.getStyle ();
+	style &= ~SWT.READ_ONLY;
+	if (!text.getEditable()) style |= SWT.READ_ONLY; 
+	return style;
+}
+/**
+ * Returns a string containing a copy of the contents of the
+ * receiver's text field.
+ *
+ * @return the receiver's text
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public String getText () {
+	checkWidget ();
+	return text.getText ();
+}
+/**
+ * Returns the height of the receivers's text field.
+ *
+ * @return the text height
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public int getTextHeight () {
+	checkWidget ();
+	return text.getLineHeight ();
+}
+/**
+ * Returns the maximum number of characters that the receiver's
+ * text field is capable of holding. If this has not been changed
+ * by <code>setTextLimit()</code>, it will be the constant
+ * <code>Combo.LIMIT</code>.
+ * 
+ * @return the text limit
+ * 
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public int getTextLimit () {
+	checkWidget ();
+	return text.getTextLimit ();
+}
+/**
+ * Gets the number of items that are visible in the drop
+ * down portion of the receiver's list.
+ *
+ * @return the number of items that are visible
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ * 
+ * @since 3.0
+ */
+public int getVisibleItemCount () {
+	checkWidget ();
+	return visibleItemCount;
+}
+void handleFocus (int type) {
+	if (isDisposed ()) return;
+	switch (type) {
+		case SWT.FocusIn: {
+			if (hasFocus) return;
+//			if (getEditable ()) text.selectAll ();
+			hasFocus = true;
+			Shell shell = getShell ();
+			shell.removeListener (SWT.Deactivate, listener);
+			shell.addListener (SWT.Deactivate, listener);
+			Display display = getDisplay ();
+			display.removeFilter (SWT.FocusIn, filter);
+			display.addFilter (SWT.FocusIn, filter);
+			Event e = new Event ();
+			notifyListeners (SWT.FocusIn, e);
+			break;
+		}
+		case SWT.FocusOut: {
+			if (!hasFocus) return;
+			Control focusControl = getDisplay ().getFocusControl ();
+			if (focusControl == arrow || focusControl == list || focusControl == text) return;
+			hasFocus = false;
+			Shell shell = getShell ();
+			shell.removeListener(SWT.Deactivate, listener);
+			Display display = getDisplay ();
+			display.removeFilter (SWT.FocusIn, filter);
+			Event e = new Event ();
+			notifyListeners (SWT.FocusOut, e);
+			break;
+		}
+	}
+}
+/**
+ * Searches the receiver's list starting at the first item
+ * (index 0) until an item is found that is equal to the 
+ * argument, and returns the index of that item. If no item
+ * is found, returns -1.
+ *
+ * @param string the search item
+ * @return the index of the item
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the string is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public int indexOf (String string) {
+	checkWidget ();
+	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	return list.indexOf (string);
+}
+/**
+ * Searches the receiver's list starting at the given, 
+ * zero-relative index until an item is found that is equal
+ * to the argument, and returns the index of that item. If
+ * no item is found or the starting index is out of range,
+ * returns -1.
+ *
+ * @param string the search item
+ * @param start the zero-relative index at which to begin the search
+ * @return the index of the item
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the string is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public int indexOf (String string, int start) {
+	checkWidget ();
+	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	return list.indexOf (string, start);
+}
+
+void initAccessible() {
+	AccessibleAdapter accessibleAdapter = new AccessibleAdapter () {
+		public void getName (AccessibleEvent e) {
+			String name = null;
+			Label label = getAssociatedLabel ();
+			if (label != null) {
+				name = stripMnemonic (label.getText());
+			}
+			e.result = name;
+		}
+		public void getKeyboardShortcut(AccessibleEvent e) {
+			String shortcut = null;
+			Label label = getAssociatedLabel ();
+			if (label != null) {
+				String text = label.getText ();
+				if (text != null) {
+					char mnemonic = _findMnemonic (text);
+					if (mnemonic != '\0') {
+						shortcut = "Alt+"+mnemonic; //$NON-NLS-1$
+					}
+				}
+			}
+			e.result = shortcut;
+		}
+		public void getHelp (AccessibleEvent e) {
+			e.result = getToolTipText ();
+		}
+	};
+	getAccessible ().addAccessibleListener (accessibleAdapter);
+	text.getAccessible ().addAccessibleListener (accessibleAdapter);
+	list.getAccessible ().addAccessibleListener (accessibleAdapter);
+	
+	arrow.getAccessible ().addAccessibleListener (new AccessibleAdapter() {
+		public void getName (AccessibleEvent e) {
+			e.result = isDropped () ? SWT.getMessage ("SWT_Close") : SWT.getMessage ("SWT_Open"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+		public void getKeyboardShortcut (AccessibleEvent e) {
+			e.result = "Alt+Down Arrow"; //$NON-NLS-1$
+		}
+		public void getHelp (AccessibleEvent e) {
+			e.result = getToolTipText ();
+		}
+	});
+
+	getAccessible().addAccessibleTextListener (new AccessibleTextAdapter() {
+		public void getCaretOffset (AccessibleTextEvent e) {
+			e.offset = text.getCaretPosition ();
+		}
+		public void getSelectionRange(AccessibleTextEvent e) {
+			Point sel = text.getSelection();
+			e.offset = sel.x;
+			e.length = sel.y - sel.x;
+		}
+	});
+	
+	getAccessible().addAccessibleControlListener (new AccessibleControlAdapter() {
+		public void getChildAtPoint (AccessibleControlEvent e) {
+			Point testPoint = toControl (e.x, e.y);
+			if (getBounds ().contains (testPoint)) {
+				e.childID = ACC.CHILDID_SELF;
+			}
+		}
+		
+		public void getLocation (AccessibleControlEvent e) {
+			Rectangle location = getBounds ();
+			Point pt = toDisplay (location.x, location.y);
+			e.x = pt.x;
+			e.y = pt.y;
+			e.width = location.width;
+			e.height = location.height;
+		}
+		
+		public void getChildCount (AccessibleControlEvent e) {
+			e.detail = 0;
+		}
+		
+		public void getRole (AccessibleControlEvent e) {
+			e.detail = ACC.ROLE_COMBOBOX;
+		}
+		
+		public void getState (AccessibleControlEvent e) {
+			e.detail = ACC.STATE_NORMAL;
+		}
+
+		public void getValue (AccessibleControlEvent e) {
+			e.result = getText ();
+		}
+	});
+
+	text.getAccessible ().addAccessibleControlListener (new AccessibleControlAdapter () {
+		public void getRole (AccessibleControlEvent e) {
+			e.detail = text.getEditable () ? ACC.ROLE_TEXT : ACC.ROLE_LABEL;
+		}
+	});
+
+	arrow.getAccessible ().addAccessibleControlListener (new AccessibleControlAdapter() {
+		public void getDefaultAction (AccessibleControlEvent e) {
+			e.result = isDropped () ? SWT.getMessage ("SWT_Close") : SWT.getMessage ("SWT_Open"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	});
+}
+boolean isDropped () {
+	return popup.getVisible ();
+}
+public boolean isFocusControl () {
+	checkWidget();
+	if (text.isFocusControl () || arrow.isFocusControl () || list.isFocusControl () || popup.isFocusControl ()) {
+		return true;
+	} 
+	return super.isFocusControl ();
+}
+
+public void setTextIndent(int indent) {
+	textIndent = indent;
+}
+
+void internalLayout (boolean changed) {
+	if (isDropped ()) dropDown (false);
+	Rectangle rect = getClientArea ();
+	int width = rect.width;
+	int height = rect.height;
+	Point arrowSize = arrow.computeSize (SWT.DEFAULT, height, changed);
+
+	text.pack();
+	int textHeight = text.getBounds().height;
+	int textX = textIndent;
+	int textY = (height - textHeight) / 2;
+	text.setLocation(textX, textY);
+	
+	arrow.setBounds (width - arrowSize.x, 0, arrowSize.x, arrowSize.y);
+}
+void listEvent (Event event) {
+	switch (event.type) {
+		case SWT.Dispose:
+			if (getShell () != popup.getParent ()) {
+				String[] items = list.getItems ();
+				int selectionIndex = list.getSelectionIndex ();
+				popup = null;
+				list = null;
+				createPopup (items, selectionIndex);
+			}
+			break;
+		case SWT.FocusIn: {
+			handleFocus (SWT.FocusIn);
+			break;
+		}
+		case SWT.MouseUp: {
+			if (event.button != 1) return;
+			dropDown (false);
+			break;
+		}
+		case SWT.Selection: {
+			int index = list.getSelectionIndex ();
+			if (index == -1) return;
+			text.setText (list.getItem (index));
+//			text.selectAll ();
+			list.setSelection (index);
+			Event e = new Event ();
+			e.time = event.time;
+			e.stateMask = event.stateMask;
+			e.doit = event.doit;
+			if (!isDropped()) {
+				notifyListeners (SWT.Selection, e);
+			}
+			event.doit = e.doit;
+			break;
+		}
+		case SWT.Traverse: {
+			switch (event.detail) {
+				case SWT.TRAVERSE_RETURN:
+				case SWT.TRAVERSE_ESCAPE:
+				case SWT.TRAVERSE_ARROW_PREVIOUS:
+				case SWT.TRAVERSE_ARROW_NEXT:
+					event.doit = false;
+					break;
+			}
+			Event e = new Event ();
+			e.time = event.time;
+			e.detail = event.detail;
+			e.doit = event.doit;
+			e.character = event.character;
+			e.keyCode = event.keyCode;
+			notifyListeners (SWT.Traverse, e);
+			event.doit = e.doit;
+			event.detail = e.detail;
+			break;
+		}
+		case SWT.KeyUp: {		
+			Event e = new Event ();
+			e.time = event.time;
+			e.character = event.character;
+			e.keyCode = event.keyCode;
+			e.stateMask = event.stateMask;
+			
+			notifyListeners (SWT.KeyUp, e);
+			
+			
+			break;
+		}
+		case SWT.KeyDown: {
+			if (event.character == SWT.ESC) { 
+				// Escape key cancels popup list
+				dropDown (false);
+			}
+			if ((event.stateMask & SWT.ALT) != 0 && (event.keyCode == SWT.ARROW_UP || event.keyCode == SWT.ARROW_DOWN)) {
+				dropDown (false);
+			}
+			
+			if (event.character == SWT.CR) {
+				// Enter causes default selection
+				dropDown (false);
+				Event e = new Event ();
+				e.time = event.time;
+				e.stateMask = event.stateMask;
+				notifyListeners (SWT.DefaultSelection, e);
+			}
+			// At this point the widget may have been disposed.
+			// If so, do not continue.
+			if (isDisposed ()) break;
+			Event e = new Event();
+			e.time = event.time;
+			e.character = event.character;
+			e.keyCode = event.keyCode;
+			e.stateMask = event.stateMask;
+			notifyListeners(SWT.KeyDown, e);
+			break;
+			
+		}
+	}
+}
+
+void popupEvent(Event event) {
+	switch (event.type) {
+		case SWT.Paint:
+			// draw black rectangle around list
+			Rectangle listRect = list.getBounds();
+			Color black = getDisplay().getSystemColor(SWT.COLOR_BLACK);
+			event.gc.setForeground(black);
+			event.gc.drawRectangle(0, 0, listRect.width + 1, listRect.height + 1);
+			break;
+		case SWT.Close:
+			event.doit = false;
+			dropDown (false);
+			break;
+		case SWT.Deactivate:
+			dropDown (false);
+			break;
+	}
+}
+public void redraw () {
+	super.redraw();
+	text.redraw();
+	arrow.redraw();
+	if (popup.isVisible()) list.redraw();
+}
+public void redraw (int x, int y, int width, int height, boolean all) {
+	super.redraw(x, y, width, height, true);
+}
+
+/**
+ * Removes the item from the receiver's list at the given
+ * zero-relative index.
+ *
+ * @param index the index for the item
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void remove (int index) {
+	checkWidget();
+	list.remove (index);
+}
+/**
+ * Removes the items from the receiver's list which are
+ * between the given zero-relative start and end 
+ * indices (inclusive).
+ *
+ * @param start the start of the range
+ * @param end the end of the range
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_RANGE - if either the start or end are not between 0 and the number of elements in the list minus 1 (inclusive)</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void remove (int start, int end) {
+	checkWidget();
+	list.remove (start, end);
+}
+/**
+ * Searches the receiver's list starting at the first item
+ * until an item is found that is equal to the argument, 
+ * and removes that item from the list.
+ *
+ * @param string the item to remove
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the string is null</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if the string is not found in the list</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void remove (String string) {
+	checkWidget();
+	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	list.remove (string);
+}
+/**
+ * Removes all of the items from the receiver's list and clear the
+ * contents of receiver's text field.
+ * <p>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void removeAll () {
+	checkWidget();
+	text.setText (""); //$NON-NLS-1$
+	list.removeAll ();
+}
+/**
+ * Removes the listener from the collection of listeners who will
+ * be notified when the receiver's text is modified.
+ *
+ * @param listener the listener which should no longer be notified
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see ModifyListener
+ * @see #addModifyListener
+ */
+public void removeModifyListener (ModifyListener listener) {
+	checkWidget();
+	if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	removeListener(SWT.Modify, listener);	
+}
+/**
+ * Removes the listener from the collection of listeners who will
+ * be notified when the receiver's selection changes.
+ *
+ * @param listener the listener which should no longer be notified
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the listener is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ *
+ * @see SelectionListener
+ * @see #addSelectionListener
+ */
+public void removeSelectionListener (SelectionListener listener) {
+	checkWidget();
+	if (listener == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	removeListener(SWT.Selection, listener);
+	removeListener(SWT.DefaultSelection,listener);	
+}
+/**
+ * Selects the item at the given zero-relative index in the receiver's 
+ * list.  If the item at the index was already selected, it remains
+ * selected. Indices that are out of range are ignored.
+ *
+ * @param index the index of the item to select
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void select (int index) {
+	checkWidget();
+	if (index == -1) {
+		list.deselectAll ();
+		text.setText (""); //$NON-NLS-1$
+		return;
+	}
+	if (0 <= index && index < list.getItemCount()) {
+		if (index != getSelectionIndex()) {
+			text.setText (list.getItem (index));
+//			text.selectAll ();
+			list.select (index);
+			list.showSelection ();
+		}
+	}
+}
+public void setBackground (Color color) {
+	super.setBackground(color);
+	background = color;
+	if (text != null) text.setBackground(color);
+	if (list != null) list.setBackground(color);
+	if (arrow != null) arrow.setBackground(color);
+}
+/**
+ * Sets the editable state.
+ *
+ * @param editable the new editable state
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ * 
+ * @since 3.0
+ */
+public void setEditable (boolean editable) {
+	checkWidget ();
+	text.setEditable(editable);
+}
+public void setEnabled (boolean enabled) {
+	super.setEnabled(enabled);
+	if (popup != null) popup.setVisible (false);
+	if (text != null) text.setEnabled(enabled);
+	if (arrow != null) arrow.setEnabled(enabled);
+}
+public boolean setFocus () {
+	checkWidget();
+	return text.setFocus ();
+}
+public void setFont (Font font) {
+	super.setFont (font);
+	this.font = font;
+	text.setFont (font);
+	list.setFont (font);
+	internalLayout (true);
+}
+public void setForeground (Color color) {
+	super.setForeground(color);
+	foreground = color;
+	if (text != null) text.setForeground(color);
+	if (list != null) list.setForeground(color);
+	if (arrow != null) arrow.setForeground(color);
+}
+/**
+ * Sets the text of the item in the receiver's list at the given
+ * zero-relative index to the string argument. This is equivalent
+ * to <code>remove</code>'ing the old item at the index, and then
+ * <code>add</code>'ing the new item at that index.
+ *
+ * @param index the index for the item
+ * @param string the new text for the item
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_INVALID_RANGE - if the index is not between 0 and the number of elements in the list minus 1 (inclusive)</li>
+ *    <li>ERROR_NULL_ARGUMENT - if the string is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void setItem (int index, String string) {
+	checkWidget();
+	list.setItem (index, string);
+}
+/**
+ * Sets the receiver's list to be the given array of items.
+ *
+ * @param items the array of items
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the items array is null</li>
+ *    <li>ERROR_INVALID_ARGUMENT - if an item in the items array is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void setItems (String [] items) {
+	checkWidget ();
+	list.setItems (items);
+	if (!text.getEditable ()) text.setText (""); //$NON-NLS-1$
+}
+/**
+ * Sets the layout which is associated with the receiver to be
+ * the argument which may be null.
+ * <p>
+ * Note: No Layout can be set on this Control because it already
+ * manages the size and position of its children.
+ * </p>
+ *
+ * @param layout the receiver's new layout or null
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void setLayout (Layout layout) {
+	checkWidget ();
+	return;
+}
+public void setMenu(Menu menu) {
+	text.setMenu(menu);
+}
+/**
+ * Sets the selection in the receiver's text field to the
+ * range specified by the argument whose x coordinate is the
+ * start of the selection and whose y coordinate is the end
+ * of the selection. 
+ *
+ * @param selection a point representing the new selection start and end
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the point is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void setSelection (Point selection) {
+	checkWidget();
+	if (selection == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	text.setSelection (selection.x, selection.y);
+}
+
+/**
+ * Sets the contents of the receiver's text field to the
+ * given string.
+ * <p>
+ * Note: The text field in a <code>Combo</code> is typically
+ * only capable of displaying a single line of text. Thus,
+ * setting the text to a string containing line breaks or
+ * other special characters will probably cause it to 
+ * display incorrectly.
+ * </p>
+ *
+ * @param string the new text
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_NULL_ARGUMENT - if the string is null</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void setText (String string) {
+	checkWidget();
+	if (string == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);
+	int index = list.indexOf (string);
+	if (index == -1) {
+		list.deselectAll ();
+		text.setText (string);
+		return;
+	}
+	text.setText (string);
+//	text.selectAll ();
+	list.setSelection (index);
+	list.showSelection ();
+}
+/**
+ * Sets the maximum number of characters that the receiver's
+ * text field is capable of holding to be the argument.
+ *
+ * @param limit new text limit
+ *
+ * @exception IllegalArgumentException <ul>
+ *    <li>ERROR_CANNOT_BE_ZERO - if the limit is zero</li>
+ * </ul>
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ */
+public void setTextLimit (int limit) {
+	checkWidget();
+	text.setTextLimit (limit);
+}
+
+public void setToolTipText (String string) {
+	checkWidget();
+	super.setToolTipText(string);
+	arrow.setToolTipText (string);
+	text.setToolTipText (string);		
+}
+
+public void setVisible (boolean visible) {
+	super.setVisible(visible);
+	if (!visible) popup.setVisible(false);
+}
+/**
+ * Sets the number of items that are visible in the drop
+ * down portion of the receiver's list.
+ *
+ * @param count the new number of items to be visible
+ *
+ * @exception SWTException <ul>
+ *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
+ *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
+ * </ul>
+ * 
+ * @since 3.0
+ */
+public void setVisibleItemCount (int count) {
+	checkWidget ();
+	if (count < 0) return;
+	visibleItemCount = count;
+}
+String stripMnemonic (String string) {
+	int index = 0;
+	int length = string.length ();
+	do {
+		while ((index < length) && (string.charAt (index) != '&')) index++;
+		if (++index >= length) return string;
+		if (string.charAt (index) != '&') {
+			return string.substring(0, index-1) + string.substring(index, length);
+		}
+		index++;
+	} while (index < length);
+ 	return string;
+}
+void textEvent (Event event) {
+	switch (event.type) {
+		case SWT.FocusIn: {
+			handleFocus (SWT.FocusIn);
+			break;
+		}
+		case SWT.KeyDown: {
+			if (event.character == SWT.CR) {
+				dropDown (false);
+				Event e = new Event ();
+				e.time = event.time;
+				e.stateMask = event.stateMask;
+				notifyListeners (SWT.DefaultSelection, e);
+			}
+			//At this point the widget may have been disposed.
+			// If so, do not continue.
+			if (isDisposed ()) break;
+			
+			if (event.keyCode == SWT.ARROW_UP || event.keyCode == SWT.ARROW_DOWN) {
+				event.doit = false;
+				if ((event.stateMask & SWT.ALT) != 0) {
+					boolean dropped = isDropped ();
+//					text.selectAll ();
+					if (!dropped) setFocus ();
+					dropDown (!dropped);
+					break;
+				}
+
+				int oldIndex = getSelectionIndex ();
+				if (event.keyCode == SWT.ARROW_UP) {
+					select (Math.max (oldIndex - 1, 0));
+				} else {
+					select (Math.min (oldIndex + 1, getItemCount () - 1));
+				}
+				if (oldIndex != getSelectionIndex ()) {
+					Event e = new Event();
+					e.time = event.time;
+					e.stateMask = event.stateMask;
+					notifyListeners (SWT.Selection, e);
+				}
+				//At this point the widget may have been disposed.
+				// If so, do not continue.
+				if (isDisposed ()) break;
+			}
+			
+			// Further work : Need to add support for incremental search in 
+			// pop up list as characters typed in text widget
+			
+
+			Event e = new Event ();
+			e.time = event.time;
+			e.character = event.character;
+			e.keyCode = event.keyCode;
+			e.stateMask = event.stateMask;
+			//notifyListeners (SWT.KeyDown, e);
+			break;
+		}
+		case SWT.KeyUp: {
+			Event e = new Event ();
+			e.time = event.time;
+			e.character = event.character;
+			e.keyCode = event.keyCode;
+			e.stateMask = event.stateMask;
+			notifyListeners (SWT.KeyUp, e);
+			break;
+		}
+		case SWT.MenuDetect: {
+			Event e = new Event ();
+			e.time = event.time;
+			notifyListeners (SWT.MenuDetect, e);
+			break;
+		}
+		case SWT.Modify: {
+			list.deselectAll ();
+			Event e = new Event ();
+			e.time = event.time;
+			notifyListeners (SWT.Modify, e);
+			break;
+		}
+		case SWT.MouseDown: {
+			if (event.button != 1) return;
+			if (text.getEditable ()) return;
+			boolean dropped = isDropped ();
+//			text.selectAll ();
+			if (!dropped) setFocus ();
+			dropDown (!dropped);
+			break;
+		}
+		case SWT.MouseUp: {
+			if (event.button != 1) return;
+			if (text.getEditable ()) return;
+//			text.selectAll ();
+			break;
+		}
+		case SWT.Traverse: {		
+			switch (event.detail) {
+				case SWT.TRAVERSE_RETURN:
+				case SWT.TRAVERSE_ARROW_PREVIOUS:
+				case SWT.TRAVERSE_ARROW_NEXT:
+					// The enter causes default selection and
+					// the arrow keys are used to manipulate the list contents so
+					// do not use them for traversal.
+					event.doit = false;
+					break;
+			}
+			
+			Event e = new Event ();
+			e.time = event.time;
+			e.detail = event.detail;
+			e.doit = event.doit;
+			e.character = event.character;
+			e.keyCode = event.keyCode;
+			notifyListeners (SWT.Traverse, e);
+			event.doit = e.doit;
+			event.detail = e.detail;
+			break;
+		}
+	}
+}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ASDComboBoxCellEditor.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ASDComboBoxCellEditor.java
index 5ec87ce..af33c58 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ASDComboBoxCellEditor.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ASDComboBoxCellEditor.java
@@ -16,7 +16,6 @@
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
 import org.eclipse.swt.events.FocusAdapter;
 import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.KeyAdapter;
@@ -52,7 +51,7 @@
     /**
      * The custom combo box control.
      */
-    CCombo comboBox;
+    ASDCCombo comboBox;
     
     /**
      * Used to determine if the value should be applied to the cell.
@@ -60,6 +59,7 @@
     private boolean continueApply;    
     private Object selectedValue;
     private ComponentReferenceEditManager componentReferenceEditManager;
+    private int textIndent = 5;
 
     /**
      * Default ComboBoxCellEditor style
@@ -101,14 +101,19 @@
         this.items = items;
         populateComboBoxItems();
     }
+    
+    public void setTextIndent(int indent) {
+    	textIndent = indent;
+    	comboBox.setTextIndent(indent);
+    }
 
     /* (non-Javadoc)
      * Method declared on CellEditor.
      */
     protected Control createControl(Composite parent) {
-
-        comboBox = new CCombo(parent, getStyle());
+        comboBox = new ASDCCombo(parent, getStyle());
         comboBox.setFont(parent.getFont());
+        comboBox.setTextIndent(textIndent);
         
         comboBox.addKeyListener(new KeyAdapter() {
             // hook key pressed - see PR 14201  
@@ -119,35 +124,11 @@
 
         comboBox.addSelectionListener(new SelectionAdapter() {
             public void widgetDefaultSelected(SelectionEvent event) {
-                applyEditorValueAndDeactivate();
+                selectionMade();
             }
 
             public void widgetSelected(SelectionEvent event) {
-            	Object newValue = null;
-            	continueApply = true;
-            	selection = comboBox.getSelectionIndex();
-            	String stringSelection = items[selection];
-            	
-            	if (stringSelection.equals(Messages.getString("_UI_BUTTON_BROWSE"))) { //$NON-NLS-1$
-            		newValue = invokeDialog(componentReferenceEditManager.getBrowseDialog());
-            	}
-            	else if (stringSelection.equals(Messages.getString("_UI_BUTTON_NEW"))) { //$NON-NLS-1$
-            		newValue = invokeDialog(componentReferenceEditManager.getNewDialog());
-            	}
-
-            	if (continueApply) {
-            		if (newValue == null) {
-            			int index = comboBox.getSelectionIndex();              
-            			if (index != -1) {
-            				selectedValue = comboBox.getItem(index);
-            			}
-            		}
-            		else {
-            			selectedValue = newValue;
-            		}
-
-            		applyEditorValueAndDeactivate();
-            	}
+            	selectionMade();
             }
         });
 
@@ -202,6 +183,9 @@
      */
     protected void doSetFocus() {
         comboBox.setFocus();
+        comboBox.dropDown(true);
+//        String comboText = comboBox.getText();
+//        comboBox.setText("         " + comboText);
     }
 
     /**
@@ -292,10 +276,36 @@
             fireCancelEditor();
         } else if (keyEvent.character == '\t') { // tab key
             applyEditorValueAndDeactivate();
-        }
+        } 
     }
     
     public Object getSelectedValue() {
     	return selectedValue;
     }
+    
+    
+    public void selectionMade() {
+    	Object newValue = null;
+    	continueApply = true;
+    	selection = comboBox.getSelectionIndex();
+    	String stringSelection = items[selection];
+    	
+    	if (stringSelection.equals(Messages._UI_BUTTON_BROWSE)) { //$NON-NLS-1$
+    		newValue = invokeDialog(componentReferenceEditManager.getBrowseDialog());
+    	}
+    	else if (stringSelection.equals(Messages._UI_BUTTON_NEW)) { //$NON-NLS-1$
+    		newValue = invokeDialog(componentReferenceEditManager.getNewDialog());
+    	}
+
+    	if (newValue == null) {
+    		int index = comboBox.getSelectionIndex();              
+    		if (index != -1) {
+    			selectedValue = comboBox.getItem(index);
+    		}
+    	}
+    	else {
+    		selectedValue = newValue;
+    	}
+   		applyEditorValueAndDeactivate();
+   }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ComboBoxCellEditorManager.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ComboBoxCellEditorManager.java
index 18254d3..849ac6b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ComboBoxCellEditorManager.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/ComboBoxCellEditorManager.java
@@ -21,7 +21,6 @@
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.jface.viewers.ComboBoxCellEditor;
 import org.eclipse.jface.viewers.ICellEditorListener;
-import org.eclipse.swt.custom.CCombo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 
@@ -39,7 +38,7 @@
   {                                             
   	String initialLabelText = label.getText();   
 
-    CCombo combo = (CCombo)getCellEditor().getControl();
+    ASDCCombo combo = (ASDCCombo)getCellEditor().getControl();
    	combo.setFont(label.getFont());
     combo.setForeground(label.getForegroundColor());
     combo.setBackground(label.getBackgroundColor());
@@ -131,7 +130,7 @@
 
     public void relocate(CellEditor celleditor) 
     {
-        CCombo combo = (CCombo)celleditor.getControl();  
+        ASDCCombo combo = (ASDCCombo)celleditor.getControl();  
 	    Rectangle labelParentBounds = label.getParent().getBounds().getCopy();
 	    label.translateToAbsolute(labelParentBounds);
 	    
@@ -146,7 +145,7 @@
   public void performEdit(CellEditor cellEditor)
   {
 	  ASDComboBoxCellEditor comboCellEditor = (ASDComboBoxCellEditor) cellEditor;
-	  CCombo combo = (CCombo)getCellEditor().getControl();
+	  ASDCCombo combo = (ASDCCombo)getCellEditor().getControl();
 	  int index = combo.getSelectionIndex();              
 	  if (index != -1)
 	  {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/DirectEditSelectionTool.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/DirectEditSelectionTool.java
index 68d81d3..7eb49a6 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/DirectEditSelectionTool.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/DirectEditSelectionTool.java
@@ -38,7 +38,7 @@
 		super.handleButtonDown(button);
 		INamedEditPart selectedPart = getSelectedPart();
 		
-		if(selectedPart != null) {
+		if(selectedPart != null && button == 1) {
 			Input i = getCurrentInput();
 			Point l = translateLocation(i.getMouseLocation());
 			
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/LabelCellEditorLocator.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/LabelCellEditorLocator.java
index 09081ef..cc9164d 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/LabelCellEditorLocator.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/LabelCellEditorLocator.java
@@ -46,23 +46,25 @@
 			boundingRect.width = label.getParent().getBounds().width - delta;
 			text.setBounds(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height);
 			
-			// Translate point
-			Point translatedPoint = new Point(cursorLocation.x - boundingRect.x,cursorLocation.y - boundingRect.y);
-			
-			// Calculate text offset corresponding to the translated point
-			text.setSelection(0, 0);
-			int xCaret = text.getCaretLocation().x;
-			int offset = text.getCaretPosition();
-			while (xCaret < translatedPoint.x) {
-				text.setSelection(offset + 1, offset + 1);			
-				xCaret = text.getCaretLocation().x;
-				int newOffset = text.getCaretPosition();
-				if (newOffset == offset) {
-					break;
+			if (cursorLocation != null) {
+				// Translate point
+				Point translatedPoint = new Point(cursorLocation.x - boundingRect.x,cursorLocation.y - boundingRect.y);
+
+				// Calculate text offset corresponding to the translated point
+				text.setSelection(0, 0);
+				int xCaret = text.getCaretLocation().x;
+				int offset = text.getCaretPosition();
+				while (xCaret < translatedPoint.x) {
+					text.setSelection(offset + 1, offset + 1);			
+					xCaret = text.getCaretLocation().x;
+					int newOffset = text.getCaretPosition();
+					if (newOffset == offset) {
+						break;
+					}
+					offset++;
 				}
-				offset++;
+				text.setSelection(offset, offset);
 			}
-			text.setSelection(offset, offset);
 		}
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/LabelEditManager.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/LabelEditManager.java
index 5fa2330..8c03ade 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/LabelEditManager.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/LabelEditManager.java
@@ -86,7 +86,8 @@
 				text.setBackground(color);
 			}
 			else {
-				text.setBackground(ColorConstants.lightBlue);
+//				text.setBackground(ColorConstants.lightBlue);
+			    text.setBackground(ColorConstants.white);
 			}
 			
 			String initialLabelText = label.getText();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/TypeReferenceDirectEditManager.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/TypeReferenceDirectEditManager.java
index 0f7c69a..fdfa992 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/TypeReferenceDirectEditManager.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/directedit/TypeReferenceDirectEditManager.java
@@ -14,16 +14,17 @@
 import java.util.List;
 
 import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
 import org.eclipse.jface.viewers.CellEditor;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.ParameterTypeEditPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
-import org.eclipse.wst.xsd.ui.internal.editor.XSDTypeReferenceEditManager;
 
 public class TypeReferenceDirectEditManager extends ComboBoxCellEditorManager
 {
@@ -48,8 +49,8 @@
 	    ComponentReferenceEditManager editManager = getComponentReferenceEditManager();
 	    if (editManager != null)
 	    {
-	       list.add(Messages.getString("_UI_BUTTON_BROWSE")); //$NON-NLS-1$
-	       list.add(Messages.getString("_UI_BUTTON_NEW")); //$NON-NLS-1$
+	       list.add(Messages._UI_BUTTON_BROWSE); //$NON-NLS-1$
+	       list.add(Messages._UI_BUTTON_NEW); //$NON-NLS-1$
 	       ComponentSpecification[] quickPicks = editManager.getQuickPicks();
 	       if (quickPicks != null)
 	       {
@@ -101,16 +102,43 @@
 	  return list;
   }
   
+  private int getTextIndent() {
+	  if (editPart instanceof ParameterTypeEditPart) {
+		  Rectangle bounds = ((ParameterTypeEditPart) editPart).getFigure().getBounds();
+		  int textX = ((ParameterTypeEditPart) editPart).getLabelFigure().getTextBounds().x; 
+		  return textX - bounds.x;
+	  }
+	  
+	  return 5;
+  }
+  
   protected CellEditor createCellEditor(Composite composite, String[] stringArray)
   {
     ASDComboBoxCellEditor cellEditor = new ASDComboBoxCellEditor(composite, stringArray, getComponentReferenceEditManager());
+    cellEditor.setTextIndent(getTextIndent());
     //((ADTComboBoxCellEditor) cellEditor).setObjectToModify(setObject);
+    
     return cellEditor;
   }
 
 	public ComponentReferenceEditManager getComponentReferenceEditManager() {
-		ASDMultiPageEditor editor = (ASDMultiPageEditor) ASDEditorPlugin.getActiveEditor();
-		return (ComponentReferenceEditManager) editor.getAdapter(XSDTypeReferenceEditManager.class);
+		ComponentReferenceEditManager editManager = null;
+		boolean isType = true;
+		
+		// TODO: We're specifically looking for and using WSDL11 Impl classes.... We should
+		// investigate further to see if we can avoid knowing about WSDL11 Impl classes.
+		if (setObject instanceof W11ParameterForPart) {
+			isType = ((W11ParameterForPart) setObject).isType();
+		}
+		
+		if (isType) { 
+			editManager = (ComponentReferenceEditManager) ReferenceEditManagerHelper.getXSDTypeReferenceEditManager(setObject);
+		}
+		else {
+			editManager = (ComponentReferenceEditManager) ReferenceEditManagerHelper.getXSDElementReferenceEditManager(setObject);
+		}
+
+		return editManager; 
 	}
 	
 	// TODO: rmah: This code should live in a common place..... This code is also used in other UI scenarios when
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ASDEditPartFactory.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ASDEditPartFactory.java
index bc9beb1..1ca4135 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ASDEditPartFactory.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ASDEditPartFactory.java
@@ -15,6 +15,7 @@
 import org.eclipse.jface.util.Assert;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.AbstractModelCollection;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.BindingColumn;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.BindingContentPlaceHolder;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBindingMessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBindingOperation;
@@ -60,10 +61,11 @@
       child = new BindingEditPart();
     }
     else if (model instanceof IBindingOperation ||
-             model instanceof IBindingMessageReference)
+             model instanceof IBindingMessageReference ||
+             model instanceof BindingContentPlaceHolder)
     {
       child = new BindingContentEditPart();
-    }  
+    }
     else if (model instanceof IInterface)
     {
       child = new InterfaceEditPart();
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/AbstractBoxtEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/AbstractBoxtEditPart.java
index 5ad16e8..964f38a 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/AbstractBoxtEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/AbstractBoxtEditPart.java
@@ -17,6 +17,9 @@
 import org.eclipse.draw2d.ToolbarLayout;
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.requests.DirectEditRequest;
 import org.eclipse.gef.tools.DirectEditManager;
 import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.directedit.LabelCellEditorLocator;
@@ -46,11 +49,12 @@
 
   public IFigure getContentPane()
   {
-    return ((BoxComponentFigure) getFigure()).getContentPane();
+    return figure.getContentPane();
   }
 
   protected void createEditPolicies()
   {
+      super.createEditPolicies();
 	  installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new ASDLabelDirectEditPolicy());
 	  installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ASDSelectionEditPolicy());
   }
@@ -58,10 +62,24 @@
   private DirectEditManager manager;
   
   public void performDirectEdit(Point cursorLocation){
-	  if (hitTest(figure.getLabel(), cursorLocation) && !isReadOnly()) {
+	  if (cursorLocation == null ||  hitTestFigure(figure.getHeadingFigure(), cursorLocation) && !isReadOnly()) {
 		  manager = new LabelEditManager(this, new LabelCellEditorLocator(this, cursorLocation));
 		  manager.show();
 	  }
+    else if ((hitTest(figure.getLabel(), cursorLocation) ||
+        hitTestFigure(figure.getHeadingFigure(), cursorLocation)) && isReadOnly()) {
+      doOpenNewEditor();
+    }
+  }
+  
+  public void performRequest(Request req) {
+	  if (req.getType().equals(RequestConstants.REQ_DIRECT_EDIT)) {
+		  Point location = null;
+		  if (req instanceof DirectEditRequest) {
+			  location = ((DirectEditRequest) req).getLocation();			  
+		  }
+		  performDirectEdit(location);
+	  }
   }
   
   public Label getLabelFigure() {
@@ -78,14 +96,15 @@
   {
     super.refreshVisuals();
     WSDLBaseAdapter box = (WSDLBaseAdapter) getModel();
-    ((BoxComponentFigure) getFigure()).getLabel().setText(box.getName());
+    figure.headingFigure.setIsReadOnly(box.isReadOnly());
+    figure.getLabel().setText(box.getName());
   }
 
   public void addFeedback()
   {
 	  LineBorder boxFigureLineBorder = (LineBorder) figure.getBorder();
 	  boxFigureLineBorder.setWidth(2);
-	  boxFigureLineBorder.setColor(ColorConstants.darkBlue);
+//	  boxFigureLineBorder.setColor(ColorConstants.darkBlue);
 	  figure.setSelected(true);
 	  figure.repaint();
   }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BaseEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BaseEditPart.java
index b75e0ca..2eaf4bb 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BaseEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BaseEditPart.java
@@ -10,16 +10,24 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts;
 
+import java.util.Iterator;
 import java.util.List;
-
+import org.eclipse.draw2d.Figure;
 import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
 import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.wsdl.ui.internal.actions.OpenInNewEditor;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.IActionProvider;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObjectListener;
-
+import org.eclipse.wst.xsd.ui.internal.adt.design.editpolicies.KeyBoardAccessibilityEditPolicy;
 
 public abstract class BaseEditPart extends AbstractGraphicalEditPart implements IActionProvider, IASDObjectListener, IFeedbackHandler
 {
@@ -71,6 +79,16 @@
     refresh();
   }
   
+  public void refreshConnections() {
+	  Iterator kids = getChildren().iterator();
+	  while (kids.hasNext()) {
+		  Object item = kids.next();
+		  if (item instanceof BaseEditPart) {
+			  ((BaseEditPart) item).refreshConnections();
+		  }
+	  }
+  }
+  
   public void addFeedback() {
 	  
   }
@@ -78,6 +96,10 @@
 	  
   }
   
+  protected boolean hitTest(Rectangle rectangle, Point location) {
+	  return rectangle.contains(location);
+  }
+  
   protected boolean hitTest(Label target, Point location) {
 	  Rectangle origB = target.getTextBounds().getCopy();
 	  Rectangle transB = target.getTextBounds().getCopy();
@@ -91,6 +113,19 @@
 	  return finalB.contains(location);
   }
   
+  protected boolean hitTestFigure(Figure target, Point location) {
+    Rectangle origB = target.getBounds().getCopy();
+    Rectangle transB = target.getBounds().getCopy();
+
+    target.translateToAbsolute(transB);
+
+    int newX = origB.x + Math.abs(transB.x - origB.x);
+    int newY = origB.y + Math.abs(transB.y - origB.y);    
+    Rectangle finalB = new Rectangle(newX, newY, origB.width, origB.height);
+
+    return finalB.contains(location);
+  }
+
   public boolean isReadOnly() {
 	  Object model = getModel();
 	  if (model instanceof IASDObject) {
@@ -99,4 +134,33 @@
 	  
 	  return false;
   }
+  
+  protected void doOpenNewEditor()
+  {
+    IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+    IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor();
+    ActionRegistry registry = (ActionRegistry) editorPart.getAdapter(ActionRegistry.class);
+    if (registry != null)
+    {
+      IAction action = registry.getAction(OpenInNewEditor.ID);
+      action.run();
+    }
+  }
+ 
+  protected void createEditPolicies()
+  {      
+    KeyBoardAccessibilityEditPolicy navigationEditPolicy = new KeyBoardAccessibilityEditPolicy()
+    {           
+      public EditPart getRelativeEditPart(EditPart editPart, int direction)
+      {          
+        return BaseEditPart.this.getRelativeEditPart(direction);            
+      }      
+    };
+    installEditPolicy(KeyBoardAccessibilityEditPolicy.KEY, navigationEditPolicy);    
+  }
+  
+  public EditPart getRelativeEditPart(int direction)
+  {
+    return EditPartNavigationHandlerUtil.getRelativeEditPart(this, direction);
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingColumnEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingColumnEditPart.java
index c1e543c..76dd73d 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingColumnEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingColumnEditPart.java
@@ -10,9 +10,11 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts;
 
+import java.util.Iterator;
 import org.eclipse.draw2d.Figure;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.LayoutAnimator;
+import org.eclipse.gef.EditPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.layouts.BindingColumnLayout;
 
 public class BindingColumnEditPart extends ColumnEditPart
@@ -24,10 +26,12 @@
     //figure.setBackgroundColor(ColorConstants.yellow);
     // custom layout that can do animation
     //
-    BindingColumnLayout layout = new BindingColumnLayout();
+    BindingColumnLayout layout = new BindingColumnLayout(this);
     figure.setLayoutManager(layout);
     return figure;
   }  
+ 
+  
   
   protected void register()
   {
@@ -40,4 +44,21 @@
     getFigure().removeLayoutListener(LayoutAnimator.getDefault());   
     super.unregister();
   }
+  
+  // this method will expand the binding edit part
+  // and collapse any other bindings as appropriate
+  //public void expand(BidingEditPart bindingEditPart)
+  //{    
+  //}
+  
+  public void refreshBindingEditParts()
+  {
+    for (Iterator i = getChildren().iterator(); i.hasNext(); )
+    {
+      EditPart editPart = (EditPart)i.next();
+      editPart.refresh();       
+    }
+    getFigure().invalidateTree();           
+    getFigure().revalidate();     
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingContentEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingContentEditPart.java
index f296027..5f3c224 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingContentEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingContentEditPart.java
@@ -19,6 +19,12 @@
 import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.MarginBorder;
 import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicsConstants;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.BindingContentPlaceHolder;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDSelectionEditPolicy;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBindingMessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBindingOperation;
 
 // This class is used to represent a BindingOperation, BindingInput, BindingOutput and BindingFault
@@ -26,6 +32,7 @@
 public class BindingContentEditPart extends BaseEditPart
 {  
   Label label;
+  protected ASDSelectionEditPolicy selectionHandlesEditPolicy = new ASDSelectionEditPolicy();
   protected IFigure createFigure()
   {
     Figure figure = new Figure();
@@ -35,8 +42,9 @@
     toolbarLayout.setStretchMinorAxis(true);
     figure.setLayoutManager(toolbarLayout);
     label = new Label();
-    label.setBorder(new MarginBorder(5, 5, 2, 2));    
+    label.setBorder(new MarginBorder(5, 5, 2, 2));
     figure.add(label);
+    
     return figure;
   }
   
@@ -48,16 +56,36 @@
   
   protected void refreshVisuals()
   {
-    if (getModel() instanceof IBindingOperation)
-    {  
-      IBindingOperation bindingOperation = (IBindingOperation) getModel();
-      label.setIcon(bindingOperation.getImage());
-      label.setText(bindingOperation.getName());
-    }  
-    super.refreshVisuals();    
+	  if (getModel() instanceof IBindingOperation)
+	  {  
+		  IBindingOperation bindingOperation = (IBindingOperation) getModel();
+		  label.setIcon(bindingOperation.getImage());
+//		  label.setText(bindingOperation.getName());
+	  }
+	  else if (getModel() instanceof IBindingMessageReference)
+	  {
+		  IBindingMessageReference messageRef = (IBindingMessageReference) getModel();
+		  label.setIcon(WSDLEditorPlugin.getInstance().getImage("icons/bind_asct_val_obj.gif"));
+//		  label.setIcon(messageRef.getImage());
+//		  label.setText(messageRef.getName());
+	  }
+	  else if (getModel() instanceof BindingContentPlaceHolder) {
+		  label.setIcon(WSDLEditorPlugin.getInstance().getImage("icons/bind_asct_val_not_obj.gif"));
+	  }
+
+	  super.refreshVisuals();    
   }  
   
-  protected void createEditPolicies()
-  {    
+  protected void createEditPolicies() {
+      super.createEditPolicies();
+	  installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);
+  }
+  
+  public void addFeedback() {
+	  label.getParent().setBackgroundColor(DesignViewGraphicsConstants.tableCellSelectionColor);
+  }
+
+  public void removeFeedback() {
+	  label.getParent().setBackgroundColor(ColorConstants.tooltipBackground);
   }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingEditPart.java
index 0719808..6b375b9 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/BindingEditPart.java
@@ -16,16 +16,19 @@
 
 import org.eclipse.draw2d.ColorConstants;
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.LayoutManager;
 import org.eclipse.draw2d.LineBorder;
 import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.PositionConstants;
+import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPolicy;
 import org.eclipse.gef.LayerConstants;
 import org.eclipse.gef.Request;
 import org.eclipse.gef.RequestConstants;
 import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.connections.CenteredConnectionAnchor;
-import org.eclipse.wst.wsdl.ui.internal.asd.design.connections.TopLeftConnectionAnchor;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDSelectionEditPolicy;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.BoxComponentFigure;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.ComponentReferenceConnection;
@@ -33,13 +36,13 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.design.layouts.BindingContentLayout;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.layouts.BindingLayout;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
-import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
 
 public class BindingEditPart extends BaseEditPart
 {
   protected ComponentReferenceConnection connectionFigure;
   protected BoxComponentFigure figure;
   protected boolean isExpanded = false;
+  private Label hoverHelpLabel = new Label("");
 
   protected IFigure createFigure()
   {
@@ -57,7 +60,7 @@
 
   public IFigure getContentPane()
   {
-    return ((BoxComponentFigure) getFigure()).getContentPane();
+    return figure.getContentPane();
   }
 
   protected List getModelChildren()
@@ -83,7 +86,7 @@
     super.addFeedback();
     LineBorder boxFigureLineBorder = (LineBorder) figure.getBorder();
     boxFigureLineBorder.setWidth(2);
-    boxFigureLineBorder.setColor(ColorConstants.darkBlue);
+//    boxFigureLineBorder.setColor(ColorConstants.darkBlue);
     figure.setSelected(true);
     figure.repaint();
     if (connectionFigure != null)
@@ -199,11 +202,18 @@
   protected void refreshVisuals()
   {
     refreshConnections();
-    if (getModel() instanceof ITreeElement)
+    if (getModel() instanceof IBinding)
     {  
-      ITreeElement treeElement = (ITreeElement)getModel();
-      figure.getLabel().setIcon(treeElement.getImage());
-    }  
+      IBinding binding = (IBinding) getModel();
+      ((BoxComponentFigure) getFigure()).headingFigure.setIsReadOnly(((IBinding) getModel()).isReadOnly());
+      figure.getLabel().setIcon(binding.getImage());
+      
+      // Show the name of the IBinding with hover help
+      String prependString = Messages._UI_LABEL_BINDING;
+      hoverHelpLabel.setText(" " + prependString + " : " + binding.getName() + " ");
+      figure.setToolTip(hoverHelpLabel);
+    }
+
     //getViewer().getEditPartRegistry().put(Lay.class, controller);
     super.refreshVisuals();    
   }
@@ -219,8 +229,8 @@
     }
     return null;
   }
-
-  protected void refreshConnections()
+  
+  public void refreshConnections()
   {
     if (shouldDrawConnection())
     {
@@ -229,9 +239,9 @@
       if (connectionFigure != null)
       {
         AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart) getViewer().getEditPartRegistry().get(typeBeingRef);
-        BoxComponentFigure boxComponentFigure = (BoxComponentFigure) referenceTypePart.getFigure();
+        IFigure refFigure= referenceTypePart.getFigure();
         connectionFigure.setSourceAnchor(new CenteredConnectionAnchor(getFigure(), CenteredConnectionAnchor.RIGHT, 0));
-        connectionFigure.setTargetAnchor(new TopLeftConnectionAnchor(boxComponentFigure, boxComponentFigure.getLabel()));
+        connectionFigure.setTargetAnchor(new CenteredConnectionAnchor(refFigure, CenteredConnectionAnchor.HEADER_LEFT, 0, 11));
         connectionFigure.setHighlight(false);
         connectionFigure.setVisible(true);
       }
@@ -248,6 +258,7 @@
 
   protected void createEditPolicies()
   {
+     super.createEditPolicies();    
      installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ASDSelectionEditPolicy());
   }
 
@@ -263,30 +274,30 @@
   
   public void performRequest(Request request)
   {  
-	  if (request.getType() == RequestConstants.REQ_OPEN)
-    {                                         
-		  isExpanded = !isExpanded;
-	      LayoutManager layoutManager = getFigure().getParent().getLayoutManager();
-	      AbstractGraphicalEditPart snapToEditPart = getConnectionTargetEditPart();
-	      if (layoutManager instanceof BindingColumnLayout && snapToEditPart != null)
-	      {           
-	        BindingColumnLayout animatedBindingLayout = (BindingColumnLayout)layoutManager;
-	        if (!isExpanded)
-	        {
-	          animatedBindingLayout.setExpandedBindingFigure(null);
-	        }
-	        else
-	        {  
-	          animatedBindingLayout.setExpandedBindingFigure(getFigure());
-	        }          
-	        animatedBindingLayout.setSnapToFigure(snapToEditPart.getFigure());
-	      }  
-	      //Animation.markBegin();                
-	      //Animation.run(700);        
-	      refresh();
-	      getFigure().invalidate();
-	      getFigure().getParent().invalidateTree();           
-	      getFigure().getParent().revalidate();
+    if (request.getType() == RequestConstants.REQ_OPEN)
+    {                    
+      LayoutManager layoutManager = getFigure().getParent().getLayoutManager();
+      if (layoutManager instanceof BindingColumnLayout)
+      {             
+        BindingColumnLayout bindingColumnLayout = (BindingColumnLayout)layoutManager;
+        bindingColumnLayout.setExpanded(this, !isExpanded);
+        ((BindingColumnEditPart)getParent()).refreshBindingEditParts();
+      }  
     }
   } 
+  
+  public EditPart getRelativeEditPart(int direction)
+  {
+    if (direction == PositionConstants.EAST)
+    {
+      // navigate forward along the connection (to the right)
+      return getConnectionTargetEditPart();
+    }  
+    else if (direction == PositionConstants.WEST)
+    {
+      // navigate backward along the connection (to the left)
+      return EditPartNavigationHandlerUtil.getSourceConnectionEditPart(this);
+    }      
+    return super.getRelativeEditPart(direction);
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/DefinitionsEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/DefinitionsEditPart.java
index 55fa36e..7864961 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/DefinitionsEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/DefinitionsEditPart.java
@@ -11,38 +11,42 @@
 package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
-
-import org.eclipse.draw2d.AbstractLayout;
 import org.eclipse.draw2d.Figure;
 import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.Label;
+import org.eclipse.draw2d.LayoutListener;
+import org.eclipse.draw2d.MarginBorder;
 import org.eclipse.draw2d.Panel;
 import org.eclipse.draw2d.ToolbarLayout;
-import org.eclipse.draw2d.geometry.Dimension;
-import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.AbstractModelCollection;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.BindingColumn;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.InterfaceColumn;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.ServiceColumn;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
-import org.eclipse.wst.xsd.ui.internal.design.figures.SpacingFigure;
 
 public class DefinitionsEditPart extends BaseEditPart {
 	  List collections = null;
 	  Figure contentPane;
+      Label messageLabel; 
+      InternalLayoutListener internalLayoutListener = new InternalLayoutListener();
 	  
 	  protected IFigure createFigure()
 	  {    
 	    Panel panel = new Panel();    
-	    // why do we need to use a container layout?  can we just set a
-	    // margin border and get the same effect?
-	    ContainerLayout clayout = new ContainerLayout();
-	    clayout.setBorder(60);
-	    panel.setLayoutManager(clayout);
-	    
-	    // issue (cs) : why did we need a free form layer?
+        ToolbarLayout toolbarLayout = new ToolbarLayout(true);
+        panel.setLayoutManager(toolbarLayout);
+        panel.setBorder(new MarginBorder(60, 30, 30, 30));
 	    contentPane = new Figure();
 	    panel.add(contentPane);
-	        
+
+        messageLabel = new Label("");
+        contentPane.add(messageLabel);
+      
 	    ToolbarLayout layout = new ToolbarLayout(true);
 	    layout.setStretchMinorAxis(true);
 	    layout.setSpacing(0);
@@ -50,6 +54,31 @@
 	    return panel;
 	  }
 	  
+      public void activate()
+      {
+        super.activate();
+        
+        // here we want to ensure the binding column is listening
+        // to the interface column so that it can re-layout when 
+        // the interface changes
+        for (Iterator i = getChildren().iterator(); i.hasNext(); )
+        {
+          AbstractGraphicalEditPart child = (AbstractGraphicalEditPart)i.next();
+          if (child.getModel() instanceof InterfaceColumn)
+          {
+            child.getFigure().addLayoutListener(internalLayoutListener);
+            break;
+          }  
+        }           
+      }
+                
+	  public void refresh() {
+		  super.refresh();
+		  
+		  // Refresh the connecting lines
+		  refreshConnections();
+	  }
+	  
 	  public IFigure getContentPane()
 	  {
 	    return contentPane;
@@ -61,6 +90,11 @@
 	    // TODO Auto-generated method stub
 	  }
 	  
+      public void setModelChildren(List list)
+      {
+        collections = list;
+      }
+      
 	  protected List getModelChildren()
 	  { 
 	    if (collections == null)
@@ -73,213 +107,53 @@
 	        collections.add(new ServiceColumn(description));
 	        collections.add(new BindingColumn(description));
 	        collections.add(new InterfaceColumn(description));
-	      }  
-	    }  
+	      }
+	    }
+      
+      boolean hasChildren = false;
+      for (Iterator i = collections.iterator(); i.hasNext(); )
+      {
+        AbstractModelCollection column = (AbstractModelCollection)i.next();
+        if (column.hasChildren())
+        {
+          hasChildren = true;
+        }
+      }
+
+      if (hasChildren)
+      {
+        messageLabel.setText("");
+        if (contentPane.getChildren().contains(messageLabel))
+          contentPane.remove(messageLabel);
+      }
+      else
+      {
+        messageLabel.setText(Messages._UI_LABEL_RIGHT_CLICK_TO_INSERT_CONTENT); //$NON-NLS-1$
+        if (!contentPane.getChildren().contains(messageLabel))
+          contentPane.add(messageLabel);
+      }
+      
+
 	    return collections;
 	  }
 	  
 	  public void setInput(Object object)
 	  {    
-	  }
-	  
-	  // TODO: See if we really need this class.  See above.  If so, where should we
-	  // put this class?
-	  public class ContainerLayout extends AbstractLayout
-	  {                                         
-	    protected boolean isHorizontal;
-	    protected int spacing = 0;
-	    protected int border = 0; 
-
-	    public ContainerLayout()
-	    { 
-	      this(true, 0); 
-	    }             
-
-	    public ContainerLayout(boolean isHorizontal, int spacing)
-	    {
-	      this.isHorizontal = isHorizontal;   
-	      this.spacing = spacing;
-	    }  
-
-	    public void setHorizontal(boolean isHorizontal)
-	    {
-	      this.isHorizontal = isHorizontal;
-	    }  
-
-	    public void setSpacing(int spacing)
-	    {
-	      this.spacing = spacing;
-	    }  
-
-	    public void setBorder(int border)
-	    {
-	      this.border = border;
-	    }  
-
-	    protected int alignFigure(IFigure parent, IFigure child)
-	    { 
-	      return -1;
-	    }
-
-	    /**
-	     * Calculates and returns the preferred size of the container 
-	     * given as input.
-	     * 
-	     * @param figure  Figure whose preferred size is required.
-	     * @return  The preferred size of the passed Figure.
-	     * @since 2.0
-	     */
-	    protected Dimension calculatePreferredSizeHelper(IFigure parent)
-	    { 
-	      Dimension	preferred = new Dimension();
-	    	List children = parent.getChildren();
-	  		                                        
-	  	  for (int i=0; i < children.size(); i++)
-	      {
-	  		  IFigure child = (IFigure)children.get(i);      
-	      
-	        Dimension	childSize = child.getPreferredSize();
-	  	  
-	        if (isHorizontal)
-	        {
-	  		    preferred.width += childSize.width;
-	  		    preferred.height = Math.max(preferred.height, childSize.height);
-	        }
-	        else
-	        {  
-	          preferred.height += childSize.height;
-	          preferred.width = Math.max(preferred.width, childSize.width);
-	        }
-	  	  }   
-
-	      int childrenSize = children.size();
-	      if (childrenSize > 1)
-	      {                      
-	        if (isHorizontal)    
-	        {
-	          preferred.width += spacing * (childrenSize - 1);
-	        }
-	        else
-	        {
-	  		    preferred.height += spacing * (childrenSize - 1);
-	        } 
-	      }
-	                            
-	      preferred.width += border * 2;
-	      preferred.height += border * 2;
-	  	  preferred.width += parent.getInsets().getWidth();
-	  	  preferred.height += parent.getInsets().getHeight();       
-	    
-	    	return preferred;
-	    }
-
-	    protected Dimension calculatePreferredSize(IFigure parent, int width, int height)
-	    {    
-	      Dimension	preferred = null;                                              
-	                                    
-	      // Here we ensure that an unexpanded container is given a size of (0,0)
-	      //
-//	      if (parent instanceof IExpandable)
-//	      {
-//	        IExpandable expandableFigure = (IExpandable)parent;
-//	        if (!expandableFigure.isExpanded())
-//	        {
-//	          preferred = new Dimension(); 
-//	        }
-//	      }   
-//	      
-	      if (preferred == null)
-	      {
-	  	    preferred = calculatePreferredSizeHelper(parent);    
-	      }
-	      
-	      return preferred;
-	    }
-	       
-
-	    protected void adjustLayoutLocation(IFigure parent, Dimension dimension)
-	    {     
-	    }   
-
-	    public void layout(IFigure parent)
-	    {       
-	    	List children = parent.getChildren();
-	   
-	      int rx = 0;
-	      Dimension	dimension = new Dimension();                                          
-
-
-	  	  for (int i=0; i < children.size(); i++)
-	      {
-	  		  IFigure child = (IFigure)children.get(i);
-	  		  Dimension	childSize = child.getPreferredSize();
-	        if (isHorizontal)
-	        {   
-	          dimension.height = Math.max(dimension.height, childSize.height);
-	          rx += childSize.width;
-	        }
-	        else
-	        {
-	          dimension.width = Math.max(dimension.width, childSize.width);
-	        }
-	      }
-
-	  	  //dimension.width += parent.getInsets().left;
-	      //dimension.height += parent.getInsets().top;
-
-	      if (isHorizontal)
-	      {
-	        dimension.height += border*2;
-	      	dimension.width += border;
-	      }
-	      else
-	      {
-	        dimension.width += border*2;
-	      	dimension.height += border;
-	      }
-	      adjustLayoutLocation(parent, dimension);    
-
-	      for (int i=0; i < children.size(); i++)
-	      {
-	        IFigure child = (IFigure)children.get(i);
-	  	    Dimension	childSize = child.getPreferredSize();
-	          
-	        if (isHorizontal)
-	        {   
-	          int y = -1; 
-	      
-	          y = alignFigure(parent, child);
-	      
-	          if (y == -1)
-	          {
-	             y = (dimension.height - childSize.height) / 2;                                      
-	          }                      
-	                                                     
-	          Rectangle rectangle = new Rectangle(dimension.width, y, childSize.width, childSize.height);
-	          rectangle.translate(parent.getClientArea().getLocation());                           
-
-
-	          child.setBounds(rectangle);                           
-	  	      dimension.width += childSize.width; 
-	          dimension.width += spacing;       
-
-	          if (child instanceof SpacingFigure)
-	          {          
-	            int availableHorizontalSpace = parent.getClientArea().width - rx;
-	            dimension.width += availableHorizontalSpace;
-	          }           
-	        }
-	        else
-	        {
-	          Rectangle rectangle = new Rectangle(0, dimension.height, childSize.width, childSize.height);
-	  	      rectangle.translate(parent.getClientArea().getLocation());                          
-	          
-
-	          child.setBounds(rectangle);  
-	          dimension.height += childSize.height;
-	          dimension.height += spacing;
-	        }
-	  	  }	      
-	    }                                      
-	  }
+	  }	 
+      
+      private class InternalLayoutListener extends LayoutListener.Stub
+      {
+        public void postLayout(IFigure container)
+        {
+          for (Iterator i = getChildren().iterator(); i.hasNext(); )
+          {
+            EditPart child = (EditPart)i.next();
+            if (child instanceof BindingColumnEditPart)
+            {
+              ((BindingColumnEditPart)child).refreshBindingEditParts();
+              break;
+            }
+          }          
+        }   
+      }        
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EditPartNavigationHandlerUtil.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EditPartNavigationHandlerUtil.java
new file mode 100644
index 0000000..cbd2f88
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EditPartNavigationHandlerUtil.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts;
+import java.util.Iterator;
+import java.util.List;
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.PositionConstants;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.gef.editparts.LayerManager;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.ComponentReferenceConnection;
+
+
+class EditPartNavigationHandlerUtil
+{
+  static GraphicalEditPart getRelativeEditPart(GraphicalEditPart focusEditPart, int direction)
+  {
+    // these 'delta' values need to be set to some value that's large enough to cross the gap
+    // between adjacent edit parts (since some layouts may space the edit parts out a bit)
+    int dx = 5;
+    int dy = 5;
+        
+    IFigure contentPane = focusEditPart.getContentPane();
+    
+    // we attempt to compute a rectangle that represents our current location
+    Rectangle r = focusEditPart.getFigure().getBounds().getCopy();
+    focusEditPart.getFigure().translateToAbsolute(r);
+    if (contentPane != focusEditPart.getFigure())
+    {
+      // if the EditPart has a contentPane (that's no the figure) then we assume
+      // effective rectangle is only the header portion of the figure
+      //
+      Rectangle contentPaneBounds = contentPane.getBounds().getCopy();
+      contentPane.translateToAbsolute(contentPaneBounds);
+      
+      // we assume that when the editpart's figure and contentPane are different
+      // that portion of the 'hittable' portion of editpart should not include the contentPane
+      if (contentPaneBounds.y > r.y)
+      {
+        // if the contentPane is lower than the figure we only want the rectangle
+        // above the contentPane
+        r.height = contentPaneBounds.y - r.y;
+        // we adjust the rectangle the right slightly since the content is nested a bit     
+        r.x = contentPaneBounds.x;
+      }
+      if (contentPaneBounds.x > r.x)
+      {
+        // if the contentPane is to the right of the figure we only want the rectangle
+        // to the left of the content pane
+        r.width = contentPaneBounds.x - r.x;
+      }
+    }
+    Point p = null;
+    if (direction == PositionConstants.NORTH)
+    {
+      p = r.getTopLeft();
+      p.y -= dy;
+    }
+    else if (direction == PositionConstants.SOUTH)
+    {
+      p = r.getBottomLeft();
+      p.x += dx;
+      p.y += dy;
+    }
+    else if (direction == PositionConstants.EAST)
+    {
+      p = r.getTopRight();
+      p.x += dx;
+    }
+    else if (direction == PositionConstants.WEST)
+    {
+      p = r.getLeft();
+      p.x -= dx;
+    }  
+    EditPart t = focusEditPart.getViewer().findObjectAt(p);
+        
+    if (t instanceof ColumnEditPart || t instanceof DefinitionsEditPart)
+    {
+      t = null;
+    }      
+    return (GraphicalEditPart)t;
+  }
+  
+  static EditPart getNextSibling(EditPart editPart)
+  {    
+    EditPart result = null;    
+    EditPart parent = editPart.getParent();
+    if (parent != null)
+    {  
+      List children = parent.getChildren();
+      int index = children.indexOf(editPart);
+      if (index + 1 < children.size())
+      {
+        result = (EditPart)children.get(index + 1);
+      }
+    }
+    return result;
+  }
+  
+  static EditPart getPrevSibling(EditPart editPart)
+  {    
+    EditPart result = null;
+    EditPart parent = editPart.getParent();
+    if (parent != null)
+    {  
+      List children = parent.getChildren();
+      int index = children.indexOf(editPart);
+      if (index - 1 >= 0)
+      {
+        // if this is the first child
+        //        
+        result = (EditPart)children.get(index - 1);
+      } 
+    }
+    return result;
+  } 
+  
+  static EditPart getNextInterface(EditPart editPart)
+  { 
+    EditPart result = null;
+    for (EditPart e = editPart; e != null; e = e.getParent())
+    {
+      if (e instanceof InterfaceEditPart)
+      {
+        InterfaceEditPart ie = (InterfaceEditPart)e;
+        result = EditPartNavigationHandlerUtil.getNextSibling(ie);
+        break;
+      }  
+    }  
+    return result;
+  }          
+  
+  static EditPart getSourceConnectionEditPart(AbstractGraphicalEditPart editPart)
+  {
+    // find the first connection that targets this editPart
+    // navigate backward along the connection (to the left) to find the sourc edit part
+    EditPart result = null;
+    EditPartViewer viewer = editPart.getViewer();
+    LayerManager manager = (LayerManager)editPart.getViewer().getEditPartRegistry().get(LayerManager.ID);
+    IFigure layer = manager.getLayer(LayerConstants.CONNECTION_LAYER);    
+    for (Iterator i = layer.getChildren().iterator(); i.hasNext(); )
+    {
+      Figure figure = (Figure)i.next();
+      if (figure instanceof ComponentReferenceConnection)
+      {
+        ComponentReferenceConnection componentReferenceConnection = (ComponentReferenceConnection)figure;
+        ConnectionAnchor targetAnchor = componentReferenceConnection.getTargetAnchor();
+        if (targetAnchor.getOwner() == editPart.getFigure())
+        {  
+          ConnectionAnchor sourceAnchor = componentReferenceConnection.getSourceAnchor();
+          IFigure sourceFigure = sourceAnchor.getOwner();          
+          EditPart part = null;
+          while (part == null && sourceFigure != null) 
+          {
+            part = (EditPart)viewer.getVisualPartMap().get(sourceFigure);
+            sourceFigure = sourceFigure.getParent();
+          }          
+          result = part;
+          break;
+        }  
+      }                
+    }    
+    return result;    
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EndPointEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EndPointEditPart.java
index f915e75..f86addb 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EndPointEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/EndPointEditPart.java
@@ -19,15 +19,19 @@
 import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.MarginBorder;
 import org.eclipse.draw2d.Panel;
+import org.eclipse.draw2d.PositionConstants;
 import org.eclipse.draw2d.RectangleFigure;
 import org.eclipse.draw2d.ToolbarLayout;
 import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPartViewer;
 import org.eclipse.gef.EditPolicy;
 import org.eclipse.gef.GraphicalViewer;
 import org.eclipse.gef.LayerConstants;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
 import org.eclipse.gef.commands.Command;
 import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
 import org.eclipse.gef.tools.DirectEditManager;
@@ -46,6 +50,7 @@
 {
   protected Label nameLabel;
   protected Label addressLabel;
+  private Label hoverHelpLabel = new Label("");
   protected Figure addressBoxFigure;
   protected ComponentReferenceConnection connectionFigure;
   protected final static int MAX_ADDRESS_WIDTH = 150;
@@ -89,13 +94,18 @@
     addressLabel.setLabelAlignment(Label.LEFT);
     addressBoxFigure.add(addressLabel);
     
-    if (isReadOnly()) {
-    	nameLabel.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
-    	addressLabel.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+    // rmah: The block of code below has been moved from refreshVisuals().  We're
+    // assuming the read-only state of the EditPart will never change once the
+    // EditPart has been created.
+    if (isReadOnly())
+    {  
+      nameLabel.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+      addressLabel.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
     }
-    else {
-    	nameLabel.setForegroundColor(DesignViewGraphicsConstants.labelColor);
-    	addressLabel.setForegroundColor(DesignViewGraphicsConstants.labelColor);
+    else 
+    {
+      nameLabel.setForegroundColor(DesignViewGraphicsConstants.labelColor);
+      addressLabel.setForegroundColor(DesignViewGraphicsConstants.labelColor);
     }
     
     return figure;
@@ -103,6 +113,7 @@
 
   protected void createEditPolicies()
   {
+    super.createEditPolicies();
     installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new ASDLabelDirectEditPolicy());
     installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ASDSelectionEditPolicy());
   }
@@ -112,15 +123,24 @@
   public void performDirectEdit(Point cursorLocation)
   {
     this.cursorLocation = cursorLocation;
-    if (hitTest(getLabelFigure(), cursorLocation) && !isReadOnly()) {
+    if (!isReadOnly() && (cursorLocation == null || hitTest(getLabelFigure(), cursorLocation))) {
     	manager = new LabelEditManager(this, new LabelCellEditorLocator(this, cursorLocation));
     	manager.show();
     }
+    else if (hitTest(getFigure().getBounds(), cursorLocation) && isReadOnly()) {
+      doOpenNewEditor();
+    }
+  }
+  
+  public void performRequest(Request req) {
+	  if (req.getType().equals(RequestConstants.REQ_DIRECT_EDIT)) {
+		  performDirectEdit(null);
+	  }
   }
 
   public Label getLabelFigure()
   {
-    if (translateBounds(nameLabel.getBounds()).contains(cursorLocation))
+    if (cursorLocation == null || translateBounds(nameLabel.getBounds()).contains(cursorLocation))
     {
       return nameLabel;
     }
@@ -151,6 +171,23 @@
     IEndPoint endPoint = (IEndPoint) getModel();
     nameLabel.setText(endPoint.getName());
     addressLabel.setText(endPoint.getAddress());
+    
+    Rectangle textBounds = addressLabel.getTextBounds();
+    Rectangle bounds = addressLabel.getBounds();
+    int textPlacement = addressLabel.getTextPlacement();
+    int xDelta = textBounds.x - bounds.x;
+    int xTextIncrease = textPlacement - xDelta;
+    int textSize = textBounds.width + xTextIncrease;
+    int boundSize = bounds.width;
+
+    if (textSize > boundSize) {
+    	hoverHelpLabel.setText(" " + endPoint.getAddress()  + " ");
+        addressLabel.setToolTip(hoverHelpLabel);
+    }
+    else {
+        addressLabel.setToolTip(null);
+    }
+
     refreshConnections();
     super.refreshVisuals();
   }
@@ -220,6 +257,7 @@
       
       return false;
   }
+  
 
   public ComponentReferenceConnection createConnectionFigure()
   {
@@ -243,7 +281,17 @@
 	    return connectionFigure;
   }
 
-  protected void refreshConnections() {
+  EditPart getConnectionTargetEditPart()
+  {
+    Object typeBeingRef = getReferencedModel();
+    if (connectionFigure != null) {
+      AbstractGraphicalEditPart referenceTypePart = (AbstractGraphicalEditPart) getViewer().getEditPartRegistry().get(typeBeingRef);
+      return referenceTypePart;
+    }
+    return null;
+  }
+  
+  public void refreshConnections() {
 	  if (shouldDrawConnection()) {
 		  Object typeBeingRef = getReferencedModel();
 		  if (connectionFigure != null) {
@@ -303,7 +351,7 @@
   public Command getSetProperLabelCommand(String newValue)
   {
     // TODO: rmah: We need to translate the point...
-    if (translateBounds(nameLabel.getBounds()).contains(cursorLocation))
+    if (cursorLocation == null || translateBounds(nameLabel.getBounds()).contains(cursorLocation))
     {
       return ((IEndPoint) getModel()).getSetNameCommand(newValue);
     }
@@ -313,4 +361,14 @@
     }
     return null;
   }
+  
+  public EditPart getRelativeEditPart(int direction)
+  {
+    if (direction == PositionConstants.EAST)
+    {      
+      // navigate forward along the connection (to the right)
+      return getConnectionTargetEditPart();
+    }  
+    return super.getRelativeEditPart(direction);
+  }  
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/InterfaceEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/InterfaceEditPart.java
index 6346313..2196404 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/InterfaceEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/InterfaceEditPart.java
@@ -10,19 +10,28 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts;
 
+import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.LineBorder;
+import org.eclipse.draw2d.PositionConstants;
+import org.eclipse.draw2d.RectangleFigure;
 import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.gef.EditPart;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicsConstants;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.BoxComponentFigure;
+//import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.BaseLinkIconFigure;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.layouts.RowLayout;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IInterface;
 
 public class InterfaceEditPart extends AbstractBoxtEditPart implements IFeedbackHandler
-{     
+{
+	private RectangleFigure linkIconColumn;
+	protected BoxComponentFigure boxFigure;
   public InterfaceEditPart()
   {
     columnData.setColumnWeight("MessageLabel", 0); //$NON-NLS-1$
@@ -33,14 +42,74 @@
   
   protected IFigure createFigure()
   {
-    BoxComponentFigure figure = (BoxComponentFigure)super.createFigure();
-    figure.getLabel().setIcon(((IInterface) getModel()).getImage());
-    figure.setBackgroundColor(ColorConstants.orange);
-    figure.setBorder(new LineBorder(1));
-    ToolbarLayout toolbarLayout = new ToolbarLayout(false);
-    toolbarLayout.setStretchMinorAxis(true);
-    figure.setLayoutManager(toolbarLayout);
-    return figure;
+		IFigure outer = new Figure() {
+			public void validate() {
+				super.validate();
+				// If we don't layout our Link Icon Column at this point, the link icons
+				// will not be properly updated in the scenario where a porttype is added
+				// or removed.  The link icons of the existing porttypes will not be updated.
+				getLinkIconColumn().getLayoutManager().layout(getLinkIconColumn());
+			}
+		};
+		
+		outer.setLayoutManager(new ToolbarLayout(true));
+	    boxFigure = (BoxComponentFigure) super.createFigure();
+	    boxFigure.getLabel().setIcon(((IInterface) getModel()).getImage());
+	    boxFigure.setBackgroundColor(ColorConstants.orange);
+	    boxFigure.setBorder(new LineBorder(1));
+	    ToolbarLayout toolbarLayout = new ToolbarLayout(false);
+	    toolbarLayout.setStretchMinorAxis(true);
+	    boxFigure.setLayoutManager(toolbarLayout);
+	    outer.add(boxFigure);
+	    linkIconColumn = new RectangleFigure();
+	    linkIconColumn.setOutline(false);
+	    linkIconColumn.setLayoutManager(new ToolbarLayout() {
+			public void layout(IFigure parent) {
+				super.layout(parent);
+				
+				// We need to layout on the y-axis
+				Iterator children = parent.getChildren().iterator();
+				while (children.hasNext()) {
+					Object item = children.next();
+					if (item instanceof IFigure) {
+						IFigure figure = (IFigure) item;
+						figure.getLayoutManager().layout(figure);
+					}
+				}
+			}
+			
+			protected Dimension calculatePreferredSize(IFigure container, int wHint, int hHint) {
+				Dimension dimension = super.calculatePreferredSize(container, wHint, hHint);
+				
+				// Calculate the height
+				Iterator it = container.getParent().getChildren().iterator();
+				while (it.hasNext()) {
+					Object item = it.next();
+					if (item instanceof BoxComponentFigure) {
+						dimension.height = ((IFigure) item).getPreferredSize().height;
+						break;
+					}
+				}
+
+				return dimension;
+			}
+	    });
+	    
+	    outer.add(linkIconColumn);
+	    
+	    // rmah: The block of code below has been moved from refreshVisuals().  We're
+	    // assuming the read-only state of the EditPart will never change once the
+	    // EditPart has been created.
+	    if (isReadOnly()) 
+	    {
+	    	figure.getLabel().setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+	    }
+	    else
+	    {
+	    	figure.getLabel().setForegroundColor(ColorConstants.black);
+	    }
+	    
+	    return outer;
   }
   
   public static void attachToInterfaceEditPart(EditPart editPart, RowLayout rowLayout)
@@ -78,5 +147,18 @@
 
   public void removeFeedback() {
 	  super.removeFeedback();
-  } 
+  }
+
+  public EditPart getRelativeEditPart(int direction)
+  {
+    if (direction == PositionConstants.WEST)
+    {
+      return EditPartNavigationHandlerUtil.getSourceConnectionEditPart(this);     
+    }  
+    return super.getRelativeEditPart(direction);
+  }
+  
+  public IFigure getLinkIconColumn() {
+	  return linkIconColumn;
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/MessageReferenceEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/MessageReferenceEditPart.java
index 00c0d05..b1339af 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/MessageReferenceEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/MessageReferenceEditPart.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.draw2d.ColorConstants;
@@ -17,16 +18,21 @@
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.PositionConstants;
 import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.gef.DragTracker;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.GraphicalEditPart;
 import org.eclipse.gef.Request;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11MessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicsConstants;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDDragAndDropEditPolicy;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDGraphNodeDragTracker;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDSelectionEditPolicy;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.ListFigure;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.ModelDiagnosticInfo;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.layouts.RowLayout;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
 
@@ -36,6 +42,9 @@
   protected Label label;
   protected RowLayout rowLayout;
   
+  private Figure messageLabelWrapper;
+  private Label messageLabel;
+  
   protected ASDSelectionEditPolicy selectionHandlesEditPolicy = new ASDSelectionEditPolicy();
   
   protected IFigure createFigure()
@@ -44,10 +53,11 @@
     figure.setOpaque(true);
     figure.setPaintFirstLine(false);
     figure.setBackgroundColor(ColorConstants.tooltipBackground);
-    
+
     rowLayout = new RowLayout();
     figure.setLayoutManager(rowLayout); 
     label = new Label();
+    label.setLabelAlignment(Label.LEFT);
     //label.setFont(DesignViewGraphicsConstants.mediumFont); 
     label.setBorder(new MarginBorder(2, 16, 2 ,10));
     figure.add(label);  
@@ -60,10 +70,11 @@
     figure.add(partsList);
     */
     contentPane = new ListFigure();
-    contentPane.setForegroundColor(ColorConstants.lightGray);
+    //contentPane.setForegroundColor(ColorConstants.lightGray);
     ((ListFigure)contentPane).setOpaque(true);
     contentPane.setBackgroundColor(ColorConstants.listBackground);
     ToolbarLayout toolbarLayout = new ToolbarLayout(false);
+    
     /*
     ToolbarLayout toolbarLayout = new ToolbarLayout(false)
     {
@@ -88,9 +99,19 @@
     rowLayout.setConstraint(label, "MessageLabel"); //$NON-NLS-1$
     //rowLayout.setConstraint(partsList, "PartsList");
     rowLayout.setConstraint(contentPane, "MessageContentPane"); //$NON-NLS-1$
-    
-    if (isReadOnly()) {
-    	label.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+   
+    // rmah: The block of code below has been moved from refreshVisuals().  We're
+    // assuming the read-only state of the EditPart will never change once the
+    // EditPart has been created.
+    if (isReadOnly()) 
+    {
+      label.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+      label.getParent().setBackgroundColor(DesignViewGraphicsConstants.readOnlyMessageRefHeadingColor);
+    }
+    else
+    {
+      label.setForegroundColor(ColorConstants.black);
+      label.getParent().setBackgroundColor(ColorConstants.tooltipBackground);
     }
     
     return figure;
@@ -98,7 +119,10 @@
   
   protected void createEditPolicies()
   {
-	  installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ASDDragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));
+      super.createEditPolicies();  
+	  if (!isReadOnly()) {
+		  installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ASDDragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));
+	  }
 	  installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);
   }
   
@@ -115,10 +139,114 @@
   protected void refreshVisuals()
   {   
     super.refreshVisuals();
-    
     IMessageReference message = (IMessageReference)getModel();    
     label.setText(message.getText());
-    label.setIcon(message.getImage());
+    label.setIcon(message.getImage()); 
+    
+    // Resize column widths.  Sizes may have shrunk.
+    rowLayout.getColumnData().clearColumnWidths();
+    for (EditPart parent = getParent(); parent != null; parent = parent.getParent())
+    {
+      if (parent instanceof InterfaceEditPart)
+      { 
+        ((GraphicalEditPart)parent).getFigure().invalidateTree();
+        break;
+      }
+    }
+  }
+  
+  protected void refreshChildren() {
+	  super.refreshChildren();
+      refreshMessage();
+  }
+  
+  protected void refreshMessage() {
+	  if (getModelChildren().size() > 0) {
+		  if (messageLabelWrapper != null) {
+			  contentPane.remove(messageLabelWrapper);
+			  messageLabelWrapper = null;
+		  }
+	  }
+	  else {
+		  if (messageLabelWrapper == null) {
+			  messageLabelWrapper = new Figure();
+			  messageLabel = new Label();
+			  
+			  ToolbarLayout toolbarLayout = new ToolbarLayout(false)
+			    {
+				  // We want to center the text
+			       public void layout(IFigure parent)
+			       {
+			         super.layout(parent);
+
+			         if (parent.getChildren().size() == 1 && parent.getChildren().get(0) instanceof Label)
+			         {
+			            parent.setSize(parent.getSize().width, parent.getSize().height + 3);
+			            Label child = (Label) parent.getChildren().get(0);
+			            int newXAmount = (parent.getSize().width - child.getSize().width) / 2;
+			            Point p = child.getLocation();
+			            child.setLocation(new Point(p.x + newXAmount, p.y + 3));
+			         }  
+			       }
+			    };     
+
+			  messageLabelWrapper.setLayoutManager(toolbarLayout);
+			  messageLabelWrapper.add(messageLabel);
+			  contentPane.add(messageLabelWrapper);
+		  }
+		  
+		  List errorList = getErrors();
+		  List warnList = getWarnings();
+
+		  if (errorList.size() > 0) {
+			  ModelDiagnosticInfo info = (ModelDiagnosticInfo) errorList.get(0);
+			  messageLabel.setText("  " + info.getDescriptionText() + "  "); 
+			  messageLabel.setForegroundColor(info.getDescriptionTextColor());
+		  }
+		  else if (warnList.size() > 0){
+			  ModelDiagnosticInfo info = (ModelDiagnosticInfo) warnList.get(0);
+			  messageLabel.setText("  " + info.getDescriptionText() + "  "); 
+			  messageLabel.setForegroundColor(info.getDescriptionTextColor());
+		  }
+		  else {
+			  messageLabel.setText("");
+			  messageLabel.setForegroundColor(ColorConstants.black);
+		  }
+	  }
+  }
+  
+  protected List getErrors() {
+	  // TODO: rmah: We should not know about W11MessageReference here.  Modify
+	  // MessageReference post WTP 1.5 to include the getDiagnosticMessages() method.
+	  if (getModel() instanceof W11MessageReference) {
+		  W11MessageReference messageRef = (W11MessageReference) getModel();
+		  return getDiagnosticMessageType(messageRef.getDiagnosticMessages(), ModelDiagnosticInfo.ERROR_TYPE);
+	  }
+	  
+	  return new ArrayList();
+  }
+  
+  protected List getWarnings() {
+	  // TODO: rmah: We should not know about W11MessageReference here.  Modify
+	  // MessageReference post WTP 1.5 to include the getDiagnosticMessages() method.
+	  if (getModel() instanceof W11MessageReference) {
+		  W11MessageReference messageRef = (W11MessageReference) getModel();
+		  return getDiagnosticMessageType(messageRef.getDiagnosticMessages(), ModelDiagnosticInfo.WARNING_TYPE);
+	  }
+	  
+	  return new ArrayList();
+  }
+  
+  protected List getDiagnosticMessageType(List diagnosticInfo, int type) {
+	  List listType = new ArrayList();
+	  for (int index = 0; index < diagnosticInfo.size(); index++) {
+		  ModelDiagnosticInfo info = (ModelDiagnosticInfo) diagnosticInfo.get(index);
+		  if (info.getType() == type) {
+			  listType.add(info);
+		  }
+	  }
+	  
+	  return listType;
   }
 
   protected List getModelChildren()
@@ -134,10 +262,25 @@
   }
   
   public void addFeedback() {
-	  	
+	  label.getParent().setBackgroundColor(DesignViewGraphicsConstants.tableCellSelectionColor);
   }
 
   public void removeFeedback() {
-	  
+	  if (isReadOnly()) {
+	    label.getParent().setBackgroundColor(DesignViewGraphicsConstants.readOnlyMessageRefHeadingColor);
+	  }
+	  else {
+		  label.getParent().setBackgroundColor(ColorConstants.tooltipBackground);
+	  }
+  }
+  
+  public EditPart getRelativeEditPart(int direction)
+  {  
+    EditPart editPart = super.getRelativeEditPart(direction);
+    if (direction == PositionConstants.SOUTH && editPart == null)
+    {
+      editPart = EditPartNavigationHandlerUtil.getNextInterface(this);
+    }        
+    return editPart;
   }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/OperationEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/OperationEditPart.java
index a8a8626..053744b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/OperationEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/OperationEditPart.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts;
 
-import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.draw2d.ColorConstants;
@@ -21,7 +20,10 @@
 import org.eclipse.draw2d.Panel;
 import org.eclipse.draw2d.ToolbarLayout;
 import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
 import org.eclipse.gef.tools.DirectEditManager;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicsConstants;
@@ -30,7 +32,6 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDLabelDirectEditPolicy;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDSelectionEditPolicy;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.ListFigure;
-import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IOperation;
 
 
@@ -38,14 +39,13 @@
 { 
   protected Figure contentPane;
   protected Label label;
-  protected Label previewLabel;
   private Color unselectedColor;
   private Figure labelHolder;
   
   public OperationEditPart()
   {
   }
-  
+
   protected IFigure createFigure()
   {
     Figure figure = new Figure();
@@ -66,39 +66,54 @@
     label.setTextAlignment(Label.LEFT);  
     labelHolder.add(label);
     
-    previewLabel = new Label("preivew"); //$NON-NLS-1$
-//    previewLabel.setFont(DesignViewGraphicsConstants.smallBoldFont);
-    previewLabel.setForegroundColor(ColorConstants.gray);
-    previewLabel.setBorder(new MarginBorder(2, 2,2,2));
-    previewLabel.setTextAlignment(Label.LEFT);  
-    labelHolder.add(previewLabel);
     
     contentPane = new ListFigure();  
     ToolbarLayout toolbarLayout2 = new ToolbarLayout(false);
     toolbarLayout2.setStretchMinorAxis(true);
     contentPane.setLayoutManager(toolbarLayout2);
     figure.add(contentPane);
-    
+ 
+    // rmah: The block of code below has been moved from refreshVisuals().  We're
+    // assuming the read-only state of the EditPart will never change once the
+    // EditPart has been created.
     if (isReadOnly()) {
     	label.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+   	    figure.setBackgroundColor(DesignViewGraphicsConstants.readOnlyTableOperationHeadingColor);
+   	    labelHolder.setBackgroundColor(DesignViewGraphicsConstants.readOnlyTableOperationHeadingColor);
     }
-        
+    else {
+    	label.setForegroundColor(ColorConstants.black);
+ 	    figure.setBackgroundColor(DesignViewGraphicsConstants.tableOperationHeadingColor);
+   	    labelHolder.setBackgroundColor(DesignViewGraphicsConstants.tableOperationHeadingColor);
+    }
+    
     return figure;
   }
   
   protected void createEditPolicies()
   {
+      super.createEditPolicies();
 	  installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new ASDLabelDirectEditPolicy());
 	  installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ASDSelectionEditPolicy());
   }
   
   private DirectEditManager manager;
-    
   public void performDirectEdit(Point cursorLocation){
-	  if (hitTest(label, cursorLocation) && !isReadOnly()) {
+	  Rectangle textArea = getLabelFigure().getBounds();
+	  textArea.width = getFigure().getBounds().width;
+	  if (cursorLocation == null || hitTest(textArea, cursorLocation) && !isReadOnly()) {
 		  manager = new LabelEditManager(this, new LabelCellEditorLocator(this, cursorLocation));
 		  manager.show();
 	  }
+    else if (getFigure() instanceof Figure && hitTestFigure((Figure) getFigure(), cursorLocation) && isReadOnly()) {
+      doOpenNewEditor();    
+    }
+  }
+  
+  public void performRequest(Request req) {
+	  if (req.getType().equals(RequestConstants.REQ_DIRECT_EDIT)) {
+		  performDirectEdit(null);
+	  }
   }
   
   public Label getLabelFigure() {
@@ -112,28 +127,7 @@
     label.setText(operation.getName());// + "---" + getModel());
     label.setIcon(operation.getImage());
     
-    previewLabel.setText(getOperationPreview());
-  }
-  
-  protected String getOperationPreview() {
-	  String inputPreview = "()"; //$NON-NLS-1$
-	  String outputPreview = "()"; //$NON-NLS-1$
-	  
-	  Iterator kids = getModelChildren().iterator();
-	  while (kids.hasNext()) {
-		  Object kid = kids.next();
-		  if (kid instanceof IMessageReference) {
-			  IMessageReference messageRef = (IMessageReference) kid;
-			  if (messageRef.getKind() == IMessageReference.KIND_INPUT) {
-				  inputPreview = messageRef.getPreview();
-			  }
-			  else if (messageRef.getKind() == IMessageReference.KIND_OUTPUT) {
-				  outputPreview = messageRef.getPreview();
-			  }
-		  }
-	  }
-	  
-	  return inputPreview + " --> " + outputPreview; //$NON-NLS-1$
+
   }
   
   public IFigure getContentPane()
@@ -158,4 +152,17 @@
 		  labelHolder.setBackgroundColor(unselectedColor);
 	  }
   }
+  
+  /**
+   * @deprecated to be removed post WTP 1.5
+   */
+  protected Label previewLabel;
+  
+  /**
+   * @deprecated to be removed post WTP 1.5
+   */  
+  protected String getOperationPreview() 
+  {
+    return "deprecated";
+  }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ParameterEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ParameterEditPart.java
index 31883df..ab6bff4 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ParameterEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ParameterEditPart.java
@@ -20,13 +20,16 @@
 import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.MarginBorder;
 import org.eclipse.draw2d.Panel;
+import org.eclipse.draw2d.PositionConstants;
 import org.eclipse.draw2d.ToolbarLayout;
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.gef.DragTracker;
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.GraphicalEditPart;
 import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
 import org.eclipse.gef.tools.DirectEditManager;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicsConstants;
@@ -54,7 +57,8 @@
     {
       public void paint(Graphics graphics)
       {
-        super.paint(graphics);        
+        super.paint(graphics);
+        graphics.pushState();
         // this bit of code is used to draw the dividing line between
         // the parameter name and the parameter type
         // we might want to consider moving this line drawing into the 
@@ -63,6 +67,7 @@
         int x= r.x +  r.width -1;
         graphics.setForegroundColor(ColorConstants.lightGray);
         graphics.drawLine(x, r.y, x, r.y + r.height);
+        graphics.popState();
       }
     };        
     //toolbarLayout.setMinorAlignment(ToolbarLayout.ALIGN_CENTER);
@@ -104,9 +109,18 @@
     
     labelImage = ((IParameter) getModel()).getImage();
     
-    if (isReadOnly()) {
-    	parameterName.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+    // rmah: The block of code below has been moved from refreshVisuals().  We're
+    // assuming the read-only state of the EditPart will never change once the
+    // EditPart has been created.
+    if (isReadOnly()) 
+    {
+      parameterName.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
     }
+    else
+    {
+      parameterName.setForegroundColor(ColorConstants.black);
+    }
+    
     return figure;
   }
   
@@ -119,16 +133,28 @@
   private DirectEditManager manager;
   
   public void performDirectEdit(Point cursorLocation){
-	  if (hitTest(parameterName, cursorLocation) && !isReadOnly()) {
+	  if (!isReadOnly() && (cursorLocation == null || hitTest(getLabelFigure().getBounds(), cursorLocation))) {
 		manager = new LabelEditManager(this, new LabelCellEditorLocator(this, cursorLocation));
 		manager.show();
 	  }
+    else if (getFigure() instanceof Figure && hitTestFigure((Figure) getFigure(), cursorLocation) && isReadOnly()) {
+      doOpenNewEditor();
+    }
+  }
+  
+  public void performRequest(Request req) {
+	  if (req.getType().equals(RequestConstants.REQ_DIRECT_EDIT)) {
+		  performDirectEdit(null);
+	  }
   }
   
   protected void createEditPolicies()
   {
+      super.createEditPolicies();
 	  installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new ASDLabelDirectEditPolicy());
-	  installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ASDDragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));
+	  if (!isReadOnly()) {
+		  installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new ASDDragAndDropEditPolicy(getViewer(), selectionHandlesEditPolicy));
+	  }
 	  installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, selectionHandlesEditPolicy);
   }
   
@@ -149,6 +175,17 @@
     if (labelImage != null) {
     	parameterName.setIcon(labelImage);
     }
+    
+    // Resize column widths.  Sizes may have shrunk.
+    rowLayout.getColumnData().clearColumnWidths();
+    for (EditPart parent = getParent(); parent != null; parent = parent.getParent())
+    {
+      if (parent instanceof InterfaceEditPart)
+      { 
+        ((GraphicalEditPart)parent).getFigure().invalidateTree();
+        break;
+      }
+    }
   }
   
   protected List getModelChildren()
@@ -179,4 +216,14 @@
   public void removeFeedback() {
       parameterName.getParent().setBackgroundColor(figure.getBackgroundColor());
   }
+  
+  public EditPart getRelativeEditPart(int direction)
+  {  
+    EditPart editPart = super.getRelativeEditPart(direction);
+    if (direction == PositionConstants.SOUTH && editPart == null)
+    {
+      editPart = EditPartNavigationHandlerUtil.getNextInterface(this);           
+    }       
+    return editPart;
+  }  
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ParameterTypeEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ParameterTypeEditPart.java
index 4559c14..50ec186 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ParameterTypeEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ParameterTypeEditPart.java
@@ -10,254 +10,395 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts;
 
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 
 import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.Label;
 import org.eclipse.draw2d.MarginBorder;
 import org.eclipse.draw2d.MouseEvent;
 import org.eclipse.draw2d.MouseListener;
 import org.eclipse.draw2d.Panel;
-import org.eclipse.draw2d.Polygon;
-import org.eclipse.draw2d.XYLayout;
+import org.eclipse.draw2d.PositionConstants;
 import org.eclipse.draw2d.geometry.Point;
-import org.eclipse.draw2d.geometry.PointList;
 import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
 import org.eclipse.gef.EditPolicy;
 import org.eclipse.gef.LayerConstants;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.editpolicies.DirectEditPolicy;
+import org.eclipse.gef.requests.DirectEditRequest;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicsConstants;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.directedit.TypeReferenceDirectEditManager;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editpolicies.ASDSelectionEditPolicy;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.BaseLinkIconFigure;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.figures.ModelDiagnosticInfo;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.layouts.RowLayout;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
 import org.eclipse.wst.wsdl.ui.internal.asd.util.IOpenExternalEditorHelper;
+import org.eclipse.wst.wsdl.ui.internal.util.W11OpenExternalEditorHelper;
 
 import org.eclipse.draw2d.MouseMotionListener.Stub;
 
 public class ParameterTypeEditPart extends BaseEditPart implements IFeedbackHandler, INamedEditPart
 {   
-	  protected Label parameterType;
-	  protected RowLayout rowLayout = new RowLayout();
+	protected SimpleDirectEditPolicy simpleDirectEditPolicy = new SimpleDirectEditPolicy();
+	protected Label parameterType;
+	protected RowLayout rowLayout = new RowLayout();
 
-	  protected MyMouseEventListener mouseEventListener;
-	  
-	  protected IFigure createFigure()
-	  {
-	    IFigure figure = new Panel();
-	    figure.setLayoutManager(rowLayout); 
-
-	    parameterType = new Label();
-	    parameterType.setLabelAlignment(Label.LEFT);
-	    parameterType.setBorder(new MarginBorder(4,12,4,12));
-        figure.add(parameterType);
-        
-        if (isReadOnly()) {
-        	parameterType.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
-        }
-        
-	    return figure;
-	  }
-
-	  protected void refreshVisuals()
-	  {   
-	    super.refreshVisuals();
-	    IParameter param = (IParameter) getModel();
-	    String name = param.getComponentName();
-	    parameterType.setText(name);
-	  }
-	  
-	  public void addFeedback() {	 		          
-		  figure.setBackgroundColor(DesignViewGraphicsConstants.tableCellSelectionColor);
-	  }
-
-	  public void removeFeedback() {
-         figure.setBackgroundColor(figure.getParent().getBackgroundColor());
-	  }
-	  
-	  public Label getLabelFigure() {
-		  return parameterType;
-	  }
-
-	  protected void createEditPolicies()
-	  {
-		  installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ASDSelectionEditPolicy());
-	  }
-	  
-	  public void performDirectEdit(Point cursorLocation) {
-	  }
-	  
-	  public void activate() {
-		  super.activate();
-		  
-		  // Setup a MouseMotionListener so we know when to display the 'open in XSD Editor' figure
-		  IFigure feedBackLayer = getLayer(LayerConstants.FEEDBACK_LAYER);
-		  if (!(feedBackLayer.getLayoutManager() instanceof XYLayout)) {
-			  feedBackLayer.setLayoutManager(new XYLayout());					// We could probably move this line elsewhere
-		  }
-		  
-		  IFigure primaryLayer = getLayer(LayerConstants.PRIMARY_LAYER);
-		  mouseEventListener = new MyMouseEventListener(getModel());
-		  primaryLayer.addMouseMotionListener(mouseEventListener);
-		  primaryLayer.addMouseListener(mouseEventListener);
-	  }
-	  
-	  public void deactivate() {
-		  if (mouseEventListener != null) {
-			  mouseEventListener.discardLinkFigure();
-			  IFigure primaryLayer = getLayer(LayerConstants.PRIMARY_LAYER);
-			  primaryLayer.removeMouseMotionListener(mouseEventListener);
-			  primaryLayer.removeMouseListener(mouseEventListener);
+	  public void performRequest(Request req) {
+		  if (req.getType().equals(RequestConstants.REQ_DIRECT_EDIT)) {
+			  performDirectEdit(null);
 		  }
 	  }
 	  
-	  private class MyLinkFigure extends Polygon {
-		  private PointList points = new PointList();
-		  public int horizontalBuffer = 4;
-		  public int verticalBuffer = 6;
+	protected MyMouseEventListener mouseEventListener;
+	private BaseLinkIconFigure linkIconFigure;
 
-		  public MyLinkFigure() {
-			  // Draw the arrow
-			  points.addPoint(new Point(horizontalBuffer + 0, 4 + verticalBuffer));
-			  points.addPoint(new Point(horizontalBuffer + 9, 4 + verticalBuffer));
-			  points.addPoint(new Point(horizontalBuffer + 9, 0 + verticalBuffer));
-			  points.addPoint(new Point(horizontalBuffer + 14, 5 + verticalBuffer));
-			  points.addPoint(new Point(horizontalBuffer + 9, 10 + verticalBuffer));
-			  points.addPoint(new Point(horizontalBuffer + 9, 6 + verticalBuffer));
-			  points.addPoint(new Point(horizontalBuffer + 0, 6 + verticalBuffer));
-			  points.addPoint(new Point(horizontalBuffer + 0, 4 + verticalBuffer));
-			  setFill(true);
-		  }
+	protected IFigure createFigure()
+	{
+		IFigure figure = new Panel();
+		figure.setLayoutManager(rowLayout); 
 
-		  public void setLocation(Point newLocation) {
-			  PointList translatedPoints = new PointList();
-			  
-			  for (int index = 0; index < points.size(); index++) {
-				  Point origPoint = points.getPoint(index);
-				  translatedPoints.addPoint(origPoint.translate(newLocation));
-			  }
-			  
-			  setPoints(translatedPoints);
-		  }
-	  }
-	  
-	  private class MyMouseEventListener extends Stub implements MouseListener {
-		  private MyLinkFigure linkFigure;
-		  private Object object;
-		  private IOpenExternalEditorHelper openExternalEditorHelper;
-		  
-		  public MyMouseEventListener(Object object) {
-			  this.object = object;
-			  linkFigure = new MyLinkFigure();
-			  unemphasizeLinkFigure();
-		  }
-		  
-		  public void mouseMoved(MouseEvent me) {
-			  Point pointer = me.getLocation();
-			  Rectangle figBounds = getFigure().getParent().getParent().getBounds();
-			  
-			  if (getExternalEditorOpener().linkApplicable()) {
-				  getLayer(LayerConstants.FEEDBACK_LAYER).add(linkFigure);
-				  setLinkFigureLocation();
-				  if (pointerInRange(figBounds, pointer)) {
-					  emphasizeLinkFigure();
-				  }
-				  else {
-					  unemphasizeLinkFigure();
-				  }
-			  }
-			  else {
-				  if (containsLinkFigure()) {
-					  getLayer(LayerConstants.FEEDBACK_LAYER).remove(linkFigure);
-				  }
-			  }
-		  }
-		  
-		  private boolean containsLinkFigure() {
-			  IFigure figure = getLayer(LayerConstants.FEEDBACK_LAYER);
-			  Iterator it = figure.getChildren().iterator();
-			  while (it.hasNext()) {
-				  Object item = it.next();
-				  if (item.equals(linkFigure)) {
-					  return true;
-				  }
-			  }
-			  
-			  return false;
-		  }
-		  
-		  private Rectangle getLinkFigureBounds() {
-			  if (containsLinkFigure()) {
-			  return linkFigure.getBounds();
-			  }
-			  else {
-				  return null;
-			  }
-		  }
-		  
-		  private boolean pointerInRange(Rectangle figBounds, Point pointer) {
-			  Rectangle linkBounds = getLinkFigureBounds();
-			  
-			  int entireX = figBounds.x;
-			  int entireY = figBounds.y;
-			  int entireWidth = figBounds.width + linkBounds.width + linkFigure.horizontalBuffer;
-			  int entireHeight = figBounds.height;
-			  Rectangle entireBounds = new Rectangle(entireX, entireY, entireWidth, entireHeight);
+		parameterType = new Label();
+		parameterType.setLabelAlignment(Label.LEFT);
+		parameterType.setBorder(new MarginBorder(4,12,4,20));
+		figure.add(parameterType);
 
-			  return entireBounds.contains(pointer);
-		  }
-		  
-		  protected void setLinkFigureLocation() {
-			    Rectangle figureBounds = getFigure().getBounds();
-			    int xStart = figureBounds.x + figureBounds.width;
-			    int yStart = figureBounds.y;
-				  
-			    Point aPoint = new Point(xStart, yStart);
-			    linkFigure.setLocation(aPoint);
-		  }
-		  
-		  public void discardLinkFigure() {
-			  if (containsLinkFigure()) {
-				  getLayer(LayerConstants.FEEDBACK_LAYER).remove(linkFigure);
-			  }
-		  }
-		  
-		  protected void emphasizeLinkFigure() {
-			  linkFigure.setForegroundColor(ColorConstants.blue);
-			  linkFigure.setBackgroundColor(ColorConstants.blue);
-		  }
-		  
-		  protected void unemphasizeLinkFigure() {
-			  linkFigure.setForegroundColor(ColorConstants.lightGray);
-			  linkFigure.setBackgroundColor(ColorConstants.lightGray);
-		  }
+		// rmah: The block of code below has been moved from refreshVisuals().  We're
+		// assuming the read-only state of the EditPart will never change once the
+		// EditPart has been created.
+		if (isReadOnly()) 
+		{
+			parameterType.setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+		}
+		else
+		{
+			parameterType.setForegroundColor(ColorConstants.black);
+		}
 
-		  public void mouseReleased(MouseEvent me) { }
-		  public void mouseDoubleClicked(MouseEvent me) { }
-		  public void mousePressed(MouseEvent me) {
-			  Point pointer = me.getLocation();
-			  Rectangle linkFigBounds = getLinkFigureBounds();
-			  if (linkFigBounds == null) {
-				  return;
-			  }
-			  
-			  Rectangle testbounds = new Rectangle(linkFigBounds.x, linkFigBounds.y, 0, linkFigBounds.height);
-			  
-			  if (getExternalEditorOpener().linkApplicable() && pointerInRange(testbounds, pointer)) {
-				  setLinkFigureLocation();
-				  // Open in XSD Editor
-				  getExternalEditorOpener().openExternalEditor();				  
-			  }
-		  }
-		  
-		  private IOpenExternalEditorHelper getExternalEditorOpener() {
-			  if (openExternalEditorHelper == null) {
-				  openExternalEditorHelper = ((ASDMultiPageEditor) ASDEditorPlugin.getActiveEditor()).getOpenExternalEditorHelper();
-				  openExternalEditorHelper.setModel(object);
-			  }
-			  
-			  return openExternalEditorHelper;
-		  }
-	  }
-	}
\ No newline at end of file
+		return figure;
+	}
+
+	protected void refreshVisuals()
+	{   
+		super.refreshVisuals();
+		IParameter param = (IParameter) getModel();
+		String name = param.getComponentName();
+		parameterType.setText(name);
+
+
+		// TODO (cs) this evil bit of code needs to be fixed post WTP 1.5 when we have more freedom to 
+		// clean up our internal code structure.  We shouldn't have hardcoded adapter references here!
+		if (getModel() instanceof W11ParameterForPart)
+		{
+			Image image = ((W11ParameterForPart)getModel()).getSecondaryImage();
+			if (image != null)
+			{
+				parameterType.setIcon(image);
+			}
+
+			parameterType.setForegroundColor(ColorConstants.black);
+
+			List diagnosticMessages = new ArrayList(); 
+			// TODO: rmah: We should not know about W11ParameterForPart here.  Modify
+			// IParameter post WTP 1.5 to include the getDiagnosticMessages() method.
+			if (getModel() instanceof W11ParameterForPart) {
+				W11ParameterForPart paramForPart = (W11ParameterForPart) getModel();
+				diagnosticMessages = paramForPart.getDiagnosticMessages();
+			}
+
+			Iterator it = diagnosticMessages.iterator();
+			ModelDiagnosticInfo errorInfo = null;
+			while (it.hasNext() && errorInfo == null) {
+				ModelDiagnosticInfo temp = (ModelDiagnosticInfo) it.next();
+				if (temp.getType() == ModelDiagnosticInfo.ERROR_TYPE) {
+					errorInfo = temp;
+					break;
+				}
+			}
+
+			if (errorInfo != null) {
+				parameterType.setText(errorInfo.getDescriptionText());
+				parameterType.setForegroundColor(errorInfo.getDescriptionTextColor());
+				parameterType.setIcon(null);
+			}
+		}
+
+		// Force the LinkIconColumn to resize and relayout itself.
+		if (getInterfaceEditPart() != null) {
+			((Figure) getInterfaceEditPart().getLinkIconColumn()).invalidate();
+			refreshLinkFigure(new Point(-1, -1));
+		}
+	}
+
+	private InterfaceEditPart getInterfaceEditPart() {
+		EditPart ep = getParent();
+		while (ep != null && !(ep instanceof InterfaceEditPart)) {
+			ep = ep.getParent();
+		}
+
+		if (ep instanceof InterfaceEditPart) {
+			return (InterfaceEditPart) ep;
+		}
+
+		return null;
+	}
+
+	public void addFeedback() {	 		          
+		figure.setBackgroundColor(DesignViewGraphicsConstants.tableCellSelectionColor);
+	}
+
+	public void removeFeedback() {
+		figure.setBackgroundColor(figure.getParent().getBackgroundColor());
+	}
+
+	public Label getLabelFigure() {
+		return parameterType;
+	}
+
+	protected void createEditPolicies()
+	{
+		super.createEditPolicies();
+		installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ASDSelectionEditPolicy());
+		installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, simpleDirectEditPolicy);
+	}
+
+	public void performDirectEdit(Point cursorLocation) {
+		if (cursorLocation == null || (hitTest(parameterType, cursorLocation) && !isReadOnly())) { 
+			IParameter param = (IParameter) getModel();
+
+			TypeReferenceDirectEditManager manager = new TypeReferenceDirectEditManager(param, this, parameterType);   
+			simpleDirectEditPolicy.setDelegate(manager);
+			manager.show();
+
+
+		}
+		else if (parameterType.getParent() instanceof Figure &&
+				 hitTestFigure((Figure) parameterType.getParent(), cursorLocation) && isReadOnly()) {
+			doOpenNewEditor();
+		}
+	}
+
+	public void activate() {
+		super.activate();
+
+		IFigure primaryLayer = getLayer(LayerConstants.PRIMARY_LAYER);
+		mouseEventListener = new MyMouseEventListener();
+		primaryLayer.addMouseMotionListener(mouseEventListener);
+		primaryLayer.addMouseListener(mouseEventListener);
+	}
+
+	public void deactivate() {
+		if (mouseEventListener != null) {
+			IFigure primaryLayer = getLayer(LayerConstants.PRIMARY_LAYER);
+			primaryLayer.removeMouseMotionListener(mouseEventListener);
+			primaryLayer.removeMouseListener(mouseEventListener);
+		}
+
+		InterfaceEditPart ep = getInterfaceEditPart();
+		if (ep != null && linkIconFigure != null) {
+			IFigure fig = ep.getLinkIconColumn();
+			if (fig.getChildren().contains(linkIconFigure)) {
+				ep.getLinkIconColumn().remove(linkIconFigure);
+			}
+		}
+	}
+
+
+	private class SimpleDirectEditPolicy extends DirectEditPolicy 
+	{
+		protected TypeReferenceDirectEditManager delegate;
+
+		public void setDelegate(TypeReferenceDirectEditManager delegate)
+		{                                           
+			this.delegate = delegate;
+		}
+
+		protected org.eclipse.gef.commands.Command getDirectEditCommand(final DirectEditRequest request) 
+		{ 
+			return new Command() //AbstractCommand()
+			{
+				public void execute()
+				{                       
+					if (delegate != null)
+					{
+						delegate.performEdit(request.getCellEditor());
+					}  
+				}     
+
+				public void redo()
+				{
+				}  
+
+				public void undo()
+				{
+				}     
+
+				public boolean canExecute()
+				{
+					return true;
+				}
+			};
+		}
+
+		protected void showCurrentEditValue(DirectEditRequest request) 
+		{      
+			//hack to prevent async layout from placing the cell editor twice.
+			getHostFigure().getUpdateManager().performUpdate();
+		}
+	}
+
+	public EditPart getRelativeEditPart(int direction)
+	{         
+		EditPart editPart = super.getRelativeEditPart(direction);
+		if (direction == PositionConstants.SOUTH && editPart == null)
+		{
+			editPart = EditPartNavigationHandlerUtil.getNextInterface(this);
+		}   
+		return editPart;
+	}
+
+	private class MyMouseEventListener extends Stub implements MouseListener {
+		public void mouseReleased(MouseEvent me) { }
+		public void mouseDoubleClicked(MouseEvent me) { }
+
+		public void mouseMoved(MouseEvent me) {
+			Point pointer = me.getLocation();
+			refreshLinkFigure(pointer);
+		}
+
+		public void mousePressed(MouseEvent me) {
+			Point pointer = me.getLocation();
+			openExternalEditor(pointer);
+		}
+	}
+
+	// Methods below handle the Link Figure.....
+	private void emphasizeLinkFigure() {
+		linkIconFigure.setColor(ColorConstants.blue);
+	}
+
+	private void unemphasizeLinkFigure() {
+		linkIconFigure.setColor(ColorConstants.lightGray);
+	}
+
+	private boolean pointerInRange(Rectangle figBounds, Point pointer) {
+		Rectangle linkBounds = getLinkFigureBounds();
+
+		int entireX = figBounds.x;
+		int entireY = figBounds.y;
+		int entireWidth = figBounds.width + linkBounds.width;
+		int entireHeight = figBounds.height;
+		Rectangle entireBounds = new Rectangle(entireX, entireY, entireWidth, entireHeight);
+
+		return entireBounds.contains(pointer);
+	}
+
+	private boolean containsLinkFigure() {
+		Iterator it = getInterfaceEditPart().getLinkIconColumn().getChildren().iterator();
+		while (it.hasNext()) {
+			Object item = it.next();
+			if (item.equals(linkIconFigure)) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+
+	private Rectangle getLinkFigureBounds() {
+		if (containsLinkFigure()) {
+			return linkIconFigure.getBounds();
+		}
+		else {
+			return null;
+		}
+	}
+ 
+	private IOpenExternalEditorHelper getExternalEditorOpener() {
+		IOpenExternalEditorHelper openExternalEditorHelper = null;
+			if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage() != null) {
+				IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+				if (page.getActiveEditor() != null) {
+					Object adapted = page.getActiveEditor().getAdapter(IOpenExternalEditorHelper.class);
+					if (adapted instanceof IOpenExternalEditorHelper) {
+						openExternalEditorHelper = (IOpenExternalEditorHelper) adapted;
+						openExternalEditorHelper.setModel(getModel());
+					}
+				}
+			}
+
+		return openExternalEditorHelper;
+	}
+
+	private void refreshLinkFigure(Point point) {
+		Rectangle figBounds = getFigure().getParent().getParent().getBounds();
+		// TODO: rmah:  We should not know about W11OpenExternalEditorHelper here.  Post WTP 1.5, we should add the
+		// isValid() method to interface IOpenExternalEditorHelper.java
+		if (getExternalEditorOpener() instanceof W11OpenExternalEditorHelper) {
+			W11OpenExternalEditorHelper openHelper = (W11OpenExternalEditorHelper) getExternalEditorOpener();
+
+			if (openHelper.linkApplicable()) {
+				if (!figureContainsLinkFigure(getInterfaceEditPart().getLinkIconColumn())) {
+					linkIconFigure = new BaseLinkIconFigure(this);
+					getInterfaceEditPart().getLinkIconColumn().add(linkIconFigure);
+				}
+				
+				if (openHelper.isValid()) {
+					linkIconFigure.setLinkIconStyle(BaseLinkIconFigure.VALID_SCHEMA_LINK_STYLE);
+					
+					if (pointerInRange(figBounds, point)) {
+						emphasizeLinkFigure();
+					}
+					else {
+						unemphasizeLinkFigure();
+					}
+				}
+				else {
+					linkIconFigure.setLinkIconStyle(BaseLinkIconFigure.INVALID_SCHEMA_LINK_STYLE);
+				}
+					
+			}
+			else {
+				if (containsLinkFigure()) {
+					getInterfaceEditPart().getLinkIconColumn().remove(linkIconFigure);
+				}
+			}
+		}
+	}
+
+	private boolean figureContainsLinkFigure(IFigure parent) {
+		Iterator it = parent.getChildren().iterator();
+		while (it.hasNext()) {
+			if (it.next().equals(linkIconFigure)) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+
+	private void openExternalEditor(Point point) {
+		Rectangle linkFigBounds = getLinkFigureBounds();
+		if (linkFigBounds == null || getExternalEditorOpener() == null) {
+			return;
+		}
+
+		Rectangle testbounds = new Rectangle(linkFigBounds.x, linkFigBounds.y, 0, linkFigBounds.height);
+
+		if (getExternalEditorOpener().linkApplicable() && pointerInRange(testbounds, point)) {
+			// Open in XSD Editor
+			getExternalEditorOpener().openExternalEditor();				  
+		}
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ServiceEditPart.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ServiceEditPart.java
index 9ef14bc..2ea2f4c 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ServiceEditPart.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/ServiceEditPart.java
@@ -23,6 +23,8 @@
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.draw2d.geometry.Rectangle;
 import org.eclipse.gef.EditPolicy;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.RequestConstants;
 import org.eclipse.gef.tools.DirectEditManager;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicsConstants;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.directedit.LabelCellEditorLocator;
@@ -41,7 +43,7 @@
   {
 	  LineBorder boxFigureLineBorder = (LineBorder) figure.getBorder();
 	  boxFigureLineBorder.setWidth(2);
-	  boxFigureLineBorder.setColor(ColorConstants.darkBlue);
+//	  boxFigureLineBorder.setColor(ColorConstants.darkBlue);
 	  headingFigure.setSelected(true);	  
 	  figure.repaint();
   }
@@ -92,8 +94,16 @@
     contentPane.setLayoutManager(toolbarLayout2);
     figure.add(contentPane);
     
-    if (isReadOnly()) {
-    	headingFigure.getLabel().setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+    // rmah: The block of code below has been moved from refreshVisuals().  We're
+    // assuming the read-only state of the EditPart will never change once the
+    // EditPart has been created.
+    if (isReadOnly()) 
+    {
+      headingFigure.getLabel().setForegroundColor(DesignViewGraphicsConstants.readOnlyLabelColor);
+    }
+    else
+    {
+      headingFigure.getLabel().setForegroundColor(ColorConstants.black);
     }
     
     return figure;
@@ -106,6 +116,7 @@
 
   protected void createEditPolicies()
   {
+      super.createEditPolicies();
 	  installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new ASDLabelDirectEditPolicy());
 	  installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ASDSelectionEditPolicy());
   }
@@ -113,9 +124,19 @@
   private DirectEditManager manager;
   
   public void performDirectEdit(Point cursorLocation){
-	  if (hitTest(headingFigure.getLabel(), cursorLocation) && !isReadOnly()) {
+	  if (cursorLocation == null || hitTest(headingFigure.getLabel(), cursorLocation) && !isReadOnly()) {
 		  manager = new LabelEditManager(this, new LabelCellEditorLocator(this, cursorLocation));
 		  manager.show();
+    }
+    else if ((hitTest(headingFigure.getLabel(), cursorLocation) ||
+              hitTestFigure(headingFigure, cursorLocation)) && isReadOnly()) {
+      doOpenNewEditor();
+	  }
+  }
+  
+  public void performRequest(Request req) {
+	  if (req.getType().equals(RequestConstants.REQ_DIRECT_EDIT)) {
+		  performDirectEdit(null);
 	  }
   }
   
@@ -132,7 +153,8 @@
   protected void refreshVisuals()
   { 
     IService service = (IService)getModel();
+    headingFigure.setIsReadOnly(service.isReadOnly());
     headingFigure.getLabel().setText(service.getName());
-    super.refreshVisuals();
+    super.refreshVisuals();  
   }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingColumn.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingColumn.java
index 886dd74..4ba9ffc 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingColumn.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingColumn.java
@@ -10,7 +10,14 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model;
 
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IInterface;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.INamedObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
 
 public class BindingColumn extends AbstractModelCollection {
@@ -19,7 +26,10 @@
 	  }
 	  
 	  public ITreeElement[] getChildren() {
-			Object array[] = ((IDescription)model).getBindings().toArray();
+			List bindings = ((IDescription)model).getBindings();
+			Collections.sort(bindings, new BindingComparator());
+			Object array[] = bindings.toArray();
+			
 			ITreeElement treeElement[] = new ITreeElement[array.length];
 			for (int index = 0; index < array.length; index++) {
 				treeElement[index] = (ITreeElement) array[index];
@@ -27,8 +37,7 @@
 			
 			return treeElement;
 	  }
-	  
-	  
+
 	  public boolean hasChildren() {
 		  ITreeElement treeElement[] = getChildren();
 		  if (treeElement.length > 0) {
@@ -39,6 +48,29 @@
 	  }
 	  
 	  public String getText() {
-		  return "description"; //$NON-NLS-1$
+		  return "definition"; //$NON-NLS-1$
+	  }
+	  
+	  private class BindingComparator implements Comparator {
+			public int compare(Object o1, Object o2) {
+				if (o1 instanceof IBinding && o2 instanceof IBinding) {
+					IInterface interface1 = ((IBinding) o1).getInterface();
+					IInterface interface2 = ((IBinding) o2).getInterface();
+					
+					if (interface1 != null && interface2 != null) {
+						String name1 = ((INamedObject) interface1).getName();
+						String name2 = ((INamedObject) interface2).getName();
+						return name1.compareTo(name2);
+					}
+					else if (interface1 != null && interface2 == null) {
+						return -1;
+					}
+					else if (interface1 == null && interface2 != null) {
+						return 1;
+					}
+				}
+				
+				return 0;
+			}
 	  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingContentPlaceHolder.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingContentPlaceHolder.java
new file mode 100644
index 0000000..c963d26
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/BindingContentPlaceHolder.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model;
+
+public class BindingContentPlaceHolder {
+	private Object model;
+	
+	public BindingContentPlaceHolder(Object model) {
+		this.model = model;
+	}
+	
+	public Object getModel() {
+		return model;
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/InterfaceColumn.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/InterfaceColumn.java
index f47677e..ecd0f17 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/InterfaceColumn.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/InterfaceColumn.java
@@ -10,7 +10,12 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model;
 
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.INamedObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ITreeElement;
 
 public class InterfaceColumn extends AbstractModelCollection {
@@ -19,7 +24,11 @@
 	}
 	
 	public ITreeElement[] getChildren() {
-		Object array[] = ((IDescription)model).getInterfaces().toArray();
+		List interfaces = ((IDescription)model).getInterfaces();		
+		Comparator compare = new NamedObjectComparator();
+		Collections.sort(interfaces, compare);
+		Object array[] = interfaces.toArray();
+		
 		ITreeElement treeElement[] = new ITreeElement[array.length];
 		for (int index = 0; index < array.length; index++) {
 			treeElement[index] = (ITreeElement) array[index];
@@ -27,8 +36,7 @@
 		
 		return treeElement;
 	}
-	
-	
+
 	public boolean hasChildren() {
 		ITreeElement treeElement[] = getChildren();
 		if (treeElement.length > 0) {
@@ -39,6 +47,18 @@
 	}
 	
 	public String getText() {
-		return "description"; //$NON-NLS-1$
+		return "definition"; //$NON-NLS-1$
+	}
+	
+	private class NamedObjectComparator implements Comparator{
+		public int compare(Object o1, Object o2) {
+			if (o1 instanceof INamedObject && o2 instanceof INamedObject) {
+				String name1 = ((INamedObject) o1).getName();
+				String name2 = ((INamedObject) o2).getName();
+				return name1.compareTo(name2);
+			}
+			
+			return -1;
+		}
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/ServiceColumn.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/ServiceColumn.java
index 63b923a..19a7c81 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/ServiceColumn.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/editparts/model/ServiceColumn.java
@@ -38,6 +38,6 @@
 	}
 	
 	public String getText() {
-		return "description"; //$NON-NLS-1$
+		return "definition"; //$NON-NLS-1$
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/BaseLinkIconFigure.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/BaseLinkIconFigure.java
new file mode 100644
index 0000000..2491215
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/BaseLinkIconFigure.java
@@ -0,0 +1,216 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.design.figures;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ToolbarLayout;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.swt.graphics.Color;
+
+public class BaseLinkIconFigure extends Figure {
+	public static int VALID_SCHEMA_LINK_STYLE = 1;
+	public static int INVALID_SCHEMA_LINK_STYLE = 2;
+
+	private int linkIconStyle = VALID_SCHEMA_LINK_STYLE;	
+	private AbstractGraphicalEditPart editPart;
+	private List childFigures = new ArrayList();
+	public int figureSpacing = 7;
+
+	public BaseLinkIconFigure(AbstractGraphicalEditPart ep) {
+		editPart = ep;
+
+		ToolbarLayout layout = new ToolbarLayout(true) {
+			public void layout(IFigure parent) {
+				super.layout(parent);
+
+				AbstractGraphicalEditPart ep = getAssociatedEditPart();
+				IFigure associatedFigure = ep.getFigure();
+				if (associatedFigure != null) {
+					// Update the bounds
+					Rectangle associatedBounds = associatedFigure.getBounds();
+					int x = associatedBounds.x + associatedBounds.width;
+					int y = associatedBounds.y;
+					int width = getSize().width;
+					int height = associatedBounds.height;
+
+					Rectangle newFigBounds = new Rectangle(x, y, width, height);
+					// Set my bounds based on my associated editpart
+					setBounds(newFigBounds);
+
+					// Layout the children
+					Iterator it = parent.getChildren().iterator();
+					while (it.hasNext()) {
+						IFigure fig = (IFigure) it.next();
+						Point newPoint = new Point(x, y);
+
+						// Indent the figure to the right to show the "broken" schema link figure
+						if (fig instanceof RightInvalidIconFigure) {
+							newPoint.x = newPoint.x + figureSpacing;
+						}
+
+						fig.setLocation(newPoint);
+					}
+				}
+			}
+		};
+		setLayoutManager(layout);
+
+		// Default to a ValidLinkIconFigure
+		linkIconStyle = VALID_SCHEMA_LINK_STYLE;
+		addChildFigure(new ValidLinkIconFigure());
+	}
+
+	private void removeChildFigures() {
+		Iterator it = childFigures.iterator();
+		while (it.hasNext()) {
+			remove((IFigure) it.next());
+		}
+
+		childFigures.clear();
+	}
+
+	private void addChildFigure(IFigure fig) {
+		childFigures.add(fig);
+		add(fig);
+	}
+
+	public void setLinkIconStyle(int style) {
+		if (style == VALID_SCHEMA_LINK_STYLE && linkIconStyle != VALID_SCHEMA_LINK_STYLE) {
+			removeChildFigures();
+			addChildFigure(new ValidLinkIconFigure());
+		}
+		else if (style == INVALID_SCHEMA_LINK_STYLE && linkIconStyle != INVALID_SCHEMA_LINK_STYLE) {
+			removeChildFigures();
+			addChildFigure(new LeftInvalidIconFigure());
+			addChildFigure(new RightInvalidIconFigure());
+		}
+
+		linkIconStyle = style;
+	}
+
+	public int getLinkIconStyle() {
+		return linkIconStyle;
+	}
+
+	public void setColor(Color color) {
+		Iterator it = childFigures.iterator();
+		while (it.hasNext()) {
+			IFigure fig = (IFigure) it.next();
+			fig.setBackgroundColor(color);
+			fig.setForegroundColor(color);
+		}
+	}
+
+	public AbstractGraphicalEditPart getAssociatedEditPart() {
+		return editPart;
+	}
+
+	private class LeftInvalidIconFigure extends LinkIconFigure {
+		public LeftInvalidIconFigure() {
+			super(null);
+			PointList points = new PointList();
+			
+			// Draw the arrow
+			points.addPoint(new Point(horizontalBuffer + 0, 4 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 5, 4 + verticalBuffer));
+
+			points.addPoint(new Point(horizontalBuffer + 7, 0 + verticalBuffer));	// top slash
+			points.addPoint(new Point(horizontalBuffer + 5, 4 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 2, 10 + verticalBuffer));	// bottom slash
+
+			points.addPoint(new Point(horizontalBuffer + 4, 6 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 0, 6 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 0, 4 + verticalBuffer));
+
+			setForegroundColor(ColorConstants.lightGray);
+			setBackgroundColor(ColorConstants.lightGray);
+			setFill(true);
+			setPoints(points);
+		}
+
+		// We increase the size of the width because we indent the figure towards the right.
+		// So we indent by that same amount stored in horizontalBuffer
+		public Dimension getPreferredSize(int wHint, int hHint) {
+			Dimension dimension = super.getPreferredSize(wHint, hHint);
+			dimension.width = dimension.width + horizontalBuffer;
+
+			return dimension;
+		}
+
+		public void setLocation(Point point) {
+			super.setLocation(point);
+			// Update the points with the following method call
+			setFigureLocation(point);
+		}
+	}
+
+	private class RightInvalidIconFigure extends LinkIconFigure {
+		public RightInvalidIconFigure() {
+			super(null);
+			PointList points = new PointList();
+
+			points.addPoint(new Point(horizontalBuffer + 5, 4 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 7, 0 + verticalBuffer));	// top slash
+			points.addPoint(new Point(horizontalBuffer + 5, 4 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 10, 4 + verticalBuffer));
+
+			points.addPoint(new Point(horizontalBuffer + 10, 0 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 15, 5 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 10, 10 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 10, 6 + verticalBuffer));
+
+			points.addPoint(new Point(horizontalBuffer + 4, 6 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 2, 10 + verticalBuffer));	// bottom slash
+			points.addPoint(new Point(horizontalBuffer + 5, 4 + verticalBuffer));
+
+			setForegroundColor(ColorConstants.lightGray);
+			setBackgroundColor(ColorConstants.lightGray);
+			setFill(true);
+			setPoints(points);
+		}
+
+		public void setLocation(Point point) {
+			super.setLocation(point);
+			setFigureLocation(point);
+		}
+	}
+
+	private class ValidLinkIconFigure extends LeftInvalidIconFigure {
+		public ValidLinkIconFigure() {
+			PointList points = new PointList();
+
+			// Draw the arrow
+			points.addPoint(new Point(horizontalBuffer + 0, 4 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 15, 4 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 15, 0 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 20, 5 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 15, 10 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 15, 6 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 0, 6 + verticalBuffer));
+			points.addPoint(new Point(horizontalBuffer + 0, 4 + verticalBuffer));
+
+			setForegroundColor(ColorConstants.lightGray);
+			setBackgroundColor(ColorConstants.lightGray);
+			setFill(true);
+			setPoints(points);
+		}
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/BoxComponentFigure.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/BoxComponentFigure.java
index 5ba5c3d..43dbc26 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/BoxComponentFigure.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/BoxComponentFigure.java
@@ -16,7 +16,7 @@
 
 public class BoxComponentFigure extends Figure
 {
-  HeadingFigure headingFigure;
+  public HeadingFigure headingFigure;
   Figure contentPane;
   protected boolean isSelected = false;
   protected boolean isReadOnly = false;
@@ -50,4 +50,9 @@
   {
     return headingFigure.getLabel();
   }
+  
+  public Figure getHeadingFigure()
+  {
+    return headingFigure;
+  }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/HeadingFigure.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/HeadingFigure.java
index 7a63d2d..7dd5ba6 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/HeadingFigure.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/HeadingFigure.java
@@ -21,6 +21,7 @@
 
 public class HeadingFigure extends Figure
 {
+  public static final Color headerColor = new Color(null, 224, 233, 246);
   Label label;
   protected Color[] gradientColor = {ColorConstants.white,  
             ColorConstants.lightGray,
@@ -58,7 +59,9 @@
     Rectangle r = getBounds().getCopy();
     graphics.setBackgroundColor(ColorConstants.lightGray);
     //graphics.fillRectangle(r.x+1, r.y+1, r.width-1, barYcoordinate - r.y - 1);
-    Color gradient1 = isSelected ? (isReadOnly ? gradientColor[3] : gradientColor[2]) : gradientColor[1];
+    Color gradient1 = isReadOnly ? gradientColor[1] : headerColor;
+    if (isSelected && isReadOnly) gradient1 = gradientColor[3];
+    else if (isSelected && !isReadOnly) gradient1 = gradientColor[2];
     Color gradient2 = gradientColor[0];
     graphics.setForegroundColor(gradient1);
     graphics.setBackgroundColor(gradient2);
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/LinkIconFigure.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/LinkIconFigure.java
new file mode 100644
index 0000000..8107a38
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/LinkIconFigure.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.design.figures;
+
+import org.eclipse.draw2d.Graphics;
+import org.eclipse.draw2d.Polygon;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+
+public class LinkIconFigure extends Polygon {
+	private AbstractGraphicalEditPart editPart;
+	private Point figLocation;
+	  private PointList points = new PointList();
+	  public int horizontalBuffer = 5;
+	  public int verticalBuffer = 7;
+
+	  public LinkIconFigure(AbstractGraphicalEditPart ep) {
+		  editPart = ep;
+		  
+		  // Draw the arrow
+		  points.addPoint(new Point(horizontalBuffer + 0, 4 + verticalBuffer));
+		  points.addPoint(new Point(horizontalBuffer + 9, 4 + verticalBuffer));
+		  points.addPoint(new Point(horizontalBuffer + 9, 0 + verticalBuffer));
+		  points.addPoint(new Point(horizontalBuffer + 14, 5 + verticalBuffer));
+		  points.addPoint(new Point(horizontalBuffer + 9, 10 + verticalBuffer));
+		  points.addPoint(new Point(horizontalBuffer + 9, 6 + verticalBuffer));
+		  points.addPoint(new Point(horizontalBuffer + 0, 6 + verticalBuffer));
+		  points.addPoint(new Point(horizontalBuffer + 0, 4 + verticalBuffer));
+		  
+		  setFill(true);	  
+		  setPoints(points);
+	  }
+	  
+	  public void paintFigure(Graphics graphics) {
+		  super.paintFigure(graphics);
+	  }
+	  
+	  public void setFigureLocation(Point newStartingLocation) {
+		  int dy = newStartingLocation.y;
+
+		  if (figLocation != null) {
+			  dy = newStartingLocation.y - figLocation.y;
+		  }
+
+		  // Update the points
+		  PointList newPoints = new PointList();
+		  PointList pList = getPoints();
+		  for (int index = 0; index < pList.size(); index++) {
+			  Point point = pList.getPoint(index);
+			  // Add 5 for the padding
+			  Point newPoint = new Point(point.x + horizontalBuffer, point.y + dy);
+			  newPoints.addPoint(newPoint);
+		  }
+		  setPoints(newPoints);
+
+		  figLocation = newStartingLocation;
+	  }
+	  
+	  public void primTranslate(int dx, int dy) {
+			bounds.x += dx;
+			bounds.y += dy;
+			
+			PointList pList = getPoints();
+			PointList newList = new PointList();
+			for (int index = 0; index < pList.size(); index++) {
+				Point point = pList.getPoint(index);
+				Point newPoint = new Point(point.x + dx, point.y);
+				newList.addPoint(newPoint);
+			}
+			setPoints(newList);
+			
+			if (useLocalCoordinates()) {
+				fireCoordinateSystemChanged();
+				return;
+			}
+		}
+	  
+	  public AbstractGraphicalEditPart getAssociatedEditPart() {
+		  return editPart;
+	  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/ModelDiagnosticInfo.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/ModelDiagnosticInfo.java
new file mode 100644
index 0000000..2a60e23
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/figures/ModelDiagnosticInfo.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.asd.design.figures;
+
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.swt.graphics.Color;
+
+/*
+ * A ModelDiagnosticInfo object contains "additional" information about a model object.
+ * It is passed from a model (facade) object to an EditPart.  The EditPart uses the ModelDiagnosticInfo
+ * object to display any additional information necessary (for example, an error message when the model
+ * object is in some way invalid.
+ */
+public class ModelDiagnosticInfo {
+	public static int INFORMATIONAL_TYPE = 0;
+	public static int ERROR_TYPE = 1;
+	public static int WARNING_TYPE = 2;
+	
+	private int type = 1;
+	private String text = "";
+	private Color textColor;
+	
+	public ModelDiagnosticInfo(String txt, int infoType, Color color) {
+		text = txt;
+		type = infoType;
+		textColor = color;
+	}
+	
+	public void setDescriptionText(String txt) {
+		text = txt;
+	}
+	
+	public void setDescriptionTextColor(Color color) {
+		textColor = color;
+	}
+	
+	public void setType(int infoType) {
+		type = infoType;
+	}
+	
+	public String getDescriptionText() {
+		return text;
+	}
+	
+	public int getType() {
+		return type;
+	}
+	
+	public Color getDescriptionTextColor() {
+		if (textColor != null) {
+			return textColor;
+		}
+		
+		if (type == ERROR_TYPE) {
+			return ColorConstants.red;
+		}
+		else if (type == WARNING_TYPE) {
+			return ColorConstants.lightGray;
+		}
+		
+		return ColorConstants.black;
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/layouts/BindingColumnLayout.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/layouts/BindingColumnLayout.java
index 60e8090..b60ac79 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/layouts/BindingColumnLayout.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/layouts/BindingColumnLayout.java
@@ -17,11 +17,21 @@
 import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.BindingEditPart;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IInterface;
 
 public class BindingColumnLayout extends AbstractLayout
 {
-  IFigure expandedBindingFigure;
-  IFigure snapToFigure;
+  EditPart bindingColumnEditPart;
+  
+  public BindingColumnLayout(EditPart bindingColumnEditPart)
+  {
+    super();
+    this.bindingColumnEditPart = bindingColumnEditPart;
+  }
 
   protected Dimension calculatePreferredSize(IFigure container, int wHint, int hHint)
   {
@@ -49,11 +59,13 @@
 
   public void layout(IFigure container)
   {
+    //System.out.println("BindingColumnLayout.layout()" + container.getChildren().size());
     Rectangle clientArea = container.getClientArea();
     Rectangle r = new Rectangle();
     r.x = clientArea.x + 50;
     r.y = clientArea.y;
     int used = 0;
+
     for (Iterator i = container.getChildren().iterator(); i.hasNext();)
     {
       Figure child = (Figure) i.next();
@@ -65,9 +77,10 @@
       used += 30;
       used += r.height;
       
-      if (child == expandedBindingFigure && snapToFigure != null)
+      IFigure intefaceFigure = getInterfaceFigureForExpandedEditPartFigure(child);
+      if (intefaceFigure != null)
       {
-        Rectangle b = snapToFigure.getBounds();
+        Rectangle b = intefaceFigure.getBounds();
         int width = 30;
         child.setBounds(new Rectangle(b.x - width, b.y, width, b.height));
       }
@@ -75,41 +88,58 @@
       r.y += d.height;
       r.y += 80;
     }
-    /*
-    int space = clientArea.height - used;
-    int spacePerThingee = space / container.getChildren().size() - 1;
-    boolean isFirst = true;
-    for (Iterator i = container.getChildren().iterator(); i.hasNext();)
-    {
-      Figure child = (Figure) i.next();
-      if (isFirst)
-      {
-        isFirst = false;
+  }
+  
+  public void setExpanded(BindingEditPart bindingEditPart, boolean isExpanded)
+  {
+    // First run through all of the bindings are are expanded
+    // to ensure at most one binding is expanded for each interface since
+    // we may need to collapse a binding in order to expand this one.
+    //
+    IInterface interfaze = getInterface(bindingEditPart);    
+    if (interfaze != null)
+    {  
+      bindingEditPart.setExpanded(isExpanded);
+      if (isExpanded)
+      {  
+        for (Iterator i = bindingColumnEditPart.getChildren().iterator(); i.hasNext(); )
+        {
+          BindingEditPart otherBindingEditPart = (BindingEditPart)i.next();
+          if (otherBindingEditPart != bindingEditPart &&
+              interfaze == getInterface(otherBindingEditPart))
+          {
+            otherBindingEditPart.setExpanded(false);
+          }  
+        }
       }
-      else if (child != expandedBindingFigure || snapToFigure == null)      
-      {        
-        child.getBounds().y += spacePerThingee;
+    }  
+  }
+  
+  private IFigure getInterfaceFigureForExpandedEditPartFigure(Figure editPartFigure)
+  {
+    for (Iterator i = bindingColumnEditPart.getChildren().iterator(); i.hasNext(); )
+    {
+      BindingEditPart bindingEditPart = (BindingEditPart)i.next();
+      if (bindingEditPart.isExpanded() && bindingEditPart.getFigure() == editPartFigure)
+      {
+        AbstractGraphicalEditPart interfaceEditPart = getMatchingEditPart(getInterface(bindingEditPart));
+        if (interfaceEditPart != null)
+        {
+          return interfaceEditPart.getFigure();
+        }          
       }  
-    }*/
+    }
+    return null;
   }
-
-  public IFigure getExpandedBindingFigure()
+  
+  private IInterface getInterface(BindingEditPart editPart)
   {
-    return expandedBindingFigure;
+    IBinding binding = (IBinding)editPart.getModel();
+    return binding.getInterface();
   }
-
-  public void setExpandedBindingFigure(IFigure expandedBindingFigure)
+  
+  private AbstractGraphicalEditPart getMatchingEditPart(IInterface interfaze)
   {
-    this.expandedBindingFigure = expandedBindingFigure;
+    return(AbstractGraphicalEditPart)bindingColumnEditPart.getViewer().getEditPartRegistry().get(interfaze);    
   }
-
-  public IFigure getSnapToFigure()
-  {
-    return snapToFigure;
-  }
-
-  public void setSnapToFigure(IFigure snapToFigure)
-  {
-    this.snapToFigure = snapToFigure;
-  }
-}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/layouts/BindingContentLayout.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/layouts/BindingContentLayout.java
index 5f5564e..201b38a 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/layouts/BindingContentLayout.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/design/layouts/BindingContentLayout.java
@@ -20,6 +20,7 @@
 import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.BindingEditPart;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.INamedEditPart;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.BindingContentPlaceHolder;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBindingMessageReference;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBindingOperation;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference;
@@ -54,7 +55,7 @@
 
   public void layout(IFigure container)
   {     
-    Rectangle clientArea = container.getClientArea();    
+    Rectangle clientArea = container.getClientArea();
     for (Iterator i = bindingEditPart.getChildren().iterator(); i.hasNext();)
     {
       AbstractGraphicalEditPart childEditPart = (AbstractGraphicalEditPart) i.next();
@@ -69,7 +70,12 @@
       {
         IMessageReference messageReference = ((IBindingMessageReference)model).getMessageReference();
         correspondingEditPart = getEditPart(messageReference);       
-      }      
+      }
+      else if (model instanceof BindingContentPlaceHolder) {
+    	  Object correspondingModel = ((BindingContentPlaceHolder) model).getModel();
+    	  correspondingEditPart = getEditPart(correspondingModel);
+      }
+      
       if (correspondingEditPart != null)
       {
         IFigure figure = correspondingEditPart.getFigure();       
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/facade/IDescription.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/facade/IDescription.java
index 5e962d1..fdf7c54 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/facade/IDescription.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/facade/IDescription.java
@@ -19,6 +19,7 @@
 {
 	public String getTargetNamespace();
 	public String getTargetNamespacePrefix();
+//	public List getNamespacesInfo();	// TODO: Add this method in the future
 	
 	public List getImports();
 	public List getTypes();
@@ -33,4 +34,5 @@
 	public Command getAddBindingCommand();
 	public Command getAddInterfaceCommand();
 	public Command getAddMessageCommand();
+//	public Command getEditNamespacesCommand();	// TODO: Add this method in the future
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/messages.properties b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/messages.properties
index 6ccc672..a2b5e8b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/messages.properties
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/messages.properties
@@ -41,3 +41,10 @@
 _UI_ACTION_ADD_SCHEMA=Add Schema
 _UI_ACTION_ADD_INPUT=Add Input
 _UI_SECTION_ADVANCED_ATTRIBUTES=Advanced
+
+_UI_ACTION_EDIT_NAMESPACES = Edit Namespaces...
+_UI_ACTION_OPEN_SCHEMA=Open Schema
+_UI_TOOLTIP_RENAME_REFACTOR=Click here to invoke the Rename refactoring.
+
+_UI_LABEL_RIGHT_CLICK_TO_INSERT_CONTENT=Right mouse click here to insert content
+_UI_ACTION_SHOW_PROPERTIES=Show properties
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/outline/ASDContentOutlinePage.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/outline/ASDContentOutlinePage.java
index 9cc7d94..91dfab8 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/outline/ASDContentOutlinePage.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/outline/ASDContentOutlinePage.java
@@ -21,7 +21,9 @@
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
 
@@ -68,6 +70,7 @@
 		menuManager.addMenuListener(menuListener);
 		
 	    getSite().registerContextMenu("org.eclipse.wst.wsdl.wsdleditor", menuManager, wsdlEditor.getSelectionManager()); //$NON-NLS-1$
+		  PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),ASDEditorCSHelpIds.WSDL_OUTLINE_VIEW); 
 	}
 	
 	protected boolean processingSelectionChange = false;
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/outline/ASDContentOutlineProvider.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/outline/ASDContentOutlineProvider.java
index 80edf96..5cd930c 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/outline/ASDContentOutlineProvider.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/outline/ASDContentOutlineProvider.java
@@ -13,10 +13,10 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-
 import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.ILabelProviderListener;
 import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
@@ -27,19 +27,35 @@
 
 public class ASDContentOutlineProvider implements ITreeContentProvider, ILabelProvider, IASDObjectListener {
 	protected Viewer viewer;
+    
+    /**
+     * @deprecated
+     */
 	protected ASDMultiPageEditor editor;
 	protected List listeners = new ArrayList();
+    
+    /**
+     * @deprecated
+     */    
 	protected IDescription description;
-	
+
+    public ASDContentOutlineProvider()
+    {      
+    }
+    
 	public ASDContentOutlineProvider(ASDMultiPageEditor editor, IDescription description) {
-		this.editor = editor;
-		this.description = description;
+	  this.editor = editor;
+      this.description = description;
 	}
 	
 	public Object[] getChildren(Object parentElement) {
-		attachListener(parentElement);
 		if (parentElement instanceof ITreeElement) {
-			return ((ITreeElement) parentElement).getChildren();
+			ITreeElement[] kids = ((ITreeElement) parentElement).getChildren();
+			for (int index = 0; index < kids.length; index++) {
+				attachListener(kids[index]);
+			}
+			
+			return kids;
 		}
 
 		return new Object[0]; 
@@ -85,7 +101,8 @@
     
 	public String getText(Object element) {
 		String text = null;
-		if (element instanceof INamedObject) {
+         
+        if (element instanceof INamedObject) { 
 			text =  ((INamedObject) element).getName();
 		}
 		else if (element instanceof ITreeElement) {
@@ -130,8 +147,10 @@
 	}
 
 	public void propertyChanged(Object object, String property) {             
-		if (viewer != null) {
-			viewer.refresh();
+		if (viewer instanceof TreeViewer) {
+			TreeViewer treeViewer = (TreeViewer) viewer;
+			treeViewer.refresh(object);
+			treeViewer.reveal(object);
 		}
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ASDAbstractSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ASDAbstractSection.java
index 3c0cbbe..7ebc009 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ASDAbstractSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ASDAbstractSection.java
@@ -14,6 +14,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.jface.action.IStatusLineManager;
 import org.eclipse.jface.util.Assert;
 import org.eclipse.jface.viewers.ISelection;
@@ -29,7 +31,9 @@
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.part.EditorActionBarContributor;
 import org.eclipse.ui.views.properties.tabbed.ISection;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
@@ -46,6 +50,7 @@
 	protected Composite composite;
 	protected int rightMarginSpace;
 	protected int tableMinimumWidth = 50;
+	protected CustomListener customListener = new CustomListener();
 	
 	protected List listeners = new ArrayList();
 	
@@ -127,13 +132,16 @@
 	 */
 	public void refresh()
 	{
-		if (isReadOnly)
+		if (!composite.isDisposed())
 		{
-			composite.setEnabled(false);
-		}
-		else
-		{
-			composite.setEnabled(true);
+			if (isReadOnly)
+			{
+				composite.setEnabled(false);
+			}
+			else
+			{
+				composite.setEnabled(true);
+			}
 		}
 	}
 	
@@ -195,6 +203,18 @@
 		return listenerEnabled;
 	}
 	
+    public void applyTextListeners(Control control)
+    {
+      control.addListener(SWT.FocusOut, customListener);
+      control.addListener(SWT.KeyDown, customListener);
+    }
+    
+    public void removeListeners(Control control)
+    {
+      control.removeListener(SWT.FocusOut, customListener);
+      control.removeListener(SWT.KeyDown, customListener);
+    }
+	
 	/**
 	 * Set the value of listenerEnabled.
 	 * @param v  Value to assign to listenerEnabled.
@@ -209,7 +229,8 @@
 		if (isListenerEnabled() && !isInDoHandle) 
 		{
 			isInDoHandle = true;
-			startDelayedEvent(event);
+//			startDelayedEvent(event);
+			doHandleEvent(event);
 			isInDoHandle = false;
 		} // end of if ()
 	}
@@ -283,8 +304,45 @@
 		}
 		
 	}
+	   
+    class CustomListener implements Listener
+    {
+      boolean isHandlingEvent = false;
+      public void handleEvent(Event event)
+      {
+        if (isListenerEnabled() && !isReadOnly) 
+        {
+          switch (event.type)
+          {
+            case SWT.KeyDown :
+            {
+              if (event.character == SWT.CR)
+              {
+                if (!isHandlingEvent)
+                {
+                  isHandlingEvent = true;
+                  doHandleEvent(event);
+                  isHandlingEvent = false;
+                }
+              }
+              break;
+            }
+            case SWT.FocusOut :
+            {
+              if (!isHandlingEvent)
+              {
+                isHandlingEvent = true;
+                doHandleEvent(event);
+                isHandlingEvent = false;
+              }
+              break;
+            }
+          }
+        }
+      }
+    }
 	
-	boolean isInDoHandle;
+	protected boolean isInDoHandle;
 	/**
 	 * Get the value of isInDoHandle.
 	 * @return value of isInDoHandle.
@@ -337,4 +395,16 @@
 			}
 		}
 	}
+    
+    protected void executeCommand(Command command) {
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+        
+        if (page.getActiveEditor() != null && page.getActiveEditor().getAdapter(CommandStack.class) != null) {
+            CommandStack stack = (CommandStack) page.getActiveEditor().getAdapter(CommandStack.class);
+            stack.execute(command);
+        }
+        else {
+            command.execute();
+        }
+    }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/BindingSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/BindingSection.java
index 1d917ae..90d2ff7 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/BindingSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/BindingSection.java
@@ -13,42 +13,137 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
+import org.eclipse.wst.wsdl.ui.internal.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
-import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetExistingInterfaceAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetNewInterfaceAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IInterface;
-import org.eclipse.wst.wsdl.ui.internal.edit.W11InterfaceReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 
-public class BindingSection extends ReferenceSection {
+public class BindingSection extends ReferenceSection implements SelectionListener {
 	protected ComponentReferenceEditManager refManager;
+	private CLabel protocolValue;
+//	private CLabel optionsValue;
+	private Button regenBindingButton;
 	
 	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory) {
 		super.createControls(parent, factory);
-		comboLabel.setText(Messages.getString("_UI_LABEL_PORTTYPE") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		comboLabel.setText(org.eclipse.wst.wsdl.ui.internal.asd.Messages._UI_LABEL_PORTTYPE + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		
+		CLabel protocolLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_BINDING_PROTOCOL);
+		protocolValue= getWidgetFactory().createCLabel(composite, "");
+		
+		// Layout protocolLabel
+		FormData data = new FormData();
+		data.left = new FormAttachment(0, 0);
+		data.right = new FormAttachment(protocolValue, -ITabbedPropertyConstants.HSPACE);
+		data.top = new FormAttachment(protocolValue, 0, SWT.CENTER);
+		protocolLabel.setLayoutData(data);
+		
+		// Layout protocolValue
+		data = new FormData();
+		data.left = new FormAttachment(0, 100);
+		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
+		data.top = new FormAttachment(combo, 0);
+//		data.top = new FormAttachment(combo, +ITabbedPropertyConstants.VSPACE);
+		protocolValue.setLayoutData(data);
+		
+		/*
+		CLabel optionsLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_TITLE_OPTIONS") + ":");
+		optionsValue = getWidgetFactory().createCLabel(composite, "");
+		
+		// Layout optionsLabel
+		data = new FormData();
+		data.left = new FormAttachment(0, 0);
+		data.right = new FormAttachment(optionsValue, -ITabbedPropertyConstants.HSPACE);
+		data.top = new FormAttachment(optionsValue, 0, SWT.CENTER);
+		optionsLabel.setLayoutData(data);
+		
+		// Layout optionsValue
+		data = new FormData();
+		data.left = new FormAttachment(0, 100);
+		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
+		data.top = new FormAttachment(protocolValue, -ITabbedPropertyConstants.VSPACE);
+//		data.top = new FormAttachment(protocolValue, +ITabbedPropertyConstants.VSPACE);
+		optionsValue.setLayoutData(data);
+		
+		String buttonLabel = org.eclipse.wst.wsdl.ui.internal.asd.Messages.getString("_UI_GENERATE_BINDING_CONTENT");
+		regenBindingButton = getWidgetFactory().createButton(composite, buttonLabel, SWT.PUSH);
+
+		// Layout button
+		data = new FormData();
+		data.left = new FormAttachment(0, 0);
+//		data.right = new FormAttachment(optionsValue, -ITabbedPropertyConstants.HSPACE);
+		data.top = new FormAttachment(optionsLabel, 0);
+		regenBindingButton.setLayoutData(data);
+		*/
+
+		String buttonLabel = org.eclipse.wst.wsdl.ui.internal.asd.Messages._UI_GENERATE_BINDING_CONTENT;
+		regenBindingButton = getWidgetFactory().createButton(composite, buttonLabel, SWT.PUSH);
+
+		// Layout button
+		data = new FormData();
+		data.left = new FormAttachment(0, 0);
+//		data.right = new FormAttachment(optionsValue, -ITabbedPropertyConstants.HSPACE);
+		data.top = new FormAttachment(protocolLabel, 0);
+		regenBindingButton.setLayoutData(data);
+
+		regenBindingButton.addSelectionListener(this);
+		
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(protocolValue, ASDEditorCSHelpIds.PROPERTIES_BINDING_PROTOCOL_TEXT);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(regenBindingButton, ASDEditorCSHelpIds.PROPERTIES_BINDING_GEN_BINDING_BUTTON);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(combo, ASDEditorCSHelpIds.PROPERTIES_BINDING_PORTTYPE_COMBO);
 	}
 	
-	protected List getComboItems() {
-		if (refManager == null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			// TODO: rmah: We should not know about W11InterfaceReferenceEditManager here....  We should a better
-			// way to retrieve the appropriate Reference Manager
-			refManager = (ComponentReferenceEditManager) editor.getAdapter(W11InterfaceReferenceEditManager.class);
+	public void refresh() {
+		super.refresh();
+		IBinding binding = getIBinding();
+		String protocol = binding.getProtocol();
+		if (protocol == null || protocol.equals("")) {
+			protocol = "----";
 		}
+		protocolValue.setText(protocol);
+
+//		optionsValue.setText("");
+	}
+	
+	protected ComponentReferenceEditManager getComponentReferenceEditManager() {
+		if (refManager != null) {
+			return refManager;
+		}
+
+		refManager = ReferenceEditManagerHelper.getInterfaceReferenceEditManager((IASDObject) getModel());
+		
+		return refManager;
+	}
+
+	protected List getComboItems() {
+		ComponentReferenceEditManager manager = getComponentReferenceEditManager();
 		
 		List items = new ArrayList();
 		items.add(BROWSE_STRING);
 		items.add(NEW_STRING);
 
-		ComponentSpecification[] comboItems = refManager.getQuickPicks();
+		ComponentSpecification[] comboItems = manager.getQuickPicks();
 		for (int index = 0; index < comboItems.length; index++) {
 			items.add(comboItems[index]);
 		}
@@ -81,7 +176,8 @@
 		
 		if (item instanceof ComponentSpecification) {
 			spec = (ComponentSpecification) item;
-			refManager.modifyComponentReference((IBinding) getModel(), spec);
+			ComponentReferenceEditManager manager = getComponentReferenceEditManager();
+			manager.modifyComponentReference((IBinding) getModel(), spec);
 		}
 		else if (item instanceof String) {
 			if (item.equals(BROWSE_STRING)) {
@@ -104,4 +200,15 @@
 	private IBinding getIBinding() {
 		return (IBinding) getModel();
 	}
+	
+	public void widgetSelected(SelectionEvent e) {
+		if (e.widget == regenBindingButton) {
+			Command command = getIBinding().getGenerateBindingCommand();
+		    CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
+		    stack.execute(command);
+		}
+	}
+	
+	public void doWidgetSelected(SelectionEvent e) {
+	}	
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/DocumentationSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/DocumentationSection.java
index 70acdb1..a762c92 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/DocumentationSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/DocumentationSection.java
@@ -16,7 +16,16 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.wsdl.WSDLElement;
+import org.eclipse.wst.wsdl.ui.internal.actions.AddElementAction;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
+import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.AbstractModelCollection;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 
 public class DocumentationSection extends ASDAbstractSection {
 	Text docText;
@@ -26,88 +35,120 @@
 	 */
 	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
 	{
-	  super.createControls(parent, factory);
+		super.createControls(parent, factory);
 		composite =	getWidgetFactory().createFlatFormComposite(parent);
-		
+
 		docText = getWidgetFactory().createText(composite, "", SWT.MULTI | SWT.NONE | SWT.H_SCROLL | SWT.V_SCROLL); //$NON-NLS-1$
-		docText.addListener(SWT.Modify, this);
+		docText.addListener(SWT.KeyDown, this);
 		FormData data = new FormData();
 		data.left = new FormAttachment(0, 0);
 		data.right = new FormAttachment(100, 0);
 		data.top = new FormAttachment(0, 0);
 		data.bottom = new FormAttachment(100, 0);
 		docText.setLayoutData(data);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(docText, ASDEditorCSHelpIds.PROPERTIES_DOCUMENTATION_TAB);
 	}
 
 	/*
 	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
 	 */
+	/*
+	 * TODO: the doHandleEvent() and refresh() methods both use WSDL11 specific
+	 * knowledge.  This class (DocumentationSection) should be generic.  In Post 1.5,
+	 * we need to add documentation support methods to our facade so we don't need
+	 * to know WSDL specific implementation....... 
+	 */
 	public void refresh()
 	{
-    super.refresh();
-    if (docText.isFocusControl())
-    {
-      return;
-    }
-    setListenerEnabled(false);
-	  docText.setText(""); //$NON-NLS-1$
-	  if (getModel() != null)
-	  {
-//	    Element docNode = getElement().getDocumentationElement();
-//	    if (docNode != null)
-//	    {
-//        Node textNode = docNode.getFirstChild();
-//        if (textNode != null)
-//        {
-//          String docValue = textNode.getNodeValue();
-//          if (docValue != null)
-//          {
-//            docText.setText(docValue);
-//          }
-//        }
-//	    }
-	  }
-	  setListenerEnabled(true);
+		super.refresh();
+		if (docText.isFocusControl())
+		{
+			return;
+		}
+		setListenerEnabled(false);
+		docText.setText(""); //$NON-NLS-1$
+		if (getModel() != null && getElement() != null)
+		{
+			Element docNode = getElement().getDocumentationElement();
+			if (docNode != null)
+			{
+				Node textNode = docNode.getFirstChild();
+				if (textNode != null)
+				{
+					String docValue = textNode.getNodeValue();
+					if (docValue != null)
+					{
+						docText.setText(docValue);
+					}
+				}
+			}
+		}
+		setListenerEnabled(true);
 	}
-	
+
+	/*
+	 * TODO: the doHandleEvent() and refresh() methods both use WSDL11 specific
+	 * knowledge.  This class (DocumentationSection) should be generic.  In Post 1.5,
+	 * we need to add documentation support methods to our facade so we don't need
+	 * to know WSDL specific implementation....... 
+	 */
 	public void doHandleEvent(Event event)
 	{
-	  if (event.widget == docText)
-	  {
-//	    String value = docText.getText();
-	    if (getModel() != null)
-	    {
-//	      Element docNode = getElement().getDocumentationElement();
-//	      if (docNode != null)
-//	      {
-//          Node textNode = docNode.getFirstChild();
-//          if (textNode != null)
-//          {
-//            textNode.setNodeValue(value);
-//          }
-//          else
-//          {
-//            if (value.length() > 0)
-//            {
-//              Document document = docNode.getOwnerDocument();
-//              org.w3c.dom.Text newTextNode = document.createTextNode(value);
-//              docNode.appendChild(newTextNode);
-//            }
-//          }
-//	      }
-//	      else
-//	      {
-//	        Element element = getElement().getElement();
-//          AddElementAction action = new AddElementAction(element, element.getPrefix(), "documentation", element.getFirstChild()); //$NON-NLS-1$
-//          action.run();
-//          Element newDocumentation = action.getNewElement();
-//          
-//          Document document = newDocumentation.getOwnerDocument();
-//          org.w3c.dom.Text newTextNode = document.createTextNode(value);
-//          newDocumentation.appendChild(newTextNode);
-//          getElement().setDocumentationElement(newDocumentation);
-//	      }
-	    }
-	  }
+		if (event.widget == docText)
+		{
+			String value = docText.getText();
+			if (getModel() != null && getElement() != null)
+			{
+				Element docNode = getElement().getDocumentationElement();
+				if (docNode != null)
+				{
+					Node textNode = docNode.getFirstChild();
+					if (textNode != null)
+					{
+						textNode.setNodeValue(value);
+					}
+					else
+					{
+						if (value.length() > 0)
+						{
+							Document document = docNode.getOwnerDocument();
+							org.w3c.dom.Text newTextNode = document.createTextNode(value);
+							docNode.appendChild(newTextNode);
+						}
+					}
+				}
+				else
+				{
+					Element element = getElement().getElement();
+					AddElementAction action = new AddElementAction(element, element.getPrefix(), "documentation", element.getFirstChild()); //$NON-NLS-1$
+					action.run();
+					Element newDocumentation = action.getNewElement();
+
+					Document document = newDocumentation.getOwnerDocument();
+					org.w3c.dom.Text newTextNode = document.createTextNode(value);
+					newDocumentation.appendChild(newTextNode);
+					getElement().setDocumentationElement(newDocumentation);
+				}
+			}
+		}
 	}
-}
+
+	private WSDLElement getElement() {
+		WSDLElement element = null;
+		Object model = getModel();
+
+		if (model instanceof AbstractModelCollection) {
+			model = ((AbstractModelCollection) model).getModel();
+		}
+		
+		// TODO: Should we be handling the XML Schema case here as well?
+		if (model instanceof WSDLBaseAdapter) {
+			Object target = ((WSDLBaseAdapter) model).getTarget();
+			if (target instanceof WSDLElement) {
+				element = (WSDLElement) target;
+			}
+		}
+
+		return element;
+	}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/EndPointSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/EndPointSection.java
index 1cdc838..b88d8ed 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/EndPointSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/EndPointSection.java
@@ -14,7 +14,6 @@
 import java.util.List;
 
 import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.commands.CommandStack;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.layout.FormAttachment;
@@ -22,19 +21,20 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11EndPoint;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetExistingBindingAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDSetNewBindingAction;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IEndPoint;
-import org.eclipse.wst.wsdl.ui.internal.edit.W11BindingReferenceEditManager;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
 
 public class EndPointSection extends ReferenceSection {
@@ -54,7 +54,7 @@
 		FormData data;
 		
 		// Address row
-		CLabel addressLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_LABEL_ADDRESS") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		CLabel addressLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_ADDRESS + ":"); //$NON-NLS-1$ //$NON-NLS-2$
 		addressText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
 		
 		data = new FormData();
@@ -68,9 +68,10 @@
 		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
 		data.top = new FormAttachment(combo, +ITabbedPropertyConstants.VSPACE);
 		addressText.setLayoutData(data);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(addressText, ASDEditorCSHelpIds.PROPERTIES_PORT_ADDRESS_TEXT);
 
 		// Protocol Row
-		CLabel protocolLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_LABEL_BINDING_PROTOCOL") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		CLabel protocolLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_BINDING_PROTOCOL + ":"); //$NON-NLS-1$ //$NON-NLS-2$
 		protocolValueLabel = getWidgetFactory().createCLabel(composite, "----"); //$NON-NLS-1$
 		
 		data = new FormData();
@@ -85,24 +86,33 @@
 		data.top = new FormAttachment(addressText, +ITabbedPropertyConstants.VSPACE);
 		protocolValueLabel.setLayoutData(data);
 		protocolValueLabel.addListener(SWT.Modify, this);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(protocolValueLabel, ASDEditorCSHelpIds.PROPERTIES_PORT_PROTOCOL_TEXT);
 
-		comboLabel.setText(Messages.getString("_UI_LABEL_BINDING") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		comboLabel.setText(Messages._UI_LABEL_BINDING + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(combo, ASDEditorCSHelpIds.PROPERTIES_PORT_BINDING_COMBO);
 	}
 
 	/*
 	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
 	 */
 	public void refresh() {
-		addressText.removeListener(SWT.Modify, this);
+		removeListeners(addressText);
 
 		super.refresh();
 
 		IEndPoint endPoint = (IEndPoint) getModel();
 		if (endPoint.getAddress() != null) {
-			addressText.setText(endPoint.getAddress());
+			if (!endPoint.getAddress().equals(addressText.getText())) {
+				addressText.setText(endPoint.getAddress());
+			}
 		}
-		if (endPoint.getBinding() != null) {
-			String protocolValue = endPoint.getBinding().getProtocol();
+		// TODO: rmah: We should not know about W11EndPoint.  We need to for
+		// now to get access to the getProtocol() method.  Eventually the
+		// getProtocol() method should be defined in the IEndPoint interface
+		// post 1.5...
+		if (endPoint instanceof W11EndPoint) {
+			String protocolValue = ((W11EndPoint) endPoint).getProtocol();
 			if (protocolValue.equals("")) { //$NON-NLS-1$
 				protocolValue = "----"; //$NON-NLS-1$
 			}
@@ -111,22 +121,27 @@
 		
 		setControlForegroundColor(addressText);
 		setControlForegroundColor(protocolValueLabel);
-		addressText.addListener(SWT.Modify, this);
+		applyTextListeners(addressText);
 	}
 	
-	protected List getComboItems() {
-		if (refManager == null) {
-			IEditorPart editor = ASDEditorPlugin.getActiveEditor();
-			// TODO: rmah: We should not know about W11BindingReferenceEditManager here....  We should a better
-			// way to retrieve the appropriate Reference Manager
-			refManager = (ComponentReferenceEditManager) editor.getAdapter(W11BindingReferenceEditManager.class);
+	protected ComponentReferenceEditManager getComponentReferenceEditManager() {
+		if (refManager != null) {
+			return refManager;
 		}
+
+		refManager = ReferenceEditManagerHelper.getBindingReferenceEditManager((IASDObject) getModel()); 
+		
+		return refManager;
+	}
+
+	protected List getComboItems() {
+		ComponentReferenceEditManager manager = getComponentReferenceEditManager();
 		
 		List items = new ArrayList();
 		items.add(BROWSE_STRING);
 		items.add(NEW_STRING);
 
-		ComponentSpecification[] comboItems = refManager.getQuickPicks();
+		ComponentSpecification[] comboItems = manager.getQuickPicks();
 		for (int index = 0; index < comboItems.length; index++) {
 			items.add(comboItems[index]);
 		}
@@ -159,7 +174,8 @@
 		
 		if (item instanceof ComponentSpecification) {
 			spec = (ComponentSpecification) item;
-			refManager.modifyComponentReference((IEndPoint) getModel(), spec);
+			ComponentReferenceEditManager manager = getComponentReferenceEditManager();
+			manager.modifyComponentReference((IEndPoint) getModel(), spec);
 		}
 		else if (item instanceof String) {
 			if (item.equals(BROWSE_STRING)) {
@@ -186,18 +202,34 @@
 
   public void doHandleEvent(Event event)
   {
-	  super.doHandleEvent(event);
-
 	  if (event.widget == addressText && !addressText.isDisposed()) {
 		  String newAddress = addressText.getText();
 		  if (newAddress == null) {
 			  newAddress = ""; //$NON-NLS-1$
 		  }
 		  
+		  String oldAddress = getOldAddress();
+		  if (oldAddress.equals(newAddress))
+			  return;
+		  
 		  IEndPoint endPoint = (IEndPoint) getModel();
 		  Command command = endPoint.getSetAddressCommand(newAddress);
-		  CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
-		  stack.execute(command);
+		  executeCommand(command);
 	  }
+	  else {
+		  super.doHandleEvent(event);
+	  }
+  }
+
+  private String getOldAddress() {
+	  String value = null;
+	  if (getModel() instanceof W11EndPoint) {
+		  value = ((W11EndPoint) getModel()).getAddress();
+	  }
+
+	  if (value == null) {
+		  value = ""; //$NON-NLS-1$
+	  }
+	  return value;
   }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ImportSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ImportSection.java
index c523886..fef304f 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ImportSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ImportSection.java
@@ -10,6 +10,10 @@
  *******************************************************************************/
 package org.eclipse.wst.wsdl.ui.internal.asd.properties.sections;
 
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.events.SelectionEvent;
@@ -20,19 +24,31 @@
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.common.ui.internal.dialogs.SelectSingleFileDialog;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Import;
+import org.eclipse.wst.wsdl.internal.impl.ImportImpl;
 import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Import;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IImport;
+import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
+import org.eclipse.wst.wsdl.ui.internal.util.WSDLEditorUtil;
+import org.eclipse.emf.common.util.URI;
+import org.w3c.dom.Element;
 
 public class ImportSection extends ASDAbstractSection
 {
-  protected Text namespaceText, prefixText, locationText;
-  private String oldPrefixValue;
-  Button button;
-  IEditorPart editorPart;
-  
+	protected Text namespaceText, prefixText, locationText;
+	private String oldPrefixValue;
+	Button button;
+	// TODO: Remove: IEditorPart editorPart
+	IEditorPart editorPart;
+
 	/**
 	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
 	 */
@@ -41,7 +57,7 @@
 		super.createControls(parent, factory);
 		Composite composite = getWidgetFactory().createFlatFormComposite(parent);
 		FormData data;
-		
+
 		namespaceText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
 		namespaceText.setEditable(false);
 //		namespaceText.addListener(SWT.Modify, this);
@@ -50,51 +66,51 @@
 		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
 		data.top = new FormAttachment(0, 0);
 		namespaceText.setLayoutData(data);
-		
-		CLabel namespaceLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_LABEL_NAMESPACE")); //$NON-NLS-1$
+
+		CLabel namespaceLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_NAMESPACE); //$NON-NLS-1$
 		data = new FormData();
 		data.left = new FormAttachment(0, 0);
 		data.right = new FormAttachment(namespaceText, -ITabbedPropertyConstants.HSPACE);
 		data.top = new FormAttachment(namespaceText, 0, SWT.CENTER);
 		namespaceLabel.setLayoutData(data);
-		
+
 		prefixText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
 //		prefixText.setEditable(false);
-		prefixText.addListener(SWT.Modify, this);
+		applyTextListeners(prefixText);
 		data = new FormData();
 		data.left = new FormAttachment(0, 100);
 		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
 		data.top = new FormAttachment(namespaceText, +ITabbedPropertyConstants.VSPACE);
 		prefixText.setLayoutData(data);
-		
-		CLabel prefixLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_LABEL_PREFIX")); //$NON-NLS-1$
+
+		CLabel prefixLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_PREFIX); //$NON-NLS-1$
 		data = new FormData();
 		data.left = new FormAttachment(0, 0);
 		data.right = new FormAttachment(prefixText, -ITabbedPropertyConstants.HSPACE);
 		data.top = new FormAttachment(prefixText, 0, SWT.CENTER);
 		prefixLabel.setLayoutData(data);
-		
+
 		locationText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
 		locationText.setEditable(false);
 //		locationText.addListener(SWT.Modify, this);
-		
-		CLabel locationLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_LABEL_LOCATION")); //$NON-NLS-1$
+
+		CLabel locationLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_LOCATION); //$NON-NLS-1$
 		data = new FormData();
 		data.left = new FormAttachment(0, 0);
 		data.right = new FormAttachment(locationText, -ITabbedPropertyConstants.HSPACE);
 		data.top = new FormAttachment(locationText, 0, SWT.CENTER);
 		locationLabel.setLayoutData(data);
-		
+
 		button = getWidgetFactory().createButton(composite, "", SWT.PUSH); //$NON-NLS-1$
 		button.setImage(WSDLEditorPlugin.getInstance().getImage("icons/browsebutton.gif")); //$NON-NLS-1$
-		
+
 		button.addSelectionListener(this);
 		data = new FormData();
 		data.left = new FormAttachment(100, -rightMarginSpace + 2);
 		data.right = new FormAttachment(100,0);
 		data.top = new FormAttachment(locationText, 0, SWT.CENTER);
 		button.setLayoutData(data);
-		
+
 		data = new FormData();
 		data.left = new FormAttachment(0, 100);
 		data.right = new FormAttachment(button, 0);
@@ -124,7 +140,7 @@
 		{
 			refreshNamespaceText = false;
 		}
-		
+
 		if (refreshPrefixText)
 		{
 			prefixText.setText(""); //$NON-NLS-1$
@@ -145,13 +161,13 @@
 				String locationValue = theImport.getLocation(); 
 				locationText.setText(locationValue != null ? locationValue : ""); //$NON-NLS-1$
 			}
-			
+
 			String namespaceValue = theImport.getNamespace();
 			if (refreshNamespaceText)
 			{
 				namespaceText.setText(namespaceValue != null ? namespaceValue : ""); //$NON-NLS-1$
 			}
-			
+
 			if (refreshPrefixText)
 			{
 				String prefix = theImport.getNamespacePrefix();
@@ -161,135 +177,134 @@
 		oldPrefixValue = prefixText.getText();
 		setListenerEnabled(true);
 	}
-	
+
 	public void doHandleEvent(Event event) {
-		if (event.widget == prefixText && locationText.getText().length() > 0 && namespaceText.getText().length() > 0) {
-			/*
-	    	Object input = getElement();
-	        Import importObj = (Import)input;
-//	        org.w3c.dom.Element importElement = WSDLEditorUtil.getInstance().getElementForObject(importObj);
-	        Map namespacesMap = importObj.getEnclosingDefinition().getNamespaces();
+		// TODO: We have some WSDL11 Impl specific knowledge below... We should try to remove this...
+		if (event.widget == prefixText && locationText.getText().length() > 0 && namespaceText.getText().length() > 0 && getModel() instanceof W11Import) {
+			if (oldPrefixValue.equals(prefixText.getText()))
+			  return;
+			
+			W11Import w11Import = (W11Import) getModel();
+			Import importObj = (Import) w11Import.getTarget();
+//			org.w3c.dom.Element importElement = WSDLEditorUtil.getInstance().getElementForObject(importObj);
+			Map namespacesMap = importObj.getEnclosingDefinition().getNamespaces();
 
-	        if (namespacesMap.containsKey(prefixText.getText())) {
-	        	// We should add error messages.........
-	 //           setErrorMessage(XSDEditorPlugin.getXSDString("_ERROR_LABEL_PREFIX_EXISTS"));
-	        }
-	        else {
-	            Element definitionElement = importObj.getEnclosingDefinition().getElement();
-	            definitionElement.removeAttribute("xmlns:"+oldPrefixValue);
-	            definitionElement.setAttribute("xmlns:" + prefixText.getText(), namespaceText.getText());
+			if (namespacesMap.containsKey(prefixText.getText())) {
+				// We should add error messages.........
+				//           setErrorMessage(XSDEditorPlugin.getXSDString("_ERROR_LABEL_PREFIX_EXISTS"));
+			}
+			else {
+				Element definitionElement = importObj.getEnclosingDefinition().getElement();
+				definitionElement.removeAttribute("xmlns:"+oldPrefixValue);
+				definitionElement.setAttribute("xmlns:" + prefixText.getText(), namespaceText.getText());
 
-//	            clearErrorMessage();
-	            oldPrefixValue = prefixText.getText();
-	        }
-			 */
+//				clearErrorMessage();
+				oldPrefixValue = prefixText.getText();
+			}
 		}
 	}
-	
+
 	public void widgetSelected(SelectionEvent e)
 	{
-		if (e.widget == button)
+		// TODO: We have some WSDL11 Impl specific knowledge below... We should try to remove this...
+		if (e.widget == button && getModel() instanceof W11Import)
 		{
-			/*
-		  Object input = getElement();
-		  
-		  WSDLEditor editor = (WSDLEditor)editorPart;
-		  IFile currentWSDLFile = ((IFileEditorInput)editor.getEditorInput()).getFile();
-		  
-		  SelectSingleFileDialog dialog = new SelectSingleFileDialog(WSDLEditorPlugin.getShell(), null, true);
-		  String [] filters = { "xsd", "wsdl" }; //$NON-NLS-1$
-		  IFile [] excludedFiles = { currentWSDLFile };
-		  
-		  dialog.addFilterExtensions(filters, excludedFiles);
-		  dialog.create();
-		  dialog.getShell().setText(WSDLEditorPlugin.getWSDLString("_UI_TITLE_SELECT")); //$NON-NLS-1$
-		  dialog.setTitle(WSDLEditorPlugin.getWSDLString("_UI_TITLE_SELECT_FILE")); //$NON-NLS-1$
-		  dialog.setMessage(WSDLEditorPlugin.getWSDLString("_UI_DESCRIPTION_SELECT_WSDL_OR_XSD")); //$NON-NLS-1$
-		  int rc = dialog.open();
-		  if (rc == IDialogConstants.OK_ID)
-		  {
-			  IFile selectedFile = dialog.getFile();
-			  
-			  //if (selectedFile.getLocation().toOSString().equals(currentWSDLFile.getLocation().toOSString()))
-			  //{
-			  //  System.out.println("SAME FILE:" + currentWSDLFile.getLocation());
-			  //}
-			  
-			  String location = ComponentReferenceUtil.computeRelativeURI(selectedFile, currentWSDLFile, true);
-			  
-			  Import importObj = (Import)input;
-			  org.w3c.dom.Element importElement = WSDLEditorUtil.getInstance().getElementForObject(importObj);
-			  Definition definition = importObj.getEnclosingDefinition();
-			  org.w3c.dom.Element definitionElement = WSDLEditorUtil.getInstance().getElementForObject(definition);
-			  
-			  String importTargetNamespace = ""; //$NON-NLS-1$
-			  String prefix = prefixText.getText();
-			  String uniquePrefix = ""; //$NON-NLS-1$
-			  
-			  URI uri = URI.createPlatformResourceURI(selectedFile.getFullPath().toString());      
-			  
-			  // note that the getTargetNamespaceURIForSchema works for both schema and wsdl files
-			  // I should change the name of this convenience method
-			  importTargetNamespace =  XMLQuickScan.getTargetNamespaceURIForSchema(uri.toString());
-			  
-			  if (prefix.trim().equals("")) //$NON-NLS-1$
-			  {
-				  uniquePrefix = getUniquePrefix(definition, uri.fileExtension());
-			  }
-			  else
-			  {
-				  uniquePrefix = prefix; 
-			  }
-			  
-			  
-			  if (importTargetNamespace == null ||
-					  (importTargetNamespace != null && importTargetNamespace.trim().length() == 0))
-			  {
-				  return;  // what to do with no namespace docs?
-			  }
-			  
-			  importObj.setLocationURI(location);
-			  importObj.setNamespaceURI(importTargetNamespace);
-			  ((ImportImpl) importObj).importDefinitionOrSchema();
-			  
-			  definitionElement.setAttribute("xmlns:" + uniquePrefix, importTargetNamespace); //$NON-NLS-1$
-			  
-			  namespaceText.setText(importTargetNamespace);
-			  locationText.setText(location);
-			  prefixText.setText(uniquePrefix);
-		  }
-			 */
+			W11Import w11Import = (W11Import) getModel();
+
+			IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+			IFile currentWSDLFile = ((IFileEditorInput) editor.getEditorInput()).getFile();
+
+			SelectSingleFileDialog dialog = new SelectSingleFileDialog(WSDLEditorPlugin.getShell(), null, true);
+			String [] filters = { "xsd", "wsdl" }; //$NON-NLS-1$
+			IFile [] excludedFiles = { currentWSDLFile };
+
+			dialog.addFilterExtensions(filters, excludedFiles);
+			dialog.create();
+			dialog.getShell().setText(org.eclipse.wst.wsdl.ui.internal.Messages._UI_TITLE_SELECT); //$NON-NLS-1$
+			dialog.setTitle(org.eclipse.wst.wsdl.ui.internal.Messages._UI_TITLE_SELECT_FILE); //$NON-NLS-1$
+			dialog.setMessage(org.eclipse.wst.wsdl.ui.internal.Messages._UI_DESCRIPTION_SELECT_WSDL_OR_XSD); //$NON-NLS-1$
+			int rc = dialog.open();
+			if (rc == IDialogConstants.OK_ID)
+			{
+				IFile selectedFile = dialog.getFile();
+
+				//if (selectedFile.getLocation().toOSString().equals(currentWSDLFile.getLocation().toOSString()))
+				//{
+				//  System.out.println("SAME FILE:" + currentWSDLFile.getLocation());
+				//}
+
+				String location = ComponentReferenceUtil.computeRelativeURI(selectedFile, currentWSDLFile, true);
+
+				Import importObj = (Import) w11Import.getTarget();
+				org.w3c.dom.Element importElement = WSDLEditorUtil.getInstance().getElementForObject(importObj);
+				Definition definition = importObj.getEnclosingDefinition();
+				org.w3c.dom.Element definitionElement = WSDLEditorUtil.getInstance().getElementForObject(definition);
+
+				String importTargetNamespace = ""; //$NON-NLS-1$
+				String prefix = prefixText.getText();
+				String uniquePrefix = ""; //$NON-NLS-1$
+
+				URI uri = URI.createPlatformResourceURI(selectedFile.getFullPath().toString());      
+
+				// note that the getTargetNamespaceURIForSchema works for both schema and wsdl files
+				// I should change the name of this convenience method
+				importTargetNamespace =  WSDLEditorUtil.getTargetNamespaceURIForSchema(uri.toString());
+
+				if (prefix.trim().equals("")) //$NON-NLS-1$
+				{
+					uniquePrefix = getUniquePrefix(definition, uri.fileExtension());
+				}
+				else
+				{
+					uniquePrefix = prefix; 
+				}
+
+
+				if (importTargetNamespace == null ||
+						(importTargetNamespace != null && importTargetNamespace.trim().length() == 0))
+				{
+					return;  // what to do with no namespace docs?
+				}
+
+				importObj.setLocationURI(location);
+				importObj.setNamespaceURI(importTargetNamespace);
+				((ImportImpl) importObj).importDefinitionOrSchema();
+
+				definitionElement.setAttribute("xmlns:" + uniquePrefix, importTargetNamespace); //$NON-NLS-1$
+
+				namespaceText.setText(importTargetNamespace);
+				locationText.setText(location);
+				prefixText.setText(uniquePrefix);
+			}
 			refresh();
 		}
 	}
-	
-	/*
-  private String getUniquePrefix(Definition definition, String initPrefix)
-  {
-    String uniquePrefix;
-    Map map = definition.getNamespaces();
 
-    if (definition.getNamespace(initPrefix) == null)
-    {
-      uniquePrefix = initPrefix;
-    }
-    else // if used, then try to create a unique one
-    {
-      String tempPrefix = initPrefix;
-      int i = 1;
-      while(map.containsKey(tempPrefix + i))
-      {
-        i++;
-      }
-      uniquePrefix = tempPrefix + i;
-    }
-    return uniquePrefix;    
-  } 
-	 */
-	
+	private String getUniquePrefix(Definition definition, String initPrefix)
+	{
+		String uniquePrefix;
+		Map map = definition.getNamespaces();
+
+		if (definition.getNamespace(initPrefix) == null)
+		{
+			uniquePrefix = initPrefix;
+		}
+		else // if used, then try to create a unique one
+		{
+			String tempPrefix = initPrefix;
+			int i = 1;
+			while(map.containsKey(tempPrefix + i))
+			{
+				i++;
+			}
+			uniquePrefix = tempPrefix + i;
+		}
+		return uniquePrefix;    
+	}
+
+	// TODO: Remove metod setEditorPart() below
 	public void setEditorPart(IEditorPart editorPart)
 	{
 		this.editorPart = editorPart;
 	}
-
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/NameSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/NameSection.java
index 301354f..ffaa41f 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/NameSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/NameSection.java
@@ -12,7 +12,7 @@
 
 import org.eclipse.gef.EditPart;
 import org.eclipse.gef.commands.Command;
-import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.layout.FormAttachment;
@@ -20,15 +20,31 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.events.IHyperlinkListener;
+import org.eclipse.ui.forms.widgets.ImageHyperlink;
 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.ui.internal.ISelectionMapper;
+import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IBinding;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IInterface;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessage;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.INamedObject;
+import org.eclipse.wst.wsdl.ui.internal.refactor.actions.RenameComponentAction;
 
-public class NameSection extends ASDAbstractSection {
+public class NameSection extends ASDAbstractSection implements IHyperlinkListener {
 	CLabel nameLabel;
 	protected Text nameText;
+  /**
+   * Clicking on it invokes the refactor->rename action.
+   */
+  protected ImageHyperlink renameHyperlink;
 	
 	/**
 	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySection#createControls(org.eclipse.swt.widgets.Composite, org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetWidgetFactory)
@@ -36,37 +52,84 @@
 	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
 	{
 		super.createControls(parent, factory);
+
 		composite =	getWidgetFactory().createFlatFormComposite(parent);
 		
 		FormData data;		
+    
 		nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
 		data = new FormData();
 		data.left = new FormAttachment(0, 100);
-		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
+		data.right = new FormAttachment(100, -rightMarginSpace);
 		data.top = new FormAttachment(0, 0);
 		nameText.setLayoutData(data);
-		
-		nameLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_LABEL_NAME") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(nameText, ASDEditorCSHelpIds.PROPERTIES_NAME_TEXT);
+
+		nameLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_NAME + ":"); //$NON-NLS-1$ //$NON-NLS-2$
 		data = new FormData();
 		data.left = new FormAttachment(0, 0);
 		data.right = new FormAttachment(nameText, -ITabbedPropertyConstants.HSPACE);
 		data.top = new FormAttachment(nameText, 0, SWT.CENTER);
 		nameLabel.setLayoutData(data);
-		nameText.addListener(SWT.Modify, this);
+		applyTextListeners(nameText);
 	}
 	
+  private void showRefactorButton() {
+    if (isReadOnly) {
+      return;
+    }
+      
+    if (renameHyperlink == null) {
+      renameHyperlink = getWidgetFactory().createImageHyperlink(composite, SWT.NONE);
+
+      renameHyperlink.setImage(WSDLEditorPlugin.getInstance().getImage("icons/quickassist.gif")); //$NON-NLS-1$
+      renameHyperlink.setToolTipText(Messages._UI_TOOLTIP_RENAME_REFACTOR);
+      renameHyperlink.addHyperlinkListener(this);
+    }
+
+    FormData data = new FormData();
+    data.right = new FormAttachment(100, -rightMarginSpace);
+    data.top = new FormAttachment(0, 0);
+    renameHyperlink.setLayoutData(data);
+    
+    data = (FormData) nameText.getLayoutData(); 
+    FormAttachment right = data.right;
+    right.control = renameHyperlink;
+    right.offset = -ITabbedPropertyConstants.HSPACE;
+    right.alignment = SWT.LEFT;
+    data.top = new FormAttachment(renameHyperlink, 0, SWT.CENTER);
+    renameHyperlink.setVisible(true);
+  }
+  
+  private void hideRefactorButton() {
+    if (isReadOnly) {
+      return;
+    }
+
+    if (renameHyperlink == null) {
+      return;
+    }
+    FormData data = (FormData) nameText.getLayoutData();
+    FormAttachment right = data.right;
+    right.control = null;
+    right.numerator = 100;
+    right.offset = -rightMarginSpace; 
+    data.top = new FormAttachment(0, 0);
+    renameHyperlink.setVisible(false);
+  }
+  
+  
 	/*
 	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
 	 */
 	public void refresh() {
 		super.refresh();
-		if (nameText.isFocusControl()) {
+		if (nameText.isDisposed() || nameText.isFocusControl()) {
 			return;
 		}
 		
 		setListenerEnabled(false);
-		nameText.setText(""); //$NON-NLS-1$
-		String name = ""; //$NON-NLS-1$
+		String name = null;
 		if (getModel() instanceof INamedObject) {
 			name = ((INamedObject) getModel()).getName();
 		}
@@ -75,9 +138,20 @@
 			name = ((INamedObject) model).getName();
 		}
 		
+		if (name == null) {
+			name = ""; //$NON-NLS-1$
+		}
+		
 		nameText.setText(name);
 		setControlForegroundColor(nameText);
-		setListenerEnabled(true);
+    
+    if (canRefactor()) {
+      showRefactorButton();
+    }
+    else {
+      hideRefactorButton();
+    }
+    setListenerEnabled(true);
 	}
 	
 	public boolean shouldUseExtraSpace()
@@ -97,10 +171,73 @@
 			}
 			
 			if (namedObject != null) {
-				Command command = namedObject.getSetNameCommand(newValue);
-				CommandStack stack = (CommandStack) ASDEditorPlugin.getActiveEditor().getAdapter(CommandStack.class);
-				stack.execute(command);
+				if ( !newValue.equals( namedObject.getName() ) ){
+				  Command command = namedObject.getSetNameCommand(newValue);
+				  executeCommand(command);
+				}
 			}
 		}
 	}
+  
+  private void invokeRenameRefactoring() {
+    IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+    Definition definition = (Definition)editor.getAdapter(Definition.class);
+    ISelection selection = editor.getSite().getSelectionProvider().getSelection();
+    ISelectionMapper mapper = (ISelectionMapper) editor.getAdapter(ISelectionMapper.class);
+    selection = mapper != null ? mapper.mapSelection(selection) : selection;
+    RenameComponentAction action = new RenameComponentAction(selection, definition);
+    action.update(selection);
+    action.run();
+  }
+
+  private Object getRealModel() {
+    Object realModel = getModel();
+    
+    if (realModel instanceof EditPart) {
+      realModel = ((EditPart) getModel()).getModel();
+    }
+    
+    return realModel;
+  }
+
+  /**
+   * Determines if the model object's name can be refactored.
+   * @return true if the model object can be refactored, false otherwise.
+   */
+  private boolean canRefactor() {
+    Object model = getRealModel();
+
+    boolean canRefactor = model instanceof IMessage || 
+                          model instanceof IBinding || 
+                          model instanceof IInterface;
+    return canRefactor;
+  }
+  
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.forms.events.IHyperlinkListener#linkActivated(org.eclipse.ui.forms.events.HyperlinkEvent)
+   */
+  public void linkActivated(HyperlinkEvent e)
+  {
+    invokeRenameRefactoring();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.forms.events.IHyperlinkListener#linkEntered(org.eclipse.ui.forms.events.HyperlinkEvent)
+   */
+  public void linkEntered(HyperlinkEvent e)
+  {
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.ui.forms.events.IHyperlinkListener#linkExited(org.eclipse.ui.forms.events.HyperlinkEvent)
+   */
+  public void linkExited(HyperlinkEvent e)
+  {
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/NamespaceSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/NamespaceSection.java
index bfca33e..2fcc05c 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/NamespaceSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/NamespaceSection.java
@@ -12,6 +12,7 @@
 
 import java.util.List;
 
+import org.eclipse.gef.commands.Command;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.events.SelectionEvent;
@@ -22,11 +23,18 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Description;
+import org.eclipse.wst.wsdl.ui.internal.adapters.commands.W11EditNamespacesCommand;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.actions.ASDEditNamespacesAction;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.model.AbstractModelCollection;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IDescription;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.INamedObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.outline.ICategoryAdapter;
 import org.eclipse.wst.xml.ui.internal.nsedit.CommonEditNamespacesTargetFieldDialog;
 import org.eclipse.wst.xml.ui.internal.nsedit.CommonNamespaceInfoTable;
@@ -51,9 +59,9 @@
 		super.createControls(parent, factory);
 		composite =	getWidgetFactory().createFlatFormComposite(parent);
 		
-		String nameString = Messages.getString("_UI_LABEL_NAME") + ":"; //$NON-NLS-1$ //$NON-NLS-2$
-		String prefixString = Messages.getString("_UI_LABEL_PREFIX") + ":"; //$NON-NLS-1$ //$NON-NLS-2$
-		String namespaceString = Messages.getString("_UI_LABEL_TARGET_NAMESPACE"); //$NON-NLS-1$
+		String nameString = Messages._UI_LABEL_NAME + ":"; //$NON-NLS-1$ //$NON-NLS-2$
+		String prefixString = Messages._UI_LABEL_PREFIX + ":"; //$NON-NLS-1$ //$NON-NLS-2$
+		String namespaceString = Messages._UI_LABEL_TARGET_NAMESPACE; //$NON-NLS-1$
 		GC gc = new GC(parent);
 		int xoffset = Math.max(115, gc.textExtent(nameString).x + 20); // adds 20 due to borders
 		xoffset = Math.max(xoffset, gc.textExtent(prefixString).x + 20); // adds 20 due to borders
@@ -63,17 +71,20 @@
 		// name
 		CLabel nameLabel = getWidgetFactory().createCLabel(composite, nameString); //$NON-NLS-1$
 		nameText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(nameText, ASDEditorCSHelpIds.PROPERTIES_NAME_TEXT);
 		
 		// prefix
 		CLabel prefixLabel = getWidgetFactory().createCLabel(composite, prefixString); //$NON-NLS-1$
 		prefixText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(prefixText, ASDEditorCSHelpIds.PROPERTIES_DEF_PREFIX_TEXT);
 		
 		// targetnamespace
 		CLabel targetNamespaceLabel = getWidgetFactory().createCLabel(composite, namespaceString); //$NON-NLS-1$
 		targetNamespaceText = getWidgetFactory().createText(composite, ""); //$NON-NLS-1$
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(targetNamespaceText, ASDEditorCSHelpIds.PROPERTIES_DEF_TNS_TEXT);
 		
 		// Advanced button
-		button = getWidgetFactory().createButton(composite, Messages.getString("_UI_SECTION_ADVANCED_ATTRIBUTES") + "...", SWT.PUSH); //$NON-NLS-1$ //$NON-NLS-2$
+		button = getWidgetFactory().createButton(composite, Messages._UI_SECTION_ADVANCED_ATTRIBUTES + "...", SWT.PUSH); //$NON-NLS-1$ //$NON-NLS-2$
 		
 		
 		///////////////////// Labels
@@ -103,7 +114,7 @@
 		dataNameText.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
 		dataNameText.top = new FormAttachment(0, 0);
 		nameText.setLayoutData(dataNameText);
-		nameText.addListener(SWT.Modify, this);
+		applyTextListeners(nameText);
 		
 		// prefix text field
 		FormData dataPrefixText = new FormData();
@@ -111,7 +122,7 @@
 		dataPrefixText.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
 		dataPrefixText.top = new FormAttachment(nameText, +ITabbedPropertyConstants.VSPACE);
 		prefixText.setLayoutData(dataPrefixText);
-		prefixText.addListener(SWT.Modify, this);
+		applyTextListeners(prefixText);
 		
 		// targetnamespace text field
 		FormData data = new FormData();
@@ -119,7 +130,7 @@
 		data.right = new FormAttachment(100, -rightMarginSpace - ITabbedPropertyConstants.HSPACE);
 		data.top = new FormAttachment(prefixText, +ITabbedPropertyConstants.VSPACE);
 		targetNamespaceText.setLayoutData(data);
-		targetNamespaceText.addListener(SWT.Modify, this);
+		applyTextListeners(targetNamespaceText);
 		
 		// Advanced button layout
 		FormData dataButton = new FormData();
@@ -134,45 +145,37 @@
 	public void doHandleEvent(Event event)
 	{
 		handlingEvent = true;
-		/*
-		  if (event.widget == nameText) {
-		  	Object obj = getElement();
-		  	if (obj instanceof Definition) {
-		  		Definition definition = (Definition) obj;
-		  		String uri = "";
-		  		if (definition.getQName() != null) {
-		  			uri = definition.getQName().getNamespaceURI();
-		  		}
-		  		definition.setQName(new QName(uri, nameText.getText()));
-		  	}
-		  }
-		  else if (event.widget == prefixText) {
-		  	Object obj = getElement();
-		  	if (obj instanceof Definition) {
-		  		Definition definition = (Definition) obj;
-		  		Element element = definition.getElement();
-		  		
-		  		// Remove the old prefix
-		  		String oldPrefix = definition.getPrefix(definition.getTargetNamespace());
-		  		element.removeAttribute("xmlns:"+oldPrefix); 
-		  		
-		  		// Set the new prefix
-		  	  	element.setAttribute("xmlns:" + prefixText.getText(), definition.getTargetNamespace());
-		  	}
-		  }
-		  else if (event.widget == targetNamespaceText)
-		  {
-			  Object obj = getElement();
-			  if (obj instanceof Definition)
-			  {
-			    Definition definition = (Definition)obj;
-			    String newValue = targetNamespaceText.getText();
-			    String prefix = definition.getPrefix(definition.getTargetNamespace());
-			    definition.setTargetNamespace(newValue);
-			    definition.getElement().setAttribute("xmlns:" + prefix, newValue);
-			  }
-		  }
-		 */
+		Object obj = getDescription();
+		if (obj instanceof IDescription) {
+			IDescription description = (IDescription) obj;
+
+			if (event.widget == nameText) {
+				String newName = nameText.getText();
+				if (!newName.equals(description.getName())) {
+					Command command = description.getSetNameCommand(newName);
+					executeCommand(command);
+				}
+			}
+			else if (event.widget == prefixText || event.widget == targetNamespaceText) {
+				String newTargetNS = targetNamespaceText.getText();				
+				String newPrefix = prefixText.getText();
+				
+				boolean targetNSdiff = !newTargetNS.equals(description.getTargetNamespace());
+				boolean prefixDiff = !newPrefix.equals(description.getTargetNamespacePrefix());
+				if (targetNSdiff || prefixDiff ) {
+					// TODO: The code below is not generic.  We need to revisit this to ensure it is
+					// generic.  IDescription needs a getNamespacesInfo() and getEditNamespacesCommand()...
+					W11EditNamespacesCommand command = 
+						(W11EditNamespacesCommand) ((W11Description) description).getEditNamespacesCommand();
+					if (targetNSdiff)
+					  command.setTargetNamespace(newTargetNS);
+					if (prefixDiff)
+					  command.setTargetNamespacePrefix(newPrefix);
+					executeCommand(command);
+				}
+			}
+		}
+
 		handlingEvent = false;		
 	}
 	
@@ -187,7 +190,7 @@
 		else if (model instanceof ICategoryAdapter) {
 			return ((ICategoryAdapter) model).getOwnerDescription();
 		}
-		
+
 		return model;
 	}
 	/*
@@ -197,66 +200,45 @@
 	{
 		super.refresh();
 		
+		// Set nameText
+		if (nameText == null || nameText.isFocusControl()) {
+			return;
+		}
+		setListenerEnabled(false);
+		nameText.setText(""); //$NON-NLS-1$
+		if (getDescription() instanceof INamedObject) {
+			nameText.setText(((INamedObject) getDescription()).getName());
+		}		
+		setListenerEnabled(true);
+		
+		
+		// Set targetNamespaceText and prefixText
 		if (targetNamespaceText == null || targetNamespaceText.isFocusControl() || handlingEvent)
 		{
 			return;
 		}
-		setListenerEnabled(false);  
+		setListenerEnabled(false);
 		Object obj = getDescription();
 		if (obj instanceof IDescription)
 		{
 			IDescription description = (IDescription) obj;
 			String targetNS = description.getTargetNamespace();
-			String newPrefix = description.getTargetNamespacePrefix();
-			prefixText.setText(newPrefix);
+			String newPrefix = description.getTargetNamespacePrefix();            
+			prefixText.setText(newPrefix != null ? newPrefix : "");
 			
 			// set targetnamespace field and prefix field
 			if (targetNS != null)
 			{
 				targetNamespaceText.setText(targetNS);
-				
-				/*
-		    	Element element = definition.getElement();
-
-	        String newPrefix = definition.getPrefix(targetNS);
-	        if (newPrefix == null) newPrefix = "";
-	        // TODO: remove this code
-	        if (element != null)
-	        {
-	  	    	for (int index = 0; index < element.getAttributes().getLength(); index++) {
-	  	    		AttrImpl attr = (AttrImpl) element.getAttributes().item(index);
-	  	    		String nodeName = attr.getNodeName();
-	  	    		String nsValue = attr.getNodeValue();
-	  	    		if (nsValue.equals(targetNS)) {
-	  	    			if (nodeName.indexOf(":") != -1) {
-	  	    				String xmlnsString = nodeName.substring(0, nodeName.indexOf(":"));
-	  	    				
-	  	    				if (xmlnsString.equals("xmlns")) {
-	  	    	    			newPrefix = attr.getLocalName();
-	  	    	    			break;
-	  	    				}
-	  	    			}
-	  	    		}
-	  	    	}
-	        }
-		    	prefixText.setText(newPrefix);
-				 */
 			}
-			
-			
-			
-			// set name field
-			nameText.setText(description.getName());
-			
-//			if (getElement() != null)
-//			{
-//			if (getElement().getElement()!= null)
-//			{
-//			String name = getElement().getElement().getAttribute("name"); //$NON-NLS-1$
-//			if (name==null) name="";
-//			nameText.setText(name);
-//			}
-//			}
+      else
+      {
+        targetNamespaceText.setText("");
+      }
+			if (newPrefix != null)
+			{
+				prefixText.setText(newPrefix);
+			}
 		}
 		setListenerEnabled(true);
 	}
@@ -264,18 +246,14 @@
 	
 	public void widgetSelected(SelectionEvent e)
 	{
-		if (e.widget == button)
-		{
-			/*
-	      Object obj = getElement();
-	      if (obj instanceof Definition)
-	      {
-	        Definition definition = (Definition)obj;
-	        EditNamespacesAction action = new EditNamespacesAction(definition);
-	      	action.run();
-	        refresh();
-	      }
-			 */
+		if (e.widget == button)	{
+			Object obj = getDescription();
+			if (obj instanceof IDescription) {
+				IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
+				ASDEditNamespacesAction action = new ASDEditNamespacesAction(part, (IDescription) obj);
+				action.run();
+				refresh();
+	        }
 		}
 	}
 }
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ParameterSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ParameterSection.java
index de4bb1b..77384c0 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ParameterSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ParameterSection.java
@@ -18,22 +18,24 @@
 import org.eclipse.swt.layout.FormData;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
 import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
 import org.eclipse.wst.common.ui.internal.search.dialogs.ComponentSpecification;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorPlugin;
-import org.eclipse.wst.wsdl.ui.internal.asd.ASDMultiPageEditor;
+import org.eclipse.wst.wsdl.ui.internal.asd.ASDEditorCSHelpIds;
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
+import org.eclipse.wst.wsdl.ui.internal.asd.facade.IASDObject;
 import org.eclipse.wst.wsdl.ui.internal.asd.facade.IParameter;
+import org.eclipse.wst.wsdl.ui.internal.util.ReferenceEditManagerHelper;
 import org.eclipse.wst.xsd.ui.internal.adt.edit.ComponentReferenceEditManager;
-import org.eclipse.wst.xsd.ui.internal.editor.XSDTypeReferenceEditManager;
 
 public class ParameterSection extends NameSection {
-	protected static String NEW_STRING = Messages.getString("_UI_BUTTON_NEW"); //$NON-NLS-1$
-	protected static String BROWSE_STRING = Messages.getString("_UI_BUTTON_BROWSE"); //$NON-NLS-1$
+	protected static String NEW_STRING = Messages._UI_BUTTON_NEW; //$NON-NLS-1$
+	protected static String BROWSE_STRING = Messages._UI_BUTTON_BROWSE; //$NON-NLS-1$
 	protected CLabel comboLabel; 
 	protected CCombo combo;
 	protected boolean handleTypeScenario = true;
+	protected ComponentReferenceEditManager parameterRefManager;
 	
 	public void createControls(Composite parent, TabbedPropertySheetWidgetFactory factory)
 	{
@@ -50,7 +52,7 @@
 		combo.addListener(SWT.Modify, this);
 		combo.addSelectionListener(this);
 		
-		comboLabel = getWidgetFactory().createCLabel(composite, Messages.getString("_UI_LABEL_TYPE") + ":"); //$NON-NLS-1$ //$NON-NLS-2$
+		comboLabel = getWidgetFactory().createCLabel(composite, Messages._UI_LABEL_TYPE + ":"); //$NON-NLS-1$ //$NON-NLS-2$
 		data = new FormData();
 		data.left = new FormAttachment(0, 0);
 		data.right = new FormAttachment(combo, -ITabbedPropertyConstants.HSPACE);
@@ -83,12 +85,19 @@
 		if (nameText.isFocusControl()) {
 			return;
 		}
+		
+		setListenerEnabled(false);
+		
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(combo, ASDEditorCSHelpIds.PROPERTIES_PART_ELEMENT_COMBO);
 
 		if (handleTypeScenario) {
 			refreshCombo();
+			PlatformUI.getWorkbench().getHelpSystem().setHelp(combo, ASDEditorCSHelpIds.PROPERTIES_PART_TYPE_COMBO);
 		}
 		
 		setControlForegroundColor(combo);
+		
+		setListenerEnabled(true);
 	}
 	
 	protected void refreshCombo() {
@@ -107,7 +116,9 @@
 			typeName = param.getComponentName();
 		}
 		
-		nameText.setText(name);
+		if (!nameText.isFocusControl()) {
+			nameText.setText(name);
+		}
 		
 		// Populate the type Combo
 		combo.removeAll();
@@ -120,6 +131,11 @@
 			for (int index = 0; index < specs.length; index++) {
 				combo.add((String) specs[index].getName());
 			}
+			
+			specs = editManager.getHistory();
+			for (int index = 0; index < specs.length; index++) {
+				combo.add((String) specs[index].getName());
+			}
 		}		
 		
 		// Display the type in the Combo
@@ -147,11 +163,27 @@
 		return false;
 	}
 	
+	public void handleEvent(Event event)
+	{
+		if (event.widget == combo) {
+			if (isListenerEnabled() && !isInDoHandle) 
+			{
+				isInDoHandle = true;
+				startDelayedEvent(event);
+				isInDoHandle = false;
+			}
+		}
+		else {
+			super.handleEvent(event);
+		}
+	}
+	
 	public void doHandleEvent(Event event)
 	{
 		super.doHandleEvent(event);
 		if (event.widget == combo && handleTypeScenario) {
 			handleComboSelection();
+			refresh();
 		}
 	}
 	
@@ -178,8 +210,18 @@
 	}
 	
 	protected ComponentReferenceEditManager getComponentReferenceEditManager() {
-		ASDMultiPageEditor editor = (ASDMultiPageEditor) ASDEditorPlugin.getActiveEditor();
-		return (ComponentReferenceEditManager) editor.getAdapter(XSDTypeReferenceEditManager.class);
+		if (parameterRefManager != null) {
+			return parameterRefManager;
+		}		
+        if (getModel() instanceof IASDObject)
+        {  
+		  parameterRefManager = ReferenceEditManagerHelper.getXSDTypeReferenceEditManager((IASDObject) getModel());
+        }
+        else
+        {
+          System.out.println("model" + getModel());
+        }  
+		return parameterRefManager;
 	}
 	
 	// TODO: rmah: This code should live in a common place..... This code is also used in other UI scenarios when
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ReferenceSection.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ReferenceSection.java
index 0136ecd..1722ddf 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ReferenceSection.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/properties/sections/ReferenceSection.java
@@ -25,8 +25,8 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.Messages;
 
 public abstract class ReferenceSection extends NameSection {
-	public static String BROWSE_STRING = Messages.getString("_UI_BUTTON_BROWSE"); //$NON-NLS-1$
-	public static String NEW_STRING = Messages.getString("_UI_BUTTON_NEW"); //$NON-NLS-1$
+	public static String BROWSE_STRING = Messages._UI_BUTTON_BROWSE; //$NON-NLS-1$
+	public static String NEW_STRING = Messages._UI_BUTTON_NEW; //$NON-NLS-1$
 	protected CCombo combo;
 	protected CLabel comboLabel;
 	
@@ -61,6 +61,21 @@
 		
 		combo.addListener(SWT.Modify, this);
 	}
+	
+	public void handleEvent(Event event)
+	{
+		if (event.widget == combo) {
+			if (isListenerEnabled() && !isInDoHandle) 
+			{
+				isInDoHandle = true;
+				startDelayedEvent(event);
+				isInDoHandle = false;
+			}
+		}
+		else {
+			super.handleEvent(event);
+		}
+	}
 
 	/*
 	 * @see org.eclipse.wst.common.ui.properties.internal.provisional.view.ITabbedPropertySection#refresh()
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/util/ASDEditPartFactoryHelper.java b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/util/ASDEditPartFactoryHelper.java
index 5741cd7..94a3d4b 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/util/ASDEditPartFactoryHelper.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-asd/org/eclipse/wst/wsdl/ui/internal/asd/util/ASDEditPartFactoryHelper.java
@@ -7,6 +7,9 @@
 import org.eclipse.wst.wsdl.ui.internal.asd.design.DesignViewGraphicalViewer;
 import org.eclipse.wst.wsdl.ui.internal.asd.design.editparts.ASDEditPartFactory;
 
+/**
+ * @depracated
+ */
 public class ASDEditPartFactoryHelper {
 	private static ASDEditPartFactoryHelper instance;
 	
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-refactor/org/eclipse/wst/wsdl/ui/internal/refactor/actions/RenameComponentAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-refactor/org/eclipse/wst/wsdl/ui/internal/refactor/actions/RenameComponentAction.java
index 8435c9d..0939528 100644
--- a/bundles/org.eclipse.wst.wsdl.ui/src-refactor/org/eclipse/wst/wsdl/ui/internal/refactor/actions/RenameComponentAction.java
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-refactor/org/eclipse/wst/wsdl/ui/internal/refactor/actions/RenameComponentAction.java
@@ -18,6 +18,7 @@
 import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.actions.GlobalBuildAction;
+import org.eclipse.wst.common.ui.internal.dialogs.SaveDirtyFilesDialog;
 import org.eclipse.wst.wsdl.Binding;
 import org.eclipse.wst.wsdl.Definition;
 import org.eclipse.wst.wsdl.Message;
@@ -143,6 +144,11 @@
 
 	public void run(ISelection selection) {
 	
+        boolean rc = SaveDirtyFilesDialog.saveDirtyFiles();
+        if (!rc)
+        {
+          return;
+        }  
 		RenameComponentProcessor processor = new RenameComponentProcessor(selectedComponent, selectedComponent.getName());
 		RenameRefactoring refactoring = new RenameRefactoring(processor);
 		try {
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLFindReferencesAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLFindReferencesAction.java
new file mode 100644
index 0000000..6c2a082
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLFindReferencesAction.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.search.actions;
+import javax.xml.namespace.QName;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.scope.SearchScope;
+import org.eclipse.wst.common.core.search.scope.WorkspaceSearchScope;
+import org.eclipse.wst.wsdl.Binding;
+import org.eclipse.wst.wsdl.Message;
+import org.eclipse.wst.wsdl.PortType;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Binding;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Interface;
+import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Message;
+import org.eclipse.wst.wsdl.ui.internal.search.IWSDLSearchConstants;
+import org.eclipse.wst.xsd.ui.internal.editor.ISelectionMapper;
+import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
+import org.eclipse.wst.xsd.ui.internal.search.actions.FindAction;
+
+public class WSDLFindReferencesAction extends FindAction
+{
+  public WSDLFindReferencesAction(IEditorPart editor)
+  {
+    super(editor);
+  }
+
+  public void setActionDefinitionId(String string)
+  {
+  }
+
+  /**
+   * To be used by subclass in its run() Returns the file where the selection of
+   * a component (from the user) occurs ie. Returns the file that the user is
+   * currently working on.
+   * 
+   * @return The IFile representation of the current working file.
+   */
+  protected IFile getCurrentFile()
+  {
+    if (editor != null)
+    {
+      IEditorInput input = editor.getEditorInput();
+      if (input instanceof IFileEditorInput)
+      {
+        IFileEditorInput fileEditorInput = (IFileEditorInput) input;
+        return fileEditorInput.getFile();
+      }
+    }
+    return null;
+  }
+
+  /**
+   * To be used by subclass in its run().. Determines the metaName of the WSDL
+   * component given to this method.
+   * 
+   * @param component
+   *          The component of which we want to determine the name
+   * @return
+   * 		The first one is for MetaName/Type, second for ElementQualifiedName
+   */
+  protected QualifiedName[] determineMetaAndQualifiedName(WSDLBaseAdapter component)
+  {
+    QualifiedName names[] = null;
+    QName qName;
+	if (component instanceof W11Message )
+    {
+		names = new QualifiedName[2];
+    	names[0] = IWSDLSearchConstants.MESSAGE_META_NAME;
+    	qName = ((Message) component.getTarget()).getQName();
+    	names[1] = new QualifiedName(qName.getNamespaceURI(), qName.getLocalPart());
+    }
+    else if (component instanceof W11Interface)
+    {
+    	names = new QualifiedName[2];
+    	names[0] = IWSDLSearchConstants.PORT_TYPE_META_NAME;
+    	qName = ((PortType) component.getTarget()).getQName();
+    	names[1] = new QualifiedName(qName.getNamespaceURI(), qName.getLocalPart());
+    }
+    else if (component instanceof W11Binding)
+    {
+    	names = new QualifiedName[2];
+    	names[0] = IWSDLSearchConstants.BINDING_META_NAME;
+    	qName = ((Binding) component.getTarget()).getQName();
+    	names[1] = new QualifiedName(qName.getNamespaceURI(), qName.getLocalPart());
+
+    }
+    return names;
+  }
+
+  protected WSDLBaseAdapter getWSDLNamedComponent()
+  {
+    if (editor != null)
+    {
+      ISelectionProvider provider = (ISelectionProvider) editor.getAdapter(ISelectionProvider.class);
+      ISelectionMapper mapper = (ISelectionMapper) editor.getAdapter(ISelectionMapper.class);
+      if (provider != null)
+      {
+        ISelection selection = provider.getSelection();
+        if (mapper != null)
+        {
+          selection = mapper.mapSelection(selection);
+        }
+        if (selection != null && selection instanceof IStructuredSelection)
+        {
+          IStructuredSelection s = (IStructuredSelection) selection;
+          Object o = s.getFirstElement();
+          if (o != null && o instanceof WSDLBaseAdapter)
+          {
+            return (WSDLBaseAdapter) o;
+          }
+        }
+      }
+    }
+    // The expected component we get from the editor does not meet
+    // our expectation
+    return null;
+  }  
+
+  public void run()
+  {
+    String pattern = "";
+    WSDLBaseAdapter component = getWSDLNamedComponent();
+    IFile file = getCurrentFile();
+    QualifiedName[] names = determineMetaAndQualifiedName(component);
+    if (file != null && component != null && names != null)
+    {
+      SearchScope scope = new WorkspaceSearchScope();
+      String scopeDescription = "Workspace";
+      XSDSearchQuery searchQuery = new XSDSearchQuery(pattern, file, names[1], 
+    		  names[0], XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);
+      NewSearchUI.activateSearchResultView();
+      NewSearchUI.runQueryInBackground(searchQuery);
+    }
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLFindReferencesInProjectAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLFindReferencesInProjectAction.java
new file mode 100644
index 0000000..0bb521c
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLFindReferencesInProjectAction.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.search.actions;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.scope.ProjectSearchScope;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
+
+public class WSDLFindReferencesInProjectAction extends WSDLFindReferencesAction{
+	public WSDLFindReferencesInProjectAction(IEditorPart editor)
+	{
+		super(editor);
+	}
+
+	public void run()
+	{
+		String pattern = "";
+		WSDLBaseAdapter component = getWSDLNamedComponent();
+		IFile file = getCurrentFile();
+		QualifiedName[] names = determineMetaAndQualifiedName(component);
+		if (file != null && component != null && names != null)
+		{
+			IPath fullPath = file.getFullPath();
+			ProjectSearchScope scope = new ProjectSearchScope(fullPath);
+			String scopeDescription = "Project";
+			XSDSearchQuery searchQuery = new XSDSearchQuery(pattern, file, names[1], 
+					names[0], XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);
+			NewSearchUI.activateSearchResultView();
+			NewSearchUI.runQueryInBackground(searchQuery);
+		}
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLFindReferencesInWorkingSetAction.java b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLFindReferencesInWorkingSetAction.java
new file mode 100644
index 0000000..d51016c
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLFindReferencesInWorkingSetAction.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.search.actions;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.window.Window;
+import org.eclipse.search.ui.NewSearchUI;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
+import org.eclipse.wst.common.core.search.pattern.QualifiedName;
+import org.eclipse.wst.common.core.search.scope.WorkingSetSearchScope;
+import org.eclipse.wst.wsdl.ui.internal.adapters.WSDLBaseAdapter;
+import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin;
+import org.eclipse.wst.xsd.ui.internal.search.XSDSearchQuery;
+
+public class WSDLFindReferencesInWorkingSetAction extends WSDLFindReferencesAction{
+	
+	public WSDLFindReferencesInWorkingSetAction(IEditorPart editor) {
+		super(editor);
+	}
+	
+	public void run(){
+		IWorkingSet[] workingSets = queryWorkingSets();
+		if ( workingSets == null || workingSets.length == 0)
+			// The user chooses nothing, no point to continue.
+			return;
+		String pattern = "";
+
+		WSDLBaseAdapter component = getWSDLNamedComponent();
+		IFile file = getCurrentFile();
+		QualifiedName[] names = determineMetaAndQualifiedName(component);
+		if ( file != null && component != null){
+			// Create a scope from the selected working sets
+			WorkingSetSearchScope scope = new WorkingSetSearchScope();
+			for (int i = 0; i < workingSets.length; i++){
+				IAdaptable[] elements = workingSets[i].getElements();
+				scope.addAWorkingSetToScope(elements);
+			}
+
+			String scopeDescription = "Working Set";    
+			XSDSearchQuery searchQuery = 
+				new XSDSearchQuery(pattern, file, names[1], names[0], XSDSearchQuery.LIMIT_TO_REFERENCES, scope, scopeDescription);    
+			NewSearchUI.activateSearchResultView();
+			NewSearchUI.runQueryInBackground(searchQuery);
+		}
+	}
+
+	/**
+	 * Calls a dialog asking the user to choose the working Sets he wants
+	 * to do the search on
+	 * @return
+	 */
+	public static IWorkingSet[] queryWorkingSets(){
+		Shell shell= XSDEditorPlugin.getShell();
+		if (shell == null)
+			return null;
+		IWorkingSetSelectionDialog dialog =
+			PlatformUI.getWorkbench().getWorkingSetManager().createWorkingSetSelectionDialog(shell, true);
+		if (dialog.open() == Window.OK) {
+			IWorkingSet[] workingSets= dialog.getSelection();
+			if (workingSets.length > 0)
+				return workingSets;
+		}
+		return null;
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLReferencesSearchGroup.java b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLReferencesSearchGroup.java
new file mode 100644
index 0000000..a5b527f
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLReferencesSearchGroup.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.search.actions;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.wst.xsd.ui.internal.search.SearchMessages;
+import org.eclipse.wst.xsd.ui.internal.search.actions.ReferencesSearchGroup;
+
+public class WSDLReferencesSearchGroup extends ReferencesSearchGroup  {
+    /**
+     * Note: This constructor is for internal use only. Clients should not call this constructor.
+     * @param editor
+     */
+    public WSDLReferencesSearchGroup(IEditorPart editor) {
+    	super(editor);
+    }
+    
+    protected void initialize() {
+//      fGroupId= ITextEditorActionConstants.GROUP_FIND;
+    	
+    	fFindReferencesAction= new WSDLFindReferencesAction(fEditor);
+        fFindReferencesAction.setText(SearchMessages.Search_FindDeclarationAction_label);
+        fFindReferencesAction.setActionDefinitionId("SEARCH_REFERENCES_IN_WORKSPACE");
+        //fEditor.setAction("SearchReferencesInWorkspace", fFindReferencesAction); //$NON-NLS-1$
+
+        fFindReferencesInProjectAction= new WSDLFindReferencesInProjectAction(fEditor);
+        fFindReferencesInProjectAction.setText(SearchMessages.Search_FindDeclarationsInProjectAction_label);        
+        fFindReferencesInProjectAction.setActionDefinitionId("SEARCH_REFERENCES_IN_PROJECT");
+        //fEditor.setAction("SearchReferencesInProject", fFindReferencesInProjectAction); //$NON-NLS-1$
+    
+        fFindReferencesInWorkingSetAction= new WSDLFindReferencesInWorkingSetAction(fEditor);
+        fFindReferencesInWorkingSetAction.setText(SearchMessages.Search_FindDeclarationsInWorkingSetAction_label);         
+        fFindReferencesInWorkingSetAction.setActionDefinitionId(".SEARCH_REFERENCES_IN_WORKING_SET");
+        //fEditor.setAction("SearchReferencesInWorkingSet", fFindReferencesInWorkingSetAction); //$NON-NLS-1$
+    }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLSearchReferencesGroupActionDelegate.java b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLSearchReferencesGroupActionDelegate.java
new file mode 100644
index 0000000..55fc209
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-search/org/eclipse/wst/wsdl/ui/internal/search/actions/WSDLSearchReferencesGroupActionDelegate.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.search.actions;
+
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.wst.xsd.ui.internal.search.actions.BaseGroupActionDelegate;
+import org.eclipse.wst.xsd.ui.internal.search.actions.XSDSearchGroupSubMenu;
+
+public class WSDLSearchReferencesGroupActionDelegate extends BaseGroupActionDelegate
+{
+    protected void fillMenu(Menu menu) {
+      try
+      {
+        if (fSelection == null) {
+            return;
+        }
+        if (workbenchPart != null)
+        {
+		  IWorkbenchPartSite site = workbenchPart.getSite();
+			if (site == null)
+			  return;
+	
+		  IEditorPart editor = site.getPage().getActiveEditor();
+          if ( editor != null ){
+            WSDLReferencesSearchGroup referencesGroup = new WSDLReferencesSearchGroup(editor);
+            XSDSearchGroupSubMenu subMenu = new XSDSearchGroupSubMenu(referencesGroup);
+            subMenu.fill(menu, -1);
+          }
+        }  
+      }
+      catch (Exception e)
+      {
+        e.printStackTrace();
+      }
+    }  
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/Messages.java b/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/Messages.java
new file mode 100644
index 0000000..b71c217
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/Messages.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.soap.customizations;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.wst.wsdl.ui.internal.soap.customizations.messages"; //$NON-NLS-1$
+
+	public static String UI_SPECIFY_PARTS_DIALOG_TITLE;
+	public static String UI_PARTS_BUTTON;
+
+	static {
+		// load message values from bundle file
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+		// cannot create new instance
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/SOAPNodeEditorProvider.java b/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/SOAPNodeEditorProvider.java
new file mode 100644
index 0000000..6966910
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/SOAPNodeEditorProvider.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.soap.customizations;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.binding.soap.SOAPBody;
+import org.eclipse.wst.wsdl.ui.internal.util.NodeAssociationManager;
+import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.custom.DialogNodeEditorConfiguration;
+import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.custom.NodeEditorConfiguration;
+import org.eclipse.wst.xsd.ui.internal.common.properties.sections.appinfo.custom.NodeEditorProvider;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * This class is provided as an example of how a NodeEditorProvider can utilize the WSDL model if required
+ * (and is not limited to the DOM model).  It's hope that potential adopters can provide feedback and open
+ * bugs where they find support is lacking or inconvenient. 
+ */
+public class SOAPNodeEditorProvider extends NodeEditorProvider
+{
+  public NodeEditorConfiguration getNodeEditorConfiguration(String parentName, String nodeName)
+  {
+    // TODO (cs) this extension is only designed to work when used via the WSDL Editor context.
+    // Reuse from other context is possible too if the editor provides the appropriate 'getAdapter' behaviour.
+    // We need to revisit this and get more feedback from adopters to see if different approach is required 
+    // in order to obtain a WSDL model.
+//    /
+    IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+    final Definition definition = (Definition)editor.getAdapter(Definition.class);
+    if (definition != null)
+    {  
+      if (parentName.equals("body") && nodeName.equals("parts")) //$NON-NLS-1$ //$NON-NLS-2$
+      {
+        // gee... this case sounds sorta morbid eh?
+        //
+        return new DialogNodeEditorConfiguration()
+        {                
+          public void invokeDialog()
+          {                   
+            Node parentNode = getParentNode();
+            if (parentNode instanceof Element)
+            {           
+              Element element = (Element)getParentNode();
+              
+              // TODO (cs) I think we should push this function down to the WSDL model (ala XSD model)
+              //
+              NodeAssociationManager nodeAssociationManager = new NodeAssociationManager();
+              Object o = nodeAssociationManager.getModelObjectForNode(definition, element);
+              if (o instanceof SOAPBody)
+              {  
+                SOAPSelectPartsDialog dialog = new SOAPSelectPartsDialog(Display.getCurrent().getActiveShell(), definition, (SOAPBody)o);
+                dialog.create();
+                dialog.getShell().setText(Messages.UI_SPECIFY_PARTS_DIALOG_TITLE);           //$NON-NLS-1$
+                int rc = dialog.open();
+                if (rc == Dialog.OK)
+                {                  
+                  String value = ""; //$NON-NLS-1$
+                  Part[] parts = dialog.getSelectedParts();
+                  for (int i = 0; i < parts.length; i++)
+                  {  
+                    Part part = parts[i];
+                    value += part.getName();
+                    value += " "; //$NON-NLS-1$
+                  }  
+                  
+                  // TODO (cs) we need to provide 'command' support so that we can handle undo properly
+                  //                   
+                  element.setAttribute("parts", value);                   //$NON-NLS-1$
+                }  
+              }               
+            } 
+          }        
+          public String getButonText()
+          {
+            return Messages.UI_PARTS_BUTTON; //$NON-NLS-1$
+          }
+        };
+      }      
+    }
+    return null;     
+  }
+}
+
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/SOAPSelectPartsDialog.java b/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/SOAPSelectPartsDialog.java
new file mode 100644
index 0000000..550b551
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/SOAPSelectPartsDialog.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.ui.internal.soap.customizations;
+
+import java.util.Collections;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.wst.wsdl.BindingInput;
+import org.eclipse.wst.wsdl.BindingOutput;
+import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.MessageReference;
+import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.binding.soap.SOAPBody;
+import org.eclipse.wst.wsdl.ui.internal.WSDLEditorPlugin;
+import org.eclipse.wst.wsdl.ui.internal.util.ComponentReferenceUtil;
+
+public class SOAPSelectPartsDialog extends Dialog
+{  
+  Definition definition;
+  SOAPBody body;
+  CheckboxTreeViewer checkList;
+  Part[] selectedParts = {};
+  
+  public SOAPSelectPartsDialog(Shell parentShell, Definition definition, SOAPBody body)
+  {
+    super(parentShell);  
+    this.definition = definition;
+    this.body = body;
+  }
+
+  protected Control createDialogArea(Composite parent)
+  {
+    Composite composite = (Composite)super.createDialogArea(parent);
+    checkList = new CheckboxTreeViewer(composite, SWT.NONE);
+    GridData gridData = new GridData(GridData.FILL_BOTH);
+    gridData.heightHint = 100;
+    gridData.widthHint = 200;
+    checkList.getControl().setLayoutData(gridData);
+    checkList.setContentProvider(new InternalTreeContentProvider());
+    checkList.setLabelProvider(new InternalLabelProvider());
+    checkList.setInput("");
+    
+    List list = body.getParts();
+    checkList.setCheckedElements(list.toArray());     
+    return composite;
+  }
+  
+  protected void okPressed()
+  {
+    Object[] checked = checkList.getCheckedElements();
+    selectedParts = new Part[checked.length];
+    for (int i = 0; i < checked.length; i++)
+    {  
+      selectedParts[i] = (Part)checked[i];
+    } 
+    super.okPressed();    
+  }
+  
+ 
+  class InternalLabelProvider extends LabelProvider
+  {
+    public String getText(Object element)
+    {
+      Part part = (Part)element;
+      return part.getName();
+    }
+    
+    public Image getImage(Object element)
+    {
+      return WSDLEditorPlugin.getInstance().getImage("icons/part_obj.gif");
+    }
+  }
+  
+  class InternalTreeContentProvider implements ITreeContentProvider
+  {  
+    public Object[] getElements(Object inputElement)
+    {    
+      EObject container = body.eContainer();
+      MessageReference messageReference = null;
+      if (container instanceof BindingInput)
+      {
+        messageReference = ComponentReferenceUtil.computeInput((BindingInput)container); 
+      } 
+      else if (container instanceof BindingOutput)
+      {
+        messageReference = ComponentReferenceUtil.computeOutput((BindingOutput)container);         
+      }  
+      if (messageReference != null && messageReference.getEMessage() != null)
+      {
+        return messageReference.getEMessage().getEParts().toArray();
+      }  
+      return Collections.EMPTY_LIST.toArray();
+    }
+
+    public Object[] getChildren(Object parentElement)
+    {
+      return Collections.EMPTY_LIST.toArray();
+    }
+
+    public Object getParent(Object element)
+    {
+      return null;
+    }
+
+    public boolean hasChildren(Object element)
+    {
+      return false;
+    }
+
+    public void dispose()
+    {      
+    }
+
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+    {
+    }
+  }
+
+  public Part[] getSelectedParts()
+  {
+    return selectedParts;
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/messages.properties b/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/messages.properties
new file mode 100644
index 0000000..943fa8e
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.ui/src-soap/org/eclipse/wst/wsdl/ui/internal/soap/customizations/messages.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2006 IBM 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:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+UI_SPECIFY_PARTS_DIALOG_TITLE=Specify Parts
+UI_PARTS_BUTTON=...
diff --git a/bundles/org.eclipse.wst.wsdl.validation/.cvsignore b/bundles/org.eclipse.wst.wsdl.validation/.cvsignore
index c171d6b..08032ea 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/.cvsignore
+++ b/bundles/org.eclipse.wst.wsdl.validation/.cvsignore
@@ -7,3 +7,4 @@
 wsdlvalidateuisrc.zip
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.wsdl.validation/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.wsdl.validation/META-INF/MANIFEST.MF
index 3e6918a..7e0f2ed 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.wsdl.validation/META-INF/MANIFEST.MF
@@ -2,30 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %_PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.wsdl.validation; singleton:=true
-Bundle-Version: 1.0.201.qualifier
+Bundle-Version: 1.1.101.qualifier
 Bundle-Activator: org.eclipse.wst.wsdl.validation.internal.eclipse.ValidateWSDLPlugin
 Bundle-Vendor: %_PROVIDER_NAME
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.wsdl.validation.internal,
- org.eclipse.wst.wsdl.validation.internal.eclipse,
- org.eclipse.wst.wsdl.validation.internal.exception,
- org.eclipse.wst.wsdl.validation.internal.resolver,
- org.eclipse.wst.wsdl.validation.internal.ui.ant,
- org.eclipse.wst.wsdl.validation.internal.ui.text,
- org.eclipse.wst.wsdl.validation.internal.util,
- org.eclipse.wst.wsdl.validation.internal.wsdl11,
- org.eclipse.wst.wsdl.validation.internal.wsdl11.http,
- org.eclipse.wst.wsdl.validation.internal.wsdl11.mime,
- org.eclipse.wst.wsdl.validation.internal.wsdl11.soap,
- org.eclipse.wst.wsdl.validation.internal.wsdl11.xsd,
- org.eclipse.wst.wsdl.validation.internal.wsdl20,
- org.eclipse.wst.wsdl.validation.internal.xml
-Require-Bundle: org.eclipse.core.resources,
- org.apache.ant,
- org.eclipse.wst.common.uriresolver,
- org.eclipse.wst.validation,
- org.wsdl4j,
- org.apache.xerces;visibility:=reexport,
- org.eclipse.core.runtime,
- org.eclipse.wst.xml.core
+Export-Package: org.eclipse.wst.wsdl.validation.internal;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.eclipse;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.exception;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.logging;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.resolver;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.ui.ant;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.ui.text;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.util;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.wsdl11;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.wsdl11.http;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.wsdl11.mime;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.wsdl11.soap;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.wsdl11.xsd;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi",
+ org.eclipse.wst.wsdl.validation.internal.xml;x-friends:="org.eclipse.wst.wsdl.validation.tests,org.eclipse.wst.wsi"
+Require-Bundle: org.eclipse.core.resources;bundle-version="[3.2.0,3.3.0)",
+ org.apache.ant;bundle-version="[1.6.5,1.7.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.validation;bundle-version="[1.1.0,1.2.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.apache.xerces;visibility:=reexport;bundle-version="[2.8.0,2.9.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,3.3.0)",
+ org.eclipse.wst.xml.core;bundle-version="[1.1.0,1.2.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.wsdl.validation/about.html b/bundles/org.eclipse.wst.wsdl.validation/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/about.html
+++ b/bundles/org.eclipse.wst.wsdl.validation/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.wsdl.validation/build.properties b/bundles/org.eclipse.wst.wsdl.validation/build.properties
index 4a6d5c5..2db24c6 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/build.properties
+++ b/bundles/org.eclipse.wst.wsdl.validation/build.properties
@@ -4,6 +4,6 @@
                plugin.properties,\
                plugin.xml,\
                .,\
-               about.html
-src.includes = exsd/,\
-               build.properties
+               about.html,\
+               exsd/
+src.includes = build.properties
diff --git a/bundles/org.eclipse.wst.wsdl.validation/exsd/extvalidator.exsd b/bundles/org.eclipse.wst.wsdl.validation/exsd/extvalidator.exsd
index d7ca02a..bfe8dd2 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/exsd/extvalidator.exsd
+++ b/bundles/org.eclipse.wst.wsdl.validation/exsd/extvalidator.exsd
@@ -41,18 +41,21 @@
 
    <element name="extvalidator">
       <complexType>
-         <attribute name="namespace" type="string" use="required">
-            <annotation>
-               <documentation>
-                  The WSDL namespace for which this validator should run. Currently the only accepted value is http://schemas.xmlsoap.org/wsdl/.
-               </documentation>
-            </annotation>
-         </attribute>
          <attribute name="class" type="string" use="required">
             <annotation>
                <documentation>
                   The class that implements &lt;code&gt;org.eclipse.wst.wsdl.validation.internal.IWSDLValidator&lt;/code&gt;.
                </documentation>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn="org.eclipse.wst.wsdl.validation.internal.IWSDLValidator"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+         <attribute name="namespace" type="string" use="required">
+            <annotation>
+               <documentation>
+                  The WSDL namespace for which this validator should run. Currently the only accepted value is http://schemas.xmlsoap.org/wsdl/.
+               </documentation>
             </annotation>
          </attribute>
       </complexType>
diff --git a/bundles/org.eclipse.wst.wsdl.validation/exsd/wsdl11validator.exsd b/bundles/org.eclipse.wst.wsdl.validation/exsd/wsdl11validator.exsd
index e852048..94b60eb 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/exsd/wsdl11validator.exsd
+++ b/bundles/org.eclipse.wst.wsdl.validation/exsd/wsdl11validator.exsd
@@ -46,6 +46,9 @@
                <documentation>
                   The class that implements &lt;code&gt;org.eclipse.wst.wsdl.validation.internal.wsdl11.IWSDL11Validator&lt;/code&gt;.
                </documentation>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn="org.eclipse.wst.wsdl.validation.internal.wsdl11.IWSDL11Validator"/>
+               </appInfo>
             </annotation>
          </attribute>
          <attribute name="namespace" type="string" use="required">
diff --git a/bundles/org.eclipse.wst.wsdl.validation/plugin.properties b/bundles/org.eclipse.wst.wsdl.validation/plugin.properties
index 6dec47a..6cf40cd 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/plugin.properties
+++ b/bundles/org.eclipse.wst.wsdl.validation/plugin.properties
@@ -17,3 +17,7 @@
 _UI_WSDL4J_VALIDATOR_DELEGATE = WSDL4J-based WSDL Validator
 _UI_WSDL_VALIDATOR = WSDL Validator
 _UI_WSDL_VALIDATOR_MARKER = WSDL Problem
+
+!-- Extension points
+_WSDL_EXTENSION_VALIDATOR_NAME   = WSDL Extension Validator
+_WSDL11_VALIDATOR_NAME = WSDL 1.1 Validator
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.validation/plugin.xml b/bundles/org.eclipse.wst.wsdl.validation/plugin.xml
index 6696c70..ce49a23 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/plugin.xml
+++ b/bundles/org.eclipse.wst.wsdl.validation/plugin.xml
@@ -2,9 +2,9 @@
 <?eclipse version="3.0"?>
 <plugin>
 
-   <extension-point id="extvalidator" name="WSDL Extension Validator" schema="exsd/extvalidator.exsd"/>
+   <extension-point id="extvalidator" name="%_WSDL_EXTENSION_VALIDATOR_NAME" schema="exsd/extvalidator.exsd"/>
    
-   <extension-point id="wsdl11validator" name="WSDL 1.1 Extension Validator" schema="exsd/wsdl11validator.exsd"/>
+   <extension-point id="wsdl11validator" name="%WSDL11_VALIDATOR_NAME" schema="exsd/wsdl11validator.exsd"/>
    
 	<extension
     	point="org.eclipse.wst.validation.validatorDelegates">
@@ -38,11 +38,11 @@
                fullBuild="true"
                incremental="true">
          </run>
-         <markerId markerIdValue="org.eclipse.wst.wsdl.validationMarker"/>
+         <markerId markerIdValue="org.eclipse.wst.wsdl.validation.validationMarker"/>
       </validator>
    </extension>
    <extension
-         id="org.eclipse.wst.wsdl.validationMarker"
+         id="validationMarker"
          name="%_UI_WSDL_VALIDATOR_MARKER"
          point="org.eclipse.core.resources.markers">
       <super type="org.eclipse.wst.validation.problemmarker"/>
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ClassloaderWSDLValidatorDelegate.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ClassloaderWSDLValidatorDelegate.java
index 3d0fe50..387ca95 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ClassloaderWSDLValidatorDelegate.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ClassloaderWSDLValidatorDelegate.java
@@ -11,6 +11,9 @@
 
 package org.eclipse.wst.wsdl.validation.internal;
 
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
+
 
 
 /**
@@ -62,14 +65,9 @@
 
       validator = (IWSDLValidator)validatorClass.newInstance();
     }
-    catch (Exception e)
-    {
-      // TODO: add logging
-      System.err.println(e);
-    }
     catch(Throwable t)
     {
-      System.err.println(t);
+    	LoggerFactory.getInstance().getLogger().log("Unable to load validator " + validatorClassname, ILogger.SEV_ERROR, t);
     }
     return validator;
   }
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ValidationController.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ValidationController.java
index a138ca6..f10dff2 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ValidationController.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ValidationController.java
@@ -25,6 +25,8 @@
 import org.apache.xerces.xni.XNIException;
 import org.apache.xerces.xni.grammars.XMLGrammarPool;
 import org.eclipse.wst.wsdl.validation.internal.exception.ValidateWSDLException;
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
 import org.eclipse.wst.wsdl.validation.internal.resolver.URIResolver;
 import org.eclipse.wst.wsdl.validation.internal.util.MessageGenerator;
 import org.eclipse.wst.wsdl.validation.internal.xml.AbstractXMLConformanceFactory;
@@ -46,6 +48,7 @@
   protected final String _ERROR_PROBLEM_WSDL_VALIDATOR = "_ERROR_PROBLEM_WSDL_VALIDATOR";
   protected final String _ERROR_NO_WSDL_VALIDATOR = "_ERROR_NO_WSDL_VALIDATOR";
   protected final String _ERROR_PROBLEM_EXT_VALIDATOR = "_ERROR_PROBLEM_EXT_VALIDATOR";
+  protected final String _ERROR_DOCUMENT_LOCATION = "_ERROR_DOCUMENT_LOCATION";
 
   protected ValidatorRegistry ver;
   protected ResourceBundle resourcebundle;
@@ -100,14 +103,17 @@
 
     if (validateXML(valInfo, xmlValidateStream))
     {
-      Document wsdldoc = getDocument(uri, wsdlValidateStream);
+      Document wsdldoc = getDocument(uri, wsdlValidateStream, valInfo);
 
-      String wsdlns = getWSDLNamespace(wsdldoc);
-      if(wsdlns != null)
+      if(!valInfo.hasErrors())
       {
-        if (validateWSDL(wsdldoc, valInfo, wsdlns))
+        String wsdlns = getWSDLNamespace(wsdldoc);
+        if(wsdlns != null)
         {
-          validateExtensionValidators(wsdldoc, valInfo, wsdlns);
+          if (validateWSDL(wsdldoc, valInfo, wsdlns))
+          {
+            validateExtensionValidators(wsdldoc, valInfo, wsdlns);
+          }
         }
       }
     }
@@ -250,7 +256,7 @@
           catch(Throwable  t)
           {
             valInfo.addWarning(messagegenerator.getString(_ERROR_PROBLEM_EXT_VALIDATOR,  extvaldel.getValidatorName(), wsdlNamespace), 1, 1, valInfo.getFileURI());
-            // This error should be logged and not displayed to the user.
+            LoggerFactory.getInstance().getLogger().log(messagegenerator.getString(_ERROR_PROBLEM_EXT_VALIDATOR,  extvaldel.getValidatorName(), wsdlNamespace), ILogger.SEV_ERROR, t);
           }
         }
       }
@@ -283,10 +289,15 @@
   /**
    * Get a DOM document representation of the WSDL document.
    * 
-   * @param uri The uri of the file to read
+   * @param uri 
+   * 		The uri of the file to read
+   * @param inputStream
+   * 		An optional InputStream to read the document from.
+   * @param valinfo
+   * 		A validation info object used for reporting messages.
    * @return The DOM model of the WSDL document or null if the document can't be read.
    */
-  private Document getDocument(String uri, InputStream inputStream)
+  private Document getDocument(String uri, InputStream inputStream, ControllerValidationInfo valinfo)
   {
     try
     {
@@ -331,10 +342,10 @@
     }
     catch (Throwable t)
     {
-    	// TODO: Log error if the parser fails to read the WSDL document.
-    	// In this case the validator will fail with an unexplained error message
-    	// about a null WSDL namespace. This error should be addressed as well.
-    	System.out.println(t);
+      // In this case the validator will fail with an unexplained error message
+      // about a null WSDL namespace. This error should be addressed as well.
+     valinfo.addError(messagegenerator.getString(_ERROR_DOCUMENT_LOCATION, uri), 0, 0, uri);
+      
     }
     return null;
   }
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/WSDLValidationConfiguration.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/WSDLValidationConfiguration.java
index 7b23370..14643ae 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/WSDLValidationConfiguration.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/WSDLValidationConfiguration.java
@@ -39,7 +39,7 @@
    * @return
    * 		The value for the specified property or null if the property has not been specified.
    */
-  protected Object getProperty(String name)
+  public Object getProperty(String name)
   {
 	if(name != null)
 	  return properties.get(name);
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseLogger.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseLogger.java
new file mode 100644
index 0000000..6d82f4a
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseLogger.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.eclipse;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+
+/**
+ * A logger that will log to the log file in the Eclipse metadata directory.
+ */
+public class EclipseLogger implements ILogger
+{
+
+	
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int)
+   */
+  public void log(String message, int severity) 
+  {
+    log(message, severity, null);	
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int, java.lang.Throwable)
+   */
+  public void log(String message, int severity, Throwable throwable)
+  {
+	// Don't log verbose information in the Eclipse log.
+	if(severity == ILogger.SEV_VERBOSE)
+	{
+	  return;
+	}
+	int status = IStatus.INFO;
+	if(severity == ILogger.SEV_WARNING)
+	{
+	  status = IStatus.WARNING;
+	}
+	else if(severity == ILogger.SEV_ERROR)
+	{
+	  status = IStatus.ERROR;
+	}
+    ValidateWSDLPlugin.getInstance().getLog().log(new Status(status, ValidateWSDLPlugin.getInstance().getBundle().getSymbolicName(), IStatus.OK, message, throwable));
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseWSDL11ValidatorDelegate.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseWSDL11ValidatorDelegate.java
index 7e7ccc9..a9ab6b7 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseWSDL11ValidatorDelegate.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseWSDL11ValidatorDelegate.java
@@ -11,6 +11,8 @@
 
 package org.eclipse.wst.wsdl.validation.internal.eclipse;
 
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.IWSDL11Validator;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.WSDL11ValidatorDelegate;
 import org.osgi.framework.Bundle;
@@ -50,8 +52,7 @@
       }
       catch (Throwable t)
       {
-        // TODO: add logging
-        System.err.println(t);
+    	LoggerFactory.getInstance().getLogger().log("Unable to load validator " + validatorClassname, ILogger.SEV_ERROR, t);
       }
 	}
 	return validator;
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseWSDLValidatorDelegate.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseWSDLValidatorDelegate.java
index 109d366..c3e181c 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseWSDLValidatorDelegate.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/EclipseWSDLValidatorDelegate.java
@@ -13,6 +13,8 @@
 
 import org.eclipse.wst.wsdl.validation.internal.WSDLValidatorDelegate;
 import org.eclipse.wst.wsdl.validation.internal.IWSDLValidator;
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
 import org.osgi.framework.Bundle;
 
 
@@ -54,8 +56,7 @@
       }
       catch(Throwable t)
       {
-        // TODO: add logging
-        System.err.println(t);
+    	LoggerFactory.getInstance().getLogger().log("Unable to load validator " + validatorClassname, ILogger.SEV_ERROR, t);
       }
     }
     return validator;
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/URIResolverWrapper.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/URIResolverWrapper.java
index c6b4830..622c9c6 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/URIResolverWrapper.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/URIResolverWrapper.java
@@ -11,6 +11,9 @@
 
 package org.eclipse.wst.wsdl.validation.internal.eclipse;
 
+import java.net.URL;
+
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver;
 import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin;
 import org.eclipse.wst.wsdl.validation.internal.resolver.IExtensibleURIResolver;
@@ -35,10 +38,11 @@
   public void resolve(String baseLocation, String publicId, String systemId, IURIResolutionResult result)
   {
     URIResolver resolver = URIResolverPlugin.createResolver();
+    String resolvedSystemId = resolvePlatformURL(systemId);
     String location = null;
-    if (publicId != null || systemId != null)
+    if (publicId != null || resolvedSystemId != null)
     {  
-      location = resolver.resolve(baseLocation, publicId, systemId);
+      location = resolver.resolve(baseLocation, publicId, resolvedSystemId);
     }  
     
     if (location != null)
@@ -55,4 +59,33 @@
       }
     }
   }
+  
+  /**
+   * Resolve platform URLs to standard URLs. This method has the
+   * practical effect of transforming a URL such as
+   * platform:/test/test.wsdl
+   * into
+   * file:/c:/wtp/workspace/test/test.wsdl
+   * 
+   * @param url The URL that may contain the platform scheme.
+   * @return A resolved URL that does not contain the platform scheme.
+   */
+  protected String resolvePlatformURL(String url)
+  {
+	  String result = url;
+	  if(url != null && url.startsWith("platform:"))
+      {
+    	  try
+    	  {
+    		  URL fileURL = FileLocator.toFileURL(new URL(url));
+    		  result = fileURL.toExternalForm();
+    	  }
+    	  catch(Exception e)
+    	  {
+    		  // Can't resolve using the FileLocator in this
+    		  // case so do nothing.
+    	  }
+      }
+	  return result;
+  }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/ValidateWSDLPlugin.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/ValidateWSDLPlugin.java
index 7486b14..dfcd1cd 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/ValidateWSDLPlugin.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/eclipse/ValidateWSDLPlugin.java
@@ -21,6 +21,7 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.wst.wsdl.validation.internal.Constants;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.WSDL11ValidatorDelegate;
 import org.eclipse.wst.wsdl.validation.internal.xml.XMLCatalog;
 import org.osgi.framework.Bundle;
@@ -53,6 +54,8 @@
     instance = this;
     wsdlValidatorResourceBundle = ResourceBundle.getBundle(Constants.WSDL_VALIDATOR_PROPERTIES_FILE);
     resourcebundle = ResourceBundle.getBundle(PROPERTIES_FILE);
+    
+    LoggerFactory.getInstance().setLogger(new EclipseLogger());
 
     new WSDLValidatorPluginRegistryReader(
       "extvalidator",
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/logging/ILogger.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/logging/ILogger.java
new file mode 100644
index 0000000..d6ae891
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/logging/ILogger.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.logging;
+
+/**
+ * The interface for a standard logger for the WSDL validator. 
+ * Allows for logging errors and warnings.
+ */
+public interface ILogger
+{
+  /**
+   * Severity error for logging.
+   */
+  public static int SEV_ERROR = 0;
+  
+  /**
+   * Severity warning for logging.
+   */
+  public static int SEV_WARNING = 1;
+  
+  /**
+   * Severity info for logging.
+   */
+  public static int SEV_INFO = 2;
+  
+  /**
+   * Severity verbose for logging.
+   */
+  public static int SEV_VERBOSE = 3;
+  
+  /**
+   * Log a message.
+   * 
+   * @param message 
+   * 		The message to log.
+   * @param severity
+   * 		The severity of the message to log.
+   */
+  public void log(String message, int severity);
+  
+  /**
+   * Log a message.
+   * 
+   * @param message 
+   * 		The message to log.
+   * @param severity
+   * 		The severity of the message to log.
+   * @param throwable 
+   * 		The exception to log.
+   */
+  public void log(String message, int severity, Throwable throwable);
+}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/logging/LoggerFactory.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/logging/LoggerFactory.java
new file mode 100644
index 0000000..87a9d5f
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/logging/LoggerFactory.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.logging;
+
+/**
+ * The logger factory allows for simple use of whatever logging mechanism is in
+ * place. The tool can specify a custom ILogger. The WSDL validator will request the
+ * logger from this class.
+ */
+public class LoggerFactory
+{
+  private static LoggerFactory factory = null;
+  private ILogger logger  = null;
+
+  /**
+   * Get the one and only instance of the logger factory.
+   * 
+   * @return The one and only instance of the logger.
+   */
+  public static LoggerFactory getInstance()
+  {
+	if(factory == null)
+	{
+	  factory = new LoggerFactory();
+	}
+	return factory;
+  }
+  
+  /**
+   * Set the logger implementation to be used.
+   * 
+   * @param logger
+   *            The ILogger to use.
+   */
+  public void setLogger(ILogger logger)
+  {
+    this.logger = logger;
+  }
+  
+  /**
+   * Get the logger.
+   * 
+   * @return
+   * 		The logger.
+   */
+  public ILogger getLogger()
+  {
+	if(logger == null)
+	{
+	  logger = new StandardLogger();
+	}
+	return logger;
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/logging/StandardLogger.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/logging/StandardLogger.java
new file mode 100644
index 0000000..50c1b20
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/logging/StandardLogger.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.wsdl.validation.internal.logging;
+
+import java.io.PrintStream;
+
+/**
+ * A logger that will print log info to standard system outputs.
+ */
+public class StandardLogger implements ILogger
+{ 
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int)
+   */
+  public void log(String message, int severity) 
+  {  
+	PrintStream outputStream = System.out;
+	if(severity == ILogger.SEV_ERROR)
+	{
+	  outputStream = System.err;
+	}
+    outputStream.println(message);
+  }
+
+/* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int, java.lang.Throwable)
+   */
+  public void log(String error, int severity, Throwable throwable)
+  {
+	log(error, severity);
+	log(throwable.toString(), severity);
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/AntLogger.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/AntLogger.java
new file mode 100644
index 0000000..484f7c6
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/AntLogger.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.ui.ant;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+
+/**
+ * A logger that logs using Ant's log method.
+ */
+public class AntLogger implements ILogger 
+{
+  private Task task = null;
+	
+  /**
+   * Constructor.
+   * 
+   * @param antTask
+   * 		The Ant task this logger will act for.
+   */
+  public AntLogger(Task antTask)
+  {
+    task = antTask;
+  }
+  
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int)
+   */
+  public void log(String message, int severity) 
+  {
+    int msgLevel = Project.MSG_ERR;
+    if(severity == ILogger.SEV_WARNING)
+    {
+      msgLevel = Project.MSG_WARN;
+    }
+    else if(severity == ILogger.SEV_INFO)
+    {
+      msgLevel = Project.MSG_INFO;
+    }
+    else if(severity == ILogger.SEV_VERBOSE)
+    {
+      msgLevel = Project.MSG_VERBOSE;
+    }
+    task.log(message, msgLevel);
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int, java.lang.Throwable)
+   */
+  public void log(String message, int severity, Throwable throwable) 
+  {
+	log(message, severity);
+	log(throwable.toString(), severity);
+  }
+
+}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/Property.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/Property.java
new file mode 100644
index 0000000..bf06540
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/Property.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.ui.ant;
+
+import org.apache.tools.ant.Task;
+
+/**
+ * This class represents a property set on the WSDL validator.
+ */
+public class Property extends Task 
+{
+  private String name = null;
+  private String value = null;
+  
+  /**
+   * Set the name of the property.
+   * 
+   * @param name
+   * 		The name of the property.
+   */
+  public void setName(String name)
+  {
+    this.name = name;
+  }
+	  
+  /**
+   * Get the name of the property.
+   * 
+   * @return
+   * 		The name of the property.
+   */
+  public String getName()
+  {
+    return name;
+  }
+	  
+  /**
+   * Set the value of the property.
+   * 
+   * @param value
+   * 		The value of the property.
+   */
+  public void setValue(String value)
+  {
+    this.value = value;
+  }
+	  
+  /**
+   * Get the value of the property.
+   * 
+   * @return
+   * 		The value of the property.
+   */
+  public String getValue()
+  {
+    return value;
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/WSDLValidate.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/WSDLValidate.java
index 9231d3f..b54f744 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/WSDLValidate.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/WSDLValidate.java
@@ -21,6 +21,7 @@
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DirectoryScanner;
+import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.types.DTDLocation;
 import org.apache.tools.ant.types.FileSet;
@@ -29,7 +30,9 @@
 import org.eclipse.wst.wsdl.validation.internal.ClassloaderWSDLValidatorDelegate;
 import org.eclipse.wst.wsdl.validation.internal.IValidationMessage;
 import org.eclipse.wst.wsdl.validation.internal.IValidationReport;
+import org.eclipse.wst.wsdl.validation.internal.WSDLValidationConfiguration;
 import org.eclipse.wst.wsdl.validation.internal.WSDLValidator;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
 import org.eclipse.wst.wsdl.validation.internal.resolver.URIResolverDelegate;
 import org.eclipse.wst.wsdl.validation.internal.util.MessageGenerator;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.ClassloaderWSDL11ValidatorDelegate;
@@ -78,12 +81,14 @@
   protected List wsdl11validators = new ArrayList();
   protected List extvalidators = new ArrayList();
   protected List extURIResolvers = new ArrayList();
+  protected List properties = new ArrayList();
 
   /**
    * Constuctor.
    */
   public WSDLValidate()
   {
+	LoggerFactory.getInstance().setLogger(new AntLogger(this));
   }
 
   /**
@@ -146,6 +151,7 @@
   {
     extvalidators.add(extVal);
   }
+  
   /**
    * Add an extension WSDL 1.1 validator.
    * 
@@ -190,7 +196,17 @@
     URIResolver urires = new URIResolver();
     extURIResolvers.add(urires.getClassName());
     return urires;
-    
+  }
+  
+  /**
+   * Add a property to the WSDL validator.
+   * 
+   * @param property 
+   * 		The property to add.
+   */
+  public void addConfiguredProperty(Property property)
+  {
+    properties.add(property);
   }
 
   /**
@@ -276,6 +292,15 @@
     
     WSDLValidator wsdlValidator = new WSDLValidator();
     
+    WSDLValidationConfiguration configuration = new WSDLValidationConfiguration();
+    // Set the properties.
+    Iterator propertyIter = properties.iterator();
+    while(propertyIter.hasNext())
+    {
+      Property property = (Property)propertyIter.next();
+      configuration.setProperty(property.getName(), property.getValue());
+    }
+    	
     // Set the extension URIResolvers.
     Iterator resolversIter = extURIResolvers.iterator();
     while(resolversIter.hasNext())
@@ -308,7 +333,7 @@
     // The user didn't specify any files to validate.
     if (files == null || files.isEmpty())
     {
-      System.err.println(messGen.getString(_ERROR_NO_FILE_SPECIFIED));
+      log(messGen.getString(_ERROR_NO_FILE_SPECIFIED), Project.MSG_ERR);
       return;
     }
 
@@ -339,7 +364,7 @@
         result.append(infoDelim).append("\n");
         result.append(messGen.getString(_UI_ACTION_VALIDATING_FILE, filename)).append(" - ");
 
-        IValidationReport valReport = wsdlValidator.validate(filename);
+        IValidationReport valReport = wsdlValidator.validate(filename, null, configuration);
 
         IValidationMessage[] messages = valReport.getValidationMessages();
 
@@ -356,11 +381,18 @@
 
         result.append(reportMessages(messages, errormarker, warningmarker));
 
-        System.out.println(result.toString());
+        if(notvalid)
+        {
+          log(result.toString(), Project.MSG_ERR);
+        }
+        else
+        {
+          log(result.toString());
+        }
       }
       catch (Exception e)
       {
-        System.err.println(messGen.getString(_EXC_UNABLE_TO_VALIDATE_FILE, filename, e));
+        log(messGen.getString(_EXC_UNABLE_TO_VALIDATE_FILE, filename, e), Project.MSG_ERR);
       }
       finally
       {
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/Log4jLogger.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/Log4jLogger.java
new file mode 100644
index 0000000..c8a224b
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/Log4jLogger.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.ui.text;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+
+/**
+ * A custom WSDL validator logger that passes logging events to log4j.
+ */
+public class Log4jLogger implements ILogger 
+{
+  // This class is implemented using reflection to avoid a comilation dependency
+  // on log4j.
+  protected Object logger = null;
+  protected Method error1 = null;
+  protected Method warn1 = null;
+  protected Method info1 = null;
+  protected Method debug1 = null;
+  protected Method error2 = null;
+  protected Method warn2 = null;
+  protected Method info2 = null;
+  protected Method debug2 = null;
+  
+  public Log4jLogger()
+  {
+	try
+    {
+	  Class loggerClass = getClass().getClassLoader().loadClass("org.apache.log4j.Logger");
+	  Class categoryClass = getClass().getClassLoader().loadClass("org.apache.log4j.Category");
+	  Method getLogger = loggerClass.getDeclaredMethod("getLogger" , new Class[]{Class.class});
+	  logger = getLogger.invoke(loggerClass, new Object[]{WSDLValidate.class});
+	  error1 = categoryClass.getDeclaredMethod("error" , new Class[]{Object.class});
+	  warn1 = categoryClass.getDeclaredMethod("warn" , new Class[]{Object.class});
+	  info1 = categoryClass.getDeclaredMethod("info" , new Class[]{Object.class});
+	  debug1 = categoryClass.getDeclaredMethod("debug" , new Class[]{Object.class});
+	  error2 = categoryClass.getDeclaredMethod("error" , new Class[]{Object.class, Throwable.class});
+	  warn2 = categoryClass.getDeclaredMethod("warn" , new Class[]{Object.class, Throwable.class});
+	  info2 = categoryClass.getDeclaredMethod("info" , new Class[]{Object.class, Throwable.class});
+	  debug2 = categoryClass.getDeclaredMethod("debug" , new Class[]{Object.class, Throwable.class});
+	}
+	catch(ClassNotFoundException e)
+	{
+	  System.err.println("Unable to create Log4j Logger. Ensure Log4J is on the classpath."); 
+	}
+	catch(NoSuchMethodException e)
+	{
+		
+	}
+	catch(IllegalAccessException e)
+	{
+		
+	}
+	catch(InvocationTargetException e)
+	{
+		
+	}
+  }
+  
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int)
+   */
+  public void log(String message, int severity) 
+  {
+	if(logger != null)
+    {
+      try
+      {
+        if(severity == ILogger.SEV_ERROR)
+        {
+          error1.invoke(logger, new Object[]{message});
+		}
+        else if(severity == ILogger.SEV_WARNING)
+        {
+          warn1.invoke(logger, new Object[]{message});
+        }
+        else if(severity == ILogger.SEV_INFO)
+        {
+          info1.invoke(logger, new Object[]{message});
+        }
+        else if(severity == ILogger.SEV_VERBOSE)
+        {
+          debug1.invoke(logger, new Object[]{message});
+        }
+      }
+      catch(InvocationTargetException e)
+      {
+        // Do nothing.
+      }
+      catch(IllegalAccessException e)
+      {
+        // Do nothing.  
+      }
+    }
+  }
+
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int, java.lang.Throwable)
+   */
+  public void log(String message, int severity, Throwable throwable) 
+  {
+	if(logger != null)
+	{
+	  try
+	  {
+	    if(severity == ILogger.SEV_ERROR)
+	    {
+		  error2.invoke(logger, new Object[]{message, throwable});
+	    }
+	    else if(severity == ILogger.SEV_WARNING)
+	    {
+		  warn2.invoke(logger, new Object[]{message, throwable});
+	    }
+	    else if(severity == ILogger.SEV_INFO)
+	    {
+		  info2.invoke(logger, new Object[]{message, throwable});
+	    }
+	    else if(severity == ILogger.SEV_VERBOSE)
+	    {
+	      debug2.invoke(logger, new Object[]{message, throwable});
+	    }
+	  }
+	  catch(InvocationTargetException e)
+	  {
+		// Do nothing.
+	  }
+	  catch(IllegalAccessException e)
+	  {
+		// Do nothing.  
+	  }
+	}
+  }
+}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidate.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidate.java
index e706799..a557bf7 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidate.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidate.java
@@ -13,19 +13,21 @@
 
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.text.MessageFormat;
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
-import java.util.Vector;
 
 import org.eclipse.wst.wsdl.validation.internal.ClassloaderWSDLValidatorDelegate;
 import org.eclipse.wst.wsdl.validation.internal.IValidationMessage;
 import org.eclipse.wst.wsdl.validation.internal.IValidationReport;
+import org.eclipse.wst.wsdl.validation.internal.WSDLValidationConfiguration;
 import org.eclipse.wst.wsdl.validation.internal.WSDLValidator;
-import org.eclipse.wst.wsdl.validation.internal.resolver.IExtensibleURIResolver;
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
 import org.eclipse.wst.wsdl.validation.internal.resolver.URIResolverDelegate;
-import org.eclipse.wst.wsdl.validation.internal.util.MessageGenerator;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.ClassloaderWSDL11ValidatorDelegate;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.WSDL11ValidatorDelegate;
 import org.eclipse.wst.wsdl.validation.internal.xml.XMLCatalog;
@@ -49,81 +51,117 @@
   private final String FILE_PREFIX = "file:///";
   private static final String VALIDATOR_PROPERTIES =
     org.eclipse.wst.wsdl.validation.internal.Constants.WSDL_VALIDATOR_PROPERTIES_FILE;
-  private static final String UI_PROPERTIES = "validatewsdlui";
-  private static final String _ERROR_WRONG_ARGUMENTS = "_ERROR_WRONG_ARGUMENTS";
-  private static final String _UI_INFORMATION_DELIMITER = "_UI_INFORMATION_DELIMITER";
-  private static final String _UI_ACTION_VALIDATING_FILE = "_UI_ACTION_VALIDATING_FILE";
-  private static final String _UI_VALID = "_UI_VALID";
-  private static final String _UI_INVALID = "_UI_INVALID";
-  private static final String _UI_ERROR_MARKER = "_UI_ERROR_MARKER";
-  private static final String _UI_WARNING_MARKER = "_UI_WARNING_MARKER";
-  //private static final String _ERROR_UNABLE_TO_LOAD_EXT_VALIDATOR = "_ERROR_UNABLE_TO_LOAD_EXT_VALIDATOR";
   
-  private static final String PARAM_WSDL11VAL = "-wsdl11v";
-  private static final String PARAM_EXTVAL = "-extv";
-  private static final String PARAM_SCHEMADIR = "-schemaDir";
-  private static final String PARAM_SCHEMA = "-schema";
-  private static final String PARAM_URIRESOLVER = "-uriresolver";
+  protected static final String PARAM_WSDL11VAL = "-wsdl11v";
+  protected static final String PARAM_EXTVAL = "-extv";
+  protected static final String PARAM_SCHEMADIR = "-schemaDir";
+  protected static final String PARAM_SCHEMA = "-schema";
+  protected static final String PARAM_URIRESOLVER = "-uriresolver";
+  protected static final String PARAM_LOGGER = "-logger";
+  protected static final String PARAM_PROPERTY = "-D";
+  protected static final String PARAM_VERBOSE = "-verbose";
+  protected static final String PARAM_VERBOSE_SHORT = "-v";
   
   private static final String STRING_EMPTY = "";
   private static final String STRING_SPACE = " ";
   private static final String STRING_DASH = "-";
   
+  String workingdir = System.getProperty("user.dir");
   
-  protected ResourceBundle resourceBundle;
-  protected List errors = null;
-  protected List warnings = null;
-  protected WSDLValidator wsdlValidator;
+  //protected ResourceBundle resourceBundle;
+
+  protected WSDLValidator wsdlValidator = null;
+  protected WSDLValidationConfiguration configuration = null;
+  protected List wsdlFiles = new ArrayList();
+  protected boolean verbose = false;
+  protected ResourceBundle validatorRB = null;
 
   /**
    * Constuctor.
    */
-  public WSDLValidate()
+  protected WSDLValidate()
   {
   	wsdlValidator = new WSDLValidator();
+  	configuration = new WSDLValidationConfiguration();
+  	
+    try
+    {
+      validatorRB = ResourceBundle.getBundle(VALIDATOR_PROPERTIES);
+    }
+    catch (MissingResourceException e)
+    {
+      LoggerFactory.getInstance().getLogger().log("Validation failed: Unable to load the WSDL validator properties file.", ILogger.SEV_ERROR, e);
+    }
   }
   
-  public void addURIResolver(IExtensibleURIResolver uriResolver)
+  /**
+   * Validate the files specified.
+   */
+  protected void validate()
   {
-  	wsdlValidator.addURIResolver(uriResolver);
+	ILogger logger = LoggerFactory.getInstance().getLogger();
+	
+	int numInvalid = 0;
+
+	Iterator filesIter = wsdlFiles.iterator();
+    while (filesIter.hasNext())
+	{
+	  String wsdlFile = (String)filesIter.next();
+	  IValidationReport valReport = validateFile(wsdlFile);
+
+	  if(valReport.hasErrors())
+	  {
+	    numInvalid++;
+	    logger.log(MessageFormat.format(WSDLValidateTextUIMessages._UI_FILE_INVALID, new Object[]{wsdlFile}), ILogger.SEV_INFO);
+	    //logger.log(WSDLValidateTextUIMessages._UI_INFORMATION_DELIMITER, ILogger.SEV_ERROR);
+	    logger.log(getMessages(valReport.getValidationMessages()), ILogger.SEV_INFO);
+	  }
+	  else if(verbose)
+	  {
+	    logger.log(MessageFormat.format(WSDLValidateTextUIMessages._UI_FILE_VALID, new Object[]{wsdlFile}), ILogger.SEV_VERBOSE);
+	  }
+	}
+    
+    // Log the summary.
+    logger.log(MessageFormat.format(WSDLValidateTextUIMessages._UI_VALIDATION_SUMMARY, new Object[]{new Integer(wsdlFiles.size()), new Integer(numInvalid)}), ILogger.SEV_INFO);
   }
 
   /**
    * Run WSDL validation on a given file.
    * 
-   * @param directory - the current dir for resolving relative file names
-   * @param filename - the name of the file to validate
-   * @param validatorRB - the WSDL validator resource bundle
+   * @param filename 
+   * 		The name of the file to validate.
    * @throws Exception
    */
-  protected IValidationReport validateFile(String directory, String filename, ResourceBundle validatorRB)
-    throws Exception
-  {
-    //	resolve the location of the file
+  protected IValidationReport validateFile(String filename)
+  {	
+    // Resolve the location of the file.
     String filelocation = null;
     try
     {
-      URL test = StringUtils.getURL(new URL(FILE_PREFIX + directory + "/"), filename);
-      filelocation = test.toExternalForm();
+      URL fileURL = StringUtils.getURL(new URL(FILE_PREFIX + workingdir + "/"), filename);
+      filelocation = fileURL.toExternalForm();
     }
     catch (MalformedURLException e)
     {
-      throw new Exception("Unable to resolve WSDL file location");
+      // Do nothing. The WSDL validator will handle the error.
+      //LoggerFactory.getInstance().getLogger().log(MessageFormat.format(WSDLValidateTextUIMessages._ERROR_UNABLE_TO_READ_FILE, new Object[]{filename}), ILogger.SEV_ERROR);
     }
-    // run validation on the file and record the errors and warnings
-    IValidationReport valReport = wsdlValidator.validate(filelocation);
+    
+    // Run validation on the file.
+    IValidationReport valReport = wsdlValidator.validate(filelocation, null, configuration);
     return valReport;
   }
 
   /**
    * Returns a String with formatted output for a list of messages.
    * 
-   * @param messages The messages to get.
-   * @param errormarker The marker to use to label error messages.
-   * @param warningmarker The marker to use to label warning messages.
-   * @return A string with a formatted list of the messages.
+   * @param messages 
+   * 		The messages to get.
+   * @return 
+   * 		A string with a formatted list of the messages.
    */
-  protected String getMessages(IValidationMessage[] messages, String errormarker, String warningmarker)
+  protected String getMessages(IValidationMessage[] messages)
   {
     StringBuffer outputBuffer = new StringBuffer();
     if (messages != null)
@@ -138,11 +176,11 @@
         int severity = message.getSeverity();
         if (severity == IValidationMessage.SEV_ERROR)
         {
-          marker = errormarker;
+          marker = WSDLValidateTextUIMessages._UI_ERROR_MARKER;
         }
         else if (severity == IValidationMessage.SEV_WARNING)
         {
-          marker = warningmarker;
+          marker = WSDLValidateTextUIMessages._UI_WARNING_MARKER;
         }
         else
         {
@@ -155,8 +193,11 @@
           .append(":")
           .append(message.getColumn())
           .append(STRING_SPACE)
-          .append(message.getMessage())
-          .append("\n");
+          .append(message.getMessage());
+        if(i != numMessages -1)
+        {
+          outputBuffer.append("\n");
+        }
       }
     }
     return outputBuffer.toString();
@@ -171,132 +212,122 @@
    */
   public static void main(String[] args)
   {
-    List wsdlFiles = new Vector();
-    MessageGenerator messGen = null;
-    ResourceBundle validatorRB = null;
-    try
+    // No arguments specified. Print usage.
+	if (args.length < 1)
     {
-      ResourceBundle uiRB = ResourceBundle.getBundle(UI_PROPERTIES);
-      messGen = new MessageGenerator(uiRB);
-      validatorRB = ResourceBundle.getBundle(VALIDATOR_PROPERTIES);
-    }
-    catch (MissingResourceException e)
-    {
-      System.err.println("Validation failed: Unable to load the properties file.");
-      return;
-    }
-    // no arguments specified. Print usage.
-    if (args.length < 1)
-    {
-      System.out.println(messGen.getString(_ERROR_WRONG_ARGUMENTS));
-      return;
-    }
+	  System.err.println(WSDLValidateTextUIMessages._ERROR_WRONG_ARGUMENTS);
+	  System.exit(0);
+	}
+	
+	WSDLValidate wsdlValidate = new WSDLValidate();
+	wsdlValidate.parseArguments(args);
+	wsdlValidate.validate();
+  }
+  
+  /**
+   * Parse the arguments specified for this WSDLValidate task and
+   * configure validation.
+   * 
+   * @param args
+   * 		The arguments specified for this task.
+   */
+  protected void parseArguments(String[] args)
+  {
+	int numargs = args.length;
 
-    int argslength = args.length;
+	for (int i = 0; i < numargs; i++)
+	{
+	  String param = args[i];
 
-    WSDLValidate wsdlValidator = new WSDLValidate();
-    // go through the parameters
-    for (int i = 0; i < argslength; i++)
-    {
-      String param = args[i];
+	  // Registering an extension validator or WSDL 1.1 extension validator.
+	  if (param.equals(WSDLValidate.PARAM_WSDL11VAL) 
+			  || param.equals(WSDLValidate.PARAM_EXTVAL))
+	  {
+	    String namespace = args[++i];
+	    if (!namespace.startsWith(WSDLValidate.STRING_DASH))
+	    {
+	      String validatorClass = args[++i];
 
-      // registering a validator
-      if (param.equalsIgnoreCase(WSDLValidate.PARAM_WSDL11VAL) || param.equalsIgnoreCase(WSDLValidate.PARAM_EXTVAL))
-      {
-
-        String validatorClass = args[++i];
-        if (!validatorClass.startsWith(WSDLValidate.STRING_DASH))
-        {
-          String namespace = args[++i];
-
-          if (!namespace.startsWith(WSDLValidate.STRING_DASH))
-          {
-            if(param.equalsIgnoreCase(WSDLValidate.PARAM_WSDL11VAL))
-            {  
-              WSDL11ValidatorDelegate delegate = new ClassloaderWSDL11ValidatorDelegate(validatorClass);
-              wsdlValidator.wsdlValidator.registerWSDL11Validator(namespace, delegate);
-            }
-            else if(param.equalsIgnoreCase(WSDLValidate.PARAM_EXTVAL))
-            {
-              ClassloaderWSDLValidatorDelegate delegate = new ClassloaderWSDLValidatorDelegate(validatorClass);
-              wsdlValidator.wsdlValidator.registerWSDLExtensionValidator(namespace, delegate);
-            }
-          }
-          else
-          {
-            namespace = null;
-            i--;
-          }
-        }
-        else
-        {
-          validatorClass = null;
-          i--;
-        }  
-      }
-      // registering a directory with schemas
-      else if (param.equalsIgnoreCase(WSDLValidate.PARAM_SCHEMADIR))
-      {
-        String xsdDir = args[++i];
-        XMLCatalog.addSchemaDir(xsdDir);
-      }
-      // registering a schema
-      else if (param.equalsIgnoreCase(WSDLValidate.PARAM_SCHEMA))
-      {
-        String publicid = args[++i];
-        String systemid = args[++i];
-        XMLCatalog.addEntity(new XMLCatalogEntityHolder(publicid, systemid));
-      }
-      else if(param.equalsIgnoreCase(PARAM_URIRESOLVER))
-      {
-        String resolverClass = args[++i];
-        wsdlValidator.addURIResolver(new URIResolverDelegate(resolverClass, null).getURIResolver());
-      }
-      // a file to validate
-      else
-      {
-        if(!param.startsWith(WSDLValidate.STRING_DASH))
-        {  
-          wsdlFiles.add(param);
-        }
-      }
-
-    }
-    // validate the file
-    StringBuffer outputBuffer = null;
-    String infoDelim = messGen.getString(_UI_INFORMATION_DELIMITER);
-    String valid = messGen.getString(_UI_VALID);
-    String invalid = messGen.getString(_UI_INVALID);
-    String errormarker = messGen.getString(_UI_ERROR_MARKER);
-    String warningmarker = messGen.getString(_UI_WARNING_MARKER);
-
-    Iterator filesIter = wsdlFiles.iterator();
-    while (filesIter.hasNext())
-    {
-      outputBuffer = new StringBuffer();
-      String wsdlFile = (String)filesIter.next();
-      try
-      {
-        IValidationReport valReport = wsdlValidator.validateFile(System.getProperty("user.dir"), wsdlFile, validatorRB);
-
-        outputBuffer.append(infoDelim).append("\n");
-        outputBuffer.append(messGen.getString(_UI_ACTION_VALIDATING_FILE, wsdlFile)).append(" - ");
-        if (!valReport.hasErrors())
-        {
-          outputBuffer.append(valid);
-        }
-        else
-        {
-          outputBuffer.append(invalid);
-        }
-        outputBuffer.append("\n").append(infoDelim).append("\n");
-        outputBuffer.append(wsdlValidator.getMessages(valReport.getValidationMessages(), errormarker, warningmarker));
-        System.out.println(outputBuffer.toString());
-      }
-      catch (Exception e)
-      {
-        System.out.println(e.getMessage());
-      }
+	      if (!validatorClass.startsWith(WSDLValidate.STRING_DASH))
+	      {
+	        if(param.equalsIgnoreCase(WSDLValidate.PARAM_WSDL11VAL))
+	        {  
+	          WSDL11ValidatorDelegate delegate = new ClassloaderWSDL11ValidatorDelegate(validatorClass);
+	          wsdlValidator.registerWSDL11Validator(namespace, delegate);
+	        }
+	        else if(param.equalsIgnoreCase(WSDLValidate.PARAM_EXTVAL))
+	        {
+	          ClassloaderWSDLValidatorDelegate delegate = new ClassloaderWSDLValidatorDelegate(validatorClass);
+	          wsdlValidator.registerWSDLExtensionValidator(namespace, delegate);
+	        }
+	      }
+	      else
+	      {
+	        i--;
+	      }
+	    }
+	    else
+	    {
+	      i--;
+	    }  
+	  }
+	  // Register a directory with schemas.
+	  else if (param.equalsIgnoreCase(WSDLValidate.PARAM_SCHEMADIR))
+	  {
+	    String xsdDir = args[++i];
+	    XMLCatalog.addSchemaDir(xsdDir);
+	  }
+	  // Register a schema.
+	  // TODO: Replace this with an XML catalog.
+	  else if (param.equalsIgnoreCase(WSDLValidate.PARAM_SCHEMA))
+	  {
+	    String publicid = args[++i];
+	    String systemid = args[++i];
+	    XMLCatalog.addEntity(new XMLCatalogEntityHolder(publicid, systemid));
+	  }
+	  // Register a URI resolver. 
+	  // TODO: Determine if this is appropriate for the text UI.
+	  else if(param.equalsIgnoreCase(PARAM_URIRESOLVER))
+	  {
+	    String resolverClass = args[++i];
+	    wsdlValidator.addURIResolver(new URIResolverDelegate(resolverClass, null).getURIResolver());
+	  }
+	  // Configure the logger.
+	  else if(param.equals(PARAM_LOGGER))
+	  {
+	    String loggerClassString = args[++i];
+	    try
+	    {
+	      Class loggerClass = WSDLValidate.class.getClassLoader().loadClass(loggerClassString);
+	      ILogger logger = (ILogger)loggerClass.newInstance();
+	      LoggerFactory.getInstance().setLogger(logger);
+	    }
+	    catch(Exception e)
+	    {
+	      System.err.println(MessageFormat.format(WSDLValidateTextUIMessages._ERROR_LOADING_LOGGER, new Object[]{loggerClassString}));
+	    }
+	  }
+	  // Set properties.
+	  else if(param.startsWith(PARAM_PROPERTY))
+	  {
+	    int separator = param.indexOf('=');
+	    String name = param.substring(2, separator);
+	    String value = param.substring(separator+1);
+	    configuration.setProperty(name, value);
+	  }
+	  // Set verbose;
+	  else if(param.equals(PARAM_VERBOSE) || param.equals( PARAM_VERBOSE_SHORT))
+	  {
+		verbose = true;
+	  }
+	  // a file to validate
+	  else
+	  {
+	    if(!param.startsWith(WSDLValidate.STRING_DASH))
+	    {  
+	      wsdlFiles.add(param);
+	    }
+	  }
     }
   }
 }
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateTextUIMessages.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateTextUIMessages.java
new file mode 100644
index 0000000..17ac8e8
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateTextUIMessages.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved.   This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *   IBM - Initial API and implementation
+ * 
+ */
+package org.eclipse.wst.wsdl.validation.internal.ui.text;
+
+import java.util.ResourceBundle;
+
+/**
+ * Strings used by the WSDLValidate text UI.
+ * This class mimics the behaviour of the OSGI NLS class for convenience.
+ */
+public class WSDLValidateTextUIMessages
+{
+	private static final String BUNDLE_NAME = "org.eclipse.wst.wsdl.validation.internal.ui.text.wsdlvalidatetextui";//$NON-NLS-1$
+
+	// Error messages.
+	public static String _ERROR_WRONG_ARGUMENTS = "_ERROR_WRONG_ARGUMENTS";
+	public static String _ERROR_LOADING_LOGGER = "_ERROR_LOADING_LOGGER";
+	public static String _ERROR_UNABLE_TO_READ_FILE = "_ERROR_UNABLE_TO_READ_FILE";
+	
+	// Validation messages.
+	public static String _UI_INFORMATION_DELIMITER = "_UI_INFORMATION_DELIMITER";
+	public static String _UI_FILE_VALID = "_UI_FILE_VALID";
+	public static String _UI_FILE_INVALID = "_UI_FILE_INVALID";
+	public static String _UI_ERROR_MARKER = "_UI_ERROR_MARKER";
+	public static String _UI_WARNING_MARKER = "_UI_WARNING_MARKER";
+	public static String _UI_VALIDATION_SUMMARY = "_UI_VALIDATION_SUMMARY";
+
+	static 
+	{
+		// load message values from bundle file
+		ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME);
+		_ERROR_WRONG_ARGUMENTS = bundle.getString(String.valueOf(_ERROR_WRONG_ARGUMENTS));
+		_ERROR_LOADING_LOGGER = bundle.getString(_ERROR_LOADING_LOGGER);
+		_ERROR_UNABLE_TO_READ_FILE = bundle.getString(_ERROR_UNABLE_TO_READ_FILE);
+		_UI_INFORMATION_DELIMITER = bundle.getString(_UI_INFORMATION_DELIMITER);
+		_UI_FILE_VALID = bundle.getString(_UI_FILE_VALID);
+		_UI_FILE_INVALID = bundle.getString(_UI_FILE_INVALID);
+		_UI_ERROR_MARKER = bundle.getString(_UI_ERROR_MARKER);
+		_UI_WARNING_MARKER = bundle.getString(_UI_WARNING_MARKER);
+		_UI_VALIDATION_SUMMARY = bundle.getString(_UI_VALIDATION_SUMMARY);
+	}
+
+	private WSDLValidateTextUIMessages() 
+	{
+		// cannot create new instance
+	}
+}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/wsdlvalidatetextui.properties b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/wsdlvalidatetextui.properties
new file mode 100644
index 0000000..c4ed82a
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/ui/text/wsdlvalidatetextui.properties
@@ -0,0 +1,33 @@
+###############################################################################
+# Copyright (c) 2006 IBM 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:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+
+# Messages for the WSDLValidate text UI interface.
+
+# Error messages
+_ERROR_WRONG_ARGUMENTS     = Usage: WSDLValidate [-wsdl11v namespace classname] [-extv namespace classname] [-Dname=value] filename\n\
+\  -wsdl11v\tRegister the WSDL 1.1 validator specified by classname\n\
+\t\tfor namespace.\n\
+\  -extv\t\tRegister the WSDL extension validator specified by\n\
+\t\tclassname for namespace.\n\
+\  -verbose, -v\tPrint out verbose information.\n\
+\  -logger\tSpecify an alternate logger that implements\n\
+\t\torg.eclipse.wst.wsdl.validation.internal.logging.ILogger\n\
+\  -D\t\tSpecify a property with name and value.  
+_ERROR_LOADING_LOGGER      = Unable to load logger class {0}.
+_ERROR_UNABLE_TO_READ_FILE = Unable to read file {0}.
+
+# Validation messages
+_UI_INFORMATION_DELIMITER  = ---------------------------------------
+_UI_FILE_INVALID           = {0} - Not valid
+_UI_FILE_VALID             = {0} - Valid
+_UI_ERROR_MARKER           = ERROR
+_UI_WARNING_MARKER         = WARNING
+_UI_VALIDATION_SUMMARY     = {0} files validated. {1} files reported errors.
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/util/LazyURLInputStream.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/util/LazyURLInputStream.java
index 1bc6ab1..124f423 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/util/LazyURLInputStream.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/util/LazyURLInputStream.java
@@ -14,6 +14,9 @@
 import java.io.InputStream;
 import java.net.URL;
 
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
+
 
 /**
  * This class allows InputStreams to be created and returned to xerces without
@@ -95,8 +98,7 @@
 		createInnerStreamIfRequired();
 		inner.mark(readlimit);
 	} catch (IOException e) {
-		// TODO Auto-generated catch block
-		e.printStackTrace();
+	  LoggerFactory.getInstance().getLogger().log("The following IOException occurred in the WSDL validator's LazyURLInputStream.", ILogger.SEV_ERROR, e);
 	}
   }
 
@@ -108,8 +110,7 @@
 		if (inner == null) return false;
 		return inner.markSupported();
 	} catch (IOException e) {
-		// TODO Auto-generated catch block
-		e.printStackTrace();
+	  LoggerFactory.getInstance().getLogger().log("The following IOException occurred in the WSDL validator's LazyURLInputStream.", ILogger.SEV_ERROR, e);
 	}
 	return false;
   }
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/ClassloaderWSDL11ValidatorDelegate.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/ClassloaderWSDL11ValidatorDelegate.java
index 955f352..96b7f68 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/ClassloaderWSDL11ValidatorDelegate.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/ClassloaderWSDL11ValidatorDelegate.java
@@ -11,6 +11,9 @@
 
 package org.eclipse.wst.wsdl.validation.internal.wsdl11;
 
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
+
 public class ClassloaderWSDL11ValidatorDelegate extends WSDL11ValidatorDelegate
 {
   private String validatorClassname = null;
@@ -58,8 +61,7 @@
     }
     catch (Throwable t)
     {
-      // TODO: add logging
-      System.err.println(t);
+      LoggerFactory.getInstance().getLogger().log("Unable to load validator " + validatorClassname, ILogger.SEV_ERROR, t);
     }
 	return validator;
   }
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11BasicValidator.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11BasicValidator.java
index a77067b..2a04051 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11BasicValidator.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11BasicValidator.java
@@ -39,6 +39,8 @@
 import javax.xml.namespace.QName;
 
 import org.apache.xerces.xs.XSModel;
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
 import org.eclipse.wst.wsdl.validation.internal.util.MessageGenerator;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.xsd.SchemaAttributeTable;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.xsd.XSDValidator;
@@ -662,8 +664,7 @@
       }
       catch (Exception e)
       {
-        //TODO: log the error message
-        //System.out.println(e);
+    	LoggerFactory.getInstance().getLogger().log("An exception occurred while performing WSDL validation of a part with the SOAP encoding namespace.", ILogger.SEV_ERROR, e);
       }
     }
     return partvalid;
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11ValidationInfoImpl.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11ValidationInfoImpl.java
index bb364fa..cf18c2e 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11ValidationInfoImpl.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/WSDL11ValidationInfoImpl.java
@@ -148,7 +148,7 @@
     { ((ValidationInfoImpl)valinfo).addError(message, line, column, uri, errorKey, messageArguments);
     }
     catch (ClassCastException e)
-    { System.err.println(e);
+    {
       valinfo.addError(message, line, column, uri);
     }
   }
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/InlineSchemaGenerator.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/InlineSchemaGenerator.java
index 3b75c3e..0412418 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/InlineSchemaGenerator.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/InlineSchemaGenerator.java
@@ -218,8 +218,6 @@
     String elementName = elem.getTagName();
     xsdString.append("<").append(elementName);
 
-    boolean foundSchemaLocation = false; // flag if schemalocation is defined
-    String namespace = ""; // the namespace if we're checking an import or include
     String namePrefix = ""; // the xmlns prefix used for the elements
     // Get all of the attributes for this element and append them to the xsdString
     NamedNodeMap atts = elem.getAttributes();
@@ -230,19 +228,14 @@
       String nodeName = n.getNodeName();
       if (nodeName.equalsIgnoreCase(SCHEMALOCATION) && filelocation != null)
       {
-        foundSchemaLocation = true;
         String relativePath = n.getNodeValue();
         xsdString.append(relativePath).append("\"");   
       }
       else
       {
         String nodeValue = n.getNodeValue();
-        if (nodeName.equalsIgnoreCase(NAMESPACE))
-        {
-          namespace = nodeValue;
-        }
         // get the name prefix for this schema to use in generating import statements
-        else if (nodeName.indexOf(XMLNS) != -1)
+        if (nodeName.indexOf(XMLNS) != -1)
         {
 
           if (nodeValue.equalsIgnoreCase(elem.getNamespaceURI()))
@@ -266,10 +259,10 @@
         xsdString.append(nodeValue).append("\"");
       }
     }
-    if (elementName.equalsIgnoreCase("import") && !foundSchemaLocation)
-    {
-      xsdString.append(" ").append(SCHEMALOCATION).append("=\"").append(namespace).append("\"");
-    }
+//    if (elementName.equalsIgnoreCase("import") && !foundSchemaLocation)
+//    {
+//      xsdString.append(" ").append(SCHEMALOCATION).append("=\"").append(namespace).append("\"");
+//    }
     // add in any required NS declarations from parent elements
     if (reqNSDecl != null)
     {
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/InlineSchemaValidator.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/InlineSchemaValidator.java
index e3fc403..ff67de8 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/InlineSchemaValidator.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/InlineSchemaValidator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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
@@ -151,10 +151,12 @@
         }
       }
     }
-    // if the schema is valid, assign the model to the validatormanager
-    else
+    // If the parser was able to create a schema model assign it for use. 
+    // If the schema is invalid we still want to make use of the model
+    // where possible to avoid cascading error messages to message parts.
+    XSModel xsModel = schemav.getXSModel();
+    if(xsModel != null)
     {
-      XSModel xsModel = schemav.getXSModel();
       valInfo.addSchema(xsModel);
     }
   }
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/XSDValidator.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/XSDValidator.java
index d64cb4e..310efdc 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/XSDValidator.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl11/xsd/XSDValidator.java
@@ -184,7 +184,7 @@
 		  for(int i = 0; i < numGrammars; i++)
 		  {
 		    XMLGrammarDescription desc = grammars[i].getGrammarDescription();
-		    if(desc.getNamespace().equals(targetNamespace))
+		    if(targetNamespace.equals(desc.getNamespace()))
 		    {
 		      oldGrammars.add(pool.removeGrammar(desc));
 		    }
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/IWSDL20Validator.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/IWSDL20Validator.java
deleted file mode 100644
index bfc792d..0000000
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/IWSDL20Validator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.wst.wsdl.validation.internal.wsdl20;
-
-import java.util.List;
-import java.util.ResourceBundle;
-
-import org.eclipse.wst.wsdl.validation.internal.IValidationInfo;
-
-/**
- * Interface for a validator plugged into the WSDL 2.0 validator.
- */
-public interface IWSDL20Validator
-{
-  /**
-   * Validate the given element.
-   * 
-   * @param element The element to validate.
-   * @param parents A list of parents of this element.
-   * @param valInfo The validation info for the current validation.
-   */
-  public void validate(Object element, List parents, IValidationInfo valInfo);
-
-  /**
-   * Set the resource bundle of the validator.
-   * 
-   * @param rb The resource bundle to set.
-   */
-  public void setResourceBundle(ResourceBundle rb);
-
-}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/ValidatorRegistry.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/ValidatorRegistry.java
deleted file mode 100644
index f983bd9..0000000
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/ValidatorRegistry.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.wst.wsdl.validation.internal.wsdl20;
-
-import java.util.Hashtable;
-import java.util.Map;
-
-
-/**
- * A registry to hold all the WSDL 2.0 validators.
- */
-public class ValidatorRegistry
-{
-
-  protected static ValidatorRegistry verInstance;
-
-  protected Map validatorReg = new Hashtable();
-
-  /**
-   * Constructor.
-   */
-  protected ValidatorRegistry()
-  {
-  }
-
-  /**
-   * Returns the instance of this registry.
-   * 
-   * @return The instance of this registry.
-   */
-  public static ValidatorRegistry getInstance()
-  {
-    if (verInstance == null)
-    {
-      verInstance = new ValidatorRegistry();
-    }
-    return verInstance;
-  }
-
-  /**
-   * Register this validator delegate with the given namespace.
-   * 
-   * @param namespace The namespace the validator is associated with.
-   * @param valDelegate The validator delegate to register.
-   */
-  public void registerValidator(String namespace, WSDL20ValidatorDelegate valDelegate)
-  {
-    // allow the null namespace but make it the empty string
-    if (namespace == null)
-    {
-      namespace = "";
-    }
-
-    // add the validator to the hashtable
-    validatorReg.put(namespace, valDelegate);
-  }
-
-  /**
-   * Ask for the validator associated with this namespace. If none is found
-   * return null.
-   * 
-   * @param namespace The namespace of the validator.
-   * @return The WSDL 1.1 validator for the given namespace.
-   */
-  public IWSDL20Validator queryValidatorRegistry(String namespace)
-  {
-    // if the namespace is null allow it and treat it as the empty string
-    if (namespace == null)
-    {
-      namespace = "";
-    }
-    WSDL20ValidatorDelegate delegate = (WSDL20ValidatorDelegate)validatorReg.get(namespace);
-    if(delegate != null)
-    {  
-      return delegate.getValidator();
-    }
-    return null;
-  }
-
-  /**
-   * Convenience method that tells whether a validator for a given namespace is registered.
-   * 
-   * @param namespace The namespace to check.
-   * @return True if there is a validator registered, false otherwise.
-   */
-  public boolean hasRegisteredValidator(String namespace)
-  {
-    if (queryValidatorRegistry(namespace) != null)
-    {
-      return true;
-    }
-    return false;
-  }
-}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/WSDL20BasicValidator.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/WSDL20BasicValidator.java
deleted file mode 100644
index fa38c99..0000000
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/WSDL20BasicValidator.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.wst.wsdl.validation.internal.wsdl20;
-
-import java.util.List;
-import java.util.ResourceBundle;
-
-import org.eclipse.wst.wsdl.validation.internal.IValidationInfo;
-import org.eclipse.wst.wsdl.validation.internal.util.MessageGenerator;
-/**
- * Validate the elements defined in a WSDL 1.1 Document.
- */
-public class WSDL20BasicValidator implements IWSDL20Validator
-{
-  protected final String NAMESPACES_FEATURE_ID = "http://xml.org/sax/features/namespaces";
-  protected final String VALIDATION_FEATURE_ID = "http://xml.org/sax/features/validation";
-  protected final String SCHEMA_VALIDATION_FEATURE_ID = "http://apache.org/xml/features/validation/schema";
-  protected final String SCHEMA_FULL_CHECKING_FEATURE_ID =
-    "http://apache.org/xml/features/validation/schema-full-checking";
-  protected final String CONTINUE_AFTER_FATAL_ERROR_ID = "http://apache.org/xml/features/continue-after-fatal-error";
-  protected final String SOAP_ENCODING_URI = "http://schemas.xmlsoap.org/soap/encoding/";
-
-  protected final int ELEMENT = 0;
-  protected final int TYPE = 1;
-
-  //protected WSDL20ValidatorController validatorcontroller;
-  protected MessageGenerator messagegenerator;
-
-  /**
-   * Constructor.
-   */
-  public WSDL20BasicValidator()
-  {
-  }
-  
-  /**
-   * @see org.eclipse.wst.wsdl.validation.internal.wsdl11.validator.IWSDL11Validator#validate(java.lang.Object, java.util.List, org.eclipse.wsdl.validate.IValidationInfo)
-   */
-  public void validate(Object element, List parents, IValidationInfo valInfo)
-  {
-    //this.validatorcontroller = validatorcontroller;
-    //setDefaultResourceBundleIfNeeded(validatorcontroller);
-  	
-//    Definitions wsdlDefinitions = (Definitions)element;
-//    validateTypes(wsdlDefinitions, valInfo);
-//    validateServices(wsdlDefinitions, valInfo);
-//    validateBindings(wsdlDefinitions, valInfo);
-//    validateInterfaces(wsdlDefinitions, valInfo);
-
-  }
-
-  /**
-   * Takes a list of ExtensibilityElements and checks if there's a validator 
-   * associated with each element and if so calls the validator.
-   * 
-   * @param parents The list of parents of the elements.
-   * @param extensibilityElements The list of elements to validate.
-   * @param validatorcontroller The validator controller.
-   * @param wsdlDefinition The defnintions element for this document.
-   */
-//  protected void validateExtensibilityElementList(
-//    List parents,
-//    ElementInfoItem[] extensibilityElements,
-//    ValidationInfo valInfo,
-//    Definitions wsdlDefinitions)
-//  {
-//    //TODO: get the validation controller statically to get the extensibility validator
-////    ValidatorRegistry ver = ValidatorRegistry.getInstance();
-////    Iterator extElems = extensibilityElements.iterator();
-////    while (extElems.hasNext())
-////    {
-////      ElementInfoItem element = (ExtensibilityElement)extElems.next();
-////      //      if (ver.hasRegisteredValidator(element.getElementType().getNamespaceURI()))
-////      //      {
-////      validatorcontroller.validateWSDLElement(element.getElementType().getNamespaceURI(), element, parents);
-////      //ver.queryValidatorRegistry(element.getElementType().getNamespaceURI()).validate(element, parents, validatormanager);
-////      //      }
-////    }
-//  }
-
-  /**
-   * If the resourcebundle hasn't been set, set it to the one registered with the ValidatorController.
-   * 
-   * @param validatorcontroller The validator controller to get the resource bundle from.
-   */
-//  protected void setDefaultResourceBundleIfNeeded(WSDL20ValidatorController validatorcontroller)
-//  {
-//    if (messagegenerator == null)
-//    {
-//      setResourceBundle(validatorcontroller.getResourceBundle());
-//    }
-//  }
-  /**
-   * Set the resourcebundle to the one specified.
-   * 
-   * @param rb The resource bundle to set.
-   */
-  public void setResourceBundle(ResourceBundle rb)
-  {
-    messagegenerator = new MessageGenerator(rb);
-  }
-
-  /**
-   * Ensure that the Types element is correct. 
-   * 
-   * @param wsdlDefinition The definitions element from the current document.
-   */
-
-//  protected void validateTypes(Definitions wsdlDefinitions, ValidationInfo valInfo)
-//  {
-//    Types types = wsdlDefinitions.getTypes();
-//    // ensure that types is defined
-//    if (types != null)
-//    {
-//      List parents = new Vector();
-//      parents.add(wsdlDefinitions);
-//      ElementInfoItem elementInfoItems[] = types.getElementInfoItems();
-//      parents.add(0, types);
-//      validateExtensibilityElementList(parents, elementInfoItems, valInfo, wsdlDefinitions);
-//      parents.remove(0);
-//    }
-//  }
-
-  /**
-   * Validates all of the declared services for the definition.
-   * 
-   * @param wsdlDefinitions The WSDL definitions element.
-   * @param valInfo Validation info for the current validation.
-   */
-//  protected void validateServices(Definitions wsdlDefinitions, ValidationInfo valInfo)
-//  {
-//
-//  }
-
-  /**
-   * Checks that the bindings refer to valid interfaces and all of the operations
-   * in a given binding refer to a defined operation within the corresponding
-   * interfaces.
-   * 
-   * @param wsdlDefinitions The WSDL definitions element.
-   * @param valInfo Validation info for the current validation.
-   */
-//  protected void validateBindings(Definitions wsdlDefinitions, ValidationInfo valInfo)
-//  {
-//
-//  }
-
-  /**
-   * Check that all of the Interfaces have valid messages associated with their
-   * operation input, output, infault and outfault types.
-   * 
-   * @param wsdlDefinitions The WSDL definitions element.
-   * @param valInfo Validation info for the current validation.
-   */
-//  private void validateInterfaces(Definitions wsdlDefinitions, ValidationInfo valInfo)
-//  {
-//    
-//  }
-
-  /**
-   * Checks whether the given name is defined in the namespace for the part.  A part is an
-   * ELEMENT in WSDL 2.0.
-   * 
-   * @param namespace The namespace to check.
-   * @param name The name to check.
-   * @param valInfo Validation info for the current validation.
-   * @return True if the part element is defined, false otherwise.
-   */
-  protected boolean checkMessage(String namespace, String name, IValidationInfo valInfo)
-  {
-
-    boolean partvalid = false;
-//    // first take care of the situation where it's schema for schema
-//    if (namespace.equalsIgnoreCase(SchemaSymbols.URI_SCHEMAFORSCHEMA))
-//    {
-//      SchemaAttributeTable xsdTable = new SchemaAttributeTable();
-//      if (xsdTable.containsSymbol(name))
-//      {
-//        partvalid = true;
-//      }
-//    }
-//    // check inline and imported schema
-//    else
-//    {
-//      List schemas = validatorcontroller.getSchemas();
-//      Iterator schemasIter = schemas.iterator();
-//      while (schemasIter.hasNext())
-//      {
-//        XSModel schema = (XSModel)schemasIter.next();
-//        if (schema != null)
-//        {
-//          if (schema.getElementDeclaration(name, namespace) != null)
-//          {
-//            partvalid = true;
-//            break;
-//          }
-//         
-//        }
-//      }
-//    }
-    // If the SOAP encoding namespace hasn't been explicitly imported do so now.
-    // Allow the SOAP encoding namespace to be automatically imported but mark it as a warning.
-//    if (!partvalid && namespace.equals(SOAP_ENCODING_URI))
-//    {
-//      try
-//      {
-//        XSDValidator xsdVal = new XSDValidator();
-//        xsdVal.validate(XMLCatalog.getInstance().resolveEntityLocation(SOAP_ENCODING_URI, null), null);
-//        // sanity check in case something goes wrong
-//        if (xsdVal.isValid())
-//        {
-//          XSModel xsModel = xsdVal.getXSModel();
-//
-//          if (xsModel.getElementDeclaration(name, namespace) != null)
-//          {
-//            partvalid = true;
-//          }
-//
-//          validatorcontroller.addWarningMessage(
-//            partObject,
-//            messagegenerator.getString("_WARN_SOAPENC_IMPORTED_PART", "'" + name + "'"));
-//        }
-//      }
-//      catch (Exception e)
-//      {
-//        //TODO: log the error message
-//        //System.out.println(e);
-//      }
-//    }
-    return partvalid;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/WSDL20ValidatorController.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/WSDL20ValidatorController.java
deleted file mode 100644
index b8175cf..0000000
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/WSDL20ValidatorController.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.wst.wsdl.validation.internal.wsdl20;
-
-import java.util.Hashtable;
-import java.util.List;
-import java.util.ResourceBundle;
-import java.util.Vector;
-
-import org.eclipse.wst.wsdl.validation.internal.IWSDLValidator;
-import org.eclipse.wst.wsdl.validation.internal.IValidationInfo;
-import org.eclipse.wst.wsdl.validation.internal.exception.ValidateWSDLException;
-import org.eclipse.wst.wsdl.validation.internal.util.MessageGenerator;
-import org.w3c.dom.Document;
-
-/**
- * The validator controller is the head of validation. Has methods for getting 
- * extension validators.
- */
-public class WSDL20ValidatorController implements IWSDLValidator
-{
-  protected final String _WARN_NO_VALDIATOR = "_WARN_NO_VALDIATOR";
-  protected final int ERROR_MESSAGE = 0;
-  protected final int WARNING_MESSAGE = 1;
-  protected String fileURI;
-  protected List schemas = new Vector();
-//  protected Definitions wsdlDefinition;
-  protected Hashtable elementLocations = null;
-  protected ResourceBundle resourcebundle;
-  protected MessageGenerator messagegenerator = null;
-  //protected ValidationController validationController;
-  protected ValidatorRegistry ver = ValidatorRegistry.getInstance();
-  protected boolean errors = false;
-
-  /**
-   * Constructor.
-   * 
-   * @param rb The resource bundle to set for this controller.
-   */
-  public WSDL20ValidatorController(ResourceBundle rb)
-  {
-    setResourceBundle(rb);
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wsdl.validate.IWSDLValidator#validate(org.w3c.dom.Document, org.eclipse.wsdl.validate.ValidationInfo)
-   */
-  public void validate(Document domModel, IValidationInfo valInfo) throws ValidateWSDLException
-  {
-    // reset the variables
-    //reset();
-    fileURI = valInfo.getFileURI();
-    //this.validationController = validationcontroller;
-
-    
-//    List readerErrors = readWSDLDocument(domModel, fileURI, getMessageGenerator());
-    //		handle any reader errors
-//    if (readerErrors != null)
-//    {
-//      Iterator readerErrorsI = readerErrors.iterator();
-//      while (readerErrorsI.hasNext())
-//      {
-//        ReaderError re = (ReaderError)readerErrorsI.next();
-//        valInfo.addError(re.getMessage(), re.getLine(), re.getColumn(), re.getFileURI());
-//      }
-//    }
-//    validateWSDLElement(Constants.NS_URI_WSDL, wsdlDefinition, new Vector(), valInfo);
-  }
-  
-  /**
-   * Read in the WSDL document and set the model and imported schemas.
-   * 
-   * @param domModel A DOM document model of the file to be read.
-   * @param file The file to read.
-   * @param messagegenerator The messagegenerator the reader should use for any messages produced.
-   * @throws ValidateWSDLException
-   * @return A list of reader errors.
-   */
-//  protected List readWSDLDocument(Document domModel, String file, MessageGenerator messagegenerator) throws ValidateWSDLException
-//  {
-//    List readerErrors = null;
-//    try
-//    {
-//
-//      WSDLReaderImpl wsdlReader = new WSDLReaderImpl();
-//      wsdlDefinition = wsdlReader.readWSDL(file, domModel);
-//
-//      readerErrors = wsdlReader.getReaderErrors();
-//
-//    }
-//    catch (WSDLException e)
-//    {
-//      throw new ValidateWSDLException(e.getMessage() /*+ " " + e.getFaultCode()*/);
-//    }
-//
-//    catch (Exception e)
-//    {
-//      throw new ValidateWSDLException("unable to read file" + e.getMessage() + " " + e.toString());
-//    }
-//    return readerErrors;
-//  }
-
-  /**
-   * Given a WSDL element, call ValidateElement for it.
-   * 
-   * @param namespace The namespace of the element to validate.
-   * @param element The element to validate.
-   * @param parents The list of parents for this element.
-   */
-  public void validateWSDLElement(String namespace, Object element, List parents, IValidationInfo valInfo)
-  {
-    IWSDL20Validator val = ver.queryValidatorRegistry(namespace);
-    if (val != null)
-    {
-      val.validate(element, parents, valInfo);
-    }
-    else
-    {
-      //valInfo.addWarning(messagegenerator.getString(_WARN_NO_VALDIATOR, namespace), element);
-    }
-  }
-
-  /**
-   * Add a schema to the list of schemas.
-   * 
-   * @param xsModel The schema to add.
-   */
-//  public void addSchema(XSModel xsModel)
-//  {
-//    if (xsModel != null)
-//    {
-//      schemas.add(xsModel);
-//    }
-//  }
-
-  /**
-   * Return the list containing the schemas.
-   * 
-   * @return The list of schemas.
-   */
-//  public List getSchemas()
-//  {
-//    return schemas;
-//  }
-
-  /**
-  	* Get the ResourceBundle for this ValidatorManager.
-  	* 
-  	* @return The resource bundle registered for this controller.
-  	* @see #setResourceBundle
-  	*/
-  public ResourceBundle getResourceBundle()
-  {
-    return resourcebundle;
-  }
-
-  /**
-   * Set the ResourceBundle for this ValidatorManager.
-   * 
-   * @param rb The resource bundle to set.
-   * @see #getResourceBundle
-   */
-  public void setResourceBundle(ResourceBundle rb)
-  {
-    if (rb != null)
-    {
-      resourcebundle = rb;
-      messagegenerator = new MessageGenerator(rb);
-    }
-
-  }
-
-  /**
-   * Get the message generator registered for this controller.
-   * 
-   * @return The message generator registered for this controller.
-   */
-  public MessageGenerator getMessageGenerator()
-  {
-    return messagegenerator;
-  }
-
-  /**
-   * Return the filename for the file currently being validated. Some validators require this.
-   * 
-   * @return The filename for the file being validated.
-   */
-//  public String getFilename()
-//  {
-//    return fileURI;
-//  }
-
-  /**
-   * Convenience method for extensibly validators to add error messages.
-   * 
-   * @param object The object to add the error for.
-   * @param error The error to add.
-   */
-//  public void addErrorMessage(Object object, String error)
-//  {
-//    addValidationMessage(ERROR_MESSAGE, object, error);
-//    errors = true;
-//  }
-
-  /**
-   * Method for extensibly validators to add error messages when they know
-   * line and column numbers.
-   * 
-   * @param line The line where the error message is located.
-   * @param column The column where the error message is located.
-   * @param error The error message.
-   */
-//  public void addErrorMessage(int line, int column, String error)
-//  {
-//    addValidationMessage(ERROR_MESSAGE, line, column, error);
-//    errors = true;
-//  }
-
-  /**
-   * Convenience method for extensibly validators to add warning messages.
-   * 
-   * @param object The object to add the warning message.
-   * @param warning The warning message.
-   */
-//  public void addWarningMessage(Object object, String warning)
-//  {
-//    addValidationMessage(WARNING_MESSAGE, object, warning);
-//  }
-
-  /**
-   * Method for extensibly validators to add warning messages when they know
-   * line and column numbers.
-   * 
-   * @param line The line where the error message is located.
-   * @param column The column where the error message is located.
-   * @param warning The warning message.
-   */
-//  public void addWarningMessage(int line, int column, String warning)
-//  {
-//    addValidationMessage(WARNING_MESSAGE, line, column, warning);
-//  }
-
-  /**
-   * If you have an object read in by the reader for this
-   * validatorcontroller the object can be passed in here and the line and column
-   * information will be abstracted from it.
-   * 
-   * @param type The type of message to add.
-   * @param o The object that has the error (used to get the location).
-   * @param message The message to add.
-   */
-//  protected void addValidationMessage(int type, Object o, String message)
-//  {
-//    ValidatableElement ve = (ValidatableElement)o;
-////    int[] location;
-////    if (elementLocations.containsKey(o))
-////    {
-////      location = (int[])elementLocations.get(o);
-////    }
-////    // if we give it an element that hasn't been defined we'll set the location
-////    // at (0,0) so the error shows up but no line marker in the editor
-////    else
-////    {
-////      location = new int[] { 0, 0 };
-////    }
-//    addValidationMessage(type, ve.getLine(), ve.getColumn(), message);
-//  }
-
-  /**
-    * Creates a validation message of the specified type.
-    * 
-  	* @param type The type of validation message to add.
-  	* @param line The line where the error message is located.
-  	* @param column The line where the column message is located.
-  	* @param message The message to add.
-  	*/
-//  protected void addValidationMessage(int type, int line, int column, String message)
-//  {
-//    if (message != null)
-//    {
-//      if (type == ERROR_MESSAGE)
-//      {
-//        validationController.addErrorMessage(line, column, message);
-//      }
-//      else if (type == WARNING_MESSAGE)
-//      {
-//        validationController.addWarningMessage(line, column, message);
-//      }
-//    }
-//  }
-
-  /**
-   * @see org.eclipse.wst.wsdl.validation.controller.IWSDLValidator#isValid()
-   */
-  public boolean isValid()
-  {
-    return !errors;
-  }
-
-  /**
-   * Reset the validator controller.
-   */
-//  protected void reset()
-//  {
-//    schemas = new Vector();
-//    fileURI = "";
-//    wsdlDefinition = null;
-//    elementLocations = null;
-//    resourcebundle = null;
-//    //validationController = null;
-//    errors = false;
-//  }
-}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/WSDL20ValidatorDelegate.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/WSDL20ValidatorDelegate.java
deleted file mode 100644
index 7661f7d..0000000
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/wsdl20/WSDL20ValidatorDelegate.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.wst.wsdl.validation.internal.wsdl20;
-
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-
-/**
- * The WSDL 1.1 validator delegate holds a reference to a validator to be instantiated at
- * a later point.
- */
-public class WSDL20ValidatorDelegate
-{
-  private String validatorClassname = null;
-  private String resourceBundle = null;
-  private ClassLoader classLoader = null;
-  private IWSDL20Validator validator = null;
-
-  /**
-   * Create a delegate for a validator by its class name and resource bundle name.
-   * 
-   * @param validatorClassname The name of the validator class.
-   * @param resourceBundle The name of the validator base resource bundle.
-   */
-  public WSDL20ValidatorDelegate(String validatorClassname, String resourceBundle)
-  {
-    this.validatorClassname = validatorClassname;
-    this.resourceBundle = resourceBundle;
-  }
-
-  /**
-   * Create a delegate for a validator by its class name, resource bundle name and 
-   * a class loader to load the validator and bundle.
-   * 
-   * @param validatorClassname The name of the validator class.
-   * @param resourceBundle The name of the validator base resource bundle.
-   * @param classLoader The class loader to use to load the validator and bundle.
-   */
-  public WSDL20ValidatorDelegate(String validatorClassname, String resourceBundle, ClassLoader classLoader)
-  {
-    this(validatorClassname, resourceBundle);
-    this.classLoader = classLoader;
-  }
-
-  /**
-   * Get the validator specified in this delegate.
-   * 
-   * @return The WSDL 1.1 validator specified by this delegate.
-   */
-  public IWSDL20Validator getValidator()
-  {
-    if (validator == null)
-    {
-      if(classLoader == null)
-      {
-      	classLoader = getClass().getClassLoader();
-      }
-      try
-      {
-        Class validatorClass =
-          classLoader != null ? classLoader.loadClass(validatorClassname) : Class.forName(validatorClassname);
-
-        validator = (IWSDL20Validator)validatorClass.newInstance();
-        if (resourceBundle != null)
-        {
-          ResourceBundle validatorBundle = ResourceBundle.getBundle(resourceBundle, Locale.getDefault(), classLoader);
-          validator.setResourceBundle(validatorBundle);
-        }
-      }
-      catch (ClassNotFoundException e)
-      {
-        // TODO: add logging
-        System.err.println(e);
-      }
-      catch (IllegalAccessException e)
-      {
-        // TODO: add logging
-        System.err.println(e);
-      }
-      catch (InstantiationException e)
-      {
-        // TODO: add logging
-        System.err.println(e);
-      }
-    }
-    return validator;
-  }
-}
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/xml/DefaultXMLValidator.java b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/xml/DefaultXMLValidator.java
index e8e1106..c653304 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/xml/DefaultXMLValidator.java
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/org/eclipse/wst/wsdl/validation/internal/xml/DefaultXMLValidator.java
@@ -33,6 +33,8 @@
 import org.apache.xerces.xni.parser.XMLEntityResolver;
 import org.apache.xerces.xni.parser.XMLInputSource;
 import org.eclipse.wst.wsdl.validation.internal.ValidationMessageImpl;
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
 import org.eclipse.wst.wsdl.validation.internal.resolver.IURIResolutionResult;
 import org.eclipse.wst.wsdl.validation.internal.resolver.URIResolver;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.xsd.XSDValidator;
@@ -142,12 +144,12 @@
     }
     catch (IOException e)
     {
-      // TODO: Log exception.
+      // No need to log this error. The WSDL validator will catch this error when creating the dom model.
+      //LoggerFactory.getInstance().getLogger().log("The WSDL validator was unable to read file " + uri + ".", ILogger.SEV_ERROR, e);
     }
     catch (Exception e)
     {
-      // TODO: Log exception.
-      //System.out.println(e);
+      LoggerFactory.getInstance().getLogger().log("An exception occurred while performing WSDL XML conformance validation for file " + uri + ".", ILogger.SEV_ERROR, e);
     }
   }
   
@@ -173,8 +175,7 @@
     }
     catch (Exception e)
     {
-      //TODO: log error message
-      //e.printStackTrace();
+      LoggerFactory.getInstance().getLogger().log("The WSDL valdiator was unable to create to create a string representation of an input stream. WSDL XML validation may not have run correctly.", ILogger.SEV_ERROR, e);
     }
     return fileString.toString();
   }
@@ -347,8 +348,7 @@
     } 
     catch(Exception e)
     { 
-      // TODO: Log error.
-      //e.printStackTrace();
+      LoggerFactory.getInstance().getLogger().log("Error creating XML reader for WSDL XML conformance validation.", ILogger.SEV_ERROR, e);
     }
     return reader;
   } 
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/validatewsdl.properties b/bundles/org.eclipse.wst.wsdl.validation/src/validatewsdl.properties
index a053432..4e1c160 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/validatewsdl.properties
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/validatewsdl.properties
@@ -10,6 +10,8 @@
 ###############################################################################
 !-- Constants for strings  
 
+!-- Error with document location
+_ERROR_DOCUMENT_LOCATION                   = The WSDL document {0} could not be read.
 !-- Warning Messages
 _WARN_NO_VALDIATOR                         = There is no registered validator for the namespace {0}.
 
diff --git a/bundles/org.eclipse.wst.wsdl.validation/src/validatewsdlui.properties b/bundles/org.eclipse.wst.wsdl.validation/src/validatewsdlui.properties
index 37af48a..cb22374 100644
--- a/bundles/org.eclipse.wst.wsdl.validation/src/validatewsdlui.properties
+++ b/bundles/org.eclipse.wst.wsdl.validation/src/validatewsdlui.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2001, 2004 IBM Corporation and others.
+# Copyright (c) 2001, 2006 IBM 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
@@ -22,6 +22,4 @@
 _EXC_UNABLE_TO_VALIDATE_FILE               = Unable to validate the WSDL file {0}. {1}
 _EXC_WSDL_FAIL_ON_ERROR                    = The WSDL file is not valid. (Fail On Error is enabled.)
 
-!-- Text UI
-_ERROR_WRONG_ARGUMENTS                     = Usage: WSDLValidate filename"
 _ERROR_UNABLE_TO_LOAD_EXT_VALIDATOR        = Unable to load the validator for namespace {0}. {1}
diff --git a/bundles/org.eclipse.wst.wsdl/.cvsignore b/bundles/org.eclipse.wst.wsdl/.cvsignore
index 28dfd3f..5cf2980 100644
--- a/bundles/org.eclipse.wst.wsdl/.cvsignore
+++ b/bundles/org.eclipse.wst.wsdl/.cvsignore
@@ -6,3 +6,4 @@
 org.eclipse.wst.wsdl.patch
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.wsdl/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.wsdl/META-INF/MANIFEST.MF
index 8778f37..ed59a96 100644
--- a/bundles/org.eclipse.wst.wsdl/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.wsdl/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.wsdl; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.103.qualifier
 Bundle-Activator: org.eclipse.wst.wsdl.WSDLPluginImplementation
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -26,10 +26,11 @@
  org.eclipse.wst.wsdl.internal.impl.wsdl4j;x-internal:=true,
  org.eclipse.wst.wsdl.internal.util;x-internal:=true,
  org.eclipse.wst.wsdl.util
-Require-Bundle: org.eclipse.emf.ecore,
- org.eclipse.xsd,
- org.eclipse.core.resources,
- org.wsdl4j,
- org.eclipse.core.runtime,
- org.apache.xerces
+Require-Bundle: org.eclipse.emf.ecore;bundle-version="[2.2.0,2.4.0)",
+ org.eclipse.xsd;bundle-version="[2.2.0,2.4.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.apache.xerces;bundle-version="[2.8.0,2.9.0)",
+ com.ibm.icu;bundle-version="[3.4.4,4.0.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.wsdl/about.html b/bundles/org.eclipse.wst.wsdl/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.wsdl/about.html
+++ b/bundles/org.eclipse.wst.wsdl/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.wsdl/build.properties b/bundles/org.eclipse.wst.wsdl/build.properties
index ed6283e..d33da47 100644
--- a/bundles/org.eclipse.wst.wsdl/build.properties
+++ b/bundles/org.eclipse.wst.wsdl/build.properties
@@ -11,7 +11,6 @@
 bin.includes = .,\
                plugin.properties,\
                plugin.xml,\
-               xsd/,\
                META-INF/,\
                about.html
 jars.compile.order = .
diff --git a/bundles/org.eclipse.wst.wsdl/plugin.properties b/bundles/org.eclipse.wst.wsdl/plugin.properties
index 34bd26d..5259151 100644
--- a/bundles/org.eclipse.wst.wsdl/plugin.properties
+++ b/bundles/org.eclipse.wst.wsdl/plugin.properties
@@ -32,3 +32,4 @@
 _UI_IOError_message = IO: {0}
 _UI_ParserError_message = DOM: {0}
 
+_UI_ResourceLoad_progress = Loading WSDL documents 
diff --git a/bundles/org.eclipse.wst.wsdl/src-http/org/eclipse/wst/wsdl/binding/http/internal/generator/HTTPContentGenerator.java b/bundles/org.eclipse.wst.wsdl/src-http/org/eclipse/wst/wsdl/binding/http/internal/generator/HTTPContentGenerator.java
index eb8e510..caa88ca 100644
--- a/bundles/org.eclipse.wst.wsdl/src-http/org/eclipse/wst/wsdl/binding/http/internal/generator/HTTPContentGenerator.java
+++ b/bundles/org.eclipse.wst.wsdl/src-http/org/eclipse/wst/wsdl/binding/http/internal/generator/HTTPContentGenerator.java
@@ -225,24 +225,6 @@
 	  return (parent instanceof Binding)? (Binding) parent : null;
   }
   
-  private List getMessageReferenceBindingObjects(Object genericBindingObject) {
-	  List list = new ArrayList();
-	  Binding binding = getBindingObject(genericBindingObject);
-	  
-	  if (binding != null) {
-		  Iterator operationsIt = binding.getEBindingOperations().iterator();
-	  
-		  while (operationsIt.hasNext()) {
-			  BindingOperation op = (BindingOperation) operationsIt.next();
-			  list.add(op.getEBindingInput());
-			  list.add(op.getEBindingOutput());
-			  list.addAll(op.getEBindingFaults());
-		  }	  
-	  }
-	  
-	  return list;
-  }
-  
   private Object getGenericBindingObjectParent(Object genericBindingObject) {
 	  Object parent = null;
 	  
diff --git a/bundles/org.eclipse.wst.wsdl/src-soap/org/eclipse/wst/wsdl/binding/soap/internal/impl/SOAPBodyImpl.java b/bundles/org.eclipse.wst.wsdl/src-soap/org/eclipse/wst/wsdl/binding/soap/internal/impl/SOAPBodyImpl.java
index 538da4f..02ed48d 100644
--- a/bundles/org.eclipse.wst.wsdl/src-soap/org/eclipse/wst/wsdl/binding/soap/internal/impl/SOAPBodyImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-soap/org/eclipse/wst/wsdl/binding/soap/internal/impl/SOAPBodyImpl.java
@@ -13,7 +13,7 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 
 import javax.xml.namespace.QName;
 
@@ -481,59 +481,39 @@
     {
       if (eReference == null || eReference == SOAPPackage.eINSTANCE.getSOAPBody_Parts())
       {
-    	// Bugzilla 108176
-        Part part = null;
-        Message message = null;
-        String partNames = "";
-        Iterator iter = getParts().iterator();
-        String namespace = null;
-        String prefix = null;
-        while (iter.hasNext())
+        // Used to be Bugzilla 108176, now it is Bugzilla 137990
+
+        String partsAttributeValue = null;
+        
+        // Do not use getParts() as it will return the list of implicit message
+        // parts.
+
+        if (parts != null && !parts.isEmpty())
         {
-          part = (Part)iter.next();
-          if ((message = getMessage(part)) != null)
+          StringBuffer partNamesBuffer = new StringBuffer();
+          Iterator iterator = parts.iterator();
+
+          while (iterator.hasNext())
           {
-            namespace = message.getQName().getNamespaceURI();
-            prefix = part.getEnclosingDefinition().getPrefix(namespace);
-            partNames = partNames + " " + prefix + ":" + part.getName();
+            Part part = (Part) iterator.next();
+            String partName = part.getName();
+
+            partNamesBuffer.append(partName);
+
+            if (iterator.hasNext())
+            {
+              partNamesBuffer.append(" "); //$NON-NLS-1$
+            }
           }
-        } 
-        partNames = partNames.trim();
-        if (partNames.length() != 0)
-          niceSetAttribute(theElement, SOAPConstants.PARTS_ATTRIBUTE, partNames);
+
+          partsAttributeValue = partNamesBuffer.toString();
+        }
+
+        niceSetAttribute(theElement, SOAPConstants.PARTS_ATTRIBUTE, partsAttributeValue);
       }     
     }
   } 
   
-  // KB: Workaround the problem in Message.addPart(Part)
-  // After adding a part to a message 
-  // Part.getMessage() returns null.
-  private Message getMessage(Part part)
-  {
-	  Message message = null;
-	  Object obj = part.eContainer();
-	  if (obj instanceof Message)
-		  message = (Message)obj;
-	  return message;	  
-  } 
-  
-  /*
-  public void handleUnreconciledElement(Element child, Collection remainingModelObjects)
-  {
-    switch (WSDLUtil.getInstance().getWSDLType(child))
-    {
-      case WSDLConstants.PART :
-        Part part = WSDLFactory.eINSTANCE.createPart();
-        part.setEnclosingDefinition(getEnclosingDefinition());
-        part.setElement(child);
-        getParts().add(part);
-        break;
-      default :
-        break;
-    }
-  }
-  */
-  
   public QName getElementType()
   {
     if (elementType == null)
diff --git a/bundles/org.eclipse.wst.wsdl/src-soap/org/eclipse/wst/wsdl/binding/soap/internal/impl/SOAPHeaderBaseImpl.java b/bundles/org.eclipse.wst.wsdl/src-soap/org/eclipse/wst/wsdl/binding/soap/internal/impl/SOAPHeaderBaseImpl.java
index a065e63..3ccc3a2 100644
--- a/bundles/org.eclipse.wst.wsdl/src-soap/org/eclipse/wst/wsdl/binding/soap/internal/impl/SOAPHeaderBaseImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-soap/org/eclipse/wst/wsdl/binding/soap/internal/impl/SOAPHeaderBaseImpl.java
@@ -13,7 +13,7 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 
 import javax.xml.namespace.QName;
 
@@ -480,7 +480,7 @@
     if (element != null && element.hasAttribute(SOAPConstants.MESSAGE_ATTRIBUTE))
     {
       Definition definition = getEnclosingDefinition();
-      QName messageQName = createQName(definition, element.getAttribute(SOAPConstants.MESSAGE_ATTRIBUTE));
+      QName messageQName = createQName(definition, element.getAttribute(SOAPConstants.MESSAGE_ATTRIBUTE), element);
       Message newMessage = (messageQName != null) ? (Message) definition.getMessage(messageQName) : null;
       if (newMessage != null && newMessage != getMessage())
         setMessage(newMessage);
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/model/WSDL.mdl b/bundles/org.eclipse.wst.wsdl/src-wsdl/model/WSDL.mdl
index c1dea8d..55cf220 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/model/WSDL.mdl
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/model/WSDL.mdl
@@ -1616,6 +1616,41 @@
 				quid       	"3AD5D9B90261"
 				supplier   	"Logical View::wsdl::Port"
 				quidu      	"3AD5D9170286")))
+		    (object Association "$UNNAMED$57"
+			quid       	"3C864DFF02EC"
+			roles      	(list role_list
+			    (object Role "eImports"
+				quid       	"3C864DFF02ED"
+				label      	"eImports"
+				supplier   	"Logical View::wsdl::Import"
+				quidu      	"3AD5E4F903DE"
+				client_cardinality 	(value cardinality "0..n")
+				Constraints 	"ordered"
+				Containment 	"By Value"
+				is_navigable 	TRUE)
+			    (object Role "$UNNAMED$58"
+				quid       	"3C864DFF02EE"
+				supplier   	"Logical View::wsdl::Definition"
+				quidu      	"3AD5E43F008E"
+				client_cardinality 	(value cardinality "1..1")
+				is_aggregate 	TRUE)))
+		    (object Association "$UNNAMED$53"
+			quid       	"3B8BEA27029F"
+			roles      	(list role_list
+			    (object Role "$UNNAMED$54"
+				quid       	"3B8BEA290356"
+				supplier   	"Logical View::wsdl::Definition"
+				quidu      	"3AD5E43F008E"
+				client_cardinality 	(value cardinality "1..1")
+				is_aggregate 	TRUE)
+			    (object Role "eTypes"
+				quid       	"3B8BEA29036A"
+				label      	"eTypes"
+				supplier   	"Logical View::wsdl::Types"
+				quidu      	"3B8BE9A603A8"
+				client_cardinality 	(value cardinality "0..1")
+				Containment 	"By Value"
+				is_navigable 	TRUE)))
 		    (object Association "$UNNAMED$13"
 			quid       	"3AD5E60301E2"
 			roles      	(list role_list
@@ -1941,23 +1976,6 @@
 				quid       	"3B8B1DCE027A"
 				supplier   	"Logical View::wsdl::Import"
 				quidu      	"3AD5E4F903DE")))
-		    (object Association "$UNNAMED$53"
-			quid       	"3B8BEA27029F"
-			roles      	(list role_list
-			    (object Role "$UNNAMED$54"
-				quid       	"3B8BEA290356"
-				supplier   	"Logical View::wsdl::Definition"
-				quidu      	"3AD5E43F008E"
-				client_cardinality 	(value cardinality "1..1")
-				is_aggregate 	TRUE)
-			    (object Role "eTypes"
-				quid       	"3B8BEA29036A"
-				label      	"eTypes"
-				supplier   	"Logical View::wsdl::Types"
-				quidu      	"3B8BE9A603A8"
-				client_cardinality 	(value cardinality "0..1")
-				Containment 	"By Value"
-				is_navigable 	TRUE)))
 		    (object Association "$UNNAMED$55"
 			quid       	"3C46829303E5"
 			roles      	(list role_list
@@ -1972,24 +1990,6 @@
 				quid       	"3C4682960118"
 				supplier   	"Logical View::wsdl::Part"
 				quidu      	"3AD5CE1C032E")))
-		    (object Association "$UNNAMED$57"
-			quid       	"3C864DFF02EC"
-			roles      	(list role_list
-			    (object Role "eImports"
-				quid       	"3C864DFF02ED"
-				label      	"eImports"
-				supplier   	"Logical View::wsdl::Import"
-				quidu      	"3AD5E4F903DE"
-				client_cardinality 	(value cardinality "0..n")
-				Constraints 	"ordered"
-				Containment 	"By Value"
-				is_navigable 	TRUE)
-			    (object Role "$UNNAMED$58"
-				quid       	"3C864DFF02EE"
-				supplier   	"Logical View::wsdl::Definition"
-				quidu      	"3AD5E43F008E"
-				client_cardinality 	(value cardinality "1..1")
-				is_aggregate 	TRUE)))
 		    (object Association "$UNNAMED$59"
 			quid       	"3CC3614500F2"
 			roles      	(list role_list
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/model/wsdl.ecore b/bundles/org.eclipse.wst.wsdl/src-wsdl/model/wsdl.ecore
index 317735f..f6bc446 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/model/wsdl.ecore
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/model/wsdl.ecore
@@ -134,6 +134,10 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="qName" eType="#//QName"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="encoding" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="eImports" upperBound="-1"
+        eType="#//Import" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="eTypes" eType="#//Types"
+        containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="eMessages" upperBound="-1"
         eType="#//Message" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ePortTypes" upperBound="-1"
@@ -144,10 +148,6 @@
         eType="#//Service" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="eNamespaces" upperBound="-1"
         eType="#//Namespace" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="eTypes" eType="#//Types"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="eImports" upperBound="-1"
-        eType="#//Import" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Import" eSuperTypes="#//WSDLElement #//IImport">
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/model/wsdl.genmodel b/bundles/org.eclipse.wst.wsdl/src-wsdl/model/wsdl.genmodel
index d3cc8d0..0363e07 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/model/wsdl.genmodel
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/model/wsdl.genmodel
@@ -91,13 +91,13 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute wsdl.ecore#//Definition/location"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute wsdl.ecore#//Definition/qName"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute wsdl.ecore#//Definition/encoding"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference wsdl.ecore#//Definition/eImports"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference wsdl.ecore#//Definition/eTypes"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference wsdl.ecore#//Definition/eMessages"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference wsdl.ecore#//Definition/ePortTypes"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference wsdl.ecore#//Definition/eBindings"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference wsdl.ecore#//Definition/eServices"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference wsdl.ecore#//Definition/eNamespaces"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference wsdl.ecore#//Definition/eTypes"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference wsdl.ecore#//Definition/eImports"/>
       <genOperations ecoreOperation="wsdl.ecore#//Definition/getDocument"/>
       <genOperations ecoreOperation="wsdl.ecore#//Definition/setDocument">
         <genParameters ecoreParameter="wsdl.ecore#//Definition/setDocument/document"/>
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/WSDLPackage.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/WSDLPackage.java
index d4b46c9..17c040a 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/WSDLPackage.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/WSDLPackage.java
@@ -1025,7 +1025,7 @@
    * @generated
    * @ordered
    */
-  int DEFINITION__EMESSAGES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 4;
+  int DEFINITION__EMESSAGES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 6;
 
   /**
    * The feature id for the '<em><b>EPort Types</b></em>' containment reference list.
@@ -1034,7 +1034,7 @@
    * @generated
    * @ordered
    */
-  int DEFINITION__EPORT_TYPES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 5;
+  int DEFINITION__EPORT_TYPES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 7;
 
   /**
    * The feature id for the '<em><b>EBindings</b></em>' containment reference list.
@@ -1043,7 +1043,7 @@
    * @generated
    * @ordered
    */
-  int DEFINITION__EBINDINGS = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 6;
+  int DEFINITION__EBINDINGS = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 8;
 
   /**
    * The feature id for the '<em><b>EServices</b></em>' containment reference list.
@@ -1052,7 +1052,7 @@
    * @generated
    * @ordered
    */
-  int DEFINITION__ESERVICES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 7;
+  int DEFINITION__ESERVICES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 9;
 
   /**
    * The feature id for the '<em><b>ENamespaces</b></em>' containment reference list.
@@ -1061,7 +1061,7 @@
    * @generated
    * @ordered
    */
-  int DEFINITION__ENAMESPACES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 8;
+  int DEFINITION__ENAMESPACES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 10;
 
   /**
    * The feature id for the '<em><b>ETypes</b></em>' containment reference.
@@ -1070,7 +1070,7 @@
    * @generated
    * @ordered
    */
-  int DEFINITION__ETYPES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 9;
+  int DEFINITION__ETYPES = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 5;
 
   /**
    * The feature id for the '<em><b>EImports</b></em>' containment reference list.
@@ -1079,7 +1079,7 @@
    * @generated
    * @ordered
    */
-  int DEFINITION__EIMPORTS = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 10;
+  int DEFINITION__EIMPORTS = EXTENSIBLE_ELEMENT_FEATURE_COUNT + 4;
 
   /**
    * The number of structural features of the the '<em>Definition</em>' class.
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/generator/PortGenerator.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/generator/PortGenerator.java
index c16557b..4d3a201 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/generator/PortGenerator.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/generator/PortGenerator.java
@@ -55,12 +55,58 @@
 	  ContentGenerator contentGenerator = getContentGenerator(); 
 	  
 	  if (contentGenerator != null) {
-	    contentGenerator.generatePortContent(port);
+		  addRequiredNamespaces(service.getEnclosingDefinition());
+	      contentGenerator.generatePortContent(port);
 	  }
 	  
 	  return port;
 	}
 	
+	/*
+	 * methods addRequiredNamespaces() and computeUniquePrefix() are used to add necessary
+	 * namespaces 
+	 * 
+	 * TODO:
+	 * Does this belong here?  This is copied from wsdl.ui.  Can we sync up in some way?
+	 */
+	protected void addRequiredNamespaces(Definition definition) {
+		if (contentGenerator != null) {
+			String[] namespaceNames = contentGenerator.getRequiredNamespaces();
+			String[] preferredPrefixes = new String[namespaceNames.length];
+			for (int index = 0; index < namespaceNames.length; index++) {
+				preferredPrefixes[index] = contentGenerator.getPreferredNamespacePrefix(namespaceNames[index]);				
+			}
+	
+			Map map = definition.getNamespaces();
+			
+		      for (int i = 0; i < namespaceNames.length; i++) {
+		        String namespace = namespaceNames[i];
+		        if (!map.containsValue(namespace)) {
+		          String prefix = (i < preferredPrefixes.length) ? preferredPrefixes[i] : "p0";
+		          if (map.containsKey(prefix)) {
+		            prefix = computeUniquePrefix("p", map);
+		          }
+				  definition.addNamespace(prefix, namespace);
+		        }
+		      }
+		}
+	}
+	
+	private String computeUniquePrefix(String base, Map table){
+	    int i = 0;
+	    String prefix = base;
+	    while (true) {
+	      if (!table.containsKey(prefix)) {
+	        break;
+	      }
+	      else {
+	        prefix = base + i;
+	        i++;
+	      }
+	    }
+	    return prefix;
+	}
+	
 	/**
 	 * Locates a binding given its prefixed name (someNSPrefix:someBindingName).
 	 * 
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingFaultImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingFaultImpl.java
index ce72c47..9801204 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingFaultImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingFaultImpl.java
@@ -406,12 +406,18 @@
   {
     if (element != null)
     {
-      BindingOperation bop = (BindingOperation)getContainer();
-      Operation op = bop.getEOperation();
-      if (op != null)
+      BindingOperation bindingOperation = (BindingOperation)getContainer();
+      Operation operation = bindingOperation.getEOperation();
+      String faultName = getName();
+      
+      if (operation != null && faultName != null)
       {
-      	// TBD - Revisit API. Get the first Fault.
-        setFault((Fault)op.getEFaults().get(0));
+        javax.wsdl.Fault fault = operation.getFault(faultName);
+
+        if (fault != getFault())
+        {
+          setFault(fault);
+        }
       }
     }
     super.reconcileReferences(deep);
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingImpl.java
index 1b46347..a1efb06 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingImpl.java
@@ -642,8 +642,8 @@
   public void reconcileAttributes(Element changedElement)
   {
     Definition definition = getEnclosingDefinition();
-
-    QName qname = new QName(definition.getTargetNamespace(), changedElement.getAttribute("name"));
+    String name = changedElement.getAttribute(WSDLConstants.NAME_ATTRIBUTE);
+    QName qname = new QName(definition.getTargetNamespace(), name == null ? "" : name); //$NON-NLS-1$
     setQName(qname);
     reconcileReferences(false);
   }
@@ -774,7 +774,7 @@
     if (element != null)
     {
       Definition definition = (Definition) getEnclosingDefinition();
-      QName portTypeQName = createQName(definition, element.getAttribute("type"));
+      QName portTypeQName = createQName(definition, element.getAttribute(WSDLConstants.TYPE_ATTRIBUTE), element);
       PortType newPortType = portTypeQName != null ? (PortType) definition.getPortType(portTypeQName) : null;
       if (newPortType != getEPortType())
       {
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingOperationImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingOperationImpl.java
index b63c8c6..f81095a 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingOperationImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/BindingOperationImpl.java
@@ -130,8 +130,6 @@
    */
   protected EList eBindingFaults = null;
 
-  private Map bindingFaults;
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -789,7 +787,13 @@
       PortType portType = binding.getEPortType();
       if (portType != null)
       {
-        setOperation(portType.getOperation(getName(),null,null));
+        BindingInput input = getEBindingInput();
+        BindingOutput output = getEBindingOutput();
+        
+        String inputName = input != null ? input.getName() : null;
+        String outputName = output != null ? output.getName() : null;
+
+        setOperation(portType.getOperation(getName(), inputName, outputName));
       }
     }
     super.reconcileReferences(deep);
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/DefinitionImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/DefinitionImpl.java
index 158658c..722a4f2 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/DefinitionImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/DefinitionImpl.java
@@ -879,7 +879,7 @@
    */
   public javax.wsdl.Binding getBinding(QName name)
   {
-    return (javax.wsdl.Binding) resolveWSDLElement(WSDLConstants.BINDING, name);
+    return (javax.wsdl.Binding) resolveWSDLElement(WSDLConstants.BINDING, name, this);
   }
 
   /**
@@ -964,7 +964,7 @@
    */
   public javax.wsdl.Message getMessage(QName name)
   {
-    return (javax.wsdl.Message) resolveWSDLElement(WSDLConstants.MESSAGE, name);
+    return (javax.wsdl.Message) resolveWSDLElement(WSDLConstants.MESSAGE, name, this);
   }
 
   /**
@@ -1018,7 +1018,7 @@
    */
   public javax.wsdl.PortType getPortType(QName name)
   {
-    return (javax.wsdl.PortType) resolveWSDLElement(WSDLConstants.PORT_TYPE, name);
+    return (javax.wsdl.PortType) resolveWSDLElement(WSDLConstants.PORT_TYPE, name, this);
   }
 
   /**
@@ -1071,7 +1071,7 @@
    */
   public javax.wsdl.Service getService(QName name)
   {
-    return (javax.wsdl.Service) resolveWSDLElement(WSDLConstants.SERVICE, name);
+    return (javax.wsdl.Service) resolveWSDLElement(WSDLConstants.SERVICE, name, this);
   }
 
   /**
@@ -1518,7 +1518,7 @@
     return definition;
   }
   
-  private WSDLElement resolveWSDLElement(int type, List list, javax.xml.namespace.QName qname)
+  private WSDLElement resolveWSDLElement(int type, List list, QName qname)
   {
     WSDLElement result = null;
     if (qname != null)
@@ -1572,38 +1572,121 @@
     }
     return result;
   }
-
-  /*
-   * TBD - Revisit
-   * Look for an object in the imported definitions.
+  
+  /**
+   * Resolves the element described by type and qname in the context of the
+   * given definition. The definition's imported definitions are checked as well.
+   * 
+   * @param type the element type.
+   * @param qname the element's QName. Must not be null.
+   * @param definition the context definition. Must not be null.
+   * @return the resolved WSDLElement or null if one cannot be found.
    */
-  private WSDLElement resolveWSDLElement(int type, javax.xml.namespace.QName qname)
+  private static WSDLElement resolveWSDLElement(int type, QName qname, DefinitionImpl definition)
+  {
+    if (qname == null || qname.getNamespaceURI() == null)
+    {
+      return null;
+    }
+
+    List definitions = new ArrayList();
+    definitions.add(definition);
+    WSDLElement result = resolveWSDLElement(type, qname, definitions, new ArrayList());
+
+    return result;
+  }
+  
+  /**
+   * Resolves the element described by type and qname in the context of the
+   * given definitions. The definitions imported definitions are checked as well.
+   * 
+   * IMPORTANT! This method is recursive. It checks the definitions and all their
+   * imported definitions. It also is coded such that it avoids a cyclic import
+   * should one be encountered.
+   * 
+   * @param type the element type.
+   * @param qname the element's qName.
+   * @param definitions the context definitions
+   * @param visitedDefinitions a list with the definitions already visited.
+   * @return the resolved WSDLElement or null if one cannot be found.
+   */
+  private static WSDLElement resolveWSDLElement(int type, QName qname, List definitions, List visitedDefinitions)
+  {
+    WSDLElement result = null;
+    
+    if (definitions.isEmpty())
+    {
+      return result;
+    }
+
+    // In order to preserve the old behaviour which used to check the definition
+    // and all first level imports, check the entire list of definitions passed
+    // in first.
+    
+    Iterator definitionsIterator = definitions.iterator();
+    
+    while (definitionsIterator.hasNext())
+    {
+      DefinitionImpl definition = (DefinitionImpl) definitionsIterator.next();
+
+      result = definition.resolveWSDLElement(type, qname);
+      
+      if (result != null)
+      {
+        return result;
+      }
+    }
+    
+    // Re-iterate over the definitions and recurse into their imports.
+    
+    definitionsIterator = definitions.iterator();
+    
+    while (definitionsIterator.hasNext())
+    {
+      DefinitionImpl definition = (DefinitionImpl) definitionsIterator.next();
+      
+      if (visitedDefinitions.contains(definition))
+      {
+        // This might happen if we have a case of cyclic imports. Since we
+        // already looked in it, we can and should skip it.
+
+        continue;
+      }      
+      
+      visitedDefinitions.add(definition);
+
+      List importedDefinitions = definition.getImportedDefinitions(qname.getNamespaceURI());
+
+      result = resolveWSDLElement(type, qname, importedDefinitions, visitedDefinitions);
+
+      if (result != null)
+      {
+        break;
+      }
+    }
+    
+    return result;
+  }
+
+  private WSDLElement resolveWSDLElement(int type, QName qname)
   {
     WSDLElement result = null;
     if (qname.getNamespaceURI() != null)
     {
-      for (Iterator i = getDefinitions(qname.getNamespaceURI()).iterator(); i.hasNext();)
+      switch (type)
       {
-        Definition definition = (Definition) i.next();
-        switch (type)
-        {
-          case WSDLConstants.MESSAGE :
-            result = resolveWSDLElement(type, definition.getEMessages(), qname);
-            break;
-          case WSDLConstants.PORT_TYPE :
-            result = resolveWSDLElement(type, definition.getEPortTypes(), qname);
-            break;
-          case WSDLConstants.BINDING :
-            result = resolveWSDLElement(type, definition.getEBindings(), qname);
-            break;
-          case WSDLConstants.SERVICE :
-            result = resolveWSDLElement(type, definition.getEServices(), qname);
-            break;
-        }
-        if (result != null)
-        {
+        case WSDLConstants.MESSAGE:
+          result = resolveWSDLElement(type, getEMessages(), qname);
           break;
-        }
+        case WSDLConstants.PORT_TYPE:
+          result = resolveWSDLElement(type, getEPortTypes(), qname);
+          break;
+        case WSDLConstants.BINDING:
+          result = resolveWSDLElement(type, getEBindings(), qname);
+          break;
+        case WSDLConstants.SERVICE:
+          result = resolveWSDLElement(type, getEServices(), qname);
+          break;
       }
     }
     return result;
@@ -1859,6 +1942,8 @@
     setElement(newElement);
     addChildElements(newElement, getEExtensibilityElements());
 
+    addChildElements(newElement, getEImports());
+
     Types types = getETypes();
     if (types != null)
     {
@@ -1866,7 +1951,6 @@
       newElement.appendChild(child);
     }
 
-    addChildElements(newElement, getEImports());
     addChildElements(newElement, getEMessages());
     addChildElements(newElement, getEPortTypes());
     addChildElements(newElement, getEBindings());
@@ -1930,13 +2014,10 @@
     }
   }
 
-  protected List getDefinitions(String namespace)
+  private List getImportedDefinitions(String namespace)
   {
     List list = new ArrayList();
-    if (WSDLConstants.isMatchingNamespace(namespace, getTargetNamespace()))
-    {
-      list.add(this);
-    }
+
     for (Iterator i = getImports(namespace).iterator(); i.hasNext();)
     {
       Import theImport = (Import) i.next();
@@ -1947,6 +2028,7 @@
         list.add(importedDefinition);
       }
     }
+    
     return list;
   }
 
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/MessageImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/MessageImpl.java
index ed6a0cf..a0acc63 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/MessageImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/MessageImpl.java
@@ -155,8 +155,6 @@
    */
   protected EList eParts = null;
 
-  private Map parts;
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -534,16 +532,9 @@
   public void reconcileAttributes(Element changedElement)
   {
     Definition definition = getEnclosingDefinition();
-    String newName = null;
-    if (changedElement.hasAttribute("name"))
-    {
-      newName = changedElement.getAttribute("name");
-    }
-    if (newName != null)
-    {
-      QName qname = new QName(definition.getTargetNamespace(), newName);
-      setQName(qname);
-    }
+    String name = changedElement.getAttribute(WSDLConstants.NAME_ATTRIBUTE);
+    QName qname = new QName(definition.getTargetNamespace(), name == null ? "" : name); //$NON-NLS-1$
+    setQName(qname);
   }
 
   public void handleUnreconciledElement(Element child, Collection remainingModelObjects)
@@ -574,7 +565,8 @@
     Message message = (Message) component;
     if (modelObject instanceof Part)
     {
-      message.getEParts().clear();
+      message.getEParts().remove(modelObject);
+//      message.getEParts().clear();
     }
   }
 
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/MessageReferenceImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/MessageReferenceImpl.java
index 96a7b90..9e84b84 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/MessageReferenceImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/MessageReferenceImpl.java
@@ -332,7 +332,7 @@
     if (element != null)
     {
       Definition definition = getEnclosingDefinition();      
-      QName messageQName = createQName(definition, element.getAttribute("message"));
+      QName messageQName = createQName(definition, element.getAttribute(WSDLConstants.MESSAGE_ATTRIBUTE), element);
       Message newMessage = messageQName != null ? (Message) definition.getMessage(messageQName) : null;
       if (newMessage != getEMessage())
       {
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/OperationImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/OperationImpl.java
index b0235fc..e81d6d9 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/OperationImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/OperationImpl.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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
@@ -219,8 +219,6 @@
   
   private List parameterOrdering = null; // a list of part names (WSDL4J)
 
-  private Map faults;
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -274,9 +272,20 @@
       if (child.getNodeType() != Node.ELEMENT_NODE)
         continue;
       
+      String nsURI = child.getNamespaceURI();
+      
+      if (!WSDLConstants.WSDL_NAMESPACE_URI.equals(nsURI) )
+      {
+        // Skip over any non-WSDL elements. For example, to support new WSDL 
+        // use cases we have to tolerate extensibility elements at the operation level.
+        
+        continue;
+      }
+
       messageRefType = WSDLUtil.getInstance().getWSDLType((Element)child);
+      
       switch (state)
-	  {
+      {
         case 0: // initial state     
           if (WSDLConstants.INPUT == messageRefType)
             state = 1; 
@@ -329,12 +338,12 @@
           break;
         default: // cannot happen (-1)
           break;
-	  }
+      }
     }
     
     OperationType opType = null;
     switch (state)
-	{
+    {
       case 1:
       case 11:
       	opType = OperationType.ONE_WAY;
@@ -351,7 +360,7 @@
         break;
       default: // invalid
         break;
-	}
+    }
     return opType;    
   }
   /**
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PartImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PartImpl.java
index 670da20..1e1dac0 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PartImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PartImpl.java
@@ -380,7 +380,6 @@
   public void setExtensionAttribute(QName name, QName value)
   {
     String localName = name.getLocalPart();
-    String nsURI = name.getNamespaceURI();
     if (localName == null)
       return;
 
@@ -647,10 +646,10 @@
     }
 
     String elementAttr = WSDLConstants.getAttribute(changedElement, WSDLConstants.ELEMENT_ATTRIBUTE);
-    setElementName(elementAttr != null ? createQName(definition, elementAttr) : null);
+    setElementName(elementAttr != null ? createQName(definition, elementAttr, element) : null);
 		    
     String typeAttr = WSDLConstants.getAttribute(changedElement, WSDLConstants.TYPE_ATTRIBUTE);
-    setTypeName(typeAttr != null ? createQName(definition, typeAttr) : null);
+    setTypeName(typeAttr != null ? createQName(definition, typeAttr, element) : null);
 
     reconcileReferences(false);
   }
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PortImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PortImpl.java
index d1f9403..44a80a0 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PortImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PortImpl.java
@@ -340,7 +340,6 @@
 
   public void reconcileAttributes(Element changedElement)
   {
-    Definition definition = getEnclosingDefinition();
     setName(changedElement.getAttribute("name"));
     reconcileReferences(false);
   }
@@ -425,7 +424,7 @@
     if (element != null)
     {
       Definition definition = getEnclosingDefinition();
-      QName bindingQName = createQName(definition, element.getAttribute("binding"));
+      QName bindingQName = createQName(definition, element.getAttribute(WSDLConstants.BINDING_ATTRIBUTE), element);
       Binding newBinding = (bindingQName != null) ? (Binding) definition.getBinding(bindingQName) : null;
       if (newBinding != getEBinding())
       {
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PortTypeImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PortTypeImpl.java
index e37cfd8..b70890b 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PortTypeImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/PortTypeImpl.java
@@ -544,7 +544,8 @@
   public void reconcileAttributes(Element changedElement)
   {
     Definition definition = getEnclosingDefinition();
-    QName qname = new QName(definition.getTargetNamespace(), changedElement.getAttribute("name"));
+    String name = changedElement.getAttribute(WSDLConstants.NAME_ATTRIBUTE);
+    QName qname = new QName(definition.getTargetNamespace(), name == null ? "" : name); //$NON-NLS-1$
     setQName(qname);
   }
 
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/ServiceImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/ServiceImpl.java
index bf38f3c..75f9aa2 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/ServiceImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/ServiceImpl.java
@@ -145,8 +145,6 @@
    */
   protected String resourceURI = RESOURCE_URI_EDEFAULT;
 
-  private Map ports;
-
   /**
    * The cached value of the '{@link #getEPorts() <em>EPorts</em>}' containment reference list.
    * <!-- begin-user-doc -->
@@ -522,8 +520,8 @@
   public void reconcileAttributes(Element changedElement)
   {
     Definition definition = getEnclosingDefinition();
-
-    QName qname = new QName(definition.getTargetNamespace(), changedElement.getAttribute("name"));
+    String name = changedElement.getAttribute(WSDLConstants.NAME_ATTRIBUTE);
+    QName qname = new QName(definition.getTargetNamespace(), name == null ? "" : name); //$NON-NLS-1$
     setQName(qname);
   }
 
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/WSDLElementImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/WSDLElementImpl.java
index fc90929..a37759f 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/WSDLElementImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/WSDLElementImpl.java
@@ -16,7 +16,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 
 import javax.xml.namespace.QName;
 
@@ -37,6 +37,7 @@
 import org.eclipse.wst.wsdl.WSDLPackage;
 import org.eclipse.wst.wsdl.util.WSDLConstants;
 import org.eclipse.xsd.util.XSDConstants;
+import org.w3c.dom.Attr;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -393,7 +394,7 @@
           {
             if (oldValue != null)
             {
-              orphanContent(eReference, (WSDLElement) oldValue);
+              orphanContent(eReference, /*(WSDLElement)*/ oldValue);
             }
             break;
           }
@@ -707,13 +708,11 @@
       }
     }
    
-    boolean isNew = false;
     if (childElement == null)
     {
       ((WSDLElementImpl)wsdlElement).isReconciling = true;
       childElement = ((WSDLElementImpl)wsdlElement).createElement();
       ((WSDLElementImpl)wsdlElement).isReconciling = false;
-      isNew = true;
       if (childElement == null)
       {
          //System.out.println("not created! " + wsdlElement);
@@ -978,12 +977,43 @@
   // Some subclasses use this method
   protected QName createQName(Definition definition, String prefixedName)
   {
+    // Delegate to the new form to preserve backward compatibility in case someone
+    // else calls this method.
+    
+    return createQName(definition, prefixedName, null);
+  }
+
+  /**
+   * Creates a QName from a prefixed name. Takes into account locally defined
+   * namespace prefixes.
+   * 
+   * @param definition
+   *          the enclosing definition. Must not be null.
+   * @param prefixedName
+   *          the prefixed name to convert to QName
+   * @param element
+   *          the enclosing element. May be null in which case the prefix is
+   *          only looked up among the ones defined at the definition level.
+   * @return the QName equivalent for the given prefixed name, or null if a
+   *         namespace prefix cannot be found for the given namespace URI or if
+   *         the prefixed name is null.
+   */
+  protected QName createQName(Definition definition, String prefixedName, Element element)
+  {
     QName qname = null;
     if (prefixedName != null)
     {
-      int index = prefixedName.indexOf(":");
-      String prefix = (index == -1) ? "" : prefixedName.substring(0, index);
+      int index = prefixedName.indexOf(":"); ////$NON-NLS-1$
+      String prefix = (index == -1) ? "" : prefixedName.substring(0, index); //$NON-NLS-1$
       String namespace = definition.getNamespace(prefix);
+      
+      if (namespace == null && element != null)
+      {
+        // Try to find a locally defined namespace prefix.
+        
+        namespace = getNamespaceURIFromPrefix(element, prefix);
+      }
+      
       if (namespace != null)
       {
         String localPart = prefixedName.substring(index + 1);
@@ -993,6 +1023,64 @@
     return qname;
   }
 
+  /**
+   * Given a prefix and a node, finds the namespace URI pointed to by the
+   * prefix. Walks the element containment hierarchy until it finds one or it
+   * reaches the document root.
+   * 
+   * @param node
+   *          the starting node
+   * @param prefix
+   *          the prefix to find an xmlns:prefix=uri for
+   * 
+   * @return the namespace URI or null if not found
+   */
+  private static String getNamespaceURIFromPrefix(Node node, String prefix)
+  {
+    if (node == null || prefix == null)
+    {
+      return null;
+    }
+
+    Node currentNode = node;
+
+    while (currentNode != null && currentNode.getNodeType() == Node.ELEMENT_NODE)
+    {
+      String namespaceURI = getAttributeNS((Element) currentNode, XSDConstants.XMLNS_URI_2000, prefix);
+
+      if (namespaceURI != null)
+      {
+        return namespaceURI;
+      }
+      else
+      {
+        currentNode = currentNode.getParentNode();
+      }
+    }
+
+    return null;
+  }
+  
+  /**
+   * Retrieves an attribute's value.
+   * @param element the containing element.
+   * @param namespaceURI the namespace URI.
+   * @param localPart the local name.
+   * @return the attribute's value if present, or null if not. 
+   */
+  private static String getAttributeNS(Element element, String namespaceURI, String localPart)
+  {
+    String attributeValue = null;
+    Attr attribute = element.getAttributeNodeNS(namespaceURI, localPart);
+
+    if (attribute != null)
+    {
+      attributeValue = attribute.getValue();
+    }
+
+    return attributeValue;
+  }  
+
   //
   // For reconciliation: Model -> DOM
   //
@@ -1358,27 +1446,31 @@
   
   public WSDLElement getBestWSDLElement(List elementPath)
   {
-    WSDLElement result = this;
-    for (Iterator components = getWSDLContents().iterator(); components.hasNext(); )
-    {
-      WSDLElementImpl childWSDLElement = (WSDLElementImpl)components.next();
-      if (elementPath.contains(childWSDLElement.getElement()))
-      {
-        result = childWSDLElement;
-        WSDLElement betterWSDLElement = childWSDLElement.getBestWSDLElement(elementPath);
-        if (betterWSDLElement != null)
-        {
-          result = betterWSDLElement;
-        }
+	  WSDLElement result = this;
+	  for (Iterator components = getWSDLContents().iterator(); components.hasNext(); )
+	  {
+		  Object object = components.next();
+		  if (object instanceof WSDLElementImpl) {
+			  WSDLElementImpl childWSDLElement = (WSDLElementImpl) object;
 
-        if (!considerAllContainsForBestWSDLElement())
-        {
-          break;
-        }
-      }
-    }
+			  if (elementPath.contains(childWSDLElement.getElement()))
+			  {
+				  result = childWSDLElement;
+				  WSDLElement betterWSDLElement = childWSDLElement.getBestWSDLElement(elementPath);
+				  if (betterWSDLElement != null)
+				  {
+					  result = betterWSDLElement;
+				  }
 
-    return result;
+				  if (!considerAllContainsForBestWSDLElement())
+				  {
+					  break;
+				  }
+			  }
+		  }
+	  }
+
+	  return result;
   }
 
   protected boolean considerAllContainsForBestWSDLElement()
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/WSDLPackageImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/WSDLPackageImpl.java
index 2b3111b..84c303d 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/WSDLPackageImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/internal/impl/WSDLPackageImpl.java
@@ -1129,7 +1129,7 @@
      */
     public EReference getDefinition_EMessages()
     {
-        return (EReference) definitionEClass.getEStructuralFeatures().get(4);
+        return (EReference) definitionEClass.getEStructuralFeatures().get(6);
     }
 
     /**
@@ -1139,7 +1139,7 @@
      */
     public EReference getDefinition_EPortTypes()
     {
-        return (EReference) definitionEClass.getEStructuralFeatures().get(5);
+        return (EReference) definitionEClass.getEStructuralFeatures().get(7);
     }
 
     /**
@@ -1149,7 +1149,7 @@
      */
     public EReference getDefinition_EBindings()
     {
-        return (EReference) definitionEClass.getEStructuralFeatures().get(6);
+        return (EReference) definitionEClass.getEStructuralFeatures().get(8);
     }
 
     /**
@@ -1159,7 +1159,7 @@
      */
     public EReference getDefinition_EServices()
     {
-        return (EReference) definitionEClass.getEStructuralFeatures().get(7);
+        return (EReference) definitionEClass.getEStructuralFeatures().get(9);
     }
 
     /**
@@ -1169,7 +1169,7 @@
      */
     public EReference getDefinition_ENamespaces()
     {
-        return (EReference) definitionEClass.getEStructuralFeatures().get(8);
+        return (EReference) definitionEClass.getEStructuralFeatures().get(10);
     }
 
     /**
@@ -1179,7 +1179,7 @@
      */
     public EReference getDefinition_ETypes()
     {
-        return (EReference) definitionEClass.getEStructuralFeatures().get(9);
+        return (EReference) definitionEClass.getEStructuralFeatures().get(5);
     }
 
     /**
@@ -1189,7 +1189,7 @@
      */
     public EReference getDefinition_EImports()
     {
-        return (EReference) definitionEClass.getEStructuralFeatures().get(10);
+        return (EReference) definitionEClass.getEStructuralFeatures().get(4);
     }
 
     /**
@@ -1874,13 +1874,13 @@
         createEAttribute(definitionEClass, DEFINITION__LOCATION);
         createEAttribute(definitionEClass, DEFINITION__QNAME);
         createEAttribute(definitionEClass, DEFINITION__ENCODING);
+        createEReference(definitionEClass, DEFINITION__EIMPORTS);
+        createEReference(definitionEClass, DEFINITION__ETYPES);
         createEReference(definitionEClass, DEFINITION__EMESSAGES);
         createEReference(definitionEClass, DEFINITION__EPORT_TYPES);
         createEReference(definitionEClass, DEFINITION__EBINDINGS);
         createEReference(definitionEClass, DEFINITION__ESERVICES);
         createEReference(definitionEClass, DEFINITION__ENAMESPACES);
-        createEReference(definitionEClass, DEFINITION__ETYPES);
-        createEReference(definitionEClass, DEFINITION__EIMPORTS);
 
         importEClass = createEClass(IMPORT);
         createEAttribute(importEClass, IMPORT__NAMESPACE_URI);
@@ -2129,13 +2129,13 @@
         initEAttribute(getDefinition_Location(), ecorePackage.getEString(), "location", null, 0, 1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEAttribute(getDefinition_QName(), this.getQName(), "qName", null, 0, 1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEAttribute(getDefinition_Encoding(), ecorePackage.getEString(), "encoding", null, 0, 1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+        initEReference(getDefinition_EImports(), this.getImport(), null, "eImports", null, 0, -1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+        initEReference(getDefinition_ETypes(), this.getTypes(), null, "eTypes", null, 0, 1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEReference(getDefinition_EMessages(), this.getMessage(), null, "eMessages", null, 0, -1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEReference(getDefinition_EPortTypes(), this.getPortType(), null, "ePortTypes", null, 0, -1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEReference(getDefinition_EBindings(), this.getBinding(), null, "eBindings", null, 0, -1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEReference(getDefinition_EServices(), this.getService(), null, "eServices", null, 0, -1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEReference(getDefinition_ENamespaces(), this.getNamespace(), null, "eNamespaces", null, 0, -1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-        initEReference(getDefinition_ETypes(), this.getTypes(), null, "eTypes", null, 0, 1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-        initEReference(getDefinition_EImports(), this.getImport(), null, "eImports", null, 0, -1, Definition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
         addEOperation(definitionEClass, this.getDOMDocument(), "getDocument");
 
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLDiagnostic.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLDiagnostic.java
index 5865f4b..3e203d8 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLDiagnostic.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLDiagnostic.java
@@ -13,6 +13,7 @@
 
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.w3c.dom.Node;
 
 /**
  * Generated by the WSDL model parsing and validation mechanisms.
@@ -56,8 +57,37 @@
    * @param value the new message key value.
    */
   void setKey(String value);
+  
+  /**
+   * Gets the DOM Node where the error occurs
+   * 
+   * @return The DOM node where the error occurs
+   */
+  Node getNode();
 
   /**
+   * Sets the DOM Node where the error occurs
+   * @param node
+   */
+  void setNode(Node node);
+  
+  /**
+   * returns the Element where the error occurs
+   * @return - Object of type XSDConcreteComponent if the error
+   * 			comes from the inline schema of a wsdl file
+   * 		 - object of type WSDLElement if the error comes from
+   * 			other part of the wsdl file
+   */
+  Object getContainer();
+  
+  /**
+   * Sets the Container of the error
+   * @param container
+   * 			an Object of either XSDConcreteComponent or WSDLElement 
+   */
+  void setContainer(Object container);
+  
+  /**
    * Returns a list with the original message parameters as Strings.
    * @return  a list with the original message parameters as Strings.
    */
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLDiagnosticImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLDiagnosticImpl.java
index 25a986e..80d60fe 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLDiagnosticImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLDiagnosticImpl.java
@@ -16,6 +16,7 @@
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 import org.eclipse.xsd.XSDDiagnostic;
 import org.eclipse.xsd.XSDDiagnosticSeverity;
+import org.w3c.dom.Node;
 
 /**
  * Default implementation of the WSDLDiagnostic interface. This class is based
@@ -123,6 +124,16 @@
   protected EList substitutions;
 
   /**
+   * The Node where the error occurs
+   */
+  protected Node node;
+  
+  /**
+   * The WSDLElement or XSDConcreteComponent object where the error occurs
+   */
+  protected Object container;
+
+  /**
    * Default constructor.
    */
   public WSDLDiagnosticImpl()
@@ -144,6 +155,11 @@
     setSeverity(getSeverity(xsdDiagnostic.getSeverity()));
     setLine(xsdDiagnostic.getLine());
     setColumn(xsdDiagnostic.getColumn());
+    setNode(xsdDiagnostic.getNode());
+    setContainer(xsdDiagnostic.getContainer());
+    setLocation(xsdDiagnostic.getLocation());
+    setKey(xsdDiagnostic.getKey());
+    getSubstitutions().addAll(xsdDiagnostic.getSubstitutions());
   }
 
   /*
@@ -301,4 +317,34 @@
     }
     return substitutions;
   }
+  
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.util.WSDLDiagnostic#getNode()
+   */
+  public Node getNode() 
+  {
+	return node;
+  }
+  
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.util.WSDLDiagnostic#setNode(org.w3c.dom.Node)
+   */
+  public void setNode(Node node) 
+  {
+	this.node = node;  
+  }
+  
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.util.WSDLDiagnostic#getContainer()
+   */
+  public Object getContainer() {
+	return container;
+  }
+  
+  /* (non-Javadoc)
+   * @see org.eclipse.wst.wsdl.util.WSDLDiagnostic#setContainer(java.lang.Object)
+   */
+  public void setContainer(Object container) {
+	this.container = container;
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLParser.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLParser.java
index 3234a3c..b736529 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLParser.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLParser.java
@@ -431,6 +431,25 @@
     return false;
   }
 
+  public void parse(InputSource inputSource)
+  {
+    try
+    {
+      saxParser.parse(inputSource, this);
+    }
+    catch (IOException exception)
+    {
+      fatalError(exception);
+    }
+    catch (SAXException exception)
+    {
+      if (diagnostics.isEmpty())
+      {
+        fatalError(exception);
+      }
+    }
+  }
+
   /**
    * Parses the XML content read from the given input stream.
    * 
@@ -449,7 +468,10 @@
     }
     catch (SAXException exception)
     {
-      fatalError(exception);
+      if (diagnostics.isEmpty())
+      {
+        fatalError(exception);
+      }
     }
   }
 
diff --git a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLResourceImpl.java b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLResourceImpl.java
index 34e5c56..d28ba74 100644
--- a/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLResourceImpl.java
+++ b/bundles/org.eclipse.wst.wsdl/src-wsdl/org/eclipse/wst/wsdl/util/WSDLResourceImpl.java
@@ -30,6 +30,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.URIConverter;
 import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.wst.wsdl.Definition;
@@ -45,6 +46,7 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
 
@@ -73,9 +75,10 @@
   private boolean useExtensionFactories = true;
   private boolean continueOnLoadError = true;
 
-  public static String USE_EXTENSION_FACTORIES = "USE_EXTENSION_FACTORIES"; //$NON-NLS-1$
-  public static String CONTINUE_ON_LOAD_ERROR = "CONTINUE_ON_LOAD_ERROR"; //$NON-NLS-1$
-  public static String WSDL_ENCODING = "WSDL_ENCODING"; //$NON-NLS-1$
+  public static final String USE_EXTENSION_FACTORIES = "USE_EXTENSION_FACTORIES"; //$NON-NLS-1$
+  public static final String CONTINUE_ON_LOAD_ERROR = "CONTINUE_ON_LOAD_ERROR"; //$NON-NLS-1$
+  public static final String WSDL_ENCODING = "WSDL_ENCODING"; //$NON-NLS-1$
+  public static final String WSDL_PROGRESS_MONITOR = "WSDL_PROGRESS_MONITOR"; //$NON-NLS-1$
   
   /**
    * Add this option with a value of Boolean.TRUE to the options map when
@@ -88,7 +91,7 @@
    * @see WSDLParser#getStartLine(org.w3c.dom.Node)
    * @see WSDLParser#getEndLine(org.w3c.dom.Node)
    */
-  public static String TRACK_LOCATION = "TRACK_LOCATION"; //$NON-NLS-1$
+  public static final String TRACK_LOCATION = "TRACK_LOCATION"; //$NON-NLS-1$
 
   /**
    * Creates an instance of the resource. 
@@ -132,11 +135,6 @@
     return getContents().size() == 1 && getContents().get(0) instanceof Definition ? (Definition) getContents().get(0) : null;
   }
 
-  private static void doSerialize(OutputStream outputStream, Document document) throws IOException
-  {
-    doSerialize(outputStream, document, null);
-  }
-
   private static void doSerialize(OutputStream outputStream, Document document, String encoding)
   {
     try
@@ -168,19 +166,16 @@
 
   /**
    * Loads a new {@link WSDLResourceImpl} into the resource set.
-   * @param resourceSet the resource set to hold the new resource.
-   * @param uri the URI of the new resource.
-   * @param inputStream the contents of the new resource.
+   * @param inputSource the contents of the new resource.
    * @param options any options to influence loading behavior.
-   * @return a new WSDLResourceImpl.
    */
-  protected void doLoad(InputStream inputStream, Map options) throws IOException
+  protected void doLoad(InputSource inputSource, Map options) throws IOException
   {
     // This pattern avoids loading the IProgressMonitor class when there is no progress monitor.
     // This is important for stand-alone execution to work correctly.
     //
     IProgressMonitor progressMonitor = null;
-    Object monitor = options == null ? null : options.get("WSDL_PROGRESS_MONITOR");
+    Object monitor = options == null ? null : options.get(WSDL_PROGRESS_MONITOR);
     if (monitor != null)
     {
       progressMonitor = (IProgressMonitor) monitor;
@@ -205,12 +200,12 @@
 
       if (trackLocation)
       {
-        doc = getDocumentUsingSAX(inputStream);
+        doc = getDocumentUsingSAX(inputSource);
       }
       else
       {
         // Create a DOM document
-        doc = getDocument(inputStream, new InternalErrorHandler());
+        doc = getDocument(inputSource, new InternalErrorHandler());
       }
 
       if (doc != null && doc.getDocumentElement() != null)
@@ -267,15 +262,36 @@
   }
 
   /**
+   * Loads a new {@link WSDLResourceImpl} into the resource set.
+   * @param inputStream the contents of the new resource.
+   * @param options any options to influence loading behavior.
+   */
+  protected void doLoad(InputStream inputStream, Map options) throws IOException
+  {
+    InputSource inputSource = 
+      inputStream instanceof URIConverter.ReadableInputStream ? 
+      new InputSource(((URIConverter.ReadableInputStream)inputStream).asReader()) :
+      new InputSource(inputStream);
+
+    if (getURI() != null)
+    {
+      String id = getURI().toString();
+      inputSource.setPublicId(id);
+      inputSource.setSystemId(id);
+    }
+    doLoad(inputSource, options);
+  }  
+  
+  /**
    * Use a custom SAX parser to allow us to track the source location of 
    * each node in the source XML document.
-   * @param inputStream the parsing source. Must not be null. 
+   * @param inputSource the parsing source. Must not be null. 
    * @return the DOM document created by parsing the input stream. 
    */
-  private Document getDocumentUsingSAX(InputStream inputStream)
+  private Document getDocumentUsingSAX(InputSource inputSource)
   {
     WSDLParser wsdlParser = new WSDLParser();
-    wsdlParser.parse(inputStream);
+    wsdlParser.parse(inputSource);
     
     Collection errors = wsdlParser.getDiagnostics();
     
@@ -310,11 +326,11 @@
 
   /**
    * Builds a document using Xerces.
-   * @param inputStream the contents to parse.
+   * @param inputSource the contents to parse.
    * @param errorHandler the handled used by the parser.
    * @return a document.
    */
-  private static Document getDocument(InputStream inputStream, ErrorHandler errorHandler) throws IOException
+  private static Document getDocument(InputSource inputSource, ErrorHandler errorHandler) throws IOException
   {
     ClassLoader previousClassLoader = Thread.currentThread().getContextClassLoader();
     try
@@ -349,7 +365,7 @@
 
       documentBuilder.setErrorHandler(errorHandler);
 
-      Document document = documentBuilder.parse(inputStream);
+      Document document = documentBuilder.parse(inputSource);
       return document;
     }
     catch (ParserConfigurationException exception)
diff --git a/bundles/org.eclipse.wst.wsi.ui/.cvsignore b/bundles/org.eclipse.wst.wsi.ui/.cvsignore
index de85cb8..43d51e3 100644
--- a/bundles/org.eclipse.wst.wsi.ui/.cvsignore
+++ b/bundles/org.eclipse.wst.wsi.ui/.cvsignore
@@ -4,3 +4,4 @@
 build.xml
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.wsi.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.wsi.ui/META-INF/MANIFEST.MF
index 41269d5..989040d 100644
--- a/bundles/org.eclipse.wst.wsi.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.wsi.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %_PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.wsi.ui; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.101.qualifier
 Bundle-Activator: org.eclipse.wst.wsi.ui.internal.WSIUIPlugin
 Bundle-Vendor: %_PROVIDER_NAME
 Bundle-Localization: plugin
@@ -11,29 +11,28 @@
  org.eclipse.wst.wsi.ui.internal.actions.actionDelegates;x-internal:=true,
  org.eclipse.wst.wsi.ui.internal.actions.icons;x-internal:=true,
  org.eclipse.wst.wsi.ui.internal.wizards;x-internal:=true
-Require-Bundle: org.eclipse.jface.text,
- org.eclipse.core.resources,
- org.eclipse.ui,
- org.eclipse.ui.ide;resolution:=optional,
- org.eclipse.ui.views;resolution:=optional,
- org.eclipse.ui.editors;resolution:=optional,
- org.eclipse.jface.text;resolution:=optional,
- org.eclipse.ui.workbench.texteditor;resolution:=optional,
- org.eclipse.jface,
- org.eclipse.ui.ide,
- org.eclipse.ui.views,
- org.eclipse.ui.workbench.texteditor,
- org.eclipse.ui.editors,
- org.eclipse.core.resources,
- org.eclipse.debug.core,
- org.eclipse.wst.common.ui,
- org.eclipse.wst.validation,
- org.eclipse.wst.wsdl.validation,
- org.eclipse.wst.wsi,
- org.eclipse.wst.internet.monitor.core,
- org.eclipse.wst.internet.monitor.ui,
- org.wsdl4j,
- org.eclipse.core.runtime;bundle-version="2.1.0",
- org.eclipse.wst.xml.ui,
- org.eclipse.wst.xml.core
-Eclipse-AutoStart: true
+Require-Bundle: org.eclipse.core.runtime; bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.ide;resolution:=optional;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.views;resolution:=optional;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.editors;resolution:=optional;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jface.text;resolution:=optional;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.workbench.texteditor;resolution:=optional;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jface;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.views;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.workbench.texteditor;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui.editors;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.debug.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.common.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.validation;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.wsdl.validation;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.wsi;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.internet.monitor.core;bundle-version="[1.0.102,1.1.0)",
+ org.eclipse.wst.internet.monitor.ui;bundle-version="[1.0.102,1.1.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.eclipse.wst.xml.ui;bundle-version="[1.0.100,1.1.0)",
+ org.eclipse.wst.xml.core;bundle-version="[1.1.0,1.2.0)"
+Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.wsi.ui/about.html b/bundles/org.eclipse.wst.wsi.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.wsi.ui/about.html
+++ b/bundles/org.eclipse.wst.wsi.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.wsi.ui/plugin.properties b/bundles/org.eclipse.wst.wsi.ui/plugin.properties
index 1b442fd..6f127ed 100644
--- a/bundles/org.eclipse.wst.wsi.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.wsi.ui/plugin.properties
@@ -15,4 +15,4 @@
 _UI_WSI_VALIDATOR             = WS-I Message Validator
 _UI_ACTION_VALIDATE           = Validate WS-I Log File
 _UI_WIZARD_VALIDATE_LOG_TITLE = Validate WS-I Message Log File
-_UI_LOG_EDITOR                = XML Editor
+_UI_LOG_EDITOR                = WS-I Message Log Viewer
diff --git a/bundles/org.eclipse.wst.wsi/.cvsignore b/bundles/org.eclipse.wst.wsi/.cvsignore
index ab6b234..f5b199f 100644
--- a/bundles/org.eclipse.wst.wsi/.cvsignore
+++ b/bundles/org.eclipse.wst.wsi/.cvsignore
@@ -4,3 +4,4 @@
 wsi.jar
 @dot
 src.zip
+javaCompiler...args
diff --git a/bundles/org.eclipse.wst.wsi/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.wsi/META-INF/MANIFEST.MF
index 2b3a315..04e8827 100644
--- a/bundles/org.eclipse.wst.wsi/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.wsi/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %_PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.wsi; singleton:=true
-Bundle-Version: 1.0.101.qualifier
+Bundle-Version: 1.0.104.qualifier
 Bundle-Activator: org.eclipse.wst.wsi.internal.WSITestToolsPlugin
 Bundle-Vendor: %_PROVIDER_NAME
 Bundle-Localization: plugin
@@ -42,16 +42,16 @@
  org.eclipse.wst.wsi.internal.document;x-internal:=true,
  org.eclipse.wst.wsi.internal.report;x-internal:=true,
  org.eclipse.wst.wsi.internal.validate.wsdl;x-internal:=true
-Require-Bundle: org.eclipse.wst.command.env,
- org.eclipse.wst.command.env.core,
- org.eclipse.wst.common.uriresolver,
- org.eclipse.core.resources,
- org.eclipse.wst.wsdl.validation,
- org.eclipse.wst.ws,
- org.wsdl4j,
- org.uddi4j,
- org.eclipse.core.runtime;bundle-version="2.1.0",
- org.apache.axis,
- com.ibm.icu, 
- org.apache.xerces
+Require-Bundle:  org.eclipse.core.runtime; bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.wst.command.env;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.command.env.core;bundle-version="[1.0.101,1.1.0)",
+ org.eclipse.wst.common.uriresolver;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.core.resources;bundle-version="[3.2.0,3.4.0)",
+ org.eclipse.wst.wsdl.validation;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.wst.ws;bundle-version="[1.0.100,1.1.0)",
+ org.wsdl4j;bundle-version="[1.4.0,1.5.0)",
+ org.uddi4j;bundle-version="[2.0.4,2.1.0)",
+ org.apache.axis;bundle-version="[1.3.0,1.4.0)",
+ com.ibm.icu;bundle-version="[3.4.4,4.0.0)",
+ org.apache.xerces;bundle-version="[2.8.0,2.9.0)"
 Eclipse-LazyStart: true
diff --git a/bundles/org.eclipse.wst.wsi/about.html b/bundles/org.eclipse.wst.wsi/about.html
index 6f6b96c..4ec5989 100644
--- a/bundles/org.eclipse.wst.wsi/about.html
+++ b/bundles/org.eclipse.wst.wsi/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/bundles/org.eclipse.wst.wsi/plugin.properties b/bundles/org.eclipse.wst.wsi/plugin.properties
index 2c65e29..e12e96b 100644
--- a/bundles/org.eclipse.wst.wsi/plugin.properties
+++ b/bundles/org.eclipse.wst.wsi/plugin.properties
@@ -9,5 +9,14 @@
 #  *   IBM - Initial API and implementation
 #  *******************************************************************************/
 _PLUGIN_NAME   = WSI Conformance Tools
-_UI_WSDL_WSI_VALIDATOR = WSDL WS-I Validator
 _PROVIDER_NAME = Eclipse.org
+_WSI_VALIDATOE_NAME = WS-I Validator
+_TEST_ASSERTION_DOCUMENTS_NAME = Test Assertion Documents
+_REPORT_ARTIFACT_TYPES_NAME = Report Artifact Types
+_UI_WSDL_WSI_VALIDATOR = WSDL WS-I Validator
+_UI_WSI_FRAMEWORK_UDDI_VALIDATOR = WS-I Framework UDDI Validator
+_UI_WSI_FRAMEWORK_WSDL_VALIDATOR = WS-I Framework WSDLValidator
+_UI_WSI_FRAMEWORK_MESSAGE_VALIDATOR = WS-I Framework Message Validator
+_UI_WSI_FRAMEWORK_ENVELOPE_VALIDATOR = WS-I Framework Envelope Validator
+_UI_WSI_BP_TAD_VERSIONS = WS-I Basic Profile TAD Versions
+_UI_WSI_BP_REPORT_ARTIFACTS = WS-I Basic Profile Report Artifacts
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/plugin.xml b/bundles/org.eclipse.wst.wsi/plugin.xml
index 7e80a2b..c23e2ec 100644
--- a/bundles/org.eclipse.wst.wsi/plugin.xml
+++ b/bundles/org.eclipse.wst.wsi/plugin.xml
@@ -13,8 +13,11 @@
 --> 
 
 <plugin>
-
-     <extension
+   <extension-point id="wsivalidator" name="%_WSI_VALIDATOE_NAME" schema="schema/wsivalidator.exsd"/>
+   <extension-point id="tads" name="%_TEST_ASSERTION_DOCUMENTS_NAME" schema="schema/tads.exsd"/>
+   <extension-point id="reportArtifactTypes" name="%_REPORT_ARTIFACT_TYPES_NAME" schema="schema/reportArtifactTypes.exsd"/>
+     
+   <extension
          id="wsdlWSIValidator"
          name="%_UI_WSDL_WSI_VALIDATOR"
          point="org.eclipse.wst.wsdl.validation.extvalidator">
@@ -23,5 +26,56 @@
             class="org.eclipse.wst.wsi.internal.validate.wsdl.WSDLValidator">
       </extvalidator>
    </extension>
-  
+   <extension
+           id="uddiValidator"
+           name="%_UI_WSI_FRAMEWORK_UDDI_VALIDATOR"
+           point="org.eclipse.wst.wsi.wsivalidator">
+        <wsivalidator
+           class="org.eclipse.wst.wsi.internal.core.profile.validator.impl.uddi.UDDIValidatorImpl"/>
+   </extension>
+   <extension
+           id="wsdlValidator"
+           name="%_UI_WSI_FRAMEWORK_WSDL_VALIDATOR"
+           point="org.eclipse.wst.wsi.wsivalidator">
+        <wsivalidator
+           class="org.eclipse.wst.wsi.internal.core.profile.validator.impl.wsdl.WSDLValidatorImpl"/>
+   </extension>
+   <extension
+           id="messageValidator"
+           name="%_UI_WSI_FRAMEWORK_MESSAGE_VALIDATOR"
+           point="org.eclipse.wst.wsi.wsivalidator">
+        <wsivalidator
+           class="org.eclipse.wst.wsi.internal.core.profile.validator.impl.message.MessageValidatorImpl"/>
+   </extension>
+   <extension
+           id="envelopeValidator"
+           name="%_UI_WSI_FRAMEWORK_ENVELOPE_VALIDATOR"
+           point="org.eclipse.wst.wsi.wsivalidator">
+        <wsivalidator
+           class="org.eclipse.wst.wsi.internal.core.profile.validator.impl.envelope.EnvelopeValidatorImpl"/>
+   </extension>
+   <extension
+           id="bpTads"
+           name="%_UI_WSI_BP_TADS"
+           point="org.eclipse.wst.wsi.tads">
+        <tad
+           name="Basic Profile Test Assertions"
+           version="1.1.0"/>
+        <tad
+           name="Basic Profile 1.1 Test Assertions"
+           version="1.1.0"/>
+        <tad
+           name="Simple Soap Binding Profile [1.0] (with Basic Profile [1.1]) Test Assertions"
+           version="1.0.0"/>
+        <tad
+           name="Attachments Profile [1.0] (with Basic Profile [1.1] and Simple Soap Binding Profile [1.0]) Test Assertions"
+           version="1.0.0"/>
+   </extension>
+   <extension
+           id="bpReportArtifacts"
+           name="%_UI_WSI_BP_REPORT_ARTIFACTS"
+           point="org.eclipse.wst.wsi.reportArtifactTypes">
+        <reportArtifactType
+           artifactType="message"/>
+   </extension> 
 </plugin>
diff --git a/bundles/org.eclipse.wst.wsi/schema/reportArtifactTypes.exsd b/bundles/org.eclipse.wst.wsi/schema/reportArtifactTypes.exsd
new file mode 100644
index 0000000..3bb1288
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsi/schema/reportArtifactTypes.exsd
@@ -0,0 +1,111 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.wst.wsi">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.wst.wsi" id="reportArtifactTypes" name="Report Artifact Types"/>
+      </appInfo>
+      <documentation>
+         The report artifact type extension point allows clients to denote artifact types that should be output to the log file.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <complexType>
+         <sequence>
+            <element ref="reportArtifactType"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="reportArtifactType">
+      <complexType>
+         <attribute name="artifactType" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         WTP 2.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         The following is an example of a report artifact type contribution:
+&lt;pre&gt;
+&lt;extension
+        id=&quot;bpReportArtifacts&quot;
+        name=&quot;%_UI_WSI_BP_REPORT_ARTIFACTS&quot;
+        point=&quot;org.eclipse.wst.wsi.reportArtifacts&quot;&gt;
+     &lt;reportArtifactType
+        artifactType=&quot;message&quot;/&gt;
+&lt;/extension&gt;
+&lt;/pre&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiInfo"/>
+      </appInfo>
+      <documentation>
+         No API is associated with this extension point.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         No implementation is associated with this extension point.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/bundles/org.eclipse.wst.wsi/schema/tads.exsd b/bundles/org.eclipse.wst.wsi/schema/tads.exsd
new file mode 100644
index 0000000..2dabfd9
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsi/schema/tads.exsd
@@ -0,0 +1,129 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.wst.wsi">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.wst.wsi" id="tads" name="Test Assertion Documents"/>
+      </appInfo>
+      <documentation>
+         The tads extension point allows clients to denote additional Test Assertion Documents that they can handle.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <documentation>
+            (no description available)
+         </documentation>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="tad"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="tad">
+      <annotation>
+         <documentation>
+            (no description available)
+         </documentation>
+      </annotation>
+      <complexType>
+         <attribute name="name" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="version" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         WTP 2.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         The following is an example of a TAD version contribution:
+&lt;pre&gt;
+&lt;extension
+        id=&quot;bpTadVersions&quot;
+        name=&quot;%_UI_WSI_BP_TAD_VERSIONS&quot;
+        point=&quot;org.eclipse.wst.wsi.tad_versions&quot;&gt;
+     &lt;tad
+        name=&quot;Basic Profile Test Assertions&quot;
+        version=&quot;1.1.0&quot;/&gt;
+&lt;/extension&gt;
+&lt;/pre&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiInfo"/>
+      </appInfo>
+      <documentation>
+         No API is associated with this extension point.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         No implementation is associated with this extension point.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/bundles/org.eclipse.wst.wsi/schema/wsivalidator.exsd b/bundles/org.eclipse.wst.wsi/schema/wsivalidator.exsd
new file mode 100644
index 0000000..4280597
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsi/schema/wsivalidator.exsd
@@ -0,0 +1,127 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="bsp.org.eclipse.wst.wsi">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="bsp.org.eclipse.wst.wsi" id="wsivalidator" name="WS-I Validator"/>
+      </appInfo>
+      <documentation>
+         The WS-I Validator extension point allows clients to contribute a validator that can validate different WS-I Profiles.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <documentation>
+            (no description available)
+         </documentation>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="wsivalidator"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appInfo>
+                  <meta.attribute translatable="true"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="wsivalidator">
+      <annotation>
+         <documentation>
+            (no description available)
+         </documentation>
+      </annotation>
+      <complexType>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn="org.eclipse.wst.wsi.internal.core.profile.validator.BaseValidator"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         WTP 2.0
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         The following is an example of a WS-I Validator contribution:
+&lt;pre&gt;
+&lt;extension
+        id=&quot;messageValidator&quot;
+        name=&quot;%_UI_WSI_FRAMEWORK_MESSAGE_VALIDATOR&quot;
+        point=&quot;org.eclipse.wst.wsi.validator&quot;&gt;
+     &lt;wsi_validator
+        class=&quot;org.eclipse.wst.wsi.internal.core.profile.validator.impl.message.MessageValidatorImpl&quot;/&gt;
+&lt;/extension&gt;
+&lt;/pre&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiInfo"/>
+      </appInfo>
+      <documentation>
+         The supplied class must implement &lt;code&gt;org.eclipse.wst.wsi.internal.core.profile.validator.BaseValidator&lt;/code&gt;.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="implementation"/>
+      </appInfo>
+      <documentation>
+         &lt;code&gt;
+org.eclipse.wst.wsi.internal.core.profile.validator.impl.message.MessageValidatorImpl
+&lt;/code&gt;
+Contributes WS-I validation logic for the Basic Profile validation of messages.
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/WSITestToolsPlugin.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/WSITestToolsPlugin.java
index 205df17..fa0dae1 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/WSITestToolsPlugin.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/WSITestToolsPlugin.java
@@ -10,7 +10,15 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal;
 
+import java.util.ArrayList;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Plugin;
+import org.eclipse.wst.wsi.internal.core.profile.validator.BaseValidator;
 
 /**
  * The WS-I test tools plugin.
@@ -22,8 +30,30 @@
 {
   private static Plugin instance;
   protected final String PLUGIN_PROPERTIES = "wsivalidate";
-  //protected ResourceBundle resourcebundle = null;
-  
+  protected static final String PLUGIN_ID = "org.eclipse.wst.wsi";
+  protected static final String VALIDATOR_EXT_ID = PLUGIN_ID + ".wsivalidator";
+  protected static final String TAD_VERSION_EXT_ID = PLUGIN_ID + ".tads";
+  protected static final String REPORT_ARTIFACT_TYPES_EXT_ID = PLUGIN_ID + ".reportArtifactTypes";
+  protected static final String ATT_CLASS = "class";
+  protected static final String ATT_TAD_NAME = "name";
+  protected static final String ATT_TAD_VERSION = "version";
+  protected static final String ATT_ARTIFACT_TYPE = "artifactType";
+
+  /* Holds validators read from the platform registry.  Lazy initialized in
+   * computeValidators().  */
+  private BaseValidator validators[];
+
+  /* Holds arrays containing information about Test Assertion document (TAD)
+   * versions read from the platform registry.  Each array has two elements:
+   *   0: the TAD name
+   *   1: the TAD version string
+   * Lazy initialized in computeTADVersions().  */
+  private String tadVersions[][];
+
+  /* Holds artifact type names for reporting read from the platform registry.
+   * Lazy initialized in getAllReportArtifactTypes().  */
+  private String reportArtifactTypes[];
+
   /**
    * Constructor for wsiTestToolsPlugin.
    * @param descriptor an IPluginDescriptor object.
@@ -55,4 +85,124 @@
   {
     return (WSITestToolsPlugin) instance;
   }
+
+  /* Computes the list of validators by scanning the platform registry. */
+  private BaseValidator[] computeValidators() {
+      IExtensionRegistry registry = Platform.getExtensionRegistry();
+      IExtensionPoint extensionPoint = registry.getExtensionPoint(
+              VALIDATOR_EXT_ID);
+      IExtension[] extensions = extensionPoint.getExtensions();
+      ArrayList results = new ArrayList();
+      for (int i = 0; i < extensions.length; i++) {
+          /* Only one validator per extension point */
+          IConfigurationElement validatorElement = extensions[i].
+                  getConfigurationElements()[0];
+          BaseValidator validator = null;
+          try {
+              validator = (BaseValidator) validatorElement.
+                      createExecutableExtension(ATT_CLASS);
+          } catch (Throwable e) {
+              e.printStackTrace();
+          }
+          results.add(validator);
+      }
+      return (BaseValidator[]) results.toArray(new BaseValidator[0]);
+  }
+
+  /**
+   * Find all validators found in the platform registry extension points
+   * org.eclipse.wst.wsi.validator.
+   * @return an array containing these validators
+   */
+  public BaseValidator[] getBaseValidators() 
+  {
+	if (validators == null)
+	  validators = computeValidators();
+    return validators;  
+  }
+
+  /**
+   * Scan all validators found in the platform registry for supported artifact
+   * types.
+   * @return an array of artifact type names (Strings)
+   */
+  public String[] getArtifactTypes() {
+      if (validators == null)
+         getBaseValidators();
+      String artifactTypes[] = new String[validators.length];
+      
+      for (int i = 0; i < validators.length; i++)
+          artifactTypes[i] = validators[i].getArtifactType();
+      return artifactTypes;
+  }
+  
+  /* Computes the list of supported TAD versions by scanning the platform 
+   * registry.  See comment for tadVersions inst var for a description of the
+   * return type. */
+  private String[][] computeTADVersions() {
+      IExtensionRegistry registry = Platform.getExtensionRegistry();
+      IExtensionPoint extensionPoint = registry.getExtensionPoint(
+              TAD_VERSION_EXT_ID);
+      IExtension[] extensions = extensionPoint.getExtensions();
+      ArrayList results = new ArrayList();
+      for (int i = 0; i < extensions.length; i++) {
+
+          IConfigurationElement versionElements[] = extensions[i].
+                  getConfigurationElements();
+          for (int j = 0; j < versionElements.length; j++) {
+              String nameVersion[] = new String[2];
+              nameVersion[0] = versionElements[j].getAttribute(ATT_TAD_NAME);
+              nameVersion[1] = versionElements[j].getAttribute(ATT_TAD_VERSION);
+              results.add(nameVersion);
+          }
+      }
+      return (String[][]) results.toArray(new String[0][0]);
+  }
+
+  /**
+   * Find all TAD versions found in the platform registry extension points
+   * org.eclipse.wst.wsi.tad_versions.
+   * 
+   * @return an array where each member is a two element arrays that describes
+   * one TAD version:
+   *   element 0: the TAD name
+   *   element 1: the TAD version string
+   */
+  public String[][] getAllTADVersions() 
+  {
+	if (tadVersions == null)
+	  tadVersions = computeTADVersions();
+    return tadVersions;  
+  }
+  
+  /* Computes the list of artifact types by scanning the platform registry. */
+  private String[] computeReportArtifactTypes() 
+  {
+    IExtensionRegistry registry = Platform.getExtensionRegistry();
+    IExtensionPoint extensionPoint = registry.getExtensionPoint(REPORT_ARTIFACT_TYPES_EXT_ID);
+    IExtension[] extensions = extensionPoint.getExtensions();
+    ArrayList results = new ArrayList();
+    for (int i = 0; i < extensions.length; i++) 
+    {
+      IConfigurationElement reportArtifactElements[] = extensions[i].getConfigurationElements();
+      for (int j = 0; j < reportArtifactElements.length; j++) 
+      {
+        String reportArtifact = reportArtifactElements[j].getAttribute(ATT_ARTIFACT_TYPE);
+        results.add(reportArtifact);
+      }
+    }
+    return (String[]) results.toArray(new String[0]);
+  }
+  
+  /**
+   * Find all report artifact types tags found in the platform registry
+   * extension points org.eclipse.wst.wsi.reportArtifactTypes.
+   * @return an array containing these Strings
+   */
+  public String[] getAllReportArtifactTypes() 
+  {
+    if (reportArtifactTypes == null)
+        reportArtifactTypes = computeReportArtifactTypes();
+    return reportArtifactTypes;
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/WSITestToolsProperties.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/WSITestToolsProperties.java
index 8e69cdf..b303340 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/WSITestToolsProperties.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/WSITestToolsProperties.java
@@ -10,6 +10,14 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.wst.wsi.internal.core.WSIException;
+import org.eclipse.wst.wsi.internal.core.document.DocumentFactory;
+import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertions;
+import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertionsReader;
+
 /**
  * WS-I test tools property.
  */
@@ -28,6 +36,8 @@
   public static final String IGNORE_NON_WSI = "2";
   
   protected static boolean eclipseContext = false;
+  protected static Map uriToAssertionsMap = new HashMap();
+  protected static DocumentFactory documentFactory = null;
 
   /**
    *  Constructor.
@@ -60,6 +70,42 @@
   }
   
   /**
+   * Returns the profile assertions located at the given URI.
+   * @param assertionsURI  the location of the TAD.
+   * @return the profile assertions located at the given URI.
+ * @throws WSIException 
+   */
+  public static ProfileAssertions getProfileAssertions(String assertionsURI) throws WSIException
+  {
+	 ProfileAssertions result = null;
+	 if (assertionsURI != null)
+	 {
+	   try
+	   {
+	     if (uriToAssertionsMap.containsKey(assertionsURI))
+		   result = (ProfileAssertions)uriToAssertionsMap.get(assertionsURI);
+	     else
+	     {
+	       // Read profile assertions
+	       if (documentFactory == null)
+	    	   documentFactory = DocumentFactory.newInstance();
+	       ProfileAssertionsReader profileAssertionsReader = documentFactory.newProfileAssertionsReader();
+	       result = profileAssertionsReader.readProfileAssertions(assertionsURI);
+           if (result != null)
+           {
+        	 uriToAssertionsMap.put(assertionsURI, result);
+           }
+	     }
+	   }
+	   catch (Exception e)
+	   {
+		 result = null;
+	   }
+	 }
+	 return result;
+  }
+  
+  /**
    * Remove file: and any slashes from the fileuri. 
    * Eclipse's resolution mechanism needs to start with the drive.
    */
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/analyzer/MessageAnalyzer.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/analyzer/MessageAnalyzer.java
index 4c15681..4970d3d 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/analyzer/MessageAnalyzer.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/analyzer/MessageAnalyzer.java
@@ -173,8 +173,7 @@
   	    try
 		{
 		  analyzerconfig.setLogLocation(URIEncoder.encode(filename, "UTF8"));
-		  analyzerconfig.setTestAssertionsDocumentLocation(
-			   URIEncoder.encode(wsiPreferences.getTADFile(), "UTF8"));
+		  analyzerconfig.setTestAssertionsDocumentLocation(wsiPreferences.getTADFile());
 		}
 		catch (UnsupportedEncodingException uee)
 		{
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/analyzer/WSDLAnalyzer.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/analyzer/WSDLAnalyzer.java
index aab7d55..99bf231 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/analyzer/WSDLAnalyzer.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/analyzer/WSDLAnalyzer.java
@@ -323,16 +323,7 @@
       analyzerconfig.setAddStyleSheet(addstylesheet);
       analyzerconfig.setReplaceReport(true);
       //analyzerconfig.setLogLocation(filename);
-	  try
-	 {
-	   analyzerconfig.setTestAssertionsDocumentLocation(
-		 URIEncoder.encode(wsiPreferences.getTADFile(), "UTF8"));
-	 }
-	 catch (UnsupportedEncodingException uee)
-	 {
-	   analyzerconfig.setTestAssertionsDocumentLocation(URIEncoder.encode(wsiPreferences.getTADFile(), "UTF8"));
-
-	 }
+      analyzerconfig.setTestAssertionsDocumentLocation(wsiPreferences.getTADFile());
       analyzerconfig.setVerboseOption(false);
 
       // set the wsdlReference
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/WSIConstants.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/WSIConstants.java
index 6db52db..4ec7c47 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/WSIConstants.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/WSIConstants.java
@@ -20,11 +20,6 @@
  * @author Graham Turrell (gturrell@uk.ibm.com)
  */
 public interface WSIConstants {
-	/**
-	 * Copyright notice.
-	 */
-	public static final String COPYRIGHT = "Copyright (C) 2002-2003 by The Web Services-Interoperability Organization and Certain "
-			+ "of its Members. All Rights Reserved.\nUse of this Material is governed by WS-I licenses included within the documentation.";
 
 	/**
 	 * XML declaration statement.
@@ -132,7 +127,7 @@
 	 * WSDL SOAP binding namespace.
 	 */
 	public final static String NS_URI_WSDL_SOAP = "http://schemas.xmlsoap.org/wsdl/soap/";
-
+	public final static String NS_URI_WSDL_SOAP12 = "http://schemas.xmlsoap.org/wsdl/soap12/";
 	public final static String NS_NAME_WSDL_SOAP = "soap";
 
 	/**
@@ -444,21 +439,22 @@
 	/**
 	 * WS-I names and versions of the profile test assertion document supported
 	 * in the current version of the test tools.
-	 */
+     */
+	/** @deprecated -- this has been replaced with a TAD registry mechanism. */
 	public static final String BASIC_PROFILE_TAD_NAME = "Basic Profile Test Assertions";
-
+    /** @deprecated -- this has been replaced with a TAD registry mechanism. */
 	public static final String BASIC_PROFILE_1_1_TAD_NAME = "Basic Profile 1.1 Test Assertions";
-
+    /** @deprecated -- this has been replaced with a TAD registry mechanism. */
 	public static final String SIMPLE_SOAP_BINDINGS_PROFILE_TAD_NAME = "Simple Soap Binding Profile [1.0] (with Basic Profile [1.1]) Test Assertions";
-
+    /** @deprecated -- this has been replaced with a TAD registry mechanism. */
 	public static final String ATTACHMENTS_PROFILE_TAD_NAME = "Attachments Profile [1.0] (with Basic Profile [1.1] and Simple Soap Binding Profile [1.0]) Test Assertions";
-
+    /** @deprecated -- this has been replaced with a TAD registry mechanism. */
 	public static final String BASIC_PROFILE_TAD_VERSION = "1.1.0";
-
+    /** @deprecated -- this has been replaced with a TAD registry mechanism. */
 	public static final String BASIC_PROFILE_1_1_TAD_VERSION = "1.1.0";
-
+    /** @deprecated -- this has been replaced with a TAD registry mechanism. */
 	public static final String SIMPLE_SOAP_BINDINGS_PROFILE_TAD_VERSION = "1.0.0";
-
+    /** @deprecated -- this has been replaced with a TAD registry mechanism. */
 	public static final String ATTACHMENTS_PROFILE_TAD_VERSION = "1.0.0";
 
 	/**
@@ -484,5 +480,4 @@
 	public static final String HTTP_PREFIX = "http:";
 	public static final String FILE_PROTOCOL = "file:///";
 	public static final String WSI_PREFIX = "WS-I: ";
-
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/Analyzer.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/Analyzer.java
index 3e00d4a..879aa2e 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/Analyzer.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/Analyzer.java
@@ -229,6 +229,11 @@
     this.analyzerConfigIndex = index;
   }
 
+  protected int getAnalyzerConfigIndex()
+  {
+    return this.analyzerConfigIndex;
+  }
+
   /**
    * Get analyzer configuration information.
    * @return analyzer configuration information.
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/Analyzer.properties b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/Analyzer.properties
index d66cb75..c08482c 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/Analyzer.properties
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/Analyzer.properties
@@ -42,3 +42,4 @@
 config17=Could not get report file location.
 config18=Invalid correlation type specified.
 config19=The WSDL element name must be specified.
+config20=The WS-I Test Assertion Document (TAD)document was either not found or could not be processed.
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/AnalyzerContext.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/AnalyzerContext.java
index d2f53a6..c565779 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/AnalyzerContext.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/AnalyzerContext.java
@@ -10,6 +10,8 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.analyzer;
 
+import org.eclipse.wst.wsi.internal.core.wsdl.WSDLDocument;
+
 /**
  * This class contains contextual information which is required by test assertions across all artifacts.
  * 
@@ -20,6 +22,7 @@
 {
   protected ServiceReference serviceReference = null;
   protected CandidateInfo candidateInfo = null;
+  protected WSDLDocument wsdlDocument = null;
 
   /**
    * Do not allow the usage of the null constructor.
@@ -76,4 +79,22 @@
   {
     this.candidateInfo = candidateInfo;
   }
+  
+  /**
+   * Returns the wsdlDocument.
+   * @return WSDLDocument.
+   * @see #setWsdlDocument
+   */
+  public WSDLDocument getWsdlDocument() {
+      return wsdlDocument;
+  }
+
+  /**
+   * Sets the wsdlDocument.
+   * @param wsdlDocument the wsdlDocument to set.
+   * @see #getWsdlDocument
+   */
+  public void setWsdlDocument(WSDLDocument wsdlDocument) {
+      this.wsdlDocument = wsdlDocument;
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/BasicProfileAnalyzer.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/BasicProfileAnalyzer.java
index d1a936a..2e7ba7f 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/BasicProfileAnalyzer.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/BasicProfileAnalyzer.java
@@ -15,23 +15,23 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.util.Iterator;
 import java.util.List;
 
+import javax.wsdl.Binding;
 import javax.wsdl.WSDLException;
 
+import org.eclipse.wst.wsi.internal.WSITestToolsProperties;
 import org.eclipse.wst.wsi.internal.core.ToolInfo;
 import org.eclipse.wst.wsi.internal.core.WSIConstants;
 import org.eclipse.wst.wsi.internal.core.WSIException;
 import org.eclipse.wst.wsi.internal.core.WSIFileNotFoundException;
-import org.eclipse.wst.wsi.internal.core.log.LogReader;
-import org.eclipse.wst.wsi.internal.core.log.MessageEntryHandler;
-import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertionsReader;
-import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
-import org.eclipse.wst.wsi.internal.core.profile.validator.EnvelopeValidator;
-import org.eclipse.wst.wsi.internal.core.profile.validator.MessageValidator;
-import org.eclipse.wst.wsi.internal.core.profile.validator.UDDIValidator;
+import org.eclipse.wst.wsi.internal.core.analyzer.config.UDDIReference;
+import org.eclipse.wst.wsi.internal.core.analyzer.config.WSDLElement;
+import org.eclipse.wst.wsi.internal.core.analyzer.config.impl.WSDLElementImpl;
+import org.eclipse.wst.wsi.internal.core.profile.validator.BaseValidator;
 import org.eclipse.wst.wsi.internal.core.profile.validator.WSDLValidator;
-import org.eclipse.wst.wsi.internal.core.report.ArtifactReference;
+import org.eclipse.wst.wsi.internal.core.profile.validator.impl.wsdl.WSDLValidatorImpl;
 import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
 import org.eclipse.wst.wsi.internal.core.report.Report;
 import org.eclipse.wst.wsi.internal.core.report.ReportArtifact;
@@ -39,9 +39,16 @@
 import org.eclipse.wst.wsi.internal.core.report.ReportWriter;
 import org.eclipse.wst.wsi.internal.core.report.impl.DefaultReporter;
 import org.eclipse.wst.wsi.internal.core.util.ArtifactType;
+import org.eclipse.wst.wsi.internal.core.util.UDDIUtils;
 import org.eclipse.wst.wsi.internal.core.util.WSIProperties;
 import org.eclipse.wst.wsi.internal.core.wsdl.WSDLDocument;
+import org.eclipse.wst.wsi.internal.core.wsdl.WSDLUtils;
 import org.eclipse.wst.wsi.internal.core.xml.XMLDocumentCache;
+import org.uddi4j.client.UDDIProxy;
+import org.uddi4j.datatype.binding.BindingTemplate;
+import org.uddi4j.datatype.tmodel.TModel;
+import org.uddi4j.response.BindingDetail;
+import org.uddi4j.response.TModelDetail;
 import org.uddi4j.transport.TransportFactory;
 
 
@@ -64,6 +71,7 @@
    * WSDL document to analyze.
    */
   protected WSDLDocument wsdlDocument = null;
+  // private WSDLValidator wsdlValidator;
 
   /**
    * Basic profile analyzer.
@@ -124,7 +132,61 @@
     }
 
   }
+  
+  private WSDLDocument getWsdlFromUddi() {
+      WSDLDocument wsdlDoc = null;
+      try {
+          UDDIProxy uddiProxy = new UDDIProxy();
+          UDDIReference uddiReference = getAnalyzerConfig().getUDDIReference();
+          uddiProxy.setInquiryURL(uddiReference.getInquiryURL());
+          TModel tModel = null;
 
+          if (uddiReference.getKeyType().equals(UDDIReference.BINDING_KEY)) {
+              BindingDetail bindingDetail = uddiProxy.get_bindingDetail(
+                      uddiReference.getKey());
+              BindingTemplate bindingTemplate = (BindingTemplate) bindingDetail.
+                      getBindingTemplateVector().elementAt(0);
+              tModel = UDDIUtils.findTModel(uddiProxy, bindingTemplate, false);
+          } else { // UDDIReference.TMODEL_KEY
+              TModelDetail tModelDetail = uddiProxy.get_tModelDetail(
+                          uddiReference.getKey());
+              tModel = (TModel) tModelDetail.getTModelVector().elementAt(0);
+          }
+
+          String overviewURL = UDDIUtils.getOverviewURL(tModel);
+          String wsdlURI = UDDIUtils.getWSDLLocation(overviewURL);
+          wsdlDoc = new WSDLDocument(wsdlURI);
+
+          /* TODO:  I refactored this code from BSP3001 but I'm not sure that
+           * it's correct.  This overrides the <wsdlElement> child of
+           * <uddiReference> from the config file, which never gets used.
+           */
+          // If the wsdlElement does not exist, then set it
+          if (analyzerContext.getServiceReference().getWSDLElement() == null)
+          {
+              Binding binding = UDDIUtils.getBinding(overviewURL, wsdlDoc);
+              String bindingName =
+                  binding == null ? null : binding.getQName().getLocalPart();
+                String namespace =
+                  binding == null ? null : binding.getQName().getNamespaceURI();
+
+            // Get WSDL binding from the overviewURL and set in analyzerContext
+            WSDLElement wsdlElement = new WSDLElementImpl();
+            wsdlElement.setName(bindingName);
+            wsdlElement.setNamespace(namespace);
+            wsdlElement.setType(WSDLValidator.TYPE_DESCRIPTION_BINDING);
+            analyzerContext.getServiceReference().setWSDLElement(wsdlElement);
+          }
+          return wsdlDoc;
+
+      } catch (Exception e) {
+        /* If the wsdlDoc is set at the point of the exception, return it;
+         * otherwise return null. */
+        return wsdlDoc;
+    }
+  }
+  
+  
   /**
    * Process all conformance validation functions.
    * @return status code.
@@ -136,8 +198,6 @@
 
     Report report = null;
     ReportArtifact reportArtifact = null;
-    String wsdlURI = null;
-    //WSDLDocument wsdlDocument = null;
 
     // Set up initial analyzer context based on entries in the config file
     this.analyzerContext =
@@ -145,12 +205,14 @@
 
     try
     {
-      // Read profile assertions
-      ProfileAssertionsReader profileAssertionsReader =
-        documentFactory.newProfileAssertionsReader();
-      this.profileAssertions =
-        profileAssertionsReader.readProfileAssertions(
-          getAnalyzerConfig().getTestAssertionsDocumentLocation());
+      this.profileAssertions = WSITestToolsProperties.getProfileAssertions(
+                getAnalyzerConfig().getTestAssertionsDocumentLocation());
+
+      if (this.profileAssertions == null)
+      {
+        throw new WSIException(messageList.getMessage("config20",
+       		   "The WS-I Test Assertion Document (TAD)document was either not found or could not be processed."));  
+      }	
 
       // Create report from document factory
       report = documentFactory.newReport();
@@ -173,102 +235,48 @@
       // Create reporter
       this.reporter = new DefaultReporter(report, reportWriter);
 
+      // fetch WSDL if not set in constructor
+      // First, attempt to get the WSDL URI from a UDDI tModel
+      if ((wsdlDocument == null) && (getAnalyzerConfig().isUDDIReferenceSet()))
+              wsdlDocument = getWsdlFromUddi();
+
+      /* Next, try to use the WSDL settings from the config file.  If we can't
+       * fetch that WSDL, and the config file is set up to test a WSDL, then the
+       * validator fails here. */
+      if ((wsdlDocument == null) && (getAnalyzerConfig().isWSDLReferenceSet()))
+      {
+          wsdlDocument = new WSDLDocument(getAnalyzerConfig().
+                  getWSDLLocation());
+
+          if (wsdlDocument == null)
+              throw new WSIException(messageList.getMessage("config05",
+                      "WSDL document was either not found or could not be " + 
+                      "processed."));
+      }
+      
+      /*
+       * Only validate messages against a wsdl document if the wsdl document
+       * does not contain soap 1.2 bindings. 
+       */
+	  if (WSDLUtils.isSOAP12WSDL(wsdlDocument) && getAnalyzerConfig().getLogLocation() != null)
+		  getAnalyzerConfig().setWSDLReference(null);
+	  else
+		  analyzerContext.setWsdlDocument(wsdlDocument);  
+
       // Start writing report
       this.reporter.startReport();
 
-      // --------------------------------
-      // DISCOVERY ARTIFACT:
-      // --------------------------------
-
-      // Set current artifact
-      reportArtifact = setCurrentArtifact(ArtifactType.ARTIFACT_TYPE_DISCOVERY);
-
-      // If UDDI options specified, then process UDDI test assertions
-      if ((wsdlURI = validateUDDI(reportArtifact, factory.newUDDIValidator()))
-        == null)
-      {
-        if (getAnalyzerConfig().isWSDLReferenceSet())
-        {
-          // Otherwise use the WSDL options to get the WSDL location
-          wsdlURI = getAnalyzerConfig().getWSDLLocation();
-        }
-      }
-
-      // Indicate that we are done with this artifact
-      this.reporter.endCurrentArtifact();
-
-      // --------------------------------
-      // DESCRIPTION ARTIFACT:
-      // --------------------------------
-
-      // Set current artifact
-      reportArtifact =
-        setCurrentArtifact(ArtifactType.ARTIFACT_TYPE_DESCRIPTION);
-
-      // Call WSDLValidator 
-      wsdlDocument =
-        validateWSDL(
-          reportArtifact,
-          factory.newWSDLValidator(),
-          wsdlURI,
-          wsdlDocument);
-
-      // If WSDL document object is null, then throw exception
-      if ((wsdlDocument == null) && (getAnalyzerConfig().isWSDLReferenceSet()))
-      {
-        throw new WSIException(
-          messageList.getMessage(
-            "config05",
-            "WSDL document was either not found or could not be processed."));
-      }
-
-      // Indicate that we are done with this artifact
-      this.reporter.endCurrentArtifact();
-
-      // REMOVE:
-      // If processing log entries and there isn't a WSDL URI, 
-      // then throw an exception since it is required to process the log entries
-      //if ((wsdlURI == null) && (analyzerConfig.getLogLocation() != null)) {
-      //  throw new WSIException("Must specify the WSDL document location to validate message log.");
-      //}
-
-      // --------------------------------
-      // MESSAGE ARTIFACT:
-      // --------------------------------
-
-      // Set current artifact
-      reportArtifact = setCurrentArtifact(ArtifactType.ARTIFACT_TYPE_MESSAGE);
-
-      // Process test assertions for the messages
-      validateMessages(
-        reportArtifact,
-        factory.newMessageValidator(),
-        wsdlDocument);
-
-      // Indicate that we are done with this artifact
-      this.reporter.endCurrentArtifact();
-
-      // --------------------------------
-      // ENVELOPE ARTIFACT:
-      // --------------------------------
-
-      // If that is not the Basic Profile 1.0, then process
-      // the envelope artifact
-      if (!profileAssertions.getTADName()
-        .equals(WSIConstants.BASIC_PROFILE_TAD_NAME))
-      {
-
-        // Set current artifact
-        reportArtifact = setCurrentArtifact(ArtifactType.ARTIFACT_TYPE_ENVELOPE);
-
-        // Process test assertions for the envelopes
-        validateEnvelopes(
-          reportArtifact,
-          factory.newEnvelopeValidator(),
-          wsdlDocument);
-
-        // Indicate that we are done with this artifact
-        this.reporter.endCurrentArtifact();
+      // Walk through the artifact elements from the TAD, validating each one
+      profileAssertions.getArtifactList().keySet().iterator();
+      for (Iterator i = profileAssertions.getArtifactList().keySet().iterator();
+              i.hasNext(); ) {
+          String artifactType = (String) i.next();
+          // Set current artifact
+          reportArtifact = setCurrentArtifact(ArtifactType.getArtifactType(
+                  artifactType));
+          validate(reportArtifact, factory.getValidatorForArtifact(
+                  artifactType));
+          this.reporter.endCurrentArtifact();
       }
 
       // Finish the conformance report
@@ -314,165 +322,28 @@
   }
 
   /**
-   * Run UDDI test assertions.
+   * Run test assertions.
    */
-  private String validateUDDI(
-    ReportArtifact reportArtifact,
-    UDDIValidator uddiValidator)
-    throws WSIException
+  private void validate(ReportArtifact reportArtifact, BaseValidator validator)
+          throws WSIException 
   {
-    String wsdlURI = null;
-
-    // Init UDDIValidator
-    uddiValidator.init(
-      this.analyzerContext,
-      this.profileAssertions.getArtifact(ArtifactType.TYPE_DISCOVERY),
-      reportArtifact,
-      getAnalyzerConfig().getUDDIReference(),
-      this.reporter);
-
-    // Call UDDIValidator 
-    if (getAnalyzerConfig().isUDDIReferenceSet())
-    {
-      wsdlURI = uddiValidator.validate();
-
-      // Cleanup
-      uddiValidator.cleanup();
-    }
-
+    if (validator instanceof WSDLValidatorImpl)
+	{
+    	((WSDLValidatorImpl)validator).init(analyzerContext, profileAssertions, reportArtifact, getAnalyzerConfig(), reporter,
+    			getAnalyzerConfigIndex() == 0);
+	}
     else
     {
-      // Set all missingInput
-      uddiValidator.setAllMissingInput();
+      validator.init(analyzerContext, profileAssertions, reportArtifact, getAnalyzerConfig(), reporter);
     }
 
-    return wsdlURI;
-  }
-
-  /**
-   * Run WSDL test assertions.
-   */
-  private WSDLDocument validateWSDL(
-    ReportArtifact reportArtifact,
-    WSDLValidator wsdlValidator,
-    String wsdlURI,
-    WSDLDocument document)
-    throws WSIException
-  {
-    WSDLDocument returnWSDLDocument = null;
-
-    // Init WSDLValidator
-    wsdlValidator.init(
-      this.analyzerContext,
-      this.profileAssertions.getArtifact(ArtifactType.TYPE_DESCRIPTION),
-      reportArtifact,
-      wsdlURI,
-      document,
-      this.reporter);
-
-    // If a WSDL URI was specified or located in a UDDI registry, then process the WSDL tests
-    if (wsdlURI != null || document != null)
+    if (validator.runTests()) {
+        validator.validateArtifact();
+        validator.cleanup();
+    } 
+    else 
     {
-      // Call WSDLValidator 
-      returnWSDLDocument = wsdlValidator.validate();
-
-      // Cleanup
-      wsdlValidator.cleanup();
-    }
-
-    else
-    {
-      // Set all missingInput
-      wsdlValidator.setAllMissingInput();
-    }
-
-    return returnWSDLDocument;
-  }
-
-  /**
-   * Run message test assertions.
-   */
-  private void validateMessages(
-    ReportArtifact reportArtifact,
-    MessageValidator messageValidator,
-    WSDLDocument document)
-    throws WSIException
-  {
-    //Log log = null;
-    //MessageEntry logEntry = null;
-
-    // Init MessageValidator
-    messageValidator.init(
-      this.analyzerContext,
-      this.profileAssertions.getArtifact(ArtifactType.TYPE_MESSAGE),
-      reportArtifact,
-      document,
-      this.reporter);
-
-    // If the log file location was specified, then process test assertions for the messages
-    if (getAnalyzerConfig().getLogLocation() != null)
-    {
-      // Get the log file reader
-      LogReader logReader = documentFactory.newLogReader();
-
-      // Create log reader callback
-      MessageProcessor messageProcessor =
-        new MessageProcessor(messageValidator);
-
-      // Start reading the log file
-      logReader.readLog(getAnalyzerConfig().getLogLocation(), messageProcessor);
-
-      // Cleanup
-      messageValidator.cleanup();
-    }
-
-    // Otherwise all are missingInput
-    else
-    {
-      // Set all missingInput
-      messageValidator.setAllMissingInput();
-    }
-  }
-
-  /**
-   * Run envelope test assertions.
-   */
-  private void validateEnvelopes(
-    ReportArtifact reportArtifact,
-    EnvelopeValidator envelopeValidator,
-    WSDLDocument document)
-    throws WSIException
-  {
-    // Init envelopeValidator
-    envelopeValidator.init(
-      this.analyzerContext,
-      this.profileAssertions.getArtifact(ArtifactType.TYPE_ENVELOPE),
-      reportArtifact,
-      document,
-      this.reporter);
-
-    // If the log file location was specified, then process test assertions for the messages
-    if (getAnalyzerConfig().getLogLocation() != null)
-    {
-      // Get the log file reader
-      LogReader logReader = documentFactory.newLogReader();
-
-      // Create log reader callback
-      EnvelopeProcessor envelopeProcessor =
-        new EnvelopeProcessor(envelopeValidator);
-
-      // Start reading the log file
-      logReader.readLog(getAnalyzerConfig().getLogLocation(), envelopeProcessor);
-
-      // Cleanup
-      envelopeValidator.cleanup();
-    }
-
-    // Otherwise all are missingInput
-    else
-    {
-      // Set all missingInput
-      envelopeValidator.setAllMissingInput();
+      validator.setAllMissingInput();
     }
   }
 
@@ -586,74 +457,4 @@
     }
     t.printStackTrace();
   }
-
-  /**
-   * Message processor class.
-   */
-  class MessageProcessor implements MessageEntryHandler
-  {
-    MessageValidator messageValidator = null;
-
-    /**
-     * Create message processor as a log reader callback function.
-     */
-    MessageProcessor(MessageValidator messageValidator)
-    {
-      this.messageValidator = messageValidator;
-    }
-
-    /**
-     * Process artifact reference.
-     */
-    public void processArtifactReference(ArtifactReference artifactReference)
-      throws WSIException
-    {
-      reporter.addArtifactReference(artifactReference);
-    }
-
-    /**
-     * Process a single log entry.
-     */
-    public void processLogEntry(EntryContext entryContext) throws WSIException
-    {
-      // Validate message
-      messageValidator.validate(entryContext);
-    }
-
-  }
-
-  /**
-   * Envelope processor class.
-   */
-  class EnvelopeProcessor implements MessageEntryHandler
-  {
-    EnvelopeValidator envelopeValidator = null;
-
-    /**
-     * Create envelope processor as a log reader callback function.
-     */
-    EnvelopeProcessor(EnvelopeValidator envelopeValidator)
-    {
-      this.envelopeValidator = envelopeValidator;
-    }
-
-    /**
-     * Process artifact reference.
-     */
-    public void processArtifactReference(ArtifactReference artifactReference)
-      throws WSIException
-    {
-      reporter.addArtifactReference(artifactReference);
-    }
-
-    /**
-     * Process a single log entry.
-     */
-    public void processLogEntry(EntryContext entryContext) throws WSIException
-    {
-      // Validate envelopes
-      envelopeValidator.validate(entryContext);
-    }
-
-  }
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/CandidateInfo.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/CandidateInfo.java
index 553cbee..6fe828d 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/CandidateInfo.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/CandidateInfo.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.analyzer;
 
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -575,35 +576,38 @@
   {
 
     HashSet importSet = new HashSet();
+    importSet =  getAllImports(new ArrayList(), rootDef);
+    return (importSet);
+  }
+  
+  private HashSet getAllImports(List alreadyProcessedDefinitions, Definition rootDef) 
+  {
+	HashSet importSet = new HashSet();
+	if ((rootDef != null) && (!alreadyProcessedDefinitions.contains(rootDef)))
+	{
+      alreadyProcessedDefinitions.add(rootDef);	
+	  Map importMap = rootDef.getImports();
+      Iterator i = importMap.values().iterator();
 
-    Map importMap = rootDef.getImports();
-    Iterator i = importMap.values().iterator();
-
-    while (i.hasNext())
-    {
-      List nextImportList = (List) (i.next());
-      Iterator listIt = nextImportList.iterator();
-      while (listIt.hasNext())
+      while (i.hasNext())
       {
-        Import nextImport = (Import) listIt.next();
-        if (nextImport != null)
+        List nextImportList = (List) (i.next());
+        Iterator listIt = nextImportList.iterator();
+        while (listIt.hasNext())
         {
-          // its a wsdl document
-          importSet.add(nextImport);
-          if (nextImport.getDefinition() != null)
+          Import nextImport = (Import) listIt.next();
+          if (nextImport != null)
           {
-            HashSet subTreeImports = getAllImports(nextImport.getDefinition());
-            Iterator subIt = subTreeImports.iterator();
-            while (subIt.hasNext())
-            {
-              importSet.add((Import) (subIt.next()));
-            }
+            importSet.add(nextImport);
+            Definition def = nextImport.getDefinition();
+       	    HashSet nestedImports = getAllImports(alreadyProcessedDefinitions, def);
+            for (Iterator j = nestedImports.iterator(); j.hasNext();)
+              importSet.add(j.next());
           }
         }
       }
     }
-
-    return (importSet);
+    return importSet;
   }
 
   /**
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/config/impl/AnalyzerConfigReaderImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/config/impl/AnalyzerConfigReaderImpl.java
index 1a4de86..da991ca 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/config/impl/AnalyzerConfigReaderImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/config/impl/AnalyzerConfigReaderImpl.java
@@ -28,7 +28,7 @@
 import org.eclipse.wst.wsi.internal.core.analyzer.config.WSDLReference;
 import org.eclipse.wst.wsi.internal.core.common.AddStyleSheet;
 import org.eclipse.wst.wsi.internal.core.common.impl.AddStyleSheetImpl;
-import org.eclipse.wst.wsi.internal.core.util.EntryType;
+import org.eclipse.wst.wsi.internal.core.profile.validator.WSDLValidator;
 import org.eclipse.wst.wsi.internal.core.util.MessageList;
 import org.eclipse.wst.wsi.internal.core.util.TestUtils;
 import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
@@ -381,20 +381,20 @@
     if (((wsdlReference
       .getWSDLElement()
       .getType()
-      .equalsIgnoreCase(EntryType.TYPE_DESCRIPTION_PORT))
+      .equalsIgnoreCase(WSDLValidator.TYPE_DESCRIPTION_PORT))
       || (wsdlReference
         .getWSDLElement()
         .getType()
-        .equalsIgnoreCase(EntryType.TYPE_DESCRIPTION_OPERATION)))
+        .equalsIgnoreCase(WSDLValidator.TYPE_DESCRIPTION_OPERATION)))
       && (wsdlReference.getWSDLElement().getParentElementName() == null))
     {
       throw new IllegalArgumentException(
         getMessage(
           "config09",
           "The parentElementName attribute must be specified with a WSDL type of "
-            + EntryType.TYPE_DESCRIPTION_PORT
+            + WSDLValidator.TYPE_DESCRIPTION_PORT
             + " or "
-            + EntryType.TYPE_DESCRIPTION_OPERATION
+            + WSDLValidator.TYPE_DESCRIPTION_OPERATION
             + "."));
     }
   }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/config/impl/WSDLElementImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/config/impl/WSDLElementImpl.java
index ff14b85..fec67d4 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/config/impl/WSDLElementImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/analyzer/config/impl/WSDLElementImpl.java
@@ -17,7 +17,7 @@
 
 import org.eclipse.wst.wsi.internal.core.WSIConstants;
 import org.eclipse.wst.wsi.internal.core.analyzer.config.WSDLElement;
-import org.eclipse.wst.wsi.internal.core.util.EntryType;
+import org.eclipse.wst.wsi.internal.core.profile.validator.WSDLValidator;
 
 /**
  * The implementation for WSDL definitions. 
@@ -117,7 +117,7 @@
    */
   public boolean isPort()
   {
-    return type.equals(EntryType.TYPE_DESCRIPTION_PORT);
+    return type.equals(WSDLValidator.TYPE_DESCRIPTION_PORT);
   }
 
   /**
@@ -125,7 +125,7 @@
    */
   public boolean isBinding()
   {
-    return type.equals(EntryType.TYPE_DESCRIPTION_BINDING);
+    return type.equals(WSDLValidator.TYPE_DESCRIPTION_BINDING);
   }
 
   /**
@@ -133,7 +133,7 @@
    */
   public boolean isPortType()
   {
-    return type.equals(EntryType.TYPE_DESCRIPTION_PORTTYPE);
+    return type.equals(WSDLValidator.TYPE_DESCRIPTION_PORTTYPE);
   }
 
   /**
@@ -141,7 +141,7 @@
    */
   public boolean isOperation()
   {
-    return type.equals(EntryType.TYPE_DESCRIPTION_OPERATION);
+    return type.equals(WSDLValidator.TYPE_DESCRIPTION_OPERATION);
   }
 
   /**
@@ -149,7 +149,7 @@
    */
   public boolean isMessage()
   {
-    return type.equals(EntryType.TYPE_DESCRIPTION_MESSAGE);
+    return type.equals(WSDLValidator.TYPE_DESCRIPTION_MESSAGE);
   }
 
   /**
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/document/DocumentFactory.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/document/DocumentFactory.java
index 98e90cc..8f8de37 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/document/DocumentFactory.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/document/DocumentFactory.java
@@ -22,6 +22,7 @@
 import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertionsReader;
 import org.eclipse.wst.wsi.internal.core.report.Report;
 import org.eclipse.wst.wsi.internal.core.report.ReportWriter;
+import org.eclipse.wst.wsi.internal.core.report.Reporter;
 import org.eclipse.wst.wsi.internal.core.util.WSIProperties;
 
 /**
@@ -160,6 +161,12 @@
    */
   public abstract LogWriter newLogWriter();
 
+  /**
+   * Create a reporter.
+   * @return newly created reporter.
+   */
+  public abstract Reporter newReporter(Report report, ReportWriter reportWriter);
+
   // ADD: Add other writers
 
   /**
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/document/impl/DocumentFactoryImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/document/impl/DocumentFactoryImpl.java
index f18c74d..293ffd9 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/document/impl/DocumentFactoryImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/document/impl/DocumentFactoryImpl.java
@@ -31,6 +31,8 @@
 import org.eclipse.wst.wsi.internal.core.profile.impl.ProfileAssertionsReaderImpl;
 import org.eclipse.wst.wsi.internal.core.report.Report;
 import org.eclipse.wst.wsi.internal.core.report.ReportWriter;
+import org.eclipse.wst.wsi.internal.core.report.Reporter;
+import org.eclipse.wst.wsi.internal.core.report.impl.DefaultReporter;
 import org.eclipse.wst.wsi.internal.core.report.impl.ReportImpl;
 import org.eclipse.wst.wsi.internal.core.report.impl.ReportWriterImpl;
 
@@ -144,6 +146,14 @@
   }
 
   /**
+   * Create a new instance of a DefaultReporter
+   */
+  public Reporter newReporter(Report report, ReportWriter reportWriter)
+  {
+    return new DefaultReporter(report, reportWriter);
+  }
+
+  /**
    * Find the factory class name which can be specified as a Java property.
    */
   //private static String getFactoryClassName()
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/log/LogBuilder.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/log/LogBuilder.java
index b4dfc80..d34ca77 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/log/LogBuilder.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/log/LogBuilder.java
@@ -103,9 +103,13 @@
     for (Iterator i = requestResponses.iterator(); i.hasNext();)
     {
       RequestHandler rr = (RequestHandler)i.next();
-      if ((rr != null) && (!omitRequestResponse(rr)))
-      {
-        logRequestResponse(rr);
+      if (rr != null) {
+          try {
+              logRequestResponse(rr);
+          } catch (Exception e) {
+              /* Empty catch block.  This request/response pair is not a valid SOAP
+               * message, so skip it. */
+          }
       }
     }
     return log;
@@ -126,41 +130,53 @@
   {
     if (rr != null)
     {
-      String requestHeader = new String(rr.getRequestHeader());
-      String responseHeader = new String(rr.getResponseHeader());
-      
-      byte[] unchunkedRequestBody = rr.getRequestContent();
-      byte[] unchunkedResponseBody = rr.getResponseContent();
+      byte[] requestHeaderBytes = rr.getRequestHeader();
+      byte[] responseHeaderBytes = rr.getResponseHeader();
  
-      long timestamp = rr.getDate().getTime();
-      String localHostAndPort = "localhost:" + rr.getLocalPort();
-      String remoteHostAndPort = rr.getRemoteHost() + ":" + rr.getRemotePort();
+      if ((requestHeaderBytes != null) || (responseHeaderBytes != null))
+      {
+        long timestamp = rr.getDate().getTime();
+        String localHostAndPort = "localhost:" + rr.getLocalPort();
+        String remoteHostAndPort = rr.getRemoteHost() + ":" + rr.getRemotePort();
 
-      int requestId  = getNextAvailableId();
-      int responseId = getNextAvailableId();
-      int conversationId = getNextAvailableConversationId();
-
-      MessageEntry messageEntryRequest = createMessageEntry(requestId, conversationId, 
+        int conversationId = getNextAvailableConversationId();
+        try
+        {
+          if (requestHeaderBytes != null)
+          {
+            String requestHeader = new String(requestHeaderBytes);
+            byte[] unchunkedRequestBody = rr.getRequestContent();
+            int requestId  = getNextAvailableId();
+            
+            MessageEntry messageEntryRequest = createMessageEntry(requestId, conversationId, 
                 MessageEntry.TYPE_REQUEST, timestamp, localHostAndPort,
                 remoteHostAndPort, unchunkedRequestBody, requestHeader);
 
-      MessageEntry messageEntryResponse = createMessageEntry(responseId, conversationId, 
+            if (messageEntryRequest != null)
+            {
+              log.addLogEntry(messageEntryRequest);
+            }
+          }
+          if (responseHeaderBytes != null)
+          {
+            String responseHeader = new String(responseHeaderBytes);
+            byte[] unchunkedResponseBody = rr.getResponseContent();
+            int responseId = getNextAvailableId();
+            
+            MessageEntry messageEntryResponse = createMessageEntry(responseId, conversationId, 
                 MessageEntry.TYPE_RESPONSE, timestamp + rr.getResponseTime(), remoteHostAndPort,
                 localHostAndPort, unchunkedResponseBody, responseHeader);
-      try
-      {
-        if ((messageEntryRequest != null) &&
-            (messageEntryResponse != null) &&
-            ((messageEntryRequest.isMimeContent()) ||
-			 (isMessageWithBrackets(messageEntryRequest.getMessage()))))
-        {
-                log.addLogEntry(messageEntryRequest);
-               log.addLogEntry(messageEntryResponse);
+ 
+            if (messageEntryResponse != null)
+            {
+              log.addLogEntry(messageEntryResponse);
+            }
+          }
         }
-      }
-      catch (Exception e)
-      {
-        // ignore the request response pair
+        catch (Exception e)
+        {
+          // ignore the request response pair
+        }
       }
     }
   }
@@ -254,7 +270,14 @@
     	if (mimeParts == null)
     	{
     	  // problem creating Mimeparts -- treat it as simple SOAP message
-    	  messageEntry.setMessage(new String(messageContent));
+    	  if (messageContent != null)
+    	  {
+    	    messageEntry.setMessage(new String(messageContent));
+    	  }
+    	  else
+    	  {
+    	    messageEntry.setMessage("");
+    	  }
     	  messageEntry.setMimeContent(false);
     	}
     	else
@@ -266,7 +289,14 @@
     else
     {
       // Get the message content
-      messageEntry.setMessage(new String(messageContent));
+      if (messageContent != null)
+      {
+        messageEntry.setMessage(new String(messageContent));
+      }
+      else
+      {
+        messageEntry.setMessage("");
+      }
       messageEntry.setMimeContent(false);
     }
     return messageEntry;
@@ -302,30 +332,6 @@
   }
 
   /**
-   * Check for HTTP messages that should not be logged.
-   * @param rr: a request-response pair.
-   * @return true if the request-response pair should be omitted from the log.
-   */
-  private boolean omitRequestResponse(RequestHandler rr) 
-  {
-    boolean omit = false;
-    if (rr != null)
-    {
-      String request = rr.getRequestHeader().toString();
-      if ((request != null) &&
-          ((request.startsWith("CONNECT")) ||
-           (request.startsWith("TRACE")) || 
-           (request.startsWith("DELETE")) || 
-           (request.startsWith("OPTIONS")) || 
-           (request.startsWith("HEAD"))))
-      { 
-        omit = true;
-      }
-    }
-    return omit;
-  }
-
-  /**
    * Write log out to file.
    * @param log: log to be written to file.
    */
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/log/impl/LogReaderImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/log/impl/LogReaderImpl.java
index f92971d..67aa763 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/log/impl/LogReaderImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/log/impl/LogReaderImpl.java
@@ -27,6 +27,7 @@
 import org.eclipse.wst.wsi.internal.core.monitor.config.Comment;
 import org.eclipse.wst.wsi.internal.core.monitor.config.impl.CommentImpl;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
+import org.eclipse.wst.wsi.internal.core.profile.validator.MessageValidator;
 import org.eclipse.wst.wsi.internal.core.report.ArtifactReference;
 import org.eclipse.wst.wsi.internal.core.report.Entry;
 import org.eclipse.wst.wsi.internal.core.report.impl.ArtifactReferenceImpl;
@@ -558,8 +559,7 @@
 
           // Add log entry to the list
           messageEntryList.add(messageEntryRequest);
-
-          // Request is now processed only when the response is received.             
+          // Request is now processed only when the response is received.
         }
 
         else if (MessageEntry.TYPE_RESPONSE.equalsIgnoreCase(type))
@@ -578,9 +578,6 @@
                 mimeParts,
                 entryElementLocation);
 
-          // Add log entry to the list
-          messageEntryList.add(messageEntryResponse);
-
           if (logEntryHandler != null)
           {
             // look up the request message
@@ -589,41 +586,48 @@
 
             if (messageEntryRequest != null)
             {
-              // Create entry 
-              // ADD: Need to create entry from report
-              //Entry entry = this.reporter.getReport().createEntry();
-              Entry entry = new EntryImpl();
-              entry.setEntryType(
-                  EntryType.getEntryType(EntryType.TYPE_MESSAGE_REQUEST));
-              entry.setReferenceID(messageEntryRequest.getId());
-              entry.setEntryDetail(messageEntryRequest);
-
-              // Create the context for the request-response pair
-              EntryContext requestTargetContext =
-                new EntryContext(
-                    entry,
-                    messageEntryRequest,
-                    messageEntryResponse);
-              if (requestTargetContext != null)
-                processLogEntry(requestTargetContext);
+              if (!isMessageEncrypted(messageEntryRequest.getMessage()) &&
+                  !isMessageEncrypted(messageEntryResponse.getMessage()))
+              {
+	        if (!omitRequest(messageEntryRequest))
+	        {
+	          // Create entry 
+	          // ADD: Need to create entry from report
+	          //Entry entry = this.reporter.getReport().createEntry();
+	          Entry entry = new EntryImpl();
+	          entry.setEntryType(
+	                EntryType.getEntryType(MessageValidator.TYPE_MESSAGE_REQUEST));
+	          entry.setReferenceID(messageEntryRequest.getId());
+	          entry.setEntryDetail(messageEntryRequest);
+	
+	          // Create the context for the request-response pair
+	          EntryContext requestTargetContext =
+	               new EntryContext(
+	                    entry,
+	                    messageEntryRequest,
+	                    messageEntryResponse);
+	          if (requestTargetContext != null)
+	            processLogEntry(requestTargetContext);
+	
+	          // Create entry 
+	          // ADD: Need to create entry from report
+	          //Entry entry = this.reporter.getReport().createEntry();
+	          entry = new EntryImpl();
+	          entry.setEntryType(
+	            EntryType.getEntryType(MessageValidator.TYPE_MESSAGE_RESPONSE));
+	          entry.setReferenceID(messageEntryResponse.getId());
+	          entry.setEntryDetail(messageEntryResponse);
+	
+	          EntryContext responseTargetContext =
+	                new EntryContext(
+	                  entry,
+	                  messageEntryRequest,
+	                  messageEntryResponse);
+	          if (responseTargetContext != null)
+	            processLogEntry(responseTargetContext);
+	        }
+	      }
             }
-
-            // Create entry 
-            // ADD: Need to create entry from report
-            //Entry entry = this.reporter.getReport().createEntry();
-            Entry entry = new EntryImpl();
-            entry.setEntryType(
-                EntryType.getEntryType(EntryType.TYPE_MESSAGE_RESPONSE));
-            entry.setReferenceID(messageEntryResponse.getId());
-            entry.setEntryDetail(messageEntryResponse);
-
-            EntryContext responseTargetContext =
-              new EntryContext(
-                  entry,
-                  messageEntryRequest,
-                  messageEntryResponse);
-            if (responseTargetContext != null)
-              processLogEntry(responseTargetContext);
           }
         }
       }
@@ -641,6 +645,23 @@
       //once message validation is done.
       //if (msgValidator!=null)
       //logEntryList.clear();
+        
+        /* Process all remaining requests in the messageEntryList */
+        for (int i = 0; i < messageEntryList.size(); i++) {
+            MessageEntry logEntry = (MessageEntry) messageEntryList.get(i);
+            if (!omitRequest(logEntry))
+            {
+              Entry entry = new EntryImpl();
+              entry.setEntryType(EntryType.getEntryType(
+                    MessageValidator.TYPE_MESSAGE_REQUEST));
+              entry.setReferenceID(logEntry.getId());
+              entry.setEntryDetail(logEntry);
+              EntryContext requestTargetContext =
+                new EntryContext(entry, logEntry, null);
+              if (requestTargetContext != null)
+                processLogEntry(requestTargetContext);
+            }
+        }
     }
 
     /**
@@ -697,26 +718,30 @@
     // could be made more efficient by keeping a much smaller list of unresponded requests...
     public MessageEntry findRelatedRequest(MessageEntry logEntryResponse)
     {
-      for (int entry = messageEntryList.size() - 1; entry >= 0; entry--)
+      if (logEntryResponse != null)
       {
-        // Get the log entry of the matching request
-        MessageEntry logEntry = (MessageEntry) messageEntryList.get(entry);
-        // Ignore own entry
-        if (!logEntryResponse.equals(logEntry))
+        for (int entry = messageEntryList.size() - 1; entry >= 0; entry--)
         {
-          if (logEntryResponse
-            .getConversationId()
-            .equals(logEntry.getConversationId()))
+          // Get the log entry of the matching request
+          MessageEntry logEntry = (MessageEntry) messageEntryList.get(entry);
+          // Ignore own entry
+          if (!logEntryResponse.equals(logEntry))
           {
-            // found the most recently read message with the same conversationID.
-            // From above, this should be the corresponding request. Check as far as possible.
-            if (logEntry.getType().equals(MessageEntry.TYPE_REQUEST))
+            if (logEntryResponse
+              .getConversationId()
+              .equals(logEntry.getConversationId()))
             {
-              return logEntry;
-            }
-            else
-            {
-              return null; // expected a request. need to throw an exception!
+              // found the most recently read message with the same conversationID.
+              // From above, this should be the corresponding request. Check as far as possible.
+              if (logEntry.getType().equals(MessageEntry.TYPE_REQUEST))
+              {
+                messageEntryList.remove(entry);
+                return logEntry;
+              }
+              else
+              {
+                return null; // expected a request. need to throw an exception!
+              }
             }
           }
         }
@@ -781,4 +806,52 @@
     }
 
   } //End ContentHandler
+  
+  /**
+   * Check for HTTP messages that should not be logged.
+   * @param rr: a request-response pair.
+   * @return true if the request-response pair should be omitted from the log.
+   */
+  private boolean omitRequest(MessageEntry messageEntryRequest)
+  {
+    boolean omit = false;
+    if (messageEntryRequest == null)
+       omit = true;
+    else
+    {
+      String requestHeaders = messageEntryRequest.getHTTPHeaders();
+      if ((requestHeaders != null) &&
+          ((requestHeaders.startsWith("CONNECT")) ||
+           (requestHeaders.startsWith("TRACE")) || 
+           (requestHeaders.startsWith("DELETE")) || 
+           (requestHeaders.startsWith("OPTIONS")) || 
+           (requestHeaders.startsWith("HEAD")) ||
+           ((requestHeaders.startsWith("GET")) &&
+        	(!isMessageWithBrackets(messageEntryRequest.getMessage())))))
+      { 
+        omit = true;
+      }
+    }
+    return omit;
+  }
+
+  /**
+   * Returns true if the content of the message has at least
+   * one left and one right bracket.
+   * @param message: a message content.
+   * @return true if the content of the message has at least
+   *         one left and one right bracket.
+   */
+  public boolean isMessageWithBrackets(String message)
+  {
+    return ((message != null) && 
+            (message.indexOf("<")!= -1) && 
+            (message.indexOf(">") != -1));
+  }
+  
+  private boolean isMessageEncrypted(String message)
+  {
+    return ((message != null) && 
+	    (message.indexOf("<EncryptedKey ") != -1));
+  }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/TestAssertion.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/TestAssertion.java
index ef53475..20ea4b6 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/TestAssertion.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/TestAssertion.java
@@ -21,7 +21,8 @@
 public interface TestAssertion
 {
   public static final String TYPE_INFORMATIONAL = "informational";
-  
+  public static final String TYPE_RECOMMENDED = "recommended";
+  public static final String TYPE_REQUIRED = "required";
   /**
    * Get test assertion id.
    * @return test assertion id.
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/impl/ProfileAssertionsReaderImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/impl/ProfileAssertionsReaderImpl.java
index db95949..cfe0dba 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/impl/ProfileAssertionsReaderImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/impl/ProfileAssertionsReaderImpl.java
@@ -275,7 +275,7 @@
 
           // Set type
           artifact.setType(
-            ArtifactType.newArtifactType(
+            ArtifactType.getArtifactType(
               atts.getValue(WSIConstants.ATTR_TYPE)));
 
           // ADD: Get specification list
@@ -297,8 +297,8 @@
           testAssertion.setEntryTypeName(
             atts.getValue("", WSIConstants.ATTR_ENTRY_TYPE));
           
-          // if assertion already checked then disable it
-          if (alreadyChecked(id))
+          // if assertion is not required or it has already been checked by core validator then disable it
+          if (alreadyChecked(id) || !(testAssertion.getType().equals(TestAssertion.TYPE_REQUIRED)))
         	  testAssertion.setEnabled(false);
           else
         	  testAssertion.setEnabled(Boolean.valueOf(atts.getValue("", WSIConstants.ATTR_ENABLED)).booleanValue());
@@ -575,7 +575,9 @@
 		         id.equals("BP2114") ||
 		         id.equals("BP2123") ||
 		         id.equals("SSBP2209") ||
-		         id.equals("AP2209"));
+		         id.equals("AP2209") ||
+		         id.equals("BP2700")	         
+		         );
 	 }
 	 return result;
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/BaseValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/BaseValidator.java
index 7289ed0..52e702a 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/BaseValidator.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/BaseValidator.java
@@ -11,6 +11,11 @@
 package org.eclipse.wst.wsi.internal.core.profile.validator;
 
 import org.eclipse.wst.wsi.internal.core.WSIException;
+import org.eclipse.wst.wsi.internal.core.analyzer.AnalyzerContext;
+import org.eclipse.wst.wsi.internal.core.analyzer.config.AnalyzerConfig;
+import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertions;
+import org.eclipse.wst.wsi.internal.core.report.ReportArtifact;
+import org.eclipse.wst.wsi.internal.core.report.Reporter;
 import org.w3c.dom.Document;
 
 /**
@@ -47,4 +52,47 @@
     String baseURI,
     String schema)
     throws WSIException;
+
+  /**
+   * Initiailize validation test procedure.
+   * @param analyzerContext the analyzerContext.
+   * @param assertions      the assertions
+   * @param reportArtifact  the report artifact.
+   * @param analyzerConfig  the analyzerConfig
+   * @param reporter        the reporter which is used to add errors to the
+   *                        conformance report
+   * @throws WSIException   if message validator could not be initialized.
+   */
+  public void init(
+    AnalyzerContext analyzerContext,
+    ProfileAssertions assertions,
+    ReportArtifact reportArtifact,
+    AnalyzerConfig analyzerConfig,
+    Reporter reporter)
+    throws WSIException;
+
+  /**
+   * Determines if this validator should be run (depending on the analyzer
+   * config)
+   * @return boolean  true if validator should be run, false if not
+   */
+  public boolean runTests();
+
+  /**
+   * Run the validator
+   * @throws WSIException if an unexpected error occurs during validation
+   */
+  public void validateArtifact() throws WSIException;
+  
+  /**
+   * Get the artifact type that this validator applies to.
+   * @return the artifact type (a String)
+   */
+  public String getArtifactType();
+
+  /**
+   * Get the collection of entry types that this validator applies to.
+   * @return an array of entry types (Strings)
+   */
+  public String[] getEntryTypes();
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/EntryContext.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/EntryContext.java
index 08bb99a..4dbd893 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/EntryContext.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/EntryContext.java
@@ -87,16 +87,18 @@
           requestDocument = XMLUtils.parseXML(request.getMessage());
       }
 
-      if(response.isMimeContent()) 
-      {
-      	MimePart part = response.getMimeParts().getRootPart();
-      	if ((part != null) && (part.getContent().length() > 0))
-          responseDocument = XMLUtils.parseXML(part.getContent());
-      }
-      else 
-      {
-        if (response.getMessage().length() > 0)
-          responseDocument = XMLUtils.parseXML(response.getMessage());
+      if (response != null) {
+          if(response.isMimeContent()) 
+          {
+          	MimePart part = response.getMimeParts().getRootPart();
+          	if ((part != null) && (part.getContent().length() > 0))
+              responseDocument = XMLUtils.parseXML(part.getContent());
+          }
+          else 
+          {
+            if (response.getMessage().length() > 0)
+              responseDocument = XMLUtils.parseXML(response.getMessage());
+          }
       }
     }
 
@@ -105,7 +107,7 @@
     }
 
     // need some exception handling in here and more careful checking
-    if (entry.getEntryType().equals(EntryType.ENTRY_TYPE_REQUEST))
+    if (entry.getEntryType().equals(EntryType.getEntryType(MessageValidator.TYPE_MESSAGE_REQUEST)))
     {
       this.messageEntry = request;
       this.messageEntryDocument = requestDocument;
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/EnvelopeValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/EnvelopeValidator.java
index 4b1f3c9..c0dcc99 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/EnvelopeValidator.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/EnvelopeValidator.java
@@ -22,7 +22,7 @@
  *
  * @version 1.0
  */
-public interface EnvelopeValidator extends BaseValidator
+public interface EnvelopeValidator extends LogValidator
 {
 
   /**
@@ -33,6 +33,11 @@
    * @param wsdlDocument the Web service definition
    * @param reporter the reporter which is used to add errors to the conformance report
    * @throws WSIException if message validator could not be initialized.
+   * @deprecated -- use init(AnalyzerContext analyzerContext,
+   *                         ProfileAssertions assertions,
+   *                         ReportArtifact reportArtifact,
+   *                         AnalyzerConfig analyzerConfig,
+   *                         Reporter reporter)
    */
   public void init(
     AnalyzerContext analyzerContext,
@@ -41,12 +46,16 @@
     WSDLDocument wsdlDocument,
     Reporter reporter)
     throws WSIException;
+  
+  /** Envelope artifact type */
+  public static final String TYPE_ENVELOPE = "envelope";
 
-  /**
-   * Validate the envelope located by the log entry. 
-   * @param entryContext a log entry locating an envelope.
-   * @throws WSIException if an unexpected error occurred while
-   *         processing the log entry.
-   */
-  public void validate(EntryContext entryContext) throws WSIException;
+  /** Request envelope entry type. */
+  public static final String TYPE_ENVELOPE_REQUEST = "requestEnvelope";
+
+  /** Response envelope entry type. */
+  public static final String TYPE_ENVELOPE_RESPONSE = "responseEnvelope";
+
+  /** Any envelope entry type. */
+  public static final String TYPE_ENVELOPE_ANY = "anyEnvelope";
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/LogValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/LogValidator.java
new file mode 100644
index 0000000..454ddb9
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/LogValidator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2002-2005 IBM 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:
+ *   IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsi.internal.core.profile.validator;
+
+import org.eclipse.wst.wsi.internal.core.WSIException;
+
+/**
+ * Interface definition for validation test procedures common to envelopes and
+ * messages.
+ */
+public interface LogValidator extends BaseValidator {
+    /**
+     * Validate the envelope located by the log entry. 
+     * @param entryContext a log entry locating an envelope.
+     * @throws WSIException if an unexpected error occurred while
+     *         processing the log entry.
+     */
+    public void validate(EntryContext entryContext) throws WSIException;
+}
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/MessageValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/MessageValidator.java
index 13618a3..5a53f4b 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/MessageValidator.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/MessageValidator.java
@@ -24,7 +24,7 @@
  * @author Peter Brittenham
  * @author Graham Turrell (gturrell@uk.ibm.com)
  */
-public interface MessageValidator extends BaseValidator
+public interface MessageValidator extends LogValidator
 {
   /**
    * HTTP 1.0 version indicator.
@@ -41,6 +41,24 @@
    */
   public static final String HTTP_POST = "POST";
 
+  /** Message artifact type */
+  public static final String TYPE_MESSAGE = "message";
+
+  /** Request message entry type. */
+  public static final String TYPE_MESSAGE_REQUEST = "requestMessage";
+
+  /** Response message entry type. */
+  public static final String TYPE_MESSAGE_RESPONSE = "responseMessage";
+
+  /** Any message entry type. */
+  public static final String TYPE_MESSAGE_ANY = "anyMessage";
+
+  /** Mime part message entry type. */
+  public static final String TYPE_MIME_PART = "part";
+
+  /** Mime root part message entry type. */
+  public static final String TYPE_MIME_ROOT_PART = "root-part";
+
   /**
    * Initiailize validation test procedure.
    * @param analyzerContext the analyzerContext.
@@ -49,6 +67,11 @@
    * @param wsdlDocument the Web service definition
    * @param reporter the reporter which is used to add errors to the conformance report
    * @throws WSIException if message validator could not be initialized.
+   * @deprecated -- use init(AnalyzerContext analyzerContext,
+   *                         ProfileAssertions assertions,
+   *                         ReportArtifact reportArtifact,
+   *                         AnalyzerConfig analyzerConfig,
+   *                         Reporter reporter)
    */
   public void init(
     AnalyzerContext analyzerContext,
@@ -57,12 +80,4 @@
     WSDLDocument wsdlDocument,
     Reporter reporter)
     throws WSIException;
-
-  /**
-   * Validate the message located by the log entry. 
-   * @param entryContext a log entry locating a message.
-   * @throws WSIException if an unexpected error occurred while 
-   *         processing the log entry.
-   */
-  public void validate(EntryContext entryContext) throws WSIException;
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/ProfileValidatorFactory.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/ProfileValidatorFactory.java
index 3a19394..a16f1d3 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/ProfileValidatorFactory.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/ProfileValidatorFactory.java
@@ -21,10 +21,20 @@
  */
 public abstract class ProfileValidatorFactory
 {
+  /**
+   * Create a new instance of a validator depending on the given artifact name
+   * @param artifactName - String containing the artifact name from the TAD
+   * @return an object that implements the BaseValidator interface.
+   * @throws WSIException if the validator cannot be instantiated
+   */
+  public abstract BaseValidator getValidatorForArtifact(String artifactName)
+          throws WSIException;
+
   /** 
    * Create a new instance of a UDDI validator.
    * @return  an object that implements the WSDLValidator interface.
-   * @throws WSIException if UDDI validator cannot be instantiated. 
+   * @throws WSIException if UDDI validator cannot be instantiated.
+   * @deprecated -- use getValidatorForArtifact(String artifactName).
    */
   public abstract UDDIValidator newUDDIValidator() throws WSIException;
 
@@ -32,6 +42,7 @@
    * Create a new instance of a WSDL validator.
    * @return an object that implements the WSDLValidator interface. 
    * @throws WSIException if WSDL validator cannot be instantiated.
+   * @deprecated -- use getValidatorForArtifact(String artifactName).
    */
   public abstract WSDLValidator newWSDLValidator() throws WSIException;
 
@@ -41,7 +52,8 @@
    * message validator?
    *
    * @return an object that implements the MessageValidator interface.
-   * @throws WSIException if message validatorcannot be instantiated. 
+   * @throws WSIException if message validatorcannot be instantiated.
+   * @deprecated -- use getValidatorForArtifact(String artifactName).
    */
   public abstract MessageValidator newMessageValidator() throws WSIException;
 
@@ -49,6 +61,7 @@
    * Create a new instance of an envelope validator.
    * @return an object that implements the EnvelopeValidator interface.
    * @throws WSIException if message validator cannot be instantiated. 
+   * @deprecated -- use getValidatorForArtifact(String artifactName).
    */
   public abstract EnvelopeValidator newEnvelopeValidator() throws WSIException;
 
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/UDDIValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/UDDIValidator.java
index af18363..fc129bf 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/UDDIValidator.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/UDDIValidator.java
@@ -26,6 +26,15 @@
  */
 public interface UDDIValidator extends BaseValidator
 {
+  /** Discovery artifact type */
+  public static final String TYPE_DISCOVERY = "discovery";
+
+  /** Binding template discovery entry type. */
+  public static final String TYPE_DISCOVERY_BINDINGTEMPLATE = "bindingTemplate";
+
+  /** tModel discovery entry type. */
+  public static final String TYPE_DISCOVERY_TMODEL = "tModel";
+
   /**
    * Initiailize validation test procedure.
    * @param analyzerContext the analyzerContext.
@@ -34,6 +43,12 @@
    * @param uddiReference   a UDDI reference.
    * @param reporter        a Reporter object.
    * @throws WSIException if UDDI validator could not be initialized.
+   * @deprecated -- use init(AnalyzerContext analyzerContext,
+   *                         ProfileAssertions assertions,
+   *                         ReportArtifact reportArtifact,
+   *                         AnalyzerConfig analyzerConfig,
+   *                         Reporter reporter)
+
    */
   public void init(
     AnalyzerContext analyzerContext,
@@ -49,6 +64,7 @@
    *         is the URL for the WSDL document.
    * @throws WSIException WSIException if an unexpected error occurred
    *         while processing the UDDIentries.
+   * @deprecated -- use validateArtifact()
    */
   public String validate() throws WSIException;
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/WSDLValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/WSDLValidator.java
index e42bd2c..f5d8864 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/WSDLValidator.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/WSDLValidator.java
@@ -26,6 +26,33 @@
  */
 public interface WSDLValidator extends BaseValidator
 {
+  /** Description artifact type */
+  public static final String TYPE_DESCRIPTION = "description";
+	 
+  /** Definitions description entry type. */
+  public static final String TYPE_DESCRIPTION_DEFINITIONS = "definitions";
+
+  /** Import description entry type. */
+  public static final String TYPE_DESCRIPTION_IMPORT = "import";
+
+  /** Types description entry type. */
+  public static final String TYPE_DESCRIPTION_TYPES = "types";
+
+  /** Message description entry type. */
+  public static final String TYPE_DESCRIPTION_MESSAGE = "message";
+
+  /** Operation description entry type. */
+  public static final String TYPE_DESCRIPTION_OPERATION = "operation";
+
+  /** PortType description entry type. */
+  public static final String TYPE_DESCRIPTION_PORTTYPE = "portType";
+
+  /** Binding description entry type. */
+  public static final String TYPE_DESCRIPTION_BINDING = "binding";
+
+  /** Port description entry type. */
+  public static final String TYPE_DESCRIPTION_PORT = "port";
+
   /**
    * Initiailize validation test procedure.
    * @param analyzerContext the analyzerContext.
@@ -35,6 +62,11 @@
    * @param wsdlDocument    the WSDL document.
    * @param reporter        a Reporter object.
    * @throws WSIException if WSDL validator could not be initialized.
+   * @deprecated -- use init(AnalyzerContext analyzerContext,
+   *                         ProfileAssertions assertions,
+   *                         ReportArtifact reportArtifact,
+   *                         AnalyzerConfig analyzerConfig,
+   *                         Reporter reporter)
    */
   public void init(
     AnalyzerContext analyzerContext,
@@ -50,6 +82,7 @@
    * @return the WSDL document.
    * @throws WSIException if an unexpected error occurred
    *         while validating he WSDL based service description.
+   * @deprecated  -- use validateArtifact()
    */
   public WSDLDocument validate() throws WSIException;
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/BaseMessageValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/BaseMessageValidator.java
index 7672745..42c058b 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/BaseMessageValidator.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/BaseMessageValidator.java
@@ -17,7 +17,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 import java.util.Vector;
 
 import javax.wsdl.Binding;
@@ -47,17 +47,25 @@
 import org.eclipse.wst.wsi.internal.core.analyzer.CandidateInfo;
 import org.eclipse.wst.wsi.internal.core.analyzer.ServiceReference;
 import org.eclipse.wst.wsi.internal.core.analyzer.config.AnalyzerConfig;
+import org.eclipse.wst.wsi.internal.core.document.DocumentFactory;
 import org.eclipse.wst.wsi.internal.core.log.Log;
+import org.eclipse.wst.wsi.internal.core.log.LogReader;
 import org.eclipse.wst.wsi.internal.core.log.MessageEntry;
+import org.eclipse.wst.wsi.internal.core.log.MessageEntryHandler;
 import org.eclipse.wst.wsi.internal.core.profile.ProfileArtifact;
+import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertions;
 import org.eclipse.wst.wsi.internal.core.profile.TestAssertion;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
+import org.eclipse.wst.wsi.internal.core.profile.validator.LogValidator;
+import org.eclipse.wst.wsi.internal.core.profile.validator.MessageValidator;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.wsdl.WSDLValidatorImpl;
+import org.eclipse.wst.wsi.internal.core.report.ArtifactReference;
 import org.eclipse.wst.wsi.internal.core.report.FailureDetail;
 import org.eclipse.wst.wsi.internal.core.report.ReportArtifact;
 import org.eclipse.wst.wsi.internal.core.report.Reporter;
 import org.eclipse.wst.wsi.internal.core.util.EntryType;
 import org.eclipse.wst.wsi.internal.core.util.HTTPUtils;
+import org.eclipse.wst.wsi.internal.core.util.Utils;
 import org.eclipse.wst.wsi.internal.core.wsdl.WSDLDocument;
 import org.eclipse.wst.wsi.internal.core.wsdl.WSDLUtils;
 import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
@@ -85,6 +93,7 @@
  */
 public abstract class BaseMessageValidator
   extends BaseValidatorImpl
+  implements LogValidator
 {
   /**
   * WSDL document.
@@ -96,6 +105,24 @@
    */
   protected MessageEntry logEntry;
   protected Log log;
+  
+  private boolean testable;
+  private AnalyzerConfig analyzerConfig;
+
+  public void init(AnalyzerContext analyzerContext,
+          ProfileAssertions assertions,
+          ReportArtifact reportArtifact,
+          AnalyzerConfig analyzerConfig,
+          Reporter reporter)
+          throws WSIException {
+
+      super.init(analyzerContext, assertions.getArtifact(getArtifactType()),
+              reportArtifact, reporter);
+
+      testable = analyzerConfig.getLogLocation() != null;
+      this.analyzerConfig = analyzerConfig;
+      this.wsdlDocument = (WSDLDocument) analyzerContext.getWsdlDocument();
+  }
 
   /* (non-Javadoc)
    * @see org.wsi.test.profile.validator.MessageValidator#init(org.eclipse.wst.wsi.internal.core.analyzer.AnalyzerContext, org.wsi.test.profile.ProfileArtifact, org.wsi.test.report.ReportArtifact, org.wsi.wsdl.WSDLDocument, org.wsi.test.report.Reporter)
@@ -111,6 +138,9 @@
     // BaseValidatorImpl
     super.init(analyzerContext, profileArtifact, reportArtifact, reporter);
 
+    this.analyzerConfig = Utils.getAnalyzerConfig(reporter);
+    testable = ((analyzerConfig != null) && (analyzerConfig.getLogLocation() != null));	
+
     // Save input references
     this.wsdlDocument = wsdlDocument;
   }
@@ -140,7 +170,7 @@
     /* If Service Description (WSDL/UDDI) NOT supplied in analyzer config OR
      * Service Description IS supplied and the current message correlates to it...
      */
-    if ((wsdlDocument == null)
+    if ((!analyzerConfig.isWSDLReferenceSet())
       || messageCorrelatesToService(
         entryContext,
         analyzerConfig.getCorrelationType()))
@@ -990,14 +1020,14 @@
       List extensibles = null;
       BindingOperation bindingOp = op[k];
 
-      if (messageEntryType.isType(EntryType.TYPE_MESSAGE_REQUEST)
+      if (messageEntryType.isType(MessageValidator.TYPE_MESSAGE_REQUEST)
         && (bindingOp.getOperation().getInput() != null))
       {
         name = bindingOp.getOperation().getName();
         extensibles = bindingOp.getBindingInput().getExtensibilityElements();
       }
       else if (
-        messageEntryType.isType(EntryType.TYPE_MESSAGE_RESPONSE)
+        messageEntryType.isType(MessageValidator.TYPE_MESSAGE_RESPONSE)
           && (bindingOp.getOperation().getOutput() != null))
       {
         name = bindingOp.getOperation().getName() + "Response";
@@ -1041,14 +1071,14 @@
       List extensibles = null;
       BindingOperation bindingOp = op[k];
 
-      if (messageEntryType.isType(EntryType.TYPE_MESSAGE_REQUEST)
+      if (messageEntryType.isType(MessageValidator.TYPE_MESSAGE_REQUEST)
         && (bindingOp.getOperation().getInput() != null))
       {
         wsdlMessage = bindingOp.getOperation().getInput().getMessage();
         extensibles = bindingOp.getBindingInput().getExtensibilityElements();
       }
       else if (
-        messageEntryType.isType(EntryType.TYPE_MESSAGE_RESPONSE)
+        messageEntryType.isType(MessageValidator.TYPE_MESSAGE_RESPONSE)
           && (bindingOp.getOperation().getOutput() != null))
       {
         wsdlMessage = bindingOp.getOperation().getOutput().getMessage();
@@ -1242,11 +1272,11 @@
     BindingOperation[] wsdlOperations)
   {
 
-    if (messageType.isType(EntryType.ENTRY_TYPE_REQUEST))
+    if (messageType.isType(EntryType.getEntryType(MessageValidator.TYPE_MESSAGE_REQUEST)))
     {
       return getInputDocLitOperations(partElementQName, wsdlOperations);
     }
-    else if (messageType.isType(EntryType.ENTRY_TYPE_RESPONSE))
+    else if (messageType.isType(EntryType.getEntryType(MessageValidator.TYPE_MESSAGE_RESPONSE)))
     {
       return getOutputDocLitOperations(partElementQName, wsdlOperations);
     }
@@ -1834,4 +1864,47 @@
     }
     return result;
   }
+
+  /**
+   * Returns true if these tests should be run (depending on the analyzer
+   * config)
+   */
+  public boolean runTests() { return testable; }
+  
+  public void validateArtifact() throws WSIException {
+      // Get the log file reader
+      LogReader logReader = DocumentFactory.newInstance().newLogReader();
+
+      // Create log reader callback
+      LogProcessor envelopeProcessor = new LogProcessor(this);
+
+      // Start reading the log file
+      logReader.readLog(analyzerConfig.getLogLocation(), envelopeProcessor);
+  }
+
+  protected class LogProcessor implements MessageEntryHandler {
+      LogValidator validator = null;
+
+    /**
+     * Create message processor as a log reader callback function.
+     */
+      LogProcessor(LogValidator validator) {
+          this.validator = validator;
+      }
+
+    /**
+     * Process artifact reference.
+     */
+    public void processArtifactReference(ArtifactReference artifactReference)
+            throws WSIException {
+        reporter.addArtifactReference(artifactReference);
+    }
+
+    /**
+     * Process a single log entry.
+     */
+    public void processLogEntry(EntryContext entryContext) throws WSIException {
+        validator.validate(entryContext);
+    }
+  }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/ProfileValidatorFactoryImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/ProfileValidatorFactoryImpl.java
index 4add155..85cc6e6 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/ProfileValidatorFactoryImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/ProfileValidatorFactoryImpl.java
@@ -10,7 +10,12 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.profile.validator.impl;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.wst.wsi.internal.WSITestToolsPlugin;
 import org.eclipse.wst.wsi.internal.core.WSIException;
+import org.eclipse.wst.wsi.internal.core.profile.validator.BaseValidator;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EnvelopeValidator;
 import org.eclipse.wst.wsi.internal.core.profile.validator.MessageValidator;
 import org.eclipse.wst.wsi.internal.core.profile.validator.ProfileValidatorFactory;
@@ -29,7 +34,29 @@
  */
 public class ProfileValidatorFactoryImpl extends ProfileValidatorFactory
 {
-  /* (non-Javadoc)
+  private static Map validatorRegistry;
+
+  public static void addToValidatatorRegistry(String artifactName,
+          BaseValidator validatorClass) {
+      if (validatorRegistry == null)
+          validatorRegistry = new HashMap();
+      validatorRegistry.put(artifactName, validatorClass);
+  }
+
+  public BaseValidator getValidatorForArtifact(String artifactName) 
+          throws WSIException {
+      if (validatorRegistry == null) {
+          BaseValidator validators[] = WSITestToolsPlugin.getPlugin().
+                  getBaseValidators();
+          for (int i = 0; i < validators.length; i++)
+              addToValidatatorRegistry(validators[i].getArtifactType(),
+              validators[i]);
+          
+      }
+      return (BaseValidator) validatorRegistry.get(artifactName);
+  }
+  
+    /* (non-Javadoc)
    * @see org.wsi.test.profile.validator.ProfileValidatorFactory#newUDDIValidator()
    */
   public UDDIValidator newUDDIValidator() throws WSIException
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/AP1920.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/AP1920.java
index a7f2ebd..f411c9c 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/AP1920.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/AP1920.java
@@ -20,6 +20,7 @@
 import org.eclipse.wst.wsi.internal.core.analyzer.AssertionNotApplicableException;
 import org.eclipse.wst.wsi.internal.core.profile.TestAssertion;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
+import org.eclipse.wst.wsi.internal.core.profile.validator.MessageValidator;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.AssertionProcess;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.BaseMessageValidator;
 import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
@@ -70,7 +71,7 @@
         throw new AssertionNotApplicableException();
       
       BindingOperation bindingOperation = validator.getOperationMatch(
-          EntryType.getEntryType(EntryType.TYPE_MESSAGE_REQUEST),
+          EntryType.getEntryType(MessageValidator.TYPE_MESSAGE_REQUEST),
           entryContext.getRequestDocument());
 
       // If there is no matched operation, the assertion is not applicable
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1305.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1305.java
index 1c7976f..ee9b2aa 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1305.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1305.java
@@ -11,7 +11,7 @@
 package org.eclipse.wst.wsi.internal.core.profile.validator.impl.envelope;
 
 import java.net.HttpURLConnection;
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 import java.util.Vector;
 
 import org.eclipse.wst.wsi.internal.core.WSIConstants;
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1600.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1600.java
index e28c5b8..2014c1a 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1600.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/BP1600.java
@@ -116,6 +116,7 @@
 
       // Getting the first sub element of the envelope
       element = XMLUtils.getFirstChild(element);
+      Collection headerNamespaces = collectNamespaces(element.getAttributes());
 
       // If the child is soap:Header
       if (element != null
@@ -133,6 +134,7 @@
 
           // If the entry is not in the namespaces, the assertion failed
           if (!envelopeNamespaces.contains(headerEntry.getNamespaceURI())
+            && !headerNamespaces.contains(headerEntry.getNamespaceURI())
             && !headerEntryNamespaces.contains(headerEntry.getNamespaceURI()))
             throw new AssertionFailException("The header entry "
               + headerEntry.getNodeName() + " is not namespace-qualified");
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/EnvelopeValidatorImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/EnvelopeValidatorImpl.java
index be2014c..757bd09 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/EnvelopeValidatorImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/envelope/EnvelopeValidatorImpl.java
@@ -14,8 +14,8 @@
 import org.eclipse.wst.wsi.internal.core.profile.TestAssertion;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EnvelopeValidator;
+import org.eclipse.wst.wsi.internal.core.profile.validator.MessageValidator;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.BaseMessageValidator;
-import org.eclipse.wst.wsi.internal.core.util.EntryType;
 
 /**
  * @version 1.0
@@ -24,6 +24,26 @@
   extends BaseMessageValidator
   implements EnvelopeValidator
 {
+  /**
+   * Get the artifact type that this validator applies to.
+   * @return the artifact type (a String)
+   */
+  public String getArtifactType() {
+      return TYPE_ENVELOPE;
+  }
+
+  /**
+   * Get the collection of entry types that this validator applies to.
+   * @return an array of entry types (Strings)
+   */
+  public String[] getEntryTypes() {
+      return new String[] {
+              TYPE_ENVELOPE_REQUEST,
+              TYPE_ENVELOPE_RESPONSE,
+              TYPE_ENVELOPE_ANY
+      };
+  }
+
   /* (non-Javadoc)
    * @see org.wsi.test.profile.validator.impl.BaseValidatorImpl#isPrimaryEntryTypeMatch(org.wsi.test.profile.TestAssertion, org.wsi.test.profile.validator.EntryContext)
    */
@@ -34,19 +54,19 @@
     boolean match = false;
 
     // Verify that the entry and test assertion have the same primary context
-    if ((testAssertion.getEntryTypeName().equals(EntryType.TYPE_ENVELOPE_ANY))
-      || (testAssertion.getEntryTypeName().equals(EntryType.TYPE_ENVELOPE_REQUEST)
+    if ((testAssertion.getEntryTypeName().equals(TYPE_ENVELOPE_ANY))
+      || (testAssertion.getEntryTypeName().equals(TYPE_ENVELOPE_REQUEST)
         && (entryContext
           .getEntry()
           .getEntryType()
           .getTypeName()
-          .equals(EntryType.TYPE_MESSAGE_REQUEST)))
-      || (testAssertion.getEntryTypeName().equals(EntryType.TYPE_ENVELOPE_RESPONSE)
+          .equals(MessageValidator.TYPE_MESSAGE_REQUEST)))
+      || (testAssertion.getEntryTypeName().equals(TYPE_ENVELOPE_RESPONSE)
         && (entryContext
           .getEntry()
           .getEntryType()
           .getTypeName()
-          .equals(EntryType.TYPE_MESSAGE_RESPONSE))))
+          .equals(MessageValidator.TYPE_MESSAGE_RESPONSE))))
     {
       match = true;
     }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/AP1935.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/AP1935.java
index 4d8fce7..88251f5 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/AP1935.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/AP1935.java
@@ -76,7 +76,7 @@
       	MimePart root = parts.getRootPart();
         while (iparts.hasNext())
         {
-          i = i = 1;
+          i = 1;
           try
           {
         	MimePart part = (MimePart)iparts.next();
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP1002.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP1002.java
index 7564c15..259a46a 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP1002.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP1002.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.profile.validator.impl.message;
 
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 
 import org.eclipse.wst.wsi.internal.core.WSIException;
 import org.eclipse.wst.wsi.internal.core.analyzer.AssertionFailException;
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP1004.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP1004.java
index 8b06ae7..cf7f1f1 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP1004.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP1004.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.profile.validator.impl.message;
 
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 
 import org.eclipse.wst.wsi.internal.core.WSIException;
 import org.eclipse.wst.wsi.internal.core.profile.TestAssertion;
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP4105.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP4105.java
index d14f778..0903d37 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP4105.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/BP4105.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.profile.validator.impl.message;
 
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 
 import org.eclipse.wst.wsi.internal.core.WSIException;
 import org.eclipse.wst.wsi.internal.core.profile.TestAssertion;
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/MessageValidatorImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/MessageValidatorImpl.java
index 015bff2..15af0e6 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/MessageValidatorImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/message/MessageValidatorImpl.java
@@ -14,7 +14,6 @@
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
 import org.eclipse.wst.wsi.internal.core.profile.validator.MessageValidator;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.BaseMessageValidator;
-import org.eclipse.wst.wsi.internal.core.util.EntryType;
 
 /**
  * @version 1.0
@@ -23,6 +22,28 @@
   extends BaseMessageValidator
   implements MessageValidator
 {
+  /**
+   * Get the artifact type that this validator applies to.
+   * @return the artifact type (a String)
+   */
+  public String getArtifactType() {
+      return TYPE_MESSAGE;
+  }
+
+  /**
+   * Get the collection of entry types that this validator applies to.
+   * @return an array of entry types (Strings)
+   */
+  public String[] getEntryTypes() {
+      return new String[] {
+              TYPE_MESSAGE_REQUEST,
+              TYPE_MESSAGE_RESPONSE,
+              TYPE_MESSAGE_ANY,
+              TYPE_MIME_PART,
+              TYPE_MIME_ROOT_PART
+      };
+  }
+
   /* (non-Javadoc)
    * @see org.wsi.test.profile.validator.impl.BaseValidatorImpl#isPrimaryEntryTypeMatch(org.wsi.test.profile.TestAssertion, org.wsi.test.profile.validator.EntryContext)
    */
@@ -33,21 +54,21 @@
     boolean match = false;
 
     // Verify that the entry and test assertion have the same primary context
-    if ((testAssertion.getEntryTypeName().equals(EntryType.TYPE_MESSAGE_ANY))
-      || (testAssertion.getEntryTypeName().equals(EntryType.TYPE_MESSAGE_REQUEST)
+    if ((testAssertion.getEntryTypeName().equals(TYPE_MESSAGE_ANY))
+      || (testAssertion.getEntryTypeName().equals(TYPE_MESSAGE_REQUEST)
         && (entryContext
           .getEntry()
           .getEntryType()
           .getTypeName()
-          .equals(EntryType.TYPE_MESSAGE_REQUEST)))
-      || (testAssertion.getEntryTypeName().equals(EntryType.TYPE_MESSAGE_RESPONSE)
+          .equals(TYPE_MESSAGE_REQUEST)))
+      || (testAssertion.getEntryTypeName().equals(TYPE_MESSAGE_RESPONSE)
         && (entryContext
           .getEntry()
           .getEntryType()
           .getTypeName()
-          .equals(EntryType.TYPE_MESSAGE_RESPONSE)))
-      || testAssertion.getEntryTypeName().equals(EntryType.TYPE_MIME_ROOT_PART)
-      || testAssertion.getEntryTypeName().equals(EntryType.TYPE_MIME_PART))
+          .equals(TYPE_MESSAGE_RESPONSE)))
+      || testAssertion.getEntryTypeName().equals(TYPE_MIME_ROOT_PART)
+      || testAssertion.getEntryTypeName().equals(TYPE_MIME_PART))
     {
       match = true;
     }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/BP3001.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/BP3001.java
index b206cd0..eff03e8 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/BP3001.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/BP3001.java
@@ -21,6 +21,7 @@
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.AssertionProcess;
 import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
+import org.eclipse.wst.wsi.internal.core.util.UDDIUtils;
 import org.eclipse.wst.wsi.internal.core.wsdl.WSDLDocument;
 import org.uddi4j.datatype.OverviewDoc;
 import org.uddi4j.datatype.tmodel.TModel;
@@ -104,7 +105,7 @@
         }
 
         // Get binding
-        binding = validator.getBinding(urlText, wsdlDocument);
+        binding = UDDIUtils.getBinding(urlText, wsdlDocument);
 
         // See if the binding is in the WSDL document
         if (binding == null
@@ -148,12 +149,6 @@
       setFaultMessage(key);
     }
 
-    if (result == AssertionResult.RESULT_PASSED)
-    {
-      // Set the binding that will be used
-      validator.setWSDLBinding(binding);
-    }
-
     // Return assertion result
     return validator.createAssertionResult(testAssertion, result, failureDetailMessage);
   }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/BP3003.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/BP3003.java
index c0e04f0..58e7d48 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/BP3003.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/BP3003.java
@@ -15,6 +15,7 @@
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.AssertionProcess;
 import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
+import org.eclipse.wst.wsi.internal.core.util.UDDIUtils;
 import org.uddi4j.datatype.tmodel.TModel;
 
 
@@ -59,7 +60,7 @@
     }
 
     // If there is a tModel and it is not categorized as "wsdlSpec", then fail
-    else if (!(validator.isWsdlSpec(tModel)))
+    else if (!(UDDIUtils.isWsdlSpec(tModel)))
     {
       result = AssertionResult.RESULT_FAILED;
       failureDetailMessage =
@@ -71,13 +72,6 @@
           + "]";
     }
 
-    // Else get the WSDL document location and set it and the binding element in analyzer context
-    else
-    {
-      // set WSDL location in analyzer context
-      validator.setWSDLLocation(validator.getWSDLLocation(validator.getOverviewURL(tModel)));
-    }
-
     // Return assertion result
     return validator.createAssertionResult(testAssertion, result, failureDetailMessage);
   }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/UDDIValidatorImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/UDDIValidatorImpl.java
index 0ffdce8..f4bc9ea 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/UDDIValidatorImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/UDDIValidatorImpl.java
@@ -24,23 +24,26 @@
 import org.eclipse.wst.wsi.internal.core.WSIException;
 import org.eclipse.wst.wsi.internal.core.analyzer.AnalyzerContext;
 import org.eclipse.wst.wsi.internal.core.analyzer.ServiceReference;
+import org.eclipse.wst.wsi.internal.core.analyzer.config.AnalyzerConfig;
 import org.eclipse.wst.wsi.internal.core.analyzer.config.UDDIReference;
 import org.eclipse.wst.wsi.internal.core.analyzer.config.WSDLElement;
 import org.eclipse.wst.wsi.internal.core.analyzer.config.impl.WSDLElementImpl;
 import org.eclipse.wst.wsi.internal.core.profile.ProfileArtifact;
+import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertions;
 import org.eclipse.wst.wsi.internal.core.profile.TestAssertion;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
 import org.eclipse.wst.wsi.internal.core.profile.validator.UDDIValidator;
+import org.eclipse.wst.wsi.internal.core.profile.validator.WSDLValidator;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.BaseValidatorImpl;
 import org.eclipse.wst.wsi.internal.core.report.Entry;
 import org.eclipse.wst.wsi.internal.core.report.ReportArtifact;
 import org.eclipse.wst.wsi.internal.core.report.Reporter;
 import org.eclipse.wst.wsi.internal.core.util.EntryType;
 import org.eclipse.wst.wsi.internal.core.util.UDDIUtils;
+import org.eclipse.wst.wsi.internal.core.util.Utils;
 import org.eclipse.wst.wsi.internal.core.wsdl.WSDLDocument;
 import org.uddi4j.client.UDDIProxy;
 import org.uddi4j.datatype.binding.BindingTemplate;
-import org.uddi4j.datatype.binding.TModelInstanceInfo;
 import org.uddi4j.datatype.tmodel.TModel;
 import org.uddi4j.response.BindingDetail;
 import org.uddi4j.response.TModelDetail;
@@ -67,6 +70,38 @@
    * UDDI proxy.
    */
   protected UDDIProxy uddiProxy;
+  private boolean testable;
+
+  /**
+   * Get the artifact type that this validator applies to.
+   * @return the artifact type (a String)
+   */
+  public String getArtifactType() {
+      return TYPE_DISCOVERY;
+  }
+
+  /**
+   * Get the collection of entry types that this validator applies to.
+   * @return an array of entry types (Strings)
+   */
+  public String[] getEntryTypes() {
+      return new String[] {
+              TYPE_DISCOVERY_BINDINGTEMPLATE,
+              TYPE_DISCOVERY_TMODEL};
+  }
+  
+  public void init(
+          AnalyzerContext analyzerContext,
+          ProfileAssertions assertions,
+          ReportArtifact reportArtifact,
+          AnalyzerConfig analyzerConfig,
+          Reporter reporter)
+          throws WSIException {
+      super.init(analyzerContext,
+              assertions.getArtifact(TYPE_DISCOVERY), reportArtifact, reporter);
+      this.uddiReference = analyzerConfig.getUDDIReference();
+      testable = analyzerConfig.isUDDIReferenceSet();
+  }
 
   /* (non-Javadoc)
    * @see org.wsi.test.profile.validator.UDDIValidator#init(org.eclipse.wst.wsi.internal.core.analyzer.AnalyzerContext, org.wsi.test.profile.ProfileArtifact, org.wsi.test.report.ReportArtifact, org.wsi.test.analyzer.config.UDDIReference, org.wsi.test.report.Reporter)
@@ -82,16 +117,17 @@
     // BaseValidatorImpl
     super.init(analyzerContext, profileArtifact, reportArtifact, reporter);
 
+    AnalyzerConfig analyzerConfig = Utils.getAnalyzerConfig(reporter);
+    testable = ((analyzerConfig != null) && (analyzerConfig.isUDDIReferenceSet()));	
+
     // Save input references
     this.uddiReference = uddiReference;
   }
-
   /* (non-Javadoc)
    * @see org.wsi.test.profile.validator.UDDIValidator#validate()
    */
-  public String validate() throws WSIException
+  public void validateArtifact() throws WSIException
   {
-    String wsdlURL = null;
     Entry entry = null;
 
     BindingTemplate bindingTemplate = null;
@@ -152,7 +188,8 @@
           }
 
           // Get the wsdlSpec tModel
-          tModel = findTModel(uddiProxy, bindingTemplate);
+          tModel = UDDIUtils.findTModel(uddiProxy, bindingTemplate,
+                  verboseOption);
         }
 
         // Else it has to be a tModel
@@ -174,7 +211,7 @@
       if (bindingTemplate == null)
       {
         setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DISCOVERY_BINDINGTEMPLATE));
+          EntryType.getEntryType(TYPE_DISCOVERY_BINDINGTEMPLATE));
       }
 
       // If there is a bindingTemplate, then process test assertions for it
@@ -183,7 +220,7 @@
         // Create entry
         entry = this.reporter.getReport().createEntry();
         entry.setEntryType(
-          EntryType.getEntryType(EntryType.TYPE_DISCOVERY_BINDINGTEMPLATE));
+          EntryType.getEntryType(TYPE_DISCOVERY_BINDINGTEMPLATE));
         entry.setReferenceID(bindingTemplate.getBindingKey());
         entry.setEntryDetail(bindingTemplate);
 
@@ -196,30 +233,10 @@
       // NOTE: From this point forward, if a bindingTemplate does NOT have a wsdlSpec tModel,
       //       the tModel will be NULL.
 
-      //Parse WSDL document, and get WSDL document url, binding name and namespace
-      try
-      {
-        String overviewURL = getOverviewURL(tModel);
-        wsdlURL = getWSDLLocation(overviewURL);
-        WSDLDocument wsdlDocument = getWSDLDocument(wsdlURL);
-
-        // ADD: The WSDL binding is used in WSI3001 and should be moved to the entryContext
-        getBinding(overviewURL, wsdlDocument);
-      }
-
-      catch (Exception e)
-      {
-        // ADD:
-        if (verboseOption)
-        {
-          System.err.println("    EXCEPTION: " + e.toString());
-        }
-      }
-
       // Create entry
       entry = this.reporter.getReport().createEntry();
       entry.setEntryType(
-        EntryType.getEntryType(EntryType.TYPE_DISCOVERY_TMODEL));
+        EntryType.getEntryType(TYPE_DISCOVERY_TMODEL));
       entry.setReferenceID(
         (tModel == null ? "[tModel]" : tModel.getTModelKey()));
       entry.setEntryDetail(tModel);
@@ -243,14 +260,19 @@
 
     // Cleanup
     cleanup();
-
-    // Get WSDL location
-    wsdlURL = this.analyzerContext.getServiceReference().getWSDLLocation();
-
-    // Return WSDL URL
-    return wsdlURL;
   }
 
+  /* (non-Javadoc)
+   * @see org.wsi.test.profile.validator.UDDIValidator#validate()
+   */
+  /** @deprecated -- use validateArtifact(). */
+  public String validate() throws WSIException
+  {
+    validateArtifact();
+    // Get WSDL location
+    return this.analyzerContext.getServiceReference().getWSDLLocation();
+  }
+  
   /**
    * Set WSDL binding in the service reference portion of the analyzer context.
    */
@@ -273,7 +295,7 @@
       wsdlElement = new WSDLElementImpl();
       wsdlElement.setName(bindingName);
       wsdlElement.setNamespace(namespace);
-      wsdlElement.setType(EntryType.TYPE_DESCRIPTION_BINDING);
+      wsdlElement.setType(WSDLValidator.TYPE_DESCRIPTION_BINDING);
     }
 
     // Set the wsdlElement in the service reference
@@ -297,86 +319,9 @@
     analyzerContext.setServiceReference(serviceReference);
   }
 
-  /**
-   * Find the wsdlSpec tModel associated with a binding.
-   */
-  private TModel findTModel(
-    UDDIProxy uddiProxy,
-    BindingTemplate bindingTemplate)
-    throws WSIException
-  {
-    TModel tModel = null;
-
-    // Get the list of tModel references associated with this bindingTemplate
-    Iterator iterator =
-      bindingTemplate
-        .getTModelInstanceDetails()
-        .getTModelInstanceInfoVector()
-        .iterator();
-
-    // Process each tModel reference
-    Vector tModelKeyList = new Vector();
-    while (iterator.hasNext())
-    {
-      // Get tModelInstanceInfo
-      TModelInstanceInfo tModelInstanceInfo =
-        (TModelInstanceInfo) iterator.next();
-
-      // Add key to list
-      tModelKeyList.add(tModelInstanceInfo.getTModelKey());
-    }
-
-    // Get the tModels associated with the bindingTemplate
-    if (tModelKeyList.size() > 0)
-    {
-      try
-      {
-        // Get the tModel details
-        TModelDetail tModelDetail = uddiProxy.get_tModelDetail(tModelKeyList);
-
-        // Get the list of tModels
-        Iterator tModelIterator = tModelDetail.getTModelVector().iterator();
-
-        //boolean tModelFound = false;
-        TModel nextTModel = null;
-
-        // Go through the list of tModels
-        while ((tModelIterator.hasNext()) && (tModel == null))
-        {
-          // Get next tModel in list
-          nextTModel = (TModel) tModelIterator.next();
-
-          if (verboseOption)
-          {
-            System.err.println(
-              "      TModel referenced from bindingTemplate - "
-                + UDDIUtils.tModelToString(nextTModel));
-          }
-
-          // If this is a wsdlSpec tModel, then this is the tModel we want
-          if (isWsdlSpec(nextTModel))
-            tModel = nextTModel;
-        }
-      }
-
-      catch (Exception e)
-      {
-        // Throw WSIException
-        throw new WSIException("Could not get tModel details.", e);
-      }
-    }
-
-    else
-    {
-      // Throw exception
-      //throw new WSIException("UDDI bindingTemplate did not contain any tModel references.");
-    }
-
-    return tModel;
-  }
-
-  /**
+   /**
    * Determine if this is a wsdlSpec tModel.
+   * @deprecated -- use UDDIUtils.isWsdlSpec(String wsdlLocation).
    */
   protected boolean isWsdlSpec(TModel tModel)
   {
@@ -421,6 +366,7 @@
 
   /**
    * Get an OverviewURL from tModel.
+   * @deprecated -- use UDDIUtils.getOverviewURL(String wsdlLocation).
    */
   protected String getOverviewURL(TModel tModel)
   {
@@ -435,6 +381,7 @@
 
   /**
    * Get WSDL document.
+   * @deprecated -- use UDDIUtils.getWSDLLocation(String wsdlLocation).
    */
   protected String getWSDLLocation(String wsdlLocation)
   {
@@ -447,14 +394,14 @@
     }
     return wsdlLocation;
   }
-
+ 
   /**
    * Get WSDL document.
    */
   protected WSDLDocument getWSDLDocument(String wsdlLocation)
     throws MalformedURLException, WSDLException
   {
-    return new WSDLDocument(getWSDLLocation(wsdlLocation));
+    return new WSDLDocument(UDDIUtils.getWSDLLocation(wsdlLocation));
   }
 
   /**
@@ -587,4 +534,9 @@
     return notApplicable;
   }
 
+  /**
+   * Returns true if these tests should be run (depending on the analyzer
+   * config)
+   */
+  public boolean runTests() { return testable; }
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/WSI3004.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/WSI3004.java
index 065480e..1a173a6 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/WSI3004.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/uddi/WSI3004.java
@@ -102,11 +102,11 @@
     try
     {
       // Read the WSDL document
-      String overviewURL = validator.getOverviewURL(tModel);
+      String overviewURL = UDDIUtils.getOverviewURL(tModel);
       WSDLDocument wsdlDocument = validator.getWSDLDocument(overviewURL);
 
       // Get binding
-      Binding binding = validator.getBinding(overviewURL, wsdlDocument);
+      Binding binding = UDDIUtils.getBinding(overviewURL, wsdlDocument);
       String bindingName = binding.getQName().getLocalPart();
 
       // Get claims
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/AP2908.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/AP2908.java
index 5208c8a..c89f4ba 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/AP2908.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/AP2908.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.profile.validator.impl.wsdl;
 
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -21,7 +20,6 @@
 import org.eclipse.wst.wsi.internal.core.WSIException;
 import org.eclipse.wst.wsi.internal.core.WSITag;
 import org.eclipse.wst.wsi.internal.core.analyzer.AssertionFailException;
-import org.eclipse.wst.wsi.internal.core.analyzer.AssertionNotApplicableException;
 import org.eclipse.wst.wsi.internal.core.profile.TestAssertion;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.AssertionProcess;
@@ -63,7 +61,11 @@
       Binding wsdlBinding = (Binding) entryContext.getEntry().getEntryDetail();
 
       // Since WSDL4J 1.4 ignores any attributes of mime:part, use Xerces 2.6.2 instead
-      Document doc = XMLUtils.parseXMLDocument(validator.wsdlURL);
+      Document doc = entryContext.getWSDLDocument().getDocument();
+      if (doc == null)
+      {
+        doc = validator.parseXMLDocumentURL(validator.wsdlDocument.getLocation(), null);
+      }
 
       // Finding the wsdl:binding element being processed
       Element binding = getBindingElement(
@@ -123,15 +125,7 @@
       // If the binding contains no one mime:multipartRelated element,
       // the assertion is not applicable
       if (!multipartsFound)
-        throw new AssertionNotApplicableException();
-    }
-    catch (IOException ioe)
-    {
-      result = AssertionResult.RESULT_NOT_APPLICABLE;
-    }
-    catch (AssertionNotApplicableException anae)
-    {
-      result = AssertionResult.RESULT_NOT_APPLICABLE;
+        result = AssertionResult.RESULT_NOT_APPLICABLE;
     }
     catch (AssertionFailException afe)
     {
@@ -139,6 +133,11 @@
       failureDetail = validator.createFailureDetail(
         afe.getMessage(), entryContext);
     }
+    catch (Exception ioe)
+    {
+      result = AssertionResult.RESULT_NOT_APPLICABLE;
+    }
+    
     // Return assertion result
     return validator.createAssertionResult(
       testAssertion, result, failureDetail);
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/AP2941.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/AP2941.java
index bb3a7a3..162f0de 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/AP2941.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/AP2941.java
@@ -145,6 +145,8 @@
               }
             }
           }
+          // Going through all the soap:headerfaultS
+          faultNames.addAll(findAllHeaderFaults(bindingOperation));
           // If not true that all the wsdl:faultS are bound,
           // the assertion failed
           if (!faultNames.containsAll(
@@ -311,6 +313,30 @@
     return false;
   }
 
+  private List findAllHeaderFaults(BindingOperation bindingOp)
+  {
+    List headerFaults = new ArrayList();
+    if (bindingOp == null)
+      return headerFaults;
+    List ioElements = bindingOp.getBindingInput().getExtensibilityElements();
+    ioElements.addAll(bindingOp.getBindingOutput().getExtensibilityElements());
+    for (int i = 0; i < ioElements.size(); i++)
+    {
+      ExtensibilityElement extElem = (ExtensibilityElement) ioElements.get(i);
+      if (extElem.getElementType().equals(WSDL_SOAP_HEADER)) {
+        List shfList = ((SOAPHeader) extElem).getSOAPHeaderFaults();
+        for (int j = 0; j < shfList.size(); j++)
+          headerFaults.add(((SOAPHeaderFault) shfList.get(j)).getPart());
+      }
+      else if (!extElem.getElementType().equals(WSDL_SOAP_BODY)) {
+        List elList = getHeaderFaults((
+                  (UnknownExtensibilityElement) extElem).getElement());
+        for (int j = 0; j < elList.size(); j++)
+          headerFaults.add(((Element)elList.get(j)).getAttribute("part"));
+      }
+    }
+    return headerFaults;
+  }
   /**
    * Collects all the element's child elements of the soap:headerfault type.
    * @param element an element that can have soap:headerfault elements.
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2011.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2011.java
index 2d5fd18..f31e054 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2011.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2011.java
@@ -15,6 +15,7 @@
 import java.io.Reader;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
@@ -76,7 +77,7 @@
     EntryContext entryContext)
     throws WSIException
   {
-    result = result = AssertionResult.RESULT_NOT_APPLICABLE;
+    result = AssertionResult.RESULT_NOT_APPLICABLE;
 
     //Definition def = (Definition) entryContext.getEntry().getEntryDetail();
     Types types = (Types) entryContext.getEntry().getEntryDetail();
@@ -103,7 +104,7 @@
         ExtensibilityElement el = (ExtensibilityElement) it.next();
         if (el instanceof UnknownExtensibilityElement)
           searchForSchema(((UnknownExtensibilityElement) el).getElement(),
-              definition.getDocumentBaseURI());
+              definition.getDocumentBaseURI(), new ArrayList());
       }
     }
 
@@ -120,27 +121,30 @@
   /* Search xsd schema or xsd import from node. If node is xsd import it's loading schema.
    * @param n - UnknownExtencibilityElement
   */
-  private void searchForSchema(Node n, String context)
+  private void searchForSchema(Node n, String context, List processedSchemas)
   {
-    while (n != null)
+    if ((n!= null) && (!processedSchemas.contains(n)))
     {
-      // searches for xsd:import element
-      if (Node.ELEMENT_NODE == n.getNodeType())
+      while (n != null)
       {
-        // if xsd:schema element is found -> process schema
-        if (XMLUtils.equals(n, ELEM_XSD_SCHEMA))
-          processSchema(n, context);
-        else
-          // if xsd:import element is found -> load schema and process schema
-          // FIXED: if xsd:import is found and parent element is xsd:schema
-          if (XMLUtils.equals(n, ELEM_XSD_IMPORT)
-            && XMLUtils.equals(n.getParentNode(), ELEM_XSD_SCHEMA))
-            loadSchema(n, context);
+        // searches for xsd:import element
+        if (Node.ELEMENT_NODE == n.getNodeType())
+        {
+          // if xsd:schema element is found -> process schema
+          if (XMLUtils.equals(n, ELEM_XSD_SCHEMA))
+            processSchema(n, context, processedSchemas);
           else
-            // else iterate element recursively
-            searchForSchema(n.getFirstChild(), context);
+            // if xsd:import element is found -> load schema and process schema
+            // FIXED: if xsd:import is found and parent element is xsd:schema
+            if (XMLUtils.equals(n, ELEM_XSD_IMPORT)
+              && XMLUtils.equals(n.getParentNode(), ELEM_XSD_SCHEMA))
+              loadSchema(n, context, processedSchemas);
+            else
+              // else iterate element recursively
+              searchForSchema(n.getFirstChild(), context, processedSchemas);
+        }
+        n = n.getNextSibling();
       }
-      n = n.getNextSibling();
     }
   }
 
@@ -148,7 +152,7 @@
    * It loads xsd schema and then check the version 1.0 and looking for xsd:schema element for next process.
    * @param importNode xsd schema
   */
-  private void loadSchema(Node importNode, String context)
+  private void loadSchema(Node importNode, String context, List processedSchemas)
   {
     Element im = (Element) importNode;
     Attr schemaLocation = XMLUtils.getAttribute(im, ATTR_XSD_SCHEMALOCATION);
@@ -170,7 +174,7 @@
         if (XMLUtils.equals(schema.getDocumentElement(), ELEM_XSD_SCHEMA))
         {
           processSchema(schema.getDocumentElement(),
-            XMLUtils.createURLString(schemaLocation.getValue(), context));
+            XMLUtils.createURLString(schemaLocation.getValue(), context), processedSchemas);
         }
         result = AssertionResult.RESULT_PASSED;
       }
@@ -326,16 +330,20 @@
    * It's loking for xsd import and load it if find.
    * @param schema xsd schema
   */
-  private void processSchema(Node schema, String context)
+  private void processSchema(Node schema, String context, List processedSchemas)
   {
-    Node n = schema.getFirstChild();
-    while (n != null)
-    {
-      if (Node.ELEMENT_NODE == n.getNodeType()
-        && XMLUtils.equals(n, ELEM_XSD_IMPORT))
-        loadSchema(n, context);
+	if ((schema != null) && (!processedSchemas.contains(schema)))
+	{
+	  processedSchemas.add(schema);
+      Node n = schema.getFirstChild();
+      while (n != null)
+      {
+        if (Node.ELEMENT_NODE == n.getNodeType()
+          && XMLUtils.equals(n, ELEM_XSD_IMPORT))
+          loadSchema(n, context, processedSchemas);
 
-      n = n.getNextSibling();
-    }
+        n = n.getNextSibling();
+      }
+	}
   }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2101.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2101.java
index f9a73ef..9d5a77d 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2101.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2101.java
@@ -20,8 +20,6 @@
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.AssertionProcessVisitor;
 import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
 import org.eclipse.wst.wsi.internal.core.util.ErrorList;
-import org.eclipse.wst.wsi.internal.core.util.TestUtils;
-import org.eclipse.wst.wsi.internal.core.util.Utils;
 import org.eclipse.wst.wsi.internal.core.wsdl.traversal.WSDLTraversal;
 import org.eclipse.wst.wsi.internal.core.wsdl.traversal.WSDLTraversalContext;
 
@@ -54,7 +52,8 @@
   public void visit(Import im, Object parent, WSDLTraversalContext ctx)
   {
     importFound = true;
-
+    try
+    {
     // by the way : WSDL4J throws Exception if imported WSDL is not resolved
     // but documentation says that im.getDefinition() will be equal to null
     if (im.getDefinition() == null)
@@ -63,24 +62,15 @@
           + ":"
           + im.getLocationURI()
           + "\nImport element does not reference a WSDL definition.");
-    else
-      try
-      {
-        // try to parse WSDL according to the WSDL schema
-        validator.parseXMLDocumentURL(
-           im.getLocationURI(),
-           ((Definition)parent).getDocumentBaseURI(),
-           TestUtils.getWSDLSchemaLocation());
-      }
-      catch (Throwable t)
-      {
-        errors.add(
-          im.getNamespaceURI()
-            + ":"
-            + im.getLocationURI()
-            + "\n"
-            + Utils.getExceptionDetails(t));
-      }
+    }
+    catch (Exception e)
+    {
+      errors.add(
+        im.getNamespaceURI()
+          + ":"
+          + im.getLocationURI()
+          + "\nImport element does not reference a WSDL definition.");
+    }
   }
 
   public AssertionResult validate(
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2102.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2102.java
index d272b9d..f959b41 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2102.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2102.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.profile.validator.impl.wsdl;
 
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -84,7 +85,7 @@
           if (el instanceof UnknownExtensibilityElement
             && el.getElementType().equals(ELEM_XSD_SCHEMA))
             testNode(((UnknownExtensibilityElement) el).getElement(),
-              definition.getDocumentBaseURI());
+              definition.getDocumentBaseURI(), new ArrayList());
 
           if (result.equals(AssertionResult.RESULT_FAILED))
           {
@@ -118,86 +119,92 @@
    * definition (e.g. WSDL).
   * @param n - Unknown extensibility element
   */
-  private void testNode(Node n, String context)
+  private void testNode(Node n, String context, List processedSchemas)
   {
-    while (n != null)
-    {
-      // searches for xsd:import element
-      if (Node.ELEMENT_NODE == n.getNodeType())
+	if ((n != null) && (!processedSchemas.contains(n)))
+	{
+      if (XMLUtils.equals(n.getParentNode(), ELEM_XSD_SCHEMA))
+         processedSchemas.add(n);    	
+
+      while (n != null)
       {
-        if (XMLUtils.equals(n, ELEM_XSD_IMPORT))
+        // searches for xsd:import element
+        if (Node.ELEMENT_NODE == n.getNodeType())
         {
-          importFound = true;
-
-          Element im = (Element) n;
-          // Getting the schemaLocation and the namespace attributes
-          Attr schemaLocation =
-            XMLUtils.getAttribute(im, ATTR_XSD_SCHEMALOCATION);
-          Attr namespace = XMLUtils.getAttribute(im, ATTR_XSD_NAMESPACE);
-          // If there is only the namespace attribute of import element
-          if (schemaLocation == null && namespace != null)
+          if (XMLUtils.equals(n, ELEM_XSD_IMPORT))
           {
-            // Getting all the inline schemas of the wsdl definition
-            Map schemasMap = validator.wsdlDocument.getSchemas();
-            // If an inline schema imported is defined
-            if (schemasMap.keySet().contains(namespace.getValue()))
+            importFound = true;
+
+            Element im = (Element) n;
+            // Getting the schemaLocation and the namespace attributes
+            Attr schemaLocation =
+              XMLUtils.getAttribute(im, ATTR_XSD_SCHEMALOCATION);
+            Attr namespace = XMLUtils.getAttribute(im, ATTR_XSD_NAMESPACE);
+            // If there is only the namespace attribute of import element
+            if (schemaLocation == null && namespace != null)
             {
+              // Getting all the inline schemas of the wsdl definition
+              Map schemasMap = validator.wsdlDocument.getSchemas();
               // If an inline schema imported is defined
-              // (that means the schema is valid),
-              // continue with the next element
-              n = n.getNextSibling();
-              continue;
-            }
-
-            // no schemaLocation so try the namespace 
-            schemaLocation = namespace;
-          }
-
-          // try to parse imported XSD
-          if (schemaLocation != null && schemaLocation.getValue() != null)
-          {
-            try
-            {
-              // if any error or root element is not XSD schema -> error
-              // !! ATTENTION
-              // root XSD SCHEMA SCHEMA is not valid                            
-              //Document schema = XMLUtils.parseXMLDocumentURL(schemaLocation.getValue(), XSD_SCHEMALOCATION, context);
-              Document schema =
-                validator.parseXMLDocumentURL(schemaLocation.getValue(), context);
-
-              // If the import is valid, then check its contents
-              if (XMLUtils
-                .equals(schema.getDocumentElement(), ELEM_XSD_SCHEMA))
+              if (schemasMap.keySet().contains(namespace.getValue()))
               {
-                // Check content of imported document
-                testNode(schema.getDocumentElement().getFirstChild(),
-                  XMLUtils.createURLString(schemaLocation.getValue(), context));
+                // If an inline schema imported is defined
+                // (that means the schema is valid),
+                // continue with the next element
+                n = n.getNextSibling();
+                continue;
               }
 
-              else
+              // no schemaLocation so try the namespace 
+              schemaLocation = namespace;
+            }
+
+            // try to parse imported XSD
+            if (schemaLocation != null && schemaLocation.getValue() != null)
+            {
+              try
               {
-                throw new Exception();
+                // if any error or root element is not XSD schema -> error
+                // !! ATTENTION
+                // root XSD SCHEMA SCHEMA is not valid                            
+                //Document schema = XMLUtils.parseXMLDocumentURL(schemaLocation.getValue(), XSD_SCHEMALOCATION, context);
+                Document schema =
+                  validator.parseXMLDocumentURL(schemaLocation.getValue(), context);
+
+                // If the import is valid, then check its contents
+                if (XMLUtils
+                  .equals(schema.getDocumentElement(), ELEM_XSD_SCHEMA))
+                {
+                  // Check content of imported document
+                  testNode(schema.getDocumentElement().getFirstChild(),
+                    XMLUtils.createURLString(schemaLocation.getValue(), context), processedSchemas);
+                }
+
+                else
+                {
+                  throw new Exception();
+                }
+              }
+              catch (Throwable t)
+              {
+                result = AssertionResult.RESULT_FAILED;
+                failureDetailMessage = schemaLocation.getValue();
+                break;
               }
             }
-            catch (Throwable t)
+            else
             {
-              result = AssertionResult.RESULT_FAILED;
-              failureDetailMessage = schemaLocation.getValue();
+              //result = AssertionResult.RESULT_FAILED;
+              result = AssertionResult.RESULT_NOT_APPLICABLE;
+              failureDetailMessage =
+                "schemaLocation == null and namespace == null";
               break;
             }
           }
-          else
-          {
-            //result = AssertionResult.RESULT_FAILED;
-            result = AssertionResult.RESULT_NOT_APPLICABLE;
-            failureDetailMessage =
-              "schemaLocation == null and namespace == null";
-            break;
-          }
+          testNode(n.getFirstChild(), context, processedSchemas);
         }
-        testNode(n.getFirstChild(), context);
+        n = n.getNextSibling();
       }
-      n = n.getNextSibling();
     }
   }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2202.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2202.java
index 64c7934..3eed0d1 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2202.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2202.java
@@ -15,6 +15,7 @@
 import java.io.Reader;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
@@ -76,7 +77,7 @@
     EntryContext entryContext)
     throws WSIException
   {
-    result = result = AssertionResult.RESULT_NOT_APPLICABLE;
+    result = AssertionResult.RESULT_NOT_APPLICABLE;
 
     //Definition def = (Definition) entryContext.getEntry().getEntryDetail();
     Types types = (Types) entryContext.getEntry().getEntryDetail();
@@ -102,7 +103,7 @@
         if (el instanceof UnknownExtensibilityElement
           && el.getElementType().equals(ELEM_XSD_SCHEMA))
           searchForSchema(((UnknownExtensibilityElement) el).getElement(),
-              definition.getDocumentBaseURI());
+              definition.getDocumentBaseURI(), new ArrayList());
       }
     }
 
@@ -125,32 +126,35 @@
    * Search xsd schema or xsd import from node. If node is xsd import it's loading schema.
    * @param n - node
   */
-  private void searchForSchema(Node n, String context)
+  private void searchForSchema(Node n, String context, List processedSchemas)
   {
-    while (n != null)
-    {
-      // searches for xsd:import element
-      if (Node.ELEMENT_NODE == n.getNodeType())
+	if ((n!= null) && (!processedSchemas.contains(n)))
+	{
+      while (n != null)
       {
-        // if xsd:schema element is found -> process schema
-        if (XMLUtils.equals(n, ELEM_XSD_SCHEMA))
+        // searches for xsd:import element
+        if (Node.ELEMENT_NODE == n.getNodeType())
         {
-          processSchema(n, context);
-        }
-        else
-        {
-          // if xsd:import element is found -> load schema and process schema
-          if (XMLUtils.equals(n, ELEM_XSD_IMPORT))
+          // if xsd:schema element is found -> process schema
+          if (XMLUtils.equals(n, ELEM_XSD_SCHEMA))
           {
-            importFound = true;
-            loadSchema(n, context);
+            processSchema(n, context, processedSchemas);
           }
           else
-            // else iterate element recursively
-            searchForSchema(n.getFirstChild(), context);
+          {
+            // if xsd:import element is found -> load schema and process schema
+            if (XMLUtils.equals(n, ELEM_XSD_IMPORT))
+            {
+              importFound = true;
+              loadSchema(n, context, processedSchemas);
+            }
+            else
+              // else iterate element recursively
+              searchForSchema(n.getFirstChild(), context, processedSchemas);
+          }
         }
+        n = n.getNextSibling();
       }
-      n = n.getNextSibling();
     }
   }
 
@@ -158,7 +162,7 @@
    * It loads xsd schema and then check valid encoding and looking for xsd:schema element for next process. 
    * @param importNode - xsd schema
   */
-  private void loadSchema(Node importNode, String context)
+  private void loadSchema(Node importNode, String context, List processedSchemas)
   {
     Element im = (Element) importNode;
     Attr schemaLocation = XMLUtils.getAttribute(im, ATTR_XSD_SCHEMALOCATION);
@@ -193,9 +197,9 @@
         if (XMLUtils.equals(schema.getDocumentElement(), ELEM_XSD_SCHEMA))
         {
            processSchema(schema.getDocumentElement(),
-              XMLUtils.createURLString(schemaLocation.getValue(), context));
+              XMLUtils.createURLString(schemaLocation.getValue(), context), processedSchemas);
         }
-        result = result = AssertionResult.RESULT_PASSED;
+        result = AssertionResult.RESULT_PASSED;
       }
       catch (Throwable t)
       {
@@ -401,19 +405,23 @@
    * @param schema - xsd schema
    * @param namespace - namespace of schema
    */
-  private void processSchema(Node schema, String context)
+  private void processSchema(Node schema, String context, List processedSchemas)
   {
-    Node n = schema.getFirstChild();
-    while (n != null)
-    {
-      if (Node.ELEMENT_NODE == n.getNodeType()
-        && XMLUtils.equals(n, ELEM_XSD_IMPORT))
+	if ((schema != null) && (!processedSchemas.contains(schema)))
+	{
+	  processedSchemas.add(schema);
+      Node n = schema.getFirstChild();
+      while (n != null)
       {
-        importFound = true;
-        loadSchema(n, context);
-      }
+        if (Node.ELEMENT_NODE == n.getNodeType()
+          && XMLUtils.equals(n, ELEM_XSD_IMPORT))
+        {
+          importFound = true;
+          loadSchema(n, context, processedSchemas);
+        }
 
-      n = n.getNextSibling();
+        n = n.getNextSibling();
+      }
     }
   }
 
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2700.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2700.java
index bbf2312..1064e14 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2700.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2700.java
@@ -16,7 +16,6 @@
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.AssertionProcess;
 import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
 import org.eclipse.wst.wsi.internal.core.util.Utils;
-import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
 import org.xml.sax.SAXException;
 
 /**
@@ -54,7 +53,7 @@
       // TEMP: Need to define a better way to get the WSDL URI
       String wsdlURI = entryContext.getEntry().getReferenceID();
       // non-validating parse
-      XMLUtils.parseXMLDocument(wsdlURI);
+      validator.parseXMLDocumentURL(wsdlURI, null);
     }
 
     catch (WSIException e)
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2703.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2703.java
index e23a69c..3e25651 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2703.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP2703.java
@@ -10,22 +10,11 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.profile.validator.impl.wsdl;
 
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.wsdl.Definition;
-
-import org.eclipse.wst.wsi.internal.core.WSIConstants;
 import org.eclipse.wst.wsi.internal.core.WSIException;
-import org.eclipse.wst.wsi.internal.core.analyzer.AssertionFailException;
 import org.eclipse.wst.wsi.internal.core.profile.TestAssertion;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
 import org.eclipse.wst.wsi.internal.core.profile.validator.impl.AssertionProcess;
 import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
-import org.eclipse.wst.wsi.internal.core.util.TestUtils;
-import org.eclipse.wst.wsi.internal.core.util.Utils;
-import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
-import org.xml.sax.SAXException;
 
 
 /**
@@ -54,58 +43,7 @@
     EntryContext entryContext)
     throws WSIException
   {
-
-    result = AssertionResult.RESULT_PASSED;
-
-    try
-    {
-      Definition def = (Definition) entryContext.getEntry().getEntryDetail();
-
-      if (def == null)
-      {
-        throw new AssertionFailException("Definition null");
-      }
-
-      String wsdlURI = entryContext.getEntry().getReferenceID();
-
-      Map namespaces = def.getNamespaces();
-      for (Iterator iter = namespaces.values().iterator(); iter.hasNext();)
-      {
-        String ns = (String) iter.next();
-
-        if (WSIConstants.NS_URI_WSDL.equalsIgnoreCase(ns))
-        {
-        	XMLUtils.parseXMLDocument(wsdlURI, TestUtils.getWSDLSchemaLocation());
-        }
-
-        if (WSIConstants.NS_URI_WSDL_SOAP.equalsIgnoreCase(ns))
-        {
-        	XMLUtils.parseXMLDocument(wsdlURI, TestUtils.getWSDLSOAPSchemaLocation());
-        }
-      }
-    }
-
-    catch (WSIException e)
-    {
-      if (e.getTargetException() instanceof SAXException)
-      {
-        result = AssertionResult.RESULT_FAILED;
-        failureDetail =
-          this.validator.createFailureDetail(
-            Utils.getExceptionDetails(e.getTargetException()),
-            entryContext);
-      }
-    }
-
-    catch (Exception e)
-    {
-      result = AssertionResult.RESULT_FAILED;
-      failureDetail =
-        this.validator.createFailureDetail(Utils.getExceptionDetails(e), entryContext);
-    }
-
-    // Return assertion result
-    return validator.createAssertionResult(testAssertion, result, failureDetail);
+    // note that this assertion is redundant, since the base wsdl validator checks this already.
+    return validator.createAssertionResult(testAssertion, AssertionResult.RESULT_PASSED, failureDetail);
   }
-
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP4200.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP4200.java
index f2c7335..6ec065b 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP4200.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/BP4200.java
@@ -100,7 +100,7 @@
     try
 	{
       // getting WSDL document.
-      Document doc = XMLUtils.parseXMLDocument(definition.getDocumentBaseURI());
+      Document doc = validator.parseXMLDocumentURL(definition.getDocumentBaseURI(), null);
       if (doc != null)
       {   
         checkElement(doc.getDocumentElement());
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/WSDLValidatorImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/WSDLValidatorImpl.java
index 0ecafd7..c2303cf 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/WSDLValidatorImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/profile/validator/impl/wsdl/WSDLValidatorImpl.java
@@ -12,6 +12,7 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -51,8 +52,10 @@
 import org.eclipse.wst.wsi.internal.core.analyzer.AssertionFailException;
 import org.eclipse.wst.wsi.internal.core.analyzer.CandidateInfo;
 import org.eclipse.wst.wsi.internal.core.analyzer.ServiceReference;
+import org.eclipse.wst.wsi.internal.core.analyzer.config.AnalyzerConfig;
 import org.eclipse.wst.wsi.internal.core.analyzer.config.WSDLElement;
 import org.eclipse.wst.wsi.internal.core.profile.ProfileArtifact;
+import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertions;
 import org.eclipse.wst.wsi.internal.core.profile.TestAssertion;
 import org.eclipse.wst.wsi.internal.core.profile.validator.EntryContext;
 import org.eclipse.wst.wsi.internal.core.profile.validator.WSDLValidator;
@@ -72,7 +75,6 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-
 /**
  * The WSDL validator will verify that the WSDL and associated XML schema definitions
  * are in conformance with the profile.
@@ -81,12 +83,14 @@
  * @author Peter Brittenham (peterbr@us.ibm.com)
  * @author Graham Turrell 	(gturrell@uk.ibm.com)
  */
+
 public class WSDLValidatorImpl
   extends BaseValidatorImpl
   implements WSDLValidator
 {
   /**
    * WSDL URL.
+   * @deprecated -- access the wsdl url via wsdlDocument field.
    */
   protected String wsdlURL;
 
@@ -94,11 +98,73 @@
    * WSDL document.
    */
   protected WSDLDocument wsdlDocument = null;
-
+  private boolean testable;
+  
   /**
    * Entry container map.
    */
   protected HashMap containerMap = new HashMap();
+  
+  protected boolean processDefAssertions = true;
+
+  /**
+   * Get the artifact type that this validator applies to.
+   * @return the artifact type (a String)
+   */
+  public String getArtifactType() 
+  {  
+      return TYPE_DESCRIPTION;
+  }
+
+  /**
+   * Get the collection of entry types that this validator applies to.
+   * @return an array of entry types (Strings)
+   */
+  public String[] getEntryTypes() 
+  {
+      return new String[] {
+              TYPE_DESCRIPTION_DEFINITIONS,
+              TYPE_DESCRIPTION_IMPORT,
+              TYPE_DESCRIPTION_TYPES,
+              TYPE_DESCRIPTION_MESSAGE,
+              TYPE_DESCRIPTION_OPERATION,
+              TYPE_DESCRIPTION_PORTTYPE,
+              TYPE_DESCRIPTION_BINDING,
+              TYPE_DESCRIPTION_PORT
+      };
+  }
+
+  /* (non-Javadoc)
+   * @see org.wsi.test.profile.validator.WSDLValidator#init(org.eclipse.wst.wsi.internal.core.analyzer.AnalyzerContext, org.wsi.test.profile.ProfileArtifact, org.wsi.test.report.ReportArtifact, java.lang.String, org.wsi.wsdl.WSDLDocument, org.wsi.test.report.Reporter)
+   */
+  public void init(
+    AnalyzerContext analyzerContext,
+    ProfileAssertions assertions,
+    ReportArtifact reportArtifact,
+    AnalyzerConfig analyzerConfig,
+    Reporter reporter)
+    throws WSIException
+  {
+    init(analyzerContext, assertions, reportArtifact, analyzerConfig, reporter, true);
+  }
+
+  public void init(
+    AnalyzerContext analyzerContext,
+    ProfileAssertions assertions,
+    ReportArtifact reportArtifact,
+    AnalyzerConfig analyzerConfig,
+    Reporter reporter,
+    boolean processDefAssertions)
+    throws WSIException
+  {
+    // BaseValidatorImpl
+    super.init(analyzerContext, assertions.getArtifact(TYPE_DESCRIPTION), reportArtifact, reporter);
+    this.wsdlDocument = analyzerContext.getWsdlDocument();
+    testable = analyzerContext.getWsdlDocument() != null;
+    if (this.wsdlDocument != null)
+      this.wsdlURL = wsdlDocument.getLocation();
+    this.processDefAssertions = processDefAssertions;
+  }
 
   /* (non-Javadoc)
    * @see org.wsi.test.profile.validator.WSDLValidator#init(org.eclipse.wst.wsi.internal.core.analyzer.AnalyzerContext, org.wsi.test.profile.ProfileArtifact, org.wsi.test.report.ReportArtifact, java.lang.String, org.wsi.wsdl.WSDLDocument, org.wsi.test.report.Reporter)
@@ -112,20 +178,35 @@
     Reporter reporter)
     throws WSIException
   {
+    init(analyzerContext, profileArtifact, reportArtifact, wsdlURL, wsdlDocument, reporter, true);
+  }
+
+  public void init(
+    AnalyzerContext analyzerContext,
+    ProfileArtifact profileArtifact,
+    ReportArtifact reportArtifact,
+    String wsdlURL,
+    WSDLDocument wsdlDocument,
+    Reporter reporter,
+    boolean processDefAssertions)
+    throws WSIException
+  {
     // BaseValidatorImpl
     super.init(analyzerContext, profileArtifact, reportArtifact, reporter);
     this.wsdlDocument = wsdlDocument;
+    testable = (wsdlDocument != null);
     if (wsdlDocument != null)
       this.wsdlURL = wsdlDocument.getLocation();
 
     if (wsdlURL != null)
       this.wsdlURL = wsdlURL;
+    this.processDefAssertions = processDefAssertions;
   }
 
   /* (non-Javadoc)
    * @see org.wsi.test.profile.validator.WSDLValidator#validate()
    */
-  public WSDLDocument validate() throws WSIException
+  public void validateArtifact() throws WSIException
   {
     //WSDLDocument wsdlDocument = null;
     Service service = null;
@@ -140,20 +221,6 @@
     //String classPrefix = this.getClass().getName() + "$";
     String classPrefix = this.getClass().getPackage().getName()+".";
 
-    try
-    {
-      // Validate the WSDL service description
-      if (this.wsdlDocument == null)
-        this.wsdlDocument = new WSDLDocument(wsdlURL);
-    }
-
-    catch (Exception e)
-    {
-      // ADD: Certain exceptions should result in validation errors
-
-      throw new WSIException(e.getMessage(), e);
-    }
-
     // Get the definition element
     Definition definition = wsdlDocument.getDefinitions();
 
@@ -170,9 +237,12 @@
 
     // always process Import, Definitions & Types assertions 
     // TEMP:
-    processDefinitionAssertions(classPrefix, candidate);
-    processTypesAssertions(classPrefix, candidate);
-    processImportAssertions(classPrefix, candidate);
+    if (processDefAssertions)
+    {
+      processDefinitionAssertions(classPrefix, candidate);
+      processTypesAssertions(classPrefix, candidate);
+      processImportAssertions(classPrefix, candidate);
+    }
 
     // Process the element hierarchy in the WSDL document starting with the one that was specified  
     // FIX: Element finding already completed by CandidateInfo constructor - so use that rather than retest here  
@@ -210,14 +280,10 @@
       {
         //throw new WSIRuntimeException("Could not locate WSDL binding for port: " + port.getName());  
         // Set missingInput for all binding, portType, operation and message test assertions 
-        setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_BINDING));
-        setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_PORTTYPE));
-        setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_OPERATION));
-        setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_MESSAGE));
+        setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_BINDING));
+        setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_PORTTYPE));
+        setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_OPERATION));
+        setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_MESSAGE));
       }
 
       else
@@ -234,12 +300,9 @@
         {
           //throw new WSIRuntimeException("Could not locate WSDL portType for binding: " + binding.getQName().getLocalPart());
           // Set missingInput for all portType, operation and message test assertions 
-          setMissingInput(
-            EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_PORTTYPE));
-          setMissingInput(
-            EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_OPERATION));
-          setMissingInput(
-            EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_MESSAGE));
+          setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_PORTTYPE));
+          setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_OPERATION));
+          setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_MESSAGE));
         }
 
         else
@@ -308,12 +371,9 @@
           //throw new WSIRuntimeException("Could not locate WSDL PortType for Binding: " + binding.getQName().getLocalPart());
 
           // Set missingInput for all portType, operation and message test assertions 
-          setMissingInput(
-            EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_PORTTYPE));
-          setMissingInput(
-            EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_OPERATION));
-          setMissingInput(
-            EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_MESSAGE));
+          setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_PORTTYPE));
+          setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_OPERATION));
+          setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_MESSAGE));
         }
 
         else
@@ -343,14 +403,10 @@
       else
       {
         // Set missingInput for all binding, portType, operation and message test assertions 
-        setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_BINDING));
-        setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_PORTTYPE));
-        setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_OPERATION));
-        setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_MESSAGE));
+        setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_BINDING));
+        setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_PORTTYPE));
+        setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_OPERATION));
+        setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_MESSAGE));
       }
     }
 
@@ -371,8 +427,7 @@
       }
 
       // Set missingInput for all binding test assertions 
-      setMissingInput(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_BINDING));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_BINDING));
 
       processPortTypeAssertions(
         portType,
@@ -426,10 +481,8 @@
       }
 
       // Set missingInput for all binding and portType test assertions 
-      setMissingInput(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_BINDING));
-      setMissingInput(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_PORTTYPE));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_BINDING));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_PORTTYPE));
 
       processOperationAssertions(
         operation,
@@ -461,12 +514,9 @@
       }
 
       // Set missingInput for all binding, portType, and operation test assertions 
-      setMissingInput(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_BINDING));
-      setMissingInput(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_PORTTYPE));
-      setMissingInput(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_OPERATION));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_BINDING));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_PORTTYPE));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_OPERATION));
 
       processMessageAssertions(
         message,
@@ -484,11 +534,19 @@
 
     // Cleanup
     cleanup();
+  }
 
+ /* (non-Javadoc)
+  * @see org.wsi.test.profile.validator.WSDLValidator#validate()
+  */
+  /** @deprecated -- use validateArtifact(). */
+  public WSDLDocument validate() throws WSIException
+  {
+    validateArtifact();
+    
     // Return WSDL document
     return this.wsdlDocument;
   }
-
   /**
    * Get entry container using the filename for WSDL document.
    * @param filename a file name.
@@ -568,8 +626,7 @@
         continue;
       // Create entry 
       entry = this.reporter.getReport().createEntry();
-      entry.setEntryType(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_DEFINITIONS));
+      entry.setEntryType(EntryType.getEntryType(TYPE_DESCRIPTION_DEFINITIONS));
       entry.setReferenceID(definition.getDocumentBaseURI());
       entry.setEntryDetail(definition);
 
@@ -607,7 +664,7 @@
     if (wsdlTypes == null || wsdlTypes.length == 0)
     {
       // Set missingInput for all test assertions with this entry type
-      setMissingInput(EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_TYPES));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_TYPES));
     }
 
     else
@@ -623,8 +680,7 @@
 
         // Create entry 
         entry = this.reporter.getReport().createEntry();
-        entry.setEntryType(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_TYPES));
+        entry.setEntryType(EntryType.getEntryType(TYPE_DESCRIPTION_TYPES));
         entry.setReferenceID(
           candidate.getDefinition(types).getDocumentBaseURI() + "-Types");
         entry.setEntryDetail(types);
@@ -662,8 +718,7 @@
     if (wsdlImports == null || wsdlImports.length == 0)
     {
       // Set missingInput for all test assertions with this entry type
-      setMissingInput(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_IMPORT));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_IMPORT));
     }
 
     else
@@ -673,8 +728,7 @@
         Import wsdlImport = wsdlImports[i];
         // Create entry 
         entry = this.reporter.getReport().createEntry();
-        entry.setEntryType(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_IMPORT));
+        entry.setEntryType(EntryType.getEntryType(TYPE_DESCRIPTION_IMPORT));
         entry.setReferenceID(wsdlImport.getNamespaceURI());
         entry.setEntryDetail(wsdlImport);
 
@@ -710,7 +764,7 @@
 
     // Create entry 	  
     entry = this.reporter.getReport().createEntry();
-    entry.setEntryType(EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_PORT));
+    entry.setEntryType(EntryType.getEntryType(TYPE_DESCRIPTION_PORT));
     entry.setReferenceID(port.getName());
     entry.setParentElementName(
       serviceReference.getWSDLElement().getParentElementName());
@@ -742,7 +796,7 @@
     // Create entry 
     entry = this.reporter.getReport().createEntry();
     entry.setEntryType(
-      EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_BINDING));
+      EntryType.getEntryType(TYPE_DESCRIPTION_BINDING));
     entry.setReferenceID(bindingQName.toString());
     entry.setEntryDetail(binding);
 
@@ -779,8 +833,7 @@
 
     // Create entry 
     entry = this.reporter.getReport().createEntry();
-    entry.setEntryType(
-      EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_PORTTYPE));
+    entry.setEntryType(EntryType.getEntryType(TYPE_DESCRIPTION_PORTTYPE));
     entry.setReferenceID(portTypeQName.toString());
     entry.setEntryDetail(portType);
 
@@ -818,8 +871,7 @@
 
     // Create entry 
     entry = this.reporter.getReport().createEntry();
-    entry.setEntryType(
-      EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_OPERATION));
+    entry.setEntryType(EntryType.getEntryType(TYPE_DESCRIPTION_OPERATION));
     entry.setReferenceID(operation.getName());
     entry.setParentElementName(portType.getQName().getLocalPart());
     entry.setEntryDetail(operation);
@@ -854,8 +906,7 @@
     // For each operation, 
     if (portType.getOperations() == null)
     {
-      setMissingInput(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_OPERATION));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_OPERATION));
     }
 
     else
@@ -866,8 +917,7 @@
       {
         operation = (Operation) opIt.next();
         if (operation == null || operation.isUndefined())
-          setMissingInput(
-            EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_OPERATION));
+          setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_OPERATION));
         else
           processOperationAssertions(
             operation,
@@ -901,8 +951,7 @@
 
     // Create entry 
     entry = this.reporter.getReport().createEntry();
-    entry.setEntryType(
-      EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_MESSAGE));
+    entry.setEntryType(EntryType.getEntryType(TYPE_DESCRIPTION_MESSAGE));
     entry.setReferenceID(messageQName.toString());
     entry.setEntryDetail(message);
 
@@ -1013,8 +1062,7 @@
       if (messageSet.size() == 0)
       {
         // Set all message test assertion results to missingInput
-        setMissingInput(
-          EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_MESSAGE));
+        setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_MESSAGE));
       }
 
       else
@@ -1070,8 +1118,7 @@
     if (messageSet.size() == 0)
     {
       // Set all message test assertion results to missingInput
-      setMissingInput(
-        EntryType.getEntryType(EntryType.TYPE_DESCRIPTION_MESSAGE));
+      setMissingInput(EntryType.getEntryType(TYPE_DESCRIPTION_MESSAGE));
     }
 
     else
@@ -1499,7 +1546,11 @@
     try
     {
       // Need to read the file directly, since WSDL4J always puts in the default WSDL namespace
-      Document document = parseXMLDocumentURL(def.getDocumentBaseURI(), null);
+      Document document = wsdlDocument.getDocument();
+      if (document == null)
+      {
+        document = parseXMLDocumentURL(def.getDocumentBaseURI(), null);
+      }
 
       if (document != null)
       {
@@ -1682,32 +1733,46 @@
    */
   protected List getWSDLTargetNamespaceList(Definition definition)
   {
-    List list = new Vector();
+    return getWSDLTargetNamespaceList(definition, new ArrayList());
+  }
 
-    // Always add current document targetNamespace
-    if (definition.getTargetNamespace() != null)
-      list.add(definition.getTargetNamespace());
-
-    // Get list of imported WSDL documents
-    Map importMap = definition.getImports();
-
-    Import imp;
-
-    // Add each imports targetNamespace to the list
-    if (importMap != null && !importMap.isEmpty())
+  /**
+   * Build list of WSDL targetNamespaces.
+   * @param definition a Definition object.
+   * @return list of WSDL targetNamespaces.
+   */
+  protected List getWSDLTargetNamespaceList(Definition definition, List alreadyProcessedDefinitions)
+  {
+    List list = new ArrayList();
+    if ((definition != null) && (!alreadyProcessedDefinitions.contains(definition)))
     {
-      Iterator values = importMap.values().iterator();
-      List importList;
-      while (values.hasNext())
+      alreadyProcessedDefinitions.add(definition);
+      
+      // Always add current document targetNamespace
+      if (definition.getTargetNamespace() != null)
+        list.add(definition.getTargetNamespace());
+
+      // Get list of imported WSDL documents
+      Map importMap = definition.getImports();
+
+      Import imp;
+
+      // Add each imports targetNamespace to the list
+      if (importMap != null && !importMap.isEmpty())
       {
-        importList = (List) values.next();
-        Iterator imports = importList.iterator();
-        while (imports.hasNext())
+        Iterator values = importMap.values().iterator();
+        List importList;
+        while (values.hasNext())
         {
-          imp = (Import) imports.next();
-          if (imp != null && imp.getDefinition() != null)
-          list.addAll(getWSDLTargetNamespaceList(imp.getDefinition()));
+          importList = (List) values.next();
+          Iterator imports = importList.iterator();
+          while (imports.hasNext())
+          {
+            imp = (Import) imports.next();
+            if (imp != null && imp.getDefinition() != null)
+            list.addAll(getWSDLTargetNamespaceList(imp.getDefinition(), alreadyProcessedDefinitions));
             // list.add(imp.getDefinition().getTargetNamespace());
+          }
         }
       }
     }
@@ -2311,4 +2376,10 @@
     return true;
 
   }
+  
+  /**
+   * Returns true if these tests should be run (depending on the analyzer
+   * config)
+   */
+  public boolean runTests() { return testable; } 
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/report/impl/EntryImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/report/impl/EntryImpl.java
index e91a1b7..b607759 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/report/impl/EntryImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/report/impl/EntryImpl.java
@@ -14,7 +14,9 @@
 import java.io.StringWriter;
 
 import org.eclipse.wst.wsi.internal.core.WSIConstants;
-import org.eclipse.wst.wsi.internal.core.log.MessageEntry;
+import org.eclipse.wst.wsi.internal.core.document.DocumentElement;
+import org.eclipse.wst.wsi.internal.core.profile.validator.EnvelopeValidator;
+import org.eclipse.wst.wsi.internal.core.profile.validator.MessageValidator;
 import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
 import org.eclipse.wst.wsi.internal.core.report.Entry;
 import org.eclipse.wst.wsi.internal.core.report.EntryContainer;
@@ -203,28 +205,26 @@
     }
 
     if (this.referenceID != null)
-      pw.print(
-        WSIConstants.ATTR_REFERENCE_ID + "=\"" + XMLUtils.xmlEscapedString(this.referenceID) + "\"");
+      pw.print(WSIConstants.ATTR_REFERENCE_ID + "=\"" + XMLUtils.xmlEscapedString(this.referenceID) + "\" ");
+
 
     // If service name was set then add it
     //if (parentElementName != null) {
     //  pw.print(" " + WSIConstants.ATTR_PARENT_ELEMENT_NAME + "=\"" + this.parentElementName + "\"");
     //}
 
-    // End element
-    pw.println(">");
-
     // ADD: Need to check for config option that specifies 
     //      that log entries should be added
 
     // If target is a log entry, then add reference to it
-    if ((entryType != null)
-      && (entryType.getArtifactType().isMessages())
-      && (showLogEntry))
+    if ((entryType != null) && (entryType.getArtifactType().isLoggable()) && (showLogEntry)) 
     {
-      MessageEntry logEntry = (MessageEntry) entryDetail;
-      pw.println(logEntry.toXMLString(WSIConstants.NS_NAME_WSI_LOG));
+      DocumentElement logEntry = (DocumentElement) entryDetail;
+      pw.println("value=\"" + logEntry.toXMLString(WSIConstants.NS_NAME_WSI_LOG) + "\" ");
     }
+   
+    // End element
+    pw.println(">");
 
     return sw.toString();
   }
@@ -263,12 +263,12 @@
   	String envelopeEntryTypeName = messageEntryTypeName;
   	if (messageEntryTypeName != null)
   	{
-  	if (messageEntryTypeName.equals(EntryType.TYPE_MESSAGE_ANY))
-  		envelopeEntryTypeName = EntryType.TYPE_ENVELOPE_ANY;
-  	else if (messageEntryTypeName.equals(EntryType.TYPE_MESSAGE_REQUEST))
-  		envelopeEntryTypeName = EntryType.TYPE_ENVELOPE_REQUEST;
-  	else if (messageEntryTypeName.equals(EntryType.TYPE_MESSAGE_RESPONSE))
-  		envelopeEntryTypeName = EntryType.TYPE_ENVELOPE_RESPONSE;
+  	if (messageEntryTypeName.equals(MessageValidator.TYPE_MESSAGE_ANY))
+  		envelopeEntryTypeName = EnvelopeValidator.TYPE_ENVELOPE_ANY;
+  	else if (messageEntryTypeName.equals(MessageValidator.TYPE_MESSAGE_REQUEST))
+  		envelopeEntryTypeName = EnvelopeValidator.TYPE_ENVELOPE_REQUEST;
+  	else if (messageEntryTypeName.equals(MessageValidator.TYPE_MESSAGE_RESPONSE))
+  		envelopeEntryTypeName = EnvelopeValidator.TYPE_ENVELOPE_RESPONSE;
   	}
 
   	return envelopeEntryTypeName;
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/ArtifactType.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/ArtifactType.java
index 80bdd4c..09667b3 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/ArtifactType.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/ArtifactType.java
@@ -10,6 +10,13 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.util;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.wst.wsi.internal.WSITestToolsPlugin;
+
 /**
  * This class ...
  * 
@@ -23,26 +30,37 @@
    */
   private String type;
 
+  private static Map typeMap;
+  private static List loggableArtifactTypes; 
+
   /**
    * ReportArtifact types.
    */
+  /** @deprecated -- use EnvelopeValidator.TYPE_ENVELOPE **/ 
   public static final String TYPE_ENVELOPE = "envelope";
+  /** @deprecated -- use MessageValidator.TYPE_MESSAGE **/ 
   public static final String TYPE_MESSAGE = "message";
+  /** @deprecated -- use WSDLValidator.TYPE_DESCRIPTION **/ 
   public static final String TYPE_DESCRIPTION = "description";
+  /** @deprecated -- use UDDIValidator.TYPE_DISCOVERY **/ 
   public static final String TYPE_DISCOVERY = "discovery";
 
   /**
    * ReportArtifact types.
    */
+  /** @deprecated -- use getArtifactType(String typeName) to access ArtifactType **/ 
   public static final ArtifactType ARTIFACT_TYPE_ENVELOPE =
     new ArtifactType(TYPE_ENVELOPE);
+  /** @deprecated -- use getArtifactType(String typeName) to access ArtifactType **/ 
   public static final ArtifactType ARTIFACT_TYPE_MESSAGE =
     new ArtifactType(TYPE_MESSAGE);
+  /** @deprecated -- use getArtifactType(String typeName) to access ArtifactType **/
   public static final ArtifactType ARTIFACT_TYPE_DESCRIPTION =
     new ArtifactType(TYPE_DESCRIPTION);
+  /** @deprecated -- use getArtifactType(String typeName) to access ArtifactType **/
   public static final ArtifactType ARTIFACT_TYPE_DISCOVERY =
     new ArtifactType(TYPE_DISCOVERY);
-
+  
   /**
    * Create artifact type.
    */
@@ -51,9 +69,24 @@
     this.type = type;
   }
 
+  /** Returns true if this artifact can be output to the report. */
+  public boolean isLoggable() 
+  {
+    if (loggableArtifactTypes == null) 
+    {
+      String artifactArray[] = WSITestToolsPlugin.getPlugin().getAllReportArtifactTypes();
+      loggableArtifactTypes = new ArrayList(artifactArray.length);
+      for (int i = 0; i < artifactArray.length; i++)
+         loggableArtifactTypes.add(artifactArray[i]);
+    }
+    return loggableArtifactTypes.contains(type);
+  }
+
   /**
    * Is artifact type envelope.
    * @return true if artifact type envelope.
+   * @deprecated -- an artifactType is no longer restricted to envelope, 
+   *                message, description or discovery.
    */
   public boolean isEnvelope()
   {
@@ -63,6 +96,8 @@
   /**
    * Is artifact type messages.
    * @return true if artifact type messages.
+   * @deprecated -- an artifactType is no longer restricted to envelope, 
+   *                message, description or discovery.
    */
   public boolean isMessages()
   {
@@ -72,6 +107,8 @@
   /**
    * Is artifact type description.
    * @return true if artifact type description.
+   * @deprecated -- an artifactType is no longer restricted to envelope, 
+   *                message, description or discovery.
    */
   public boolean isDescription()
   {
@@ -81,6 +118,8 @@
   /**
    * Is artifact type discovery.
    * @return true if artifact type discovery.
+   * @deprecated -- an artifactType is no longer restricted to envelope, 
+   *                message, description or discovery.
    */
   public boolean isDiscovery()
   {
@@ -97,11 +136,46 @@
   }
 
   /**
+   * Instantiates a new artifact type and adds it to the registry map
+   * @param name - the artifact name (matches artifact type attribute from TAD)
+   */
+  public static void registerArtifactType(String name) {
+      if (typeMap == null)
+          typeMap = new HashMap();
+      typeMap.put(name, new ArtifactType(name));
+  }
+  
+  /**
    * Create artifact type.
    * @param typeName artifact type name.
    * @return newly created artifact type.
    * @throws RuntimeException if artifact type name is invalid or inappropriate.
    */
+  public static final ArtifactType getArtifactType(String typeName)
+    throws RuntimeException
+  {
+      if (typeMap == null) {
+          String types[] = WSITestToolsPlugin.getPlugin().getArtifactTypes();
+          for (int i = 0; i < types.length; i++)
+              registerArtifactType(types[i]);
+      }
+      
+    if (typeMap.containsKey(typeName))
+        return (ArtifactType) typeMap.get(typeName);
+     else {
+         throw new RuntimeException(
+                 "Could not create new artifact type using invalid type name: "
+                 + typeName + ".");
+     }
+  }
+  
+    /**
+   * Create artifact type.
+   * @param typeName artifact type name.
+   * @return newly created artifact type.
+   * @throws RuntimeException if artifact type name is invalid or inappropriate.
+   * @deprecated -- use getArtifactType(String typeName)
+   */
   public static final ArtifactType newArtifactType(String typeName)
     throws RuntimeException
   {
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/EntryType.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/EntryType.java
index 3b27731..b21a36f 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/EntryType.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/EntryType.java
@@ -13,6 +13,9 @@
 import java.util.TreeMap;
 import java.util.Vector;
 
+import org.eclipse.wst.wsi.internal.WSITestToolsPlugin;
+import org.eclipse.wst.wsi.internal.core.profile.validator.BaseValidator;
+
 /**
  * This class ...
  * 
@@ -34,118 +37,114 @@
   /**
    * Entry types accessible by type name.
    */
-  protected static final TreeMap entryTypeMap = new TreeMap();
+  protected static TreeMap entryTypeMap;
 
   /**
    * Entry type names accessible by artifact.
    */
   protected static final TreeMap entryTypeNameMap = new TreeMap();
-  static {
-    entryTypeNameMap.put(ArtifactType.TYPE_ENVELOPE, new Vector());
-    entryTypeNameMap.put(ArtifactType.TYPE_MESSAGE, new Vector());
-    entryTypeNameMap.put(ArtifactType.TYPE_DESCRIPTION, new Vector());
-    entryTypeNameMap.put(ArtifactType.TYPE_DISCOVERY, new Vector());
-  }
 
   /**
    * Envelope entry types.
    */
+  /** @deprecated -- use EnvelopeValidator.TYPE_ENVELOPE_REQUEST */
   public static final String TYPE_ENVELOPE_REQUEST = "requestEnvelope";
+  /** @deprecated -- use EnvelopeValidator.TYPE_ENVELOPE_RESPONSE */
   public static final String TYPE_ENVELOPE_RESPONSE = "responseEnvelope";
+  /** @deprecated -- use EnvelopeValidator.TYPE_ENVELOPE_ANYT */
   public static final String TYPE_ENVELOPE_ANY = "anyEnvelope";
 
   /**
    * Message entry types.
    */
+  /** @deprecated -- use MessageValidator.TYPE_MESSAGE_REQUEST */
   public static final String TYPE_MESSAGE_REQUEST = "requestMessage";
+  /** @deprecated -- use MessageValidator.TYPE_MESSAGE_RESPONSE */
   public static final String TYPE_MESSAGE_RESPONSE = "responseMessage";
+  /** @deprecated -- use MessageValidator.TYPE_MESSAGE_ANY */
   public static final String TYPE_MESSAGE_ANY = "anyMessage";
 
   /**
    * MIME entry types.
    */
+  /** @deprecated -- use MessageValidator.TYPE_MIME_PART */
   public static final String TYPE_MIME_PART = "part";
+  /** @deprecated -- use MessageValidator.TYPE_MIME_ROOT_PART */
   public static final String TYPE_MIME_ROOT_PART = "root-part";
 
   /**
    * Description entry types.
    */
+  /** @deprecated -- use WSDLValidator.TYPE_DESCRIPTION_DEFINITIONS */
   public static final String TYPE_DESCRIPTION_DEFINITIONS = "definitions";
+  /** @deprecated -- use WSDLValidator.TYPE_DESCRIPTION_IMPORT */
   public static final String TYPE_DESCRIPTION_IMPORT = "import";
+  /** @deprecated -- use WSDLValidator.TYPE_DESCRIPTION_TYPES */
   public static final String TYPE_DESCRIPTION_TYPES = "types";
+  /** @deprecated -- use WSDLValidator.TYPE_DESCRIPTION_MESSAGE */
   public static final String TYPE_DESCRIPTION_MESSAGE = "message";
+  /** @deprecated -- use WSDLValidator.TYPE_DESCRIPTION_OPERATION */
   public static final String TYPE_DESCRIPTION_OPERATION = "operation";
+  /** @deprecated -- use WSDLValidator.TYPE_DESCRIPTION_PORTTYPE */
   public static final String TYPE_DESCRIPTION_PORTTYPE = "portType";
+  /** @deprecated -- use WSDLValidator.TYPE_DESCRIPTION_BINDING */
   public static final String TYPE_DESCRIPTION_BINDING = "binding";
+  /** @deprecated -- use WSDLValidator.TYPE_DESCRIPTION_PORT */
   public static final String TYPE_DESCRIPTION_PORT = "port";
 
   /**
    * Discovery entry types.
    */
+  /** @deprecated -- use UDDIValidator.TYPE_DISCOVERY_BINDINGTEMPLATE */
   public static final String TYPE_DISCOVERY_BINDINGTEMPLATE = "bindingTemplate";
+  /** @deprecated -- use UDDIValidator.TYPE_DISCOVERY_TMODEL */
   public static final String TYPE_DISCOVERY_TMODEL = "tModel";
 
   /**
    * Envelope entry types.
    */
-  public static final EntryType ENTRY_TYPE_REQUESTENV =
-    newEntryType(ArtifactType.ARTIFACT_TYPE_ENVELOPE, TYPE_ENVELOPE_REQUEST);
-  public static final EntryType ENTRY_TYPE_RESPONSEENV =
-    newEntryType(ArtifactType.ARTIFACT_TYPE_ENVELOPE, TYPE_ENVELOPE_RESPONSE);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_REQUESTENV = getEntryType(TYPE_ENVELOPE_REQUEST);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_RESPONSEENV = getEntryType(TYPE_ENVELOPE_RESPONSE);
 
   /**
    * Message entry types.
    */
-  public static final EntryType ENTRY_TYPE_REQUEST =
-    newEntryType(ArtifactType.ARTIFACT_TYPE_MESSAGE, TYPE_MESSAGE_REQUEST);
-  public static final EntryType ENTRY_TYPE_RESPONSE =
-    newEntryType(ArtifactType.ARTIFACT_TYPE_MESSAGE, TYPE_MESSAGE_RESPONSE);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_REQUEST = getEntryType(TYPE_MESSAGE_REQUEST);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_RESPONSE = getEntryType(TYPE_MESSAGE_RESPONSE);
   //  public static final EntryType ENTRY_TYPE_ANYENTRY = 
   //        new EntryType(ArtifactType.ARTIFACT_TYPE_MESSAGES, TYPE_MESSAGE_ANYENTRY);
 
   /**
    * Description entry types.
    */
-  public static final EntryType ENTRY_TYPE_DEFINITIONS =
-    newEntryType(
-      ArtifactType.ARTIFACT_TYPE_DESCRIPTION,
-      TYPE_DESCRIPTION_DEFINITIONS);
-  public static final EntryType ENTRY_TYPE_IMPORT =
-    newEntryType(
-      ArtifactType.ARTIFACT_TYPE_DESCRIPTION,
-      TYPE_DESCRIPTION_IMPORT);
-  public static final EntryType ENTRY_TYPE_TYPES =
-    newEntryType(
-      ArtifactType.ARTIFACT_TYPE_DESCRIPTION,
-      TYPE_DESCRIPTION_TYPES);
-  public static final EntryType ENTRY_TYPE_MESSAGE =
-    newEntryType(
-      ArtifactType.ARTIFACT_TYPE_DESCRIPTION,
-      TYPE_DESCRIPTION_MESSAGE);
-  public static final EntryType ENTRY_TYPE_OPERATION =
-    newEntryType(
-      ArtifactType.ARTIFACT_TYPE_DESCRIPTION,
-      TYPE_DESCRIPTION_OPERATION);
-  public static final EntryType ENTRY_TYPE_PORTTYPE =
-    newEntryType(
-      ArtifactType.ARTIFACT_TYPE_DESCRIPTION,
-      TYPE_DESCRIPTION_PORTTYPE);
-  public static final EntryType ENTRY_TYPE_BINDING =
-    newEntryType(
-      ArtifactType.ARTIFACT_TYPE_DESCRIPTION,
-      TYPE_DESCRIPTION_BINDING);
-  public static final EntryType ENTRY_TYPE_PORT =
-    newEntryType(ArtifactType.ARTIFACT_TYPE_DESCRIPTION, TYPE_DESCRIPTION_PORT);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_DEFINITIONS = getEntryType(TYPE_DESCRIPTION_DEFINITIONS);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_IMPORT = getEntryType(TYPE_DESCRIPTION_IMPORT);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_TYPES = getEntryType(TYPE_DESCRIPTION_TYPES);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_MESSAGE = getEntryType(TYPE_DESCRIPTION_MESSAGE);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_OPERATION = getEntryType(TYPE_DESCRIPTION_OPERATION);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_PORTTYPE = getEntryType(TYPE_DESCRIPTION_PORTTYPE);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_BINDING = getEntryType(TYPE_DESCRIPTION_BINDING);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_PORT = getEntryType(TYPE_DESCRIPTION_PORT);
 
   /**
    * Discovery entry types.
    */
-  public static final EntryType ENTRY_TYPE_BINDINGTEMPLATE =
-    newEntryType(
-      ArtifactType.ARTIFACT_TYPE_DISCOVERY,
-      TYPE_DISCOVERY_BINDINGTEMPLATE);
-  public static final EntryType ENTRY_TYPE_TMODEL =
-    newEntryType(ArtifactType.ARTIFACT_TYPE_DISCOVERY, TYPE_DISCOVERY_TMODEL);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_BINDINGTEMPLATE = getEntryType(TYPE_DISCOVERY_BINDINGTEMPLATE);
+  /** @deprecated -- use getEntryType(String typeName) to access EntryType. */
+  public static final EntryType ENTRY_TYPE_TMODEL = getEntryType(TYPE_DISCOVERY_TMODEL);
 
   /**
    * Create entry type.
@@ -213,6 +212,16 @@
   public static final EntryType getEntryType(String typeName)
     throws RuntimeException
   {
+    if (entryTypeMap == null) {
+        BaseValidator validators[] = WSITestToolsPlugin.getPlugin()
+                .getBaseValidators();
+        for (int i = 0; i < validators.length; i++) {
+            String entryTypes[] = validators[i].getEntryTypes();
+            for (int j = 0; j < entryTypes.length; j++)
+                registerEntryType(ArtifactType.getArtifactType(
+                        validators[i].getArtifactType()), entryTypes[j]);
+        }
+    }
     // Get the entry type by type name
     EntryType entryType = (EntryType) entryTypeMap.get(typeName);
 
@@ -254,7 +263,7 @@
   /**
    * Get list of type names for a specified artifact type name.
    */
-  private static final EntryType newEntryType(
+  public static final EntryType registerEntryType(
     ArtifactType artifactType,
     String typeName)
   {
@@ -263,12 +272,21 @@
     // Create entry type
     entryType = new EntryType(artifactType, typeName);
 
+    if (entryTypeMap == null) {
+        entryTypeMap = new TreeMap();
+    }
     // Add to entry type map
     entryTypeMap.put(typeName, entryType);
 
     // Get the entry type name vector for the artifact type
     Vector entryTypeNameList =
       (Vector) entryTypeNameMap.get(artifactType.getTypeName());
+    
+    // Lazy initialize
+    if (entryTypeNameList == null) {
+        entryTypeNameList = new Vector();
+        entryTypeNameMap.put(artifactType.getTypeName(), entryTypeNameList);
+    }
 
     // Add the type name to the list
     entryTypeNameList.add(typeName);
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/HTTPUtils.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/HTTPUtils.java
index 735e435..1e6e443 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/HTTPUtils.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/HTTPUtils.java
@@ -12,7 +12,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 
 import org.eclipse.wst.wsi.internal.core.WSIException;
 
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/HttpHeadersValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/HttpHeadersValidator.java
index f74694f..a76a499 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/HttpHeadersValidator.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/HttpHeadersValidator.java
@@ -16,7 +16,7 @@
 import java.net.URL;
 import java.text.ParseException;
 import java.util.Locale;
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 
 import sun.net.www.MessageHeader;
 
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/MIMEUtils.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/MIMEUtils.java
index 76fd947..b9cd330 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/MIMEUtils.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/MIMEUtils.java
@@ -12,7 +12,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 
 import org.eclipse.wst.wsi.internal.core.WSIException;
 
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TestUtils.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TestUtils.java
index c0ae945..b47c1d1 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TestUtils.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TestUtils.java
@@ -69,8 +69,8 @@
         + toolInfo.getVersion()
         + ", Release Date: "
         + toolInfo.getReleaseDate());
-    System.out.println(WSIConstants.COPYRIGHT);
-    System.out.println(" ");
+    // System.out.println(WSIConstants.COPYRIGHT);
+    // System.out.println(" ");
   }
 
   /** 
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TypesRegistry.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TypesRegistry.java
index 6c12b28..6afdab9 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TypesRegistry.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/TypesRegistry.java
@@ -421,7 +421,7 @@
       {
         // if xsd:schema element is found -> process schema
         if (XMLUtils.equals(n, ELEM_XSD_SCHEMA))
-          processSchema(n, context);
+          processSchema(n, context, new ArrayList());
       }
       n = n.getNextSibling();
     }
@@ -433,7 +433,7 @@
    * @param importNode
    * @param context
    */
-  private void loadSchema(Node importNode, String context)
+  private void loadSchema(Node importNode, String context, List processedSchemas)
   {
     Element im = (Element) importNode;
     Attr schemaLocation = XMLUtils.getAttribute(im, ATTR_XSD_SCHEMALOCATION);
@@ -455,7 +455,7 @@
           if (XMLUtils.equals(schema.getDocumentElement(), ELEM_XSD_SCHEMA))
             processSchema(
               schema.getDocumentElement(),
-              urlString);
+              urlString, processedSchemas);
     	}
       }
       catch (Throwable t)
@@ -471,66 +471,70 @@
    * @param schema
    * @param context
    */
-  private void processSchema(Node schema, String context)
+  private void processSchema(Node schema, String context, List processedSchemas)
   {
-    Attr a = XMLUtils.getAttribute((Element) schema, ATTR_XSD_TARGETNAMESPACE);
-    String targetNamespace = (a != null) ? a.getValue() : "";
-    // iterate schema
-    Node n = schema.getFirstChild();
-    // !! we suppose that xsd:import element is occured only within xsd:schema element        
-    while (n != null)
-    {
-      if (Node.ELEMENT_NODE == n.getNodeType())
+	if ((schema != null) && (!processedSchemas.contains(schema)))
+	{
+	  processedSchemas.add(schema);
+      Attr a = XMLUtils.getAttribute((Element) schema, ATTR_XSD_TARGETNAMESPACE);
+      String targetNamespace = (a != null) ? a.getValue() : "";
+      // iterate schema
+      Node n = schema.getFirstChild();
+      // !! we suppose that xsd:import element is occured only within xsd:schema element        
+      while (n != null)
       {
-        if (XMLUtils.equals(n, ELEM_XSD_ELEMENT))
+        if (Node.ELEMENT_NODE == n.getNodeType())
         {
-          Element el = (Element) n;
-          a = XMLUtils.getAttribute(el, ATTR_XSD_NAME);
-          QName element =
-            new QName(targetNamespace, (a != null) ? a.getValue() : "");
-
-          a = XMLUtils.getAttribute(el, ATTR_XSD_TYPE);
-          QName type = null;
-          if (a != null)
+          if (XMLUtils.equals(n, ELEM_XSD_ELEMENT))
           {
-            String t = a.getValue();
-            // if type contains ':', it means that it contains qname
-            int i = t.indexOf(':');
-            if (i != -1)
+            Element el = (Element) n;
+            a = XMLUtils.getAttribute(el, ATTR_XSD_NAME);
+            QName element =
+              new QName(targetNamespace, (a != null) ? a.getValue() : "");
+
+            a = XMLUtils.getAttribute(el, ATTR_XSD_TYPE);
+            QName type = null;
+            if (a != null)
             {
-              String prefix = t.substring(0, i);
-              String nsURI = XMLUtils.findNamespaceURI(n, prefix);
-              type = new QName(nsURI, t.substring(i + 1));
+              String t = a.getValue();
+              // if type contains ':', it means that it contains qname
+              int i = t.indexOf(':');
+              if (i != -1)
+              {
+                String prefix = t.substring(0, i);
+                String nsURI = XMLUtils.findNamespaceURI(n, prefix);
+                type = new QName(nsURI, t.substring(i + 1));
+              }
+              else
+                type = new QName(targetNamespace, t);
             }
             else
-              type = new QName(targetNamespace, t);
+            {
+              // suppose that element directly contains type declaration
+              type = element;
+              checkType(n, type);
+            }
+
+            element2Type.put(element, type);
           }
-          else
+          else if (XMLUtils.equals(n, ELEM_XSD_IMPORT))
+            loadSchema(n, context, processedSchemas);
+          else if (XMLUtils.equals(n, ELEM_XSD_INCLUDE))
+            loadSchema(n, context, processedSchemas);
+          else if (XMLUtils.equals(n, ELEM_XSD_COMPLEXTYPE))
           {
-            // suppose that element directly contains type declaration
-            type = element;
+            Element el = (Element) n;
+            a = XMLUtils.getAttribute(el, ATTR_XSD_NAME);
+            QName type =
+              new QName(targetNamespace, (a != null) ? a.getValue() : "");
             checkType(n, type);
           }
 
-          element2Type.put(element, type);
-        }
-        else if (XMLUtils.equals(n, ELEM_XSD_IMPORT))
-          loadSchema(n, context);
-        else if (XMLUtils.equals(n, ELEM_XSD_INCLUDE))
-            loadSchema(n, context);
-        else if (XMLUtils.equals(n, ELEM_XSD_COMPLEXTYPE))
-        {
-          Element el = (Element) n;
-          a = XMLUtils.getAttribute(el, ATTR_XSD_NAME);
-          QName type =
-            new QName(targetNamespace, (a != null) ? a.getValue() : "");
-          checkType(n, type);
         }
 
+        n = n.getNextSibling();
       }
-
-      n = n.getNextSibling();
-    }
+	}
   }
 
   /**
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/UDDIUtils.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/UDDIUtils.java
index c572363..e92e065 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/UDDIUtils.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/UDDIUtils.java
@@ -14,6 +14,10 @@
 import java.util.Iterator;
 import java.util.Vector;
 
+import javax.wsdl.Binding;
+
+import org.eclipse.wst.wsi.internal.core.WSIException;
+import org.eclipse.wst.wsi.internal.core.wsdl.WSDLDocument;
 import org.uddi4j.UDDIException;
 import org.uddi4j.client.UDDIProxy;
 import org.uddi4j.datatype.binding.BindingTemplate;
@@ -333,4 +337,207 @@
 
     return returnString;
   }
+
+  /**
+   * Find the wsdlSpec tModel associated with a binding.
+   */
+  public static TModel findTModel(
+    UDDIProxy uddiProxy,
+    BindingTemplate bindingTemplate,
+    boolean verboseOption)
+    throws WSIException
+  {
+    TModel tModel = null;
+
+    // Get the list of tModel references associated with this bindingTemplate
+    Iterator iterator =
+      bindingTemplate
+        .getTModelInstanceDetails()
+        .getTModelInstanceInfoVector()
+        .iterator();
+
+    // Process each tModel reference
+    Vector tModelKeyList = new Vector();
+    while (iterator.hasNext())
+    {
+      // Get tModelInstanceInfo
+      TModelInstanceInfo tModelInstanceInfo =
+        (TModelInstanceInfo) iterator.next();
+
+      // Add key to list
+      tModelKeyList.add(tModelInstanceInfo.getTModelKey());
+    }
+
+    // Get the tModels associated with the bindingTemplate
+    if (tModelKeyList.size() > 0)
+    {
+      try
+      {
+        // Get the tModel details
+        TModelDetail tModelDetail = uddiProxy.get_tModelDetail(tModelKeyList);
+
+        // Get the list of tModels
+        Iterator tModelIterator = tModelDetail.getTModelVector().iterator();
+
+        //boolean tModelFound = false;
+        TModel nextTModel = null;
+
+        // Go through the list of tModels
+        while ((tModelIterator.hasNext()) && (tModel == null))
+        {
+          // Get next tModel in list
+          nextTModel = (TModel) tModelIterator.next();
+
+          if (verboseOption)
+          {
+            System.err.println(
+              "      TModel referenced from bindingTemplate - "
+                + UDDIUtils.tModelToString(nextTModel));
+          }
+
+          // If this is a wsdlSpec tModel, then this is the tModel we want
+          if (isWsdlSpec(nextTModel))
+            tModel = nextTModel;
+        }
+      }
+
+      catch (Exception e)
+      {
+        // Throw WSIException
+        throw new WSIException("Could not get tModel details.", e);
+      }
+    }
+
+    else
+    {
+      // Throw exception
+      //throw new WSIException("UDDI bindingTemplate did not contain any tModel references.");
+    }
+
+    return tModel;
+  }
+  
+  /**
+   * Determine if this is a wsdlSpec tModel.
+   */
+  public static boolean isWsdlSpec(TModel tModel)
+  {
+    boolean tModelFound = false;
+    CategoryBag categoryBag = null;
+    Iterator categoryBagIterator = null;
+
+    // Determine if the catetgoryBag contains wsdlSpec
+    if ((categoryBag = tModel.getCategoryBag()) != null)
+    {
+      // Get the list of keyed references
+      categoryBagIterator = categoryBag.getKeyedReferenceVector().iterator();
+
+      KeyedReference keyedReference = null;
+
+      // Go through the list of keyed references
+      while (categoryBagIterator.hasNext() && !(tModelFound))
+      {
+        // Get next keyed reference
+        keyedReference = (KeyedReference) categoryBagIterator.next();
+
+        // If this is a types taxonomy tModel and the value is wsdlSpec, then this is the tModel we want
+        // REMOVE: It is not necessary to check the key name
+        //if (keyedReference.getTModelKey().equalsIgnoreCase(TModel.TYPES_TMODEL_KEY) &&
+        //   "wsdlSpec".equals(keyedReference.getKeyValue()) &&
+        //   ("types".equals(keyedReference.getKeyName()) ||
+        //    "uddi-org:types".equals(keyedReference.getKeyName()))) {
+        //  tModelFound = true;
+        //}
+        if (keyedReference
+          .getTModelKey()
+          .equalsIgnoreCase(TModel.TYPES_TMODEL_KEY)
+          && "wsdlSpec".equals(keyedReference.getKeyValue()))
+        {
+          tModelFound = true;
+        }
+      }
+    }
+
+    return tModelFound;
+  }
+  /**
+   * Get an OverviewURL from tModel.
+   */
+  public static String getOverviewURL(TModel tModel)
+  {
+    if (tModel != null
+      && tModel.getOverviewDoc() != null
+      && tModel.getOverviewDoc().getOverviewURL() != null)
+    {
+      return tModel.getOverviewDoc().getOverviewURL().getText();
+    }
+    return null;
+  }
+  
+
+  /**
+   * Get WSDL document.
+   */
+  public static String getWSDLLocation(String wsdlLocation)
+  {
+    int index;
+
+    // Check if the overviewURL contains a fragment identifier
+    if ((index = wsdlLocation.indexOf("#")) > -1)
+    {
+      wsdlLocation = wsdlLocation.substring(0, index);
+    }
+    return wsdlLocation;
+  }
+  /**
+   * Get WSDL binding from the overviewURL in the tModel.
+   */
+  public static Binding getBinding(String overviewURL, WSDLDocument wsdlDocument)
+  {
+    int index;
+    int nameIndex;
+
+    Binding[] bindings = wsdlDocument.getBindings();
+    if (bindings == null || bindings.length == 0)
+      return null;
+
+    if (overviewURL != null)
+    {
+      // Check if the overviewURL contains a fragment identifier
+      if ((index = overviewURL.indexOf("#")) > -1)
+      {
+        // TEMP: Need to use a real XPath evaluator like Xalan
+        String nameAttribute = "@name=";
+
+        // Locate name reference
+        if ((nameIndex =
+          overviewURL.substring(index + 1).indexOf(nameAttribute))
+          > -1)
+        {
+          // Get the next character which should be a quote
+          int firstQuoteIndex = index + 1 + nameIndex + nameAttribute.length();
+          String quote =
+            overviewURL.substring(firstQuoteIndex, firstQuoteIndex + 1);
+
+          // Get the part of the URL which should contain the binding name
+          String urlPart = overviewURL.substring(firstQuoteIndex + 1);
+
+          // Find the next quote
+          int nextQuoteIndex;
+          if ((nextQuoteIndex = urlPart.indexOf(quote)) > -1)
+          {
+            String bindingName = urlPart.substring(0, nextQuoteIndex);
+            //look for binding with the specified name
+            for (int i = 0; i < bindings.length; i++)
+            {
+              if (bindingName.equals(bindings[i].getQName().getLocalPart()))
+                return bindings[i];
+            }
+          }
+        }
+      }
+    }
+
+    return bindings[0];
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/Utils.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/Utils.java
index 85882d2..0d379d0 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/Utils.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/Utils.java
@@ -28,18 +28,23 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.Iterator;
+import java.util.Map;
 import java.util.ResourceBundle;
-import java.util.StringTokenizer;
+import com.ibm.icu.util.StringTokenizer;
 import java.util.Vector;
 
+import org.eclipse.wst.wsi.internal.WSITestToolsPlugin;
 import org.eclipse.wst.wsi.internal.core.WSIConstants;
 import org.eclipse.wst.wsi.internal.core.WSIException;
+import org.eclipse.wst.wsi.internal.core.analyzer.config.AnalyzerConfig;
 import org.eclipse.wst.wsi.internal.core.log.MimePart;
 import org.eclipse.wst.wsi.internal.core.log.MimeParts;
 import org.eclipse.wst.wsi.internal.core.log.impl.MimePartImpl;
 import org.eclipse.wst.wsi.internal.core.log.impl.MimePartsImpl;
 import org.eclipse.wst.wsi.internal.core.profile.ProfileAssertions;
+import org.eclipse.wst.wsi.internal.core.report.Reporter;
 import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
 
 import com.ibm.icu.text.SimpleDateFormat;
@@ -53,6 +58,9 @@
   public static final byte CR = (byte) '\r';
   public static final byte LF = (byte) '\n';
 
+  
+  private static Map validProfileTADVersions;
+
   /**
    * Common timestamp format.
    */
@@ -1133,6 +1141,19 @@
       v.add(array[i]);
     return v;
   }
+
+  /**
+   * Designates legal versions for the profile test assertion document
+   * @param name - the TAD name
+   * @param version - the legal version
+   */
+  public static void registerValidProfileTADVersion(String name, String version)
+  {
+      if (validProfileTADVersions == null)
+          validProfileTADVersions = new HashMap();
+      validProfileTADVersions.put(name, version);
+  }
+  
   /**
    * Checks to ensure that version of the profile test assertion 
    * document is supported in this version of the test tools.
@@ -1142,29 +1163,21 @@
    */
   public static boolean isValidProfileTADVersion(ProfileAssertions profileAssertions)
   {
-    boolean result = false;
 
     String name = profileAssertions.getTADName();
     String version = profileAssertions.getTADVersion();
-
-    if (WSIConstants.BASIC_PROFILE_TAD_NAME.equals(name))
-    {
-      result =
-        checkVersionNumber(WSIConstants.BASIC_PROFILE_TAD_VERSION, version);
-    } else if (WSIConstants.BASIC_PROFILE_1_1_TAD_NAME.equals(name))
-    {  
-      result =
-        checkVersionNumber(WSIConstants.BASIC_PROFILE_1_1_TAD_VERSION, version);
-    } else if (WSIConstants.SIMPLE_SOAP_BINDINGS_PROFILE_TAD_NAME.equals(name))
-    {
-      result =
-        checkVersionNumber(WSIConstants.SIMPLE_SOAP_BINDINGS_PROFILE_TAD_VERSION, version);
-    } else if (WSIConstants.ATTACHMENTS_PROFILE_TAD_NAME.equals(name))
-    {
-      result =
-        checkVersionNumber(WSIConstants.ATTACHMENTS_PROFILE_TAD_VERSION, version);
+    
+    if (validProfileTADVersions == null) {
+       String versions[][] = WSITestToolsPlugin.getPlugin().getAllTADVersions();
+       for (int i = 0; i < versions.length; i++)
+           registerValidProfileTADVersion(versions[i][0], versions[i][1]);
     }
-    return result;
+
+    if (validProfileTADVersions.containsKey(name))
+        return checkVersionNumber((String) validProfileTADVersions.get(name),
+                version);
+    else
+        return false;
   }
 
   /**
@@ -1413,4 +1426,21 @@
 	}
   	catch (Exception e){}
   }
+
+  public static AnalyzerConfig getAnalyzerConfig(Reporter reporter) 
+  {
+	AnalyzerConfig result = null;
+	if (reporter != null)
+	{
+	  try
+	  {
+		result = reporter.getReport().getReportContext().getAnalyzer().getAnalyzerConfig();
+	  }
+	  catch (Exception e)
+	  {
+		result = null;
+	  }
+	}
+	return result;
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/WSDLUtil.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/WSDLUtil.java
index 1adcf00..50de6c3 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/WSDLUtil.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/util/WSDLUtil.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.util;
 
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
@@ -80,7 +81,7 @@
         {
           Iterator it2 = v.iterator();
           while (it2.hasNext())
-            expandDefinition(def, (Import) it2.next());
+            expandDefinition(def, (Import) it2.next(), new ArrayList());
         }
       }
     }
@@ -91,45 +92,50 @@
    * @param target WSDL definition.
    * @param im internal method.
    */
-  static private void expandDefinition(Definition target, Import im)
+  static private void expandDefinition(Definition target, Import im, List processedDefinitions)
   {
-    if (im != null && im.getDefinition() != null)
+    if (im != null)
     {
       Definition d = im.getDefinition();
-      if (d.getMessages() != null)
+      if ((d != null) && (!processedDefinitions.contains(d)))
       {
-        Iterator it = d.getMessages().values().iterator();
-        while (it.hasNext())
-          target.addMessage((Message) it.next());
-      }
-      if (d.getPortTypes() != null)
-      {
-        Iterator it = d.getPortTypes().values().iterator();
-        while (it.hasNext())
-          target.addPortType((PortType) it.next());
-      }
-      if (d.getBindings() != null)
-      {
-        Iterator it = d.getBindings().values().iterator();
-        while (it.hasNext())
-          target.addBinding((Binding) it.next());
-      }
-      if (d.getServices() != null)
-      {
-        Iterator it = d.getServices().values().iterator();
-        while (it.hasNext())
-          target.addService((Service) it.next());
-      }
+    	processedDefinitions.add(d);
 
-      Iterator it = d.getImports().values().iterator();
-      while (it.hasNext())
-      {
-        List v = (List) it.next();
-        if (v != null)
+        if (d.getMessages() != null)
         {
-          Iterator it2 = v.iterator();
-          while (it2.hasNext())
-            expandDefinition(target, (Import) it2.next());
+          Iterator it = d.getMessages().values().iterator();
+          while (it.hasNext())
+            target.addMessage((Message) it.next());
+        }
+        if (d.getPortTypes() != null)
+        {
+          Iterator it = d.getPortTypes().values().iterator();
+          while (it.hasNext())
+            target.addPortType((PortType) it.next());
+        }
+        if (d.getBindings() != null)
+        {
+          Iterator it = d.getBindings().values().iterator();
+          while (it.hasNext())
+            target.addBinding((Binding) it.next());
+        }
+        if (d.getServices() != null)
+        {
+          Iterator it = d.getServices().values().iterator();
+          while (it.hasNext())
+            target.addService((Service) it.next());
+        }
+
+        Iterator it = d.getImports().values().iterator();
+        while (it.hasNext())
+        {
+          List v = (List) it.next();
+          if (v != null)
+          {
+            Iterator it2 = v.iterator();
+            while (it2.hasNext())
+              expandDefinition(target, (Import) it2.next(), processedDefinitions);
+          }
         }
       }
     }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/WSDLDocument.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/WSDLDocument.java
index 507f983..050292a 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/WSDLDocument.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/WSDLDocument.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.wsdl;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -24,6 +25,7 @@
 import javax.wsdl.extensions.ExtensibilityElement;
 import javax.wsdl.xml.WSDLReader;
 
+import org.eclipse.wst.wsi.internal.core.WSIException;
 import org.eclipse.wst.wsi.internal.core.wsdl.xsd.InlineSchemaValidator;
 import org.eclipse.wst.wsi.internal.core.xml.XMLTags;
 import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
@@ -48,6 +50,11 @@
   protected Definition definitions = null;
 
   /**
+   * Document element
+   */
+  protected Document document = null;
+
+  /**
    * WSDL element list with line and column numbers.
    */
   protected WSDLElementList wsdlElementList = null;
@@ -90,7 +97,7 @@
       //wsdlReader.setFeature(com.ibm.wsdl.Constants.FEATURE_IMPORT_DOCUMENTS,true);
 
       // Parse the WSDL document
-      Document document = XMLUtils.parseXMLDocument(fileName);
+      document = XMLUtils.parseXMLDocument(fileName);
       this.definitions = wsdlReader.readWSDL(fileName, document);
 
       // Since inline schema validator is used by several assertions, validate all
@@ -124,6 +131,7 @@
   {
     this.fileName = fileName;
     this.definitions = definitions;
+    this.document = null;
     schemas.clear();
     schemasValidationErrors.clear();
   }
@@ -139,6 +147,28 @@
   }
 
   /**
+   * Get the document element of the WSDL document.
+   * @return the document element
+   */
+  public Document getDocument()
+  {
+    if (document == null && definitions != null)
+    {
+      try
+      {
+        document = XMLUtils.parseXMLDocument(definitions.getDocumentBaseURI());
+      }
+      catch (IOException ioe)
+      {
+      }
+      catch (WSIException wsie)
+      {
+      }
+    }
+    return document;
+  }
+
+  /**
    * Get the definition element of the WSDL document.
    * @return the definition element
    */
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/WSDLUtils.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/WSDLUtils.java
index f175be3..3a7b61b 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/WSDLUtils.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/WSDLUtils.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.wsdl;
 
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -381,4 +382,30 @@
 
     return returnSet;
   }
+  
+  public static boolean isSOAP12WSDL(WSDLDocument wsdlDocument)
+  {
+	boolean result = false;
+	if (wsdlDocument != null)
+	{
+	  Binding[] bindings = wsdlDocument.getBindings();
+	  List extensibilityElementList = new ArrayList();
+	  if (bindings != null)
+	  {
+		for (int i = 0; i < bindings.length; i++)
+			extensibilityElementList.addAll(bindings[i].getExtensibilityElements());
+		Iterator iterator = extensibilityElementList.iterator();
+		while (iterator.hasNext()) 
+		{
+		  ExtensibilityElement e = (ExtensibilityElement) iterator.next();
+			if (WSIConstants.NS_URI_WSDL_SOAP12.equals(e.getElementType().getNamespaceURI()))
+			{
+			  result = true;
+			  break;
+			}
+		}
+	  }
+	}
+    return result;
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/traversal/WSDLTraversal.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/traversal/WSDLTraversal.java
index 4a3569a..1abc2b5 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/traversal/WSDLTraversal.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/traversal/WSDLTraversal.java
@@ -9,7 +9,9 @@
  *   IBM - Initial API and implementation
  *******************************************************************************/
 package org.eclipse.wst.wsi.internal.core.wsdl.traversal;
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Vector;
 
@@ -147,12 +149,14 @@
   private boolean visitSOAPHeaderFault = false;
   private boolean visitSOAPOperation = false;
 
+  List alreadyTraversedDefinitions;
   /**
    * Default constructor.
    * @see java.lang.Object#Object()
    */
   public WSDLTraversal()
   {
+	alreadyTraversedDefinitions = new ArrayList();
   }
 
   /**
@@ -1822,16 +1826,20 @@
     Object parent,
     WSDLTraversalContext ctx)
   {
+	if ((objDefinition == null) || (this.alreadyTraversedDefinitions.contains(objDefinition)))
+	{
+	  return;	
+	}
+	this.alreadyTraversedDefinitions.add(objDefinition);
     ctx.resumeDefinitionProcessing();
     ctx.setDefinition(objDefinition);
+
     if (visitDefinition)
     {
       visitor.visit(objDefinition, parent, ctx);
       if (!ctx.processDefinition())
         return;
     }
-    if (objDefinition == null)
-      return;
     if (traverseDefinition2Import && objDefinition.getImports() != null)
     {
       Iterator it = objDefinition.getImports().values().iterator();
@@ -2560,7 +2568,18 @@
         return;
     }
     if (traverseImport2Definition)
-      traverse(objImport.getDefinition(), objImport, ctx);
+    {
+      try
+      {
+        Definition definition = objImport.getDefinition();
+        if ((definition != null) && (!alreadyTraversedDefinitions.contains(definition)))
+        {
+          alreadyTraversedDefinitions.add(definition);
+          traverse(objImport.getDefinition(), objImport, ctx);
+        }
+      }
+      catch (Exception e){}
+    }
   }
 
   /**
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLUtils.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLUtils.java
index 137833d..8622726 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLUtils.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/xml/XMLUtils.java
@@ -291,6 +291,8 @@
 		return document;
 	}
 
+	private static DocumentBuilder builder = null;
+
 	/**
 	 * Parse an XML document from a reader and return the document object.
 	 * 
@@ -307,19 +309,22 @@
 		{
     	  Thread.currentThread().setContextClassLoader(XMLUtils.class.getClassLoader());   
 
-  		  // Get the document factory
-		  DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
+    	  if (builder == null)
+    	  {
+  		    // Get the document factory
+		    DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
 
-		  // Set namespace aware, but for now do not validate
-		  factory.setNamespaceAware(true);
-		  factory.setIgnoringElementContentWhitespace(true);
+		    // Set namespace aware, but for now do not validate
+		    factory.setNamespaceAware(true);
+		    factory.setIgnoringElementContentWhitespace(true);
 
-		  // ADD: This should be set to true when we have access to the schema
-		  // document
-		  factory.setValidating(false);
+		    // ADD: This should be set to true when we have access to the schema
+		    // document
+		    factory.setValidating(false);
 
- 		  // Parse the document
-		  DocumentBuilder builder = factory.newDocumentBuilder();
+		    builder = factory.newDocumentBuilder();
+    	  }
+		  // Parse the document
 		  doc = builder.parse(source);
 		  // workaround for compatibility Xerces 2.2.1 with Xerces 2.6.2,
 		  // Xerces 2.6.2 supported XML 1.1 but WSI-tool and Xerces 2.2.1
@@ -366,19 +371,22 @@
 		  // Create input source
 		  InputSource inputSource = new InputSource(reader);
 
-		  // Get the document factory
-		  DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
+		  if (builder == null)
+		  {
+		    // Get the document factory
+		    DocumentBuilderFactory factory = new org.eclipse.wst.wsi.internal.core.xml.jaxp.DocumentBuilderFactoryImpl();
 
-		  // Set namespace aware, but for now do not validate
-		  factory.setNamespaceAware(true);
-		  factory.setIgnoringElementContentWhitespace(true);
+		    // Set namespace aware, but for now do not validate
+		    factory.setNamespaceAware(true);
+		    factory.setIgnoringElementContentWhitespace(true);
 
-		  // ADD: This should be set to true when we have access to the schema
-		  // document
-		  factory.setValidating(false);
+		    // ADD: This should be set to true when we have access to the schema
+		    // document
+		    factory.setValidating(false);
 
+		    builder = factory.newDocumentBuilder();
+		  }
 		  // Parse the document
-		  DocumentBuilder builder = factory.newDocumentBuilder();
 		  doc = builder.parse(inputSource);
 	   	  // workaround for compatibility Xerces 2.2.1 with Xerces 2.6.2,
 		  // Xerces 2.6.2 supported XML 1.1 but WSI-tool and Xerces 2.2.1
@@ -1297,17 +1305,17 @@
 			throw new IllegalArgumentException("Element can not be NULL");
 		if (attributeName == null)
 			throw new IllegalArgumentException("Attribute name can not be NULL");
-		if (attributeName.getLocalPart() == null)
+		String nsURI = attributeName.getNamespaceURI();
+		String localPart = attributeName.getLocalPart();
+		if (localPart == null)
 			throw new IllegalArgumentException(
 					"Local part of the attribute name can not be NULL");
 
-		attributeName.getNamespaceURI();
-		attributeName.getLocalPart();
-		Attr a = el.getAttributeNodeNS(attributeName.getNamespaceURI(),
-				attributeName.getLocalPart());
+		Attr a = el.getAttributeNodeNS(nsURI,
+				localPart);
 		if (a == null)
 			// try to get with null namespace
-			a = el.getAttributeNodeNS(null, attributeName.getLocalPart());
+			a = el.getAttributeNodeNS(null, localPart);
 		return a;
 	}
 
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/document/DocumentFactoryImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/document/DocumentFactoryImpl.java
index c29eaf0..f0c4bc3 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/document/DocumentFactoryImpl.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/document/DocumentFactoryImpl.java
@@ -13,8 +13,10 @@
 
 import org.eclipse.wst.wsi.internal.core.report.Report;
 import org.eclipse.wst.wsi.internal.core.report.ReportWriter;
-import org.eclipse.wst.wsi.internal.core.report.impl.ReportImpl;
+import org.eclipse.wst.wsi.internal.core.report.Reporter;
+import org.eclipse.wst.wsi.internal.report.NullReportImpl;
 import org.eclipse.wst.wsi.internal.report.ReportNoWriterImpl;
+import org.eclipse.wst.wsi.internal.report.SimpleReporter;
 
 /**
  * DocumentFactoryImpl
@@ -48,7 +50,15 @@
    */
   public Report newReport()
   {
-    return new ReportImpl();
+    return new NullReportImpl();
   }
 
+  /**
+   * Create a reporter.
+   * @return newly created reporter.
+   */
+  public Reporter newReporter(Report report, ReportWriter reportWriter)
+  {
+    return new SimpleReporter(report, reportWriter);
+  }
 }
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/report/NullReportImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/report/NullReportImpl.java
new file mode 100644
index 0000000..b9ae98d
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/report/NullReportImpl.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *   IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsi.internal.report;
+
+import org.eclipse.wst.wsi.internal.core.report.Report;
+import org.eclipse.wst.wsi.internal.core.report.impl.ReportImpl;
+
+/**
+ * Null report.
+ *
+ * @author Jeffrey Liu (jeffliu@ca.ibm.com)
+ */
+public class NullReportImpl extends ReportImpl implements Report
+{
+  /* (non-Javadoc)
+   * @see org.wsi.test.report.Report#getStartXMLString(java.lang.String)
+   */
+  public String getStartXMLString(String namespaceName)
+  {
+    return "";
+  }
+
+  /* (non-Javadoc)
+   * @see org.wsi.test.report.Report#getEndXMLString(java.lang.String)
+   */
+  public String getEndXMLString(String namespaceName)
+  {
+    return "";
+  }
+
+  /* (non-Javadoc)
+   * @see org.wsi.test.report.Report#getErrorXMLString(java.lang.String, java.lang.String)
+   */
+  public String getErrorXMLString(String namespaceName, String errorDetail)
+  {
+    return "";
+  }
+
+  /* (non-Javadoc)
+   * @see org.wsi.test.document.DocumentElement#toXMLString(java.lang.String)
+   */
+ public String toXMLString(String namespaceName)
+  {
+    return "";
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/report/SimpleReporter.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/report/SimpleReporter.java
new file mode 100644
index 0000000..8365e49
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/report/SimpleReporter.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *   IBM - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.wsi.internal.report;
+
+import org.eclipse.wst.wsi.internal.core.WSIException;
+import org.eclipse.wst.wsi.internal.core.report.ArtifactReference;
+import org.eclipse.wst.wsi.internal.core.report.AssertionResult;
+import org.eclipse.wst.wsi.internal.core.report.Report;
+import org.eclipse.wst.wsi.internal.core.report.ReportWriter;
+import org.eclipse.wst.wsi.internal.core.report.impl.DefaultReporter;
+
+/**
+ * This reporter does not write artifacts and assertions
+ */
+public class SimpleReporter extends DefaultReporter
+{
+  public SimpleReporter(Report report, ReportWriter reportWriter)
+  {
+    super(report, reportWriter);
+  }
+
+  /* (non-Javadoc)
+   * @see org.wsi.test.report.BuildReport#addArtifactReference(org.wsi.test.report.ArtifactReference)
+   */
+  public void addArtifactReference(ArtifactReference artifactReference)
+    throws WSIException
+  {
+    report.addArtifactReference(artifactReference);
+  }
+
+  /* (non-Javadoc)
+   * @see org.wsi.test.report.BuildReport#addAssertionResult(org.wsi.test.report.AssertionResult)
+   */
+  public void addAssertionResult(AssertionResult assertionResult)
+    throws WSIException
+  {
+    report.addAssertionResult(assertionResult);
+  }
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/validate/wsdl/WSDLValidator.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/validate/wsdl/WSDLValidator.java
index 6488f0d..13a7cb8 100644
--- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/validate/wsdl/WSDLValidator.java
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/validate/wsdl/WSDLValidator.java
@@ -90,6 +90,8 @@
 	  withAttachments = true;
 	}
 	String wsiLevel = WSITestToolsProperties.WARN_NON_WSI;
+	WSIPreferences wsiPreference = null;
+	String uri = valInfo.getFileURI();
 	if(attValue != null)
 	{
 	  String value = (String)attValue;
@@ -106,11 +108,13 @@
 	{
 	  if(WSITestToolsProperties.getEclipseContext())
 	  {
-		wsiLevel = WSITestToolsEclipseProperties.checkWSIPreferences(valInfo.getFileURI()).getComplianceLevel();
+		wsiPreference = WSITestToolsEclipseProperties.checkWSIPreferences(uri);
+		wsiLevel = wsiPreference.getComplianceLevel();
 	  }
 	  else
 	  {
-		wsiLevel = WSITestToolsProperties.checkWSIPreferences(valInfo.getFileURI()).getComplianceLevel();
+		wsiPreference = WSITestToolsProperties.checkWSIPreferences(uri);
+		wsiLevel = wsiPreference.getComplianceLevel();
 	  }
 	}
 	// If we are ignoring WS-I then don't run the tests.
@@ -122,7 +126,6 @@
   	wsiValid = true;
   	Definition definition = null;
 	boolean hasAnalyzerConfig = false;
-	String uri = valInfo.getFileURI();
   	try
   	{
       //WSDLFactory factory = WSDLFactory.newInstance();
@@ -171,8 +174,11 @@
 	    preferences.setTADFile(WSITestToolsProperties.SSBP_ASSERTION_FILE);
 	    wsdlAnalyzer = new WSDLAnalyzer(uri, preferences);
 	  }
-	  else
+	  else if(wsiPreference != null)
 	  {
+		wsdlAnalyzer = new WSDLAnalyzer(uri, wsiPreference);
+	  }
+	  else {
 		// default preference setting
 	  	wsdlAnalyzer = new WSDLAnalyzer(uri);
 	  }
diff --git a/docs/org.eclipse.jst.ws.axis.infopop/META-INF/MANIFEST.MF b/docs/org.eclipse.jst.ws.axis.infopop/META-INF/MANIFEST.MF
index cb557b0..e30241e 100644
--- a/docs/org.eclipse.jst.ws.axis.infopop/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.jst.ws.axis.infopop/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Web services Axis UI
 Bundle-SymbolicName: org.eclipse.jst.ws.axis.infopop; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.201.qualifier
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
-Eclipse-AutoStart: true
+Eclipse-LazyStart: true
diff --git a/docs/org.eclipse.jst.ws.axis.infopop/about.html b/docs/org.eclipse.jst.ws.axis.infopop/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.jst.ws.axis.infopop/about.html
+++ b/docs/org.eclipse.jst.ws.axis.infopop/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.jst.ws.axis.infopop/axisconsumptionui-f1Contexts.xml b/docs/org.eclipse.jst.ws.axis.infopop/axisconsumptionui-f1Contexts.xml
index 07ef125..edec21d 100644
--- a/docs/org.eclipse.jst.ws.axis.infopop/axisconsumptionui-f1Contexts.xml
+++ b/docs/org.eclipse.jst.ws.axis.infopop/axisconsumptionui-f1Contexts.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.contexts"?>
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
@@ -36,4 +36,55 @@
 <description>Use this panel to add customized package to namespace mappings.</description>
 </context>
 
+<!--WebServiceAxisPreferencePage.java-->
+
+<context id="PPAE0001">
+<!--Axis Emitter Preference Page-->
+<description>Use this panel to add customized package to namespace mappings.</description>
+</context>
+
+<context id="PPAE0002">
+<!--Generate code for all elements-->
+<description>By default, WSDL2Java only generates code for those elements in the WSDL file
+that are referenced.</description>
+</context>
+
+<context id="PPAE0003">
+<!--Emits separate Helper classes for metadata-->
+<description>If you select this option WSDL2Java will create a separate helper class that
+contains the metadata rather than including it in the skeleton.</description>
+</context>
+
+<context id="PPAE0004">
+<!--Prefers building beans to straight arrays for wrapped XML array types-->
+<description>If you would rather a specific JavaBean class (ArrayOfString) be generated
+for these types of schemas, select this option.</description>
+</context>
+
+<context id="PPAE0005">
+<!--Add scope to deploy.wsdd-->
+<description>This indicates how to deploy the server implementation. Application uses one
+instance of the implementation class for all requests. Request creates a new
+instance of the implementation class for each request. Session creates a new
+instance of the implementation class for each session.</description>
+</context>
+
+<context id="PPAE0006">
+<!--Timeout-->
+<description>The default is 45. Use -1 to disable the timeout.</description>
+</context>
+
+<context id="PPAE0007">
+<!--Look for allowed methods in inherited class-->
+<description>If this option is specified, the Java2WSDL parser will look into extended
+classes to determine the list of methods to export into the WSDL file.</description>
+</context>
+
+<context id="PPAE0010">
+<!--validate against JAXRPC-->
+<description>If selected, the tools will examine the Java service class and its
+value types to determine if it satisfies important requirements of the JAX-RPC
+specification.</description>
+</context>
+
 </contexts>
diff --git a/docs/org.eclipse.jst.ws.axis.infopop/axiscreationui-f1Contexts.xml b/docs/org.eclipse.jst.ws.axis.infopop/axiscreationui-f1Contexts.xml
index b9e7b19..8e6ddf6 100644
--- a/docs/org.eclipse.jst.ws.axis.infopop/axiscreationui-f1Contexts.xml
+++ b/docs/org.eclipse.jst.ws.axis.infopop/axiscreationui-f1Contexts.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.contexts"?>
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
@@ -42,10 +42,6 @@
 <!--URI field of the Bean Config Page-->
 <description>This field contains the unique identifier of the Web service. It is read-only.</description>
 </context>
-<context id="PBCF0006">
-<!--WSDL Folder field in the Bean Config Page-->
-<description>This field contains the folder where the WSDL file will be generated. It is read-only.</description>
-</context>
 <context id="PBCF0007">
 <!--WSDL File field of the Bean Config Page-->
 <description>This field contains the name of the WSDL file that will be generated. Accept the default or enter a new name.</description>
@@ -101,5 +97,4 @@
 <description>Select this check box to customize the mappings between packages and namespaces.</description>
 </context>
 
-
 </contexts>
diff --git a/docs/org.eclipse.jst.ws.axis.infopop/plugin.xml b/docs/org.eclipse.jst.ws.axis.infopop/plugin.xml
index 430617d..3c0dc11 100644
--- a/docs/org.eclipse.jst.ws.axis.infopop/plugin.xml
+++ b/docs/org.eclipse.jst.ws.axis.infopop/plugin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.toc"?> 
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/META-INF/MANIFEST.MF b/docs/org.eclipse.jst.ws.axis.ui.doc.user/META-INF/MANIFEST.MF
index b06c705..f3f2a79 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.axis.ui.doc.user; singleton:=true
-Bundle-Version: 1.0.2.qualifier
+Bundle-Version: 1.0.203.qualifier
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/about.html b/docs/org.eclipse.jst.ws.axis.ui.doc.user/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/about.html
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/build.properties b/docs/org.eclipse.jst.ws.axis.ui.doc.user/build.properties
index 363a491..ac5b709 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/build.properties
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/build.properties
@@ -1,6 +1,7 @@
 bin.includes = plugin.properties,\
                plugin.xml,\
                wsaxisbuild_toc.xml,\
+               org.eclipse.jst.ws.axis.ui.doc.userindex.xml,\
                about.html,\
                concepts/,\
                tasks/,\
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/build.xml b/docs/org.eclipse.jst.ws.axis.ui.doc.user/build.xml
index d577652..2df477f 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/build.xml
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/build.xml
@@ -25,7 +25,7 @@
 -->
 <project name="eclipsehelp" default="all">
 
-	<property name="dita.ot.dir" location="C:/DITA-OT1.2.1" />
+	<property name="dita.ot.dir" location="C:/DITA-OT1.2.2" />
 
 	<path id="dost.class.path">
 		<pathelement location="${dita.ot.dir}${file.separator}lib${file.separator}dost.jar" />
@@ -47,7 +47,7 @@
 			<property name="args.csspath" value="org.eclipse.wst.doc.user" />
 			<property name="args.eclipse.provider" value="Eclipse.org" />
 			<property name="args.eclipse.version" value="1.5.0" />
-			<property name="args.input" location="wsaxisbuild_toc.ditamap" />    		
+			<property name="args.input" location="wsaxisbuild_toc.ditamap" />   
 			<property name="clean.temp" value="true" />
 			<property name="dita.extname" value=".dita" />
 			<property name="dita.temp.dir" location="temp" />
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.dita b/docs/org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.dita
index 9fa3eb7..58ece02 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.dita
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="axisoverview" xml:lang="en-us">
 <title>Creating Web services with the Apache Axis run-time environment</title>
 <shortdesc>This run-time environment is for users who prefer to develop for
@@ -9,6 +10,10 @@
 SOAP to make the SOAP engine more flexible, configurable, and able to handle
 both SOAP and the upcoming XML Protocol specification from the W3C open-source
 effort.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>Axis</indexterm></indexterm><indexterm>Axis<indexterm>Web
+services</indexterm></indexterm></keywords>
+</metadata></prolog>
 <conbody>
 <section><title>Overview</title><p>Axis is based on JSR 101 <tm tmclass="special"
 tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm> APIs
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.html b/docs/org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.html
index fc209b9..339eeb9 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.html
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Creating Web services with the Apache Axis run-time environment" />
 <meta name="abstract" content="This run-time environment is for users who prefer to develop for the open Apache Axis platform. It is for non-production use only. Axis is the third generation of the Apache SOAP implementation. It evolved from Apache SOAP to make the SOAP engine more flexible, configurable, and able to handle both SOAP and the upcoming XML Protocol specification from the W3C open-source effort." />
 <meta name="description" content="This run-time environment is for users who prefer to develop for the open Apache Axis platform. It is for non-production use only. Axis is the third generation of the Apache SOAP implementation. It evolved from Apache SOAP to make the SOAP engine more flexible, configurable, and able to handle both SOAP and the upcoming XML Protocol specification from the W3C open-source effort." />
+<meta content="Web services, Axis, Web services" name="DC.subject" />
+<meta content="Web services, Axis, Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.html" />
@@ -18,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="axisoverview" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Creating Web services with the Apache Axis run-time environment</title>
 </head>
 <body id="axisoverview"><a name="axisoverview"><!-- --></a>
@@ -27,6 +29,7 @@
 <h1 class="topictitle1">Creating Web services with the Apache Axis run-time environment</h1>
 
 
+
 <div><p>This run-time environment is for users who prefer to develop for
 the open Apache Axis platform. It is for non-production use only. Axis is
 the third generation of the Apache SOAP implementation. It evolved from Apache
@@ -46,7 +49,7 @@
 on this site provides more in-depth information about using Web services with
 Apache Axis. The Reading Guide lists several documents to further your understanding
 of Axis.</p>
-<div class="note"><span class="notetitle">Note: </span>The support for Axis is limited to validation that the application
+<div class="note"><span class="notetitle">Note:</span> The support for Axis is limited to validation that the application
 is invoking the Axis emitters correctly. Support for other Axis issues should
 be directed to <a href="http://ws.apache.org/axis" target="_blank">http://ws.apache.org/axis</a></div>
 </div>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/myplugin.xml b/docs/org.eclipse.jst.ws.axis.ui.doc.user/myplugin.xml
index 8c0ab31..03aa2e8 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/myplugin.xml
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/myplugin.xml
@@ -14,6 +14,9 @@
   
 	<extension point="org.eclipse.help.toc">
 		<toc file="wsaxisbuild_toc.xml" />
-
 	</extension>
+	
+	<extension point="org.eclipse.help.index">
+      <index file="org.eclipse.jst.ws.axis.ui.doc.userindex.xml"/>
+</extension>
 </plugin>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/org.eclipse.jst.ws.axis.ui.doc.userindex.html b/docs/org.eclipse.jst.ws.axis.ui.doc.user/org.eclipse.jst.ws.axis.ui.doc.userindex.html
new file mode 100644
index 0000000..e27120a
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/org.eclipse.jst.ws.axis.ui.doc.userindex.html
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="security" content="public" />
+<meta name="Robots" content="index,follow" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta name="DC.Format" content="XHTML" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/ibmdita.css" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
+<title>Index</title>
+</head>
+<body>
+<h1>Index</h1>
+<strong>A</strong>
+<ul class="indexlist">
+<li>Axis
+<ul class="indexlist">
+<li><a href="concepts/caxistover.html#axisoverview">Web services</a>
+</li>
+</ul>
+</li>
+<li>Axis runtime environment
+<ul class="indexlist">
+<li><a href="tasks/tsklwsdla.html#tsklwsdla">creating a skeleton Web service</a>
+</li>
+<li><a href="tasks/twsbeana.html#twsbeana">creating a Web service</a>
+</li>
+<li><a href="tasks/tsampappa.html#tsampappa">creating a Web service client</a>
+</li>
+<li><a href="tasks/ttomcatserv.html#creatinganapachetomcatserver">creating an Apache Tomcat server</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong>T</strong>
+<ul class="indexlist">
+<li>Tomcat server
+<ul class="indexlist">
+<li><a href="tasks/ttomcatserv.html#creatinganapachetomcatserver">creating a server for Web services</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong>W</strong>
+<ul class="indexlist">
+<li>Web service clients
+<ul class="indexlist">
+<li><a href="tasks/tsampappa.html#tsampappa">creating with the Axis runtime environment</a>
+</li>
+</ul>
+</li>
+<li>Web services
+<ul class="indexlist">
+<li><a href="concepts/caxistover.html#axisoverview">Axis</a>
+</li>
+<li>Axis runtime environment
+<ul class="indexlist">
+<li><a href="tasks/tsklwsdla.html#tsklwsdla">creating a skeleton Web service</a>
+</li>
+<li><a href="tasks/twsbeana.html#twsbeana">creating a Web service</a>
+</li>
+<li><a href="tasks/tsampappa.html#tsampappa">creating a Web service client</a>
+</li>
+</ul>
+</li>
+<li><a href="tasks/ttomcatserv.html#creatinganapachetomcatserver">creating an Apache Tomcat server</a>
+</li>
+</ul>
+</li>
+</ul>
+</body></html>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/org.eclipse.jst.ws.axis.ui.doc.userindex.xml b/docs/org.eclipse.jst.ws.axis.ui.doc.user/org.eclipse.jst.ws.axis.ui.doc.userindex.xml
new file mode 100644
index 0000000..3b2c390
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/org.eclipse.jst.ws.axis.ui.doc.userindex.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<index>
+  <entry keyword="Web services">
+    <entry keyword="Axis">
+      <topic href="concepts/caxistover.html#axisoverview" title="Creating Web services with the Apache Axis run-time environment"/>
+    </entry>
+    <entry keyword="Axis runtime environment">
+      <entry keyword="creating a Web service">
+        <topic href="tasks/twsbeana.html#twsbeana" title="Creating a Web service from a Java bean using the Apache Axis run-time environment"/>
+      </entry>
+      <entry keyword="creating a skeleton Web service">
+        <topic href="tasks/tsklwsdla.html#tsklwsdla" title="Creating a Java bean skeleton from a WSDL document using the Apache Axis run-time environment"/>
+      </entry>
+      <entry keyword="creating a Web service client">
+        <topic href="tasks/tsampappa.html#tsampappa" title="Generating a Java client proxy and a sample application from a WSDL document using the Axis run-time environment"/>
+      </entry>
+    </entry>
+    <entry keyword="creating an Apache Tomcat server">
+      <topic href="tasks/ttomcatserv.html#creatinganapachetomcatserver" title="Creating an Apache Tomcat server and Web project"/>
+    </entry>
+  </entry>
+  <entry keyword="Axis">
+    <entry keyword="Web services">
+      <topic href="concepts/caxistover.html#axisoverview" title="Creating Web services with the Apache Axis run-time environment"/>
+    </entry>
+  </entry>
+  <entry keyword="Axis runtime environment">
+    <entry keyword="creating a Web service">
+      <topic href="tasks/twsbeana.html#twsbeana" title="Creating a Web service from a Java bean using the Apache Axis run-time environment"/>
+    </entry>
+    <entry keyword="creating a skeleton Web service">
+      <topic href="tasks/tsklwsdla.html#tsklwsdla" title="Creating a Java bean skeleton from a WSDL document using the Apache Axis run-time environment"/>
+    </entry>
+    <entry keyword="creating a Web service client">
+      <topic href="tasks/tsampappa.html#tsampappa" title="Generating a Java client proxy and a sample application from a WSDL document using the Axis run-time environment"/>
+    </entry>
+    <entry keyword="creating an Apache Tomcat server">
+      <topic href="tasks/ttomcatserv.html#creatinganapachetomcatserver" title="Creating an Apache Tomcat server and Web project"/>
+    </entry>
+  </entry>
+  <entry keyword="Web service clients">
+    <entry keyword="creating with the Axis runtime environment">
+      <topic href="tasks/tsampappa.html#tsampappa" title="Generating a Java client proxy and a sample application from a WSDL document using the Axis run-time environment"/>
+    </entry>
+  </entry>
+  <entry keyword="Tomcat server">
+    <entry keyword="creating a server for Web services">
+      <topic href="tasks/ttomcatserv.html#creatinganapachetomcatserver" title="Creating an Apache Tomcat server and Web project"/>
+    </entry>
+  </entry>
+</index>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/plugin.xml b/docs/org.eclipse.jst.ws.axis.ui.doc.user/plugin.xml
index 8c0ab31..03aa2e8 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/plugin.xml
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/plugin.xml
@@ -14,6 +14,9 @@
   
 	<extension point="org.eclipse.help.toc">
 		<toc file="wsaxisbuild_toc.xml" />
-
 	</extension>
+	
+	<extension point="org.eclipse.help.index">
+      <index file="org.eclipse.jst.ws.axis.ui.doc.userindex.xml"/>
+</extension>
 </plugin>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.dita b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.dita
index a8b2e50..967f628 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.dita
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tsampappa" xml:lang="en-us">
 <title>Generating a <tm tmclass="special" tmowner="Sun Microsystems, Inc."
 tmtype="tm" trademark="Java">Java</tm> client proxy and a sample application
@@ -13,9 +14,16 @@
 tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm> bean
 proxy and a sample application. The sample Web application demonstrates how
 to code a proxy file.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>Axis runtime environment<indexterm>creating
+a Web service client</indexterm></indexterm></indexterm><indexterm>Axis runtime
+environment<indexterm>creating a Web service client</indexterm></indexterm>
+<indexterm>Web service clients<indexterm>creating with the Axis runtime environment</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq><p>Prerequisites:</p><ol>
-<li conref="tsklwsdla.dita#tsklwsdla/createtomcatlink"></li>
+<li conref="twsbeana.dita#twsbeana/createtomcatlink"></li>
 <li>Discover and import a WSDL document into the Web project. You can only
 use a WSDL file that contains a service element.</li>
 </ol></prereq>
@@ -31,33 +39,44 @@
 Services</uicontrol> in order to display the various Web service wizards.
 Select the  <uicontrol>Web Service Client</uicontrol> wizard. Click  <uicontrol>Next</uicontrol>.</cmd>
 </step>
-<step><cmd>Web Services page: Select the type of proxy to be generated, and
-whether or not it will be tested.</cmd></step>
-<step><cmd>Client Environment Configuration page: Select the run-time environment
-and the server for your Web service client.</cmd>
+<step><cmd>Web Services page: </cmd>
 <substeps>
-<substep><cmd>Click  <uicontrol>Explore Options</uicontrol> and select the
-Apache Axis run-time environment and select the server on which you want to
-run your Web service client.</cmd></substep>
-<substep><cmd>Select the type and name of project in which you want the Web
-service client created.</cmd><info><ul>
-<li> If you enter the name of an existing project, the project type field
-must match that of the existing project. Ensure that the project selected
-as the Client Web Project is different from the Service Web Project, or the
-service will be overwritten by the client's generated artifacts.</li>
-<li>If you enter a name of a project that does not already exist, the wizard
-will create the project for you.</li>
-<li>Note that the only project type supported for Axis clients is a Web project.
-If you want the client to be created in a <tm tmclass="special" tmowner="Sun Microsystems, Inc."
-tmtype="tm" trademark="Java">Java</tm>, EJB, or Application Client project,
-you must select the <tm tmclass="ibm" tmowner="IBM Corporation" tmtype="reg"
-trademark="WebSphere">WebSphere</tm> run-time environment for your client.</li>
+<substep><cmd>Enter the URI to the WSDL, WSIL, or HTML file that will be used
+to generate the client.</cmd></substep>
+<substep><cmd>Select the type of proxy to be generated</cmd></substep>
+<substep><cmd>Select the stages of Web services development that you want
+to complete using the slider:</cmd><info><ul>
+<li>Develop: this will develop the WSDL definition and implementation of the
+Web service. This includes such tasks as creating the modules which will contain
+the generated code and Java files, as well as copying the Axis JARs..</li>
+<li>Assemble: this ensures the project that will host the Web service or client
+gets associated to an EAR when required by the target application server.</li>
+<li>Deploy: this will create the deployment code for the service.</li>
+<li>Install: this will install and configure the Web module and EARs on the
+target server.</li>
+<li>Start: this will start the server once the service has been installed
+on it. The server-config.wsdd file will be generated.</li>
+<li>Test: this will provide various options for testing the service, such
+as using the Web Service Explorer or sample JSPs.</li>
 </ul></info></substep>
+<substep><cmd>Select your server: the default server is displayed. If you
+want to deploy your client to a different server click the link to specify
+a different server.</cmd></substep>
+<substep><cmd>Select your runtime: the default runtime is displayed. If you
+want to deploy your client to a different runtime click the link to specify
+a different runtime.</cmd></substep>
+<substep><cmd>Select the client project: the project containing the project
+selected in your workspace is displayed. To select a different project and
+EAR click on the project link.</cmd><info>Ensure that the project selected
+as the Client Web Project is different from the Service Web Project, or the
+service will be overwritten by the client's generated artifacts.</info></substep>
+<substep><cmd>Monitor the Web service: this will send the Web service traffic
+through the TCP/IP Monitor, which allows you to watch the SOAP traffic generated
+by the Web service and to test this traffic for WS-I compliance. Alternately
+you can manually set up a TCP/IP monitor as described in <xref href="../../org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.dita"
+scope="peer">Using the TCP/IP Monitor to test Web services</xref></cmd></substep>
 </substeps>
 </step>
-<step><cmd>Web Service Selection page: Enter the URI to the WSDL, WSIL, or
-HTML file that will be used to generate the client. You can optionally generate
-a WSIL file from this file as well.</cmd></step>
 <step><cmd>Web Service Proxy page: This panel shows the options for the proxy.
 It lists the folder where the proxy will be generated, and you can optionally
 create custom mappings between namespaces and packages.</cmd></step>
@@ -65,11 +84,12 @@
  <uicontrol>Define custom mapping for namespace to package</uicontrol> on
 the previous page, you can enter your custom mapping pairs on this page by
 clicking  <uicontrol>Add</uicontrol>.</cmd></step>
-<step><cmd>Web Service Client Test page: Select the test facility that you
-will use to test the proxy, and the methods that you want included in the
-proxy. Note that the Universal Test Client (UTC) is only compatible with Web
-service clients deployed on <tm tmclass="ibm" tmowner="IBM Corporation" tmtype="reg"
-trademark="WebSphere">WebSphere</tm> servers.</cmd></step>
+<step><cmd>Web Service Client Test page: This page displays if you selected
+to test your client. Select the test facility that you will use to test the
+proxy, and the methods that you want included in the proxy. Note that the
+Universal Test Client (UTC) is only compatible with Web service clients deployed
+on <tm tmclass="ibm" tmowner="IBM Corporation" tmtype="reg" trademark="WebSphere">WebSphere</tm> servers.</cmd>
+</step>
 <step><cmd>Click  <uicontrol>Finish</uicontrol>. If you have selected to test
 the proxy, the test client will open in a browser window.</cmd></step>
 </steps>
@@ -79,20 +99,13 @@
 how to code the proxy file.</p><p>Once you have generated your <tm tmclass="special"
 tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm> client
 proxy, you may test the methods of the Web service through the proxy using
-Web Services sample JSPs or the Universal test client.</p><ul>
+Web Services sample JSPs or the Universal test client.</p><ul outputclass="wsclienttestoptions">
 <li>If you have selected to test the generated proxy using Web service JSPs,
 the proxy is launched in a Web browser at the following URL: <codeph>http://localhost: <varname>port</varname>/ <varname>WebProject</varname>Client/sample<i
 >BeanName</i>/ <varname>WebServiceName</varname>/TestClient.jsp</codeph> You
 can use this sample application to test the Web service by selecting a method,
 entering a value for the method, and clicking  <uicontrol>Invoke</uicontrol>.
 The result of the method will display in the results pane.</li>
-<li>If you have selected to test the generated proxy using the Universal Test
-Client, it will be launched in a browser window at the following URL:  <systemoutput>http://localhost:9080/UTC/preload?object= <varname>BeanPackage</varname
->. <varname>BeanServiceProxy</varname></systemoutput>. In the Reference pane,
-under Object References, expand the proxy stub to display the methods of the
-Web service. Click the method you want to test, enter a value in the Parameters
-pane, and click  <uicontrol>Invoke</uicontrol>. The result will be generated
-below.</li>
 <li>If you have selected to test the Web service using the Web Services Explorer,
 the Explorer will open. Select the operation you want to test, enter the required
 information, and click  <b>Go</b>. The result will display in the Status pane.</li>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.html b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.html
index b8abc00..24eb00d 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.html
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Generating a Java client proxy and a sample application from a WSDL document using the Axis run-time environment" />
 <meta name="abstract" content="The Web Service Client wizard assists you in generating a Java bean proxy and a sample application. The sample Web application demonstrates how to code a proxy file." />
 <meta name="description" content="The Web Service Client wizard assists you in generating a Java bean proxy and a sample application. The sample Web application demonstrates how to code a proxy file." />
+<meta content="Web services, Axis runtime environment, creating a Web service client, Axis runtime environment, creating a Web service client, Web service clients, creating with the Axis runtime environment" name="DC.subject" />
+<meta content="Web services, Axis runtime environment, creating a Web service client, Axis runtime environment, creating a Web service client, Web service clients, creating with the Axis runtime environment" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.html" />
@@ -18,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="tsampappa" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Generating a Java client proxy and a sample application from
 a WSDL document using the Axis run-time environment</title>
 </head>
@@ -30,6 +32,7 @@
 
 
 
+
 <div><p>The Web Service Client wizard assists you in generating a Java™ bean
 proxy and a sample application. The sample Web application demonstrates how
 to code a proxy file.</p>
@@ -61,41 +64,59 @@
 Select the  <span class="uicontrol">Web Service Client</span> wizard. Click  <span class="uicontrol">Next</span>.</span>
 </li>
 
-<li><span>Web Services page: Select the type of proxy to be generated, and
-whether or not it will be tested.</span></li>
-
-<li><span>Client Environment Configuration page: Select the run-time environment
-and the server for your Web service client.</span>
+<li><span>Web Services page: </span>
 <ol type="a">
-<li class="substepexpand"><span>Click  <span class="uicontrol">Explore Options</span> and select the
-Apache Axis run-time environment and select the server on which you want to
-run your Web service client.</span></li>
+<li class="substepexpand"><span>Enter the URI to the WSDL, WSIL, or HTML file that will be used
+to generate the client.</span></li>
 
-<li class="substepexpand"><span>Select the type and name of project in which you want the Web
-service client created.</span> <ul>
-<li> If you enter the name of an existing project, the project type field
-must match that of the existing project. Ensure that the project selected
-as the Client Web Project is different from the Service Web Project, or the
-service will be overwritten by the client's generated artifacts.</li>
+<li class="substepexpand"><span>Select the type of proxy to be generated</span></li>
 
-<li>If you enter a name of a project that does not already exist, the wizard
-will create the project for you.</li>
+<li class="substepexpand"><span>Select the stages of Web services development that you want
+to complete using the slider:</span> <ul>
+<li>Develop: this will develop the WSDL definition and implementation of the
+Web service. This includes such tasks as creating the modules which will contain
+the generated code and Java files, as well as copying the Axis JARs..</li>
 
-<li>Note that the only project type supported for Axis clients is a Web project.
-If you want the client to be created in a Java, EJB, or Application Client project,
-you must select the WebSphere<sup>®</sup> run-time environment for your client.</li>
+<li>Assemble: this ensures the project that will host the Web service or client
+gets associated to an EAR when required by the target application server.</li>
+
+<li>Deploy: this will create the deployment code for the service.</li>
+
+<li>Install: this will install and configure the Web module and EARs on the
+target server.</li>
+
+<li>Start: this will start the server once the service has been installed
+on it. The server-config.wsdd file will be generated.</li>
+
+<li>Test: this will provide various options for testing the service, such
+as using the Web Service Explorer or sample JSPs.</li>
 
 </ul>
 </li>
 
+<li class="substepexpand"><span>Select your server: the default server is displayed. If you
+want to deploy your client to a different server click the link to specify
+a different server.</span></li>
+
+<li class="substepexpand"><span>Select your runtime: the default runtime is displayed. If you
+want to deploy your client to a different runtime click the link to specify
+a different runtime.</span></li>
+
+<li class="substepexpand"><span>Select the client project: the project containing the project
+selected in your workspace is displayed. To select a different project and
+EAR click on the project link.</span> Ensure that the project selected
+as the Client Web Project is different from the Service Web Project, or the
+service will be overwritten by the client's generated artifacts.</li>
+
+<li class="substepexpand"><span>Monitor the Web service: this will send the Web service traffic
+through the TCP/IP Monitor, which allows you to watch the SOAP traffic generated
+by the Web service and to test this traffic for WS-I compliance. Alternately
+you can manually set up a TCP/IP monitor as described in <a href="../../org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html">Using the TCP/IP Monitor to test Web services</a></span></li>
+
 </ol>
 
 </li>
 
-<li><span>Web Service Selection page: Enter the URI to the WSDL, WSIL, or
-HTML file that will be used to generate the client. You can optionally generate
-a WSIL file from this file as well.</span></li>
-
 <li><span>Web Service Proxy page: This panel shows the options for the proxy.
 It lists the folder where the proxy will be generated, and you can optionally
 create custom mappings between namespaces and packages.</span></li>
@@ -105,10 +126,12 @@
 the previous page, you can enter your custom mapping pairs on this page by
 clicking  <span class="uicontrol">Add</span>.</span></li>
 
-<li><span>Web Service Client Test page: Select the test facility that you
-will use to test the proxy, and the methods that you want included in the
-proxy. Note that the Universal Test Client (UTC) is only compatible with Web
-service clients deployed on WebSphere servers.</span></li>
+<li><span>Web Service Client Test page: This page displays if you selected
+to test your client. Select the test facility that you will use to test the
+proxy, and the methods that you want included in the proxy. Note that the
+Universal Test Client (UTC) is only compatible with Web service clients deployed
+on WebSphere<sup>®</sup> servers.</span>
+</li>
 
 <li><span>Click  <span class="uicontrol">Finish</span>. If you have selected to test
 the proxy, the test client will open in a browser window.</span></li>
@@ -121,20 +144,13 @@
 <p>Once you have generated your Java client
 proxy, you may test the methods of the Web service through the proxy using
 Web Services sample JSPs or the Universal test client.</p>
-<ul>
+<ul class="wsclienttestoptions">
 <li>If you have selected to test the generated proxy using Web service JSPs,
 the proxy is launched in a Web browser at the following URL: <samp class="codeph">http://localhost: <var class="varname">port</var>/ <var class="varname">WebProject</var>Client/sample<em>BeanName</em>/ <var class="varname">WebServiceName</var>/TestClient.jsp</samp> You
 can use this sample application to test the Web service by selecting a method,
 entering a value for the method, and clicking  <span class="uicontrol">Invoke</span>.
 The result of the method will display in the results pane.</li>
 
-<li>If you have selected to test the generated proxy using the Universal Test
-Client, it will be launched in a browser window at the following URL:  <tt class="sysout">http://localhost:9080/UTC/preload?object= <var class="varname">BeanPackage</var>. <var class="varname">BeanServiceProxy</var></tt>. In the Reference pane,
-under Object References, expand the proxy stub to display the methods of the
-Web service. Click the method you want to test, enter a value in the Parameters
-pane, and click  <span class="uicontrol">Invoke</span>. The result will be generated
-below.</li>
-
 <li>If you have selected to test the Web service using the Web Services Explorer,
 the Explorer will open. Select the operation you want to test, enter the required
 information, and click  <strong>Go</strong>. The result will display in the Status pane.</li>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsklwsdla.dita b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsklwsdla.dita
index 8f17b90..8ca972c 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsklwsdla.dita
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsklwsdla.dita
@@ -15,12 +15,15 @@
 that correspond to the operations described in the WSDL document. When the
 bean is created, each method has a trivial implementation that you replace
 by editing the bean.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>Axis runtime environment<indexterm>creating
+a skeleton Web service</indexterm></indexterm></indexterm><indexterm>Axis
+runtime environment<indexterm>creating a skeleton Web service</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq><p>Prerequisites:</p><ol>
-<li id="createtomcatlink">If you are using the Apache Jakarta Tomcat servlet
-container as your server, you must install it, configure an instance of it,
-and create a Web project targeted to it as described in <xref href="ttomcatserv.dita"
-scope="local">Creating an Apache Tomcat server and Web project</xref></li>
+<li conref="twsbeana.dita#twsbeana/createtomcatlink"></li>
 <li>Create or import a WSDL file into the Web Content folder of the Web project.
 You can only use a WSDL file that contains a service element.</li>
 </ol></prereq>
@@ -36,34 +39,10 @@
 Select the  <uicontrol>Web Service</uicontrol> wizard. Click  <uicontrol>Next</uicontrol>.</cmd>
 </step>
 <step><cmd>Web Services page: select  <uicontrol>Top down Java bean Web service</uicontrol> as
-your Web service type. You can optionally choose to do the following: </cmd>
-<info conref="twsbeana.dita#twsbeana/createstep4ul"></info></step>
-<step><cmd>Web Service Selection page: Enter the URI to the WSDL, WSIL, or
-HTML file that will be used to generate the <tm tmclass="special" tmowner="Sun Microsystems, Inc."
-tmtype="tm" trademark="Java">Java</tm> bean. If you have selected the WSDL
-file before starting the wizard, this information should be prefilled. You
-can optionally generate a WSIL file from this file as well.</cmd><info> Ensure
-that there are no spaces at the beginning of the URI or you may generate a
-null pointer exception.</info></step>
-<step><cmd>Service Deployment Configuration page: specify the server and client
-deployment settings.</cmd>
-<substeps>
-<substep><cmd>Click  <uicontrol>Edit</uicontrol> and select the Apache Axis
-run-time environment and select the server on which you want to run your Web
-service and Web service client.</cmd></substep>
-<substep><cmd>Select the Web project in which you want your Web service created. </cmd>
-<info>The wizard will create this for you if they do not already exist.</info>
-</substep>
-<substep><cmd>Select the type and name of project in which you want the Web
-service client created. If you enter the name of an existing project, the
-project type field must match that of the existing project. If you enter a
-name of a project that does not already exist, the wizard will create the
-project for you. Note that the only project type supported for Axis clients
-is a Web project. If you want the client to be created in a <tm tmclass="special"
-tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm>, EJB,
-or Application Client project, you must select the <tm tmclass="ibm" tmowner="IBM Corporation"
-tmtype="reg" trademark="WebSphere">WebSphere</tm> run-time environment for
-your client.</cmd></substep>
+your Web service type, and select the artifact from which the service will
+be created.</cmd>
+<substeps conref="twsbeana.dita#twsbeana/createstep4ul">
+<substep><cmd></cmd></substep>
 </substeps>
 </step>
 <step><cmd>Web Services Skeleton <tm tmclass="special" tmowner="Sun Microsystems, Inc."
@@ -92,8 +71,8 @@
 options: </cmd>
 <substeps>
 <substep><cmd>Select your test facility. You can test the generated proxy
-in the Universal Test Client or the Web Service Explorer, or you can generate
-a sample Web service JSP.</cmd></substep>
+in the Web Service Explorer, or you can generate a sample Web service JSP.</cmd>
+</substep>
 <substep><cmd>If you selected to test the proxy through a JSP, you can select
 the folder where the JSP will be located, and you can select the methods that
 will be included in the JSP.</cmd></substep>
@@ -106,21 +85,14 @@
 and select the UDDI registry to which the Web service will be published. Click
  <uicontrol>Finish</uicontrol>.</cmd></step>
 </steps>
-<result>After the Web service has been created, the following may occur depending
-on the options you selected: <ul>
+<result conref="twsbeana.dita#twsbeana/axiswscreateresult">After the Web service
+has been created, the following may occur depending on the options you selected: <ul>
 <li>If you have selected to test the generated proxy using Web service JSPs,
 the proxy is launched in a Web browser at the following URL: <codeph>http://localhost: <varname>port</varname>/ <varname>WebProject</varname>Client/sample<i
 >BeanName</i>/<varname>WebServiceName</varname>/TestClient.jsp</codeph> You
 can use this sample application to test the Web service by selecting a method,
 entering a value for the method, and clicking  <uicontrol>Invoke</uicontrol>.
 The result of the method will display in the results pane.</li>
-<li>If you have selected to test the generated proxy using the Universal Test
-Client, it will be launched in a browser window at the following URL:  <systemoutput>http://localhost:9080/UTC/preload?object= <varname>BeanPackage</varname
->. <varname>BeanServiceProxy</varname></systemoutput>. In the Reference pane,
-under Object References, expand the proxy stub to display the methods of the
-Web service. Click the method you want to test, enter a value in the Parameters
-pane, and click  <uicontrol>Invoke</uicontrol>. The result will be generated
-below.</li>
 <li>If you have selected to test the Web service using the Web Services Explorer,
 the Explorer will open. Select the operation you want to test, enter the required
 information, and click  <b>Go</b>. The result will display in the Status pane.</li>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsklwsdla.html b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsklwsdla.html
index c640d9c..a7e8ff6 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsklwsdla.html
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsklwsdla.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Creating a Java bean skeleton from a WSDL document using the Apache Axis run-time environment" />
 <meta name="abstract" content="The Web service wizard assists you in creating a skeleton bean from an existing WSDL document. The skeleton bean contains a set of methods that correspond to the operations described in the WSDL document. When the bean is created, each method has a trivial implementation that you replace by editing the bean." />
 <meta name="description" content="The Web service wizard assists you in creating a skeleton bean from an existing WSDL document. The skeleton bean contains a set of methods that correspond to the operations described in the WSDL document. When the bean is created, each method has a trivial implementation that you replace by editing the bean." />
+<meta content="Web services, Axis runtime environment, creating a skeleton Web service, Axis runtime environment, creating a skeleton Web service" name="DC.subject" />
+<meta content="Web services, Axis runtime environment, creating a skeleton Web service, Axis runtime environment, creating a skeleton Web service" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/tasks/toverws.html" />
@@ -19,7 +21,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="tsklwsdla" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Creating a Java bean skeleton from a WSDL document using the
 Apache Axis run-time environment</title>
 </head>
@@ -31,6 +33,7 @@
 
 
 
+
 <div><p>The Web service wizard assists you in creating a skeleton bean
 from an existing WSDL document. The skeleton bean contains a set of methods
 that correspond to the operations described in the WSDL document. When the
@@ -39,7 +42,7 @@
 
 <div class="p"><p>Prerequisites:</p>
 <ol>
-<li id="tsklwsdla__createtomcatlink"><a name="tsklwsdla__createtomcatlink"><!-- --></a>If you are using the Apache Jakarta Tomcat servlet
+<li>If you are using the Apache Jakarta Tomcat servlet
 container as your server, you must install it, configure an instance of it,
 and create a Web project targeted to it as described in <a href="ttomcatserv.html">Creating an Apache Tomcat server and Web project</a></li>
 
@@ -53,104 +56,104 @@
 run-time environment:</div>
 
 <ol>
-<li class="stepexpand"><span>Switch to the J2EE perspective (<span class="uicontrol">Window &gt; Open Perspective
+<li><span>Switch to the J2EE perspective (<span class="uicontrol">Window &gt; Open Perspective
 &gt; J2EE</span>).</span></li>
 
-<li class="stepexpand"><span>In the Project Explorer view, select the WSDL file that you created
+<li><span>In the Project Explorer view, select the WSDL file that you created
 or imported into the Web Content folder of your Web project.</span></li>
 
-<li class="stepexpand"><span>Click  <span class="uicontrol">File &gt; New &gt; Other</span>. Select  <span class="uicontrol">Web
+<li><span>Click  <span class="uicontrol">File &gt; New &gt; Other</span>. Select  <span class="uicontrol">Web
 Services</span> in order to display the various Web service wizards.
 Select the  <span class="uicontrol">Web Service</span> wizard. Click  <span class="uicontrol">Next</span>.</span>
 </li>
 
-<li class="stepexpand"><span>Web Services page: select  <span class="uicontrol">Top down Java bean Web service</span> as
-your Web service type. You can optionally choose to do the following: </span>
- <ul>
-<li>Start the Web service in a Web project - if you do not select this option
-you will have to manually start the Web service. You must select this option
-to enable the other options on this page.</li>
+<li><span>Web Services page: select  <span class="uicontrol">Top down Java bean Web service</span> as
+your Web service type, and select the artifact from which the service will
+be created.</span>
+<ol type="a">
+<li class="substepexpand"><span>Select the stages of Web services development that you want
+to complete using the slider:</span> <ul>
+<li>Develop: this will develop the WSDL definition and implementation of the
+Web service. This includes such tasks as creating the modules which will contain
+the generated code, WSDL files, deployment descriptors, and Java files when
+appropriate.</li>
 
-<li>Launch the Web Services Explorer to publish your Web service to a UDDI
-registry.</li>
+<li>Assemble: this ensures the project that will host the Web service or client
+gets associated to an EAR when required by the target application server.</li>
 
-<li>Generate a Java™ bean client proxy to the Web service. The Java bean
-client proxy that is generated provides a remote procedure call interface
-to the Web service.</li>
+<li>Deploy: this will create the deployment code for the service.</li>
 
-<li>Test the Web service - this allows you to test the Web service in the
-Web Service Explorer before a proxy is generated.</li>
+<li>Install: this will install and configure the Web module and EARs on the
+target server.</li>
 
-<li>Send the Web service traffic through the TCP/IP Monitor, which allows
-you to watch the SOAP traffic generated by the Web service and to test this
-traffic for WS-I compliance. Note that this is only supported for Tomcat v4.0
-and v4.1. If you are using Tomcat v5.0 and want to monitor the Web service
-traffic, you need to manually set up a TCP/IP monitor as described in <a href="../../org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html">Using the TCP/IP Monitor to test Web services</a></li>
+<li>Start: this will start the server once the service has been installed
+on it. The server-config.wsdd file will be generated.</li>
+
+<li>Test: this will provide various options for testing the service, such
+as using the Web Service Explorer or sample JSPs.</li>
 
 </ul>
 </li>
 
-<li class="stepexpand"><span>Web Service Selection page: Enter the URI to the WSDL, WSIL, or
-HTML file that will be used to generate the Java bean. If you have selected the WSDL
-file before starting the wizard, this information should be prefilled. You
-can optionally generate a WSIL file from this file as well.</span>  Ensure
-that there are no spaces at the beginning of the URI or you may generate a
-null pointer exception.</li>
+<li class="substepexpand"><span>Select your server: the default server is displayed. If you
+want to deploy your service to a different server click the link to specify
+a different server.</span></li>
 
-<li class="stepexpand"><span>Service Deployment Configuration page: specify the server and client
-deployment settings.</span>
-<ol type="a">
-<li class="substepexpand"><span>Click  <span class="uicontrol">Edit</span> and select the Apache Axis
-run-time environment and select the server on which you want to run your Web
-service and Web service client.</span></li>
+<li class="substepexpand"><span>Select your runtime: the default runtime is displayed. If you
+want to deploy your service to a different runtime click the link to specify
+a different runtime.</span></li>
 
-<li class="substepexpand"><span>Select the Web project in which you want your Web service created. </span>
- The wizard will create this for you if they do not already exist.
-</li>
+<li class="substepexpand"><span>Select the service project: the project containing the project
+selected in your workspace is displayed. To select a different project and
+EAR click on the project link.</span> Ensure that the project selected
+as the Client Web Project is different from the Service Web Project, or the
+service will be overwritten by the client's generated artifacts.</li>
 
-<li class="substepexpand"><span>Select the type and name of project in which you want the Web
-service client created. If you enter the name of an existing project, the
-project type field must match that of the existing project. If you enter a
-name of a project that does not already exist, the wizard will create the
-project for you. Note that the only project type supported for Axis clients
-is a Web project. If you want the client to be created in a Java, EJB,
-or Application Client project, you must select the WebSphere<sup>®</sup> run-time environment for
-your client.</span></li>
+<li class="substepexpand"><span>If you want to create a client, select the type of proxy to
+be generated and repeat the above steps for the client.</span></li>
+
+<li class="substepexpand"><span>Publish the Web service: this will launch the Web Services Explorer
+to publish your Web service to a UDDI registry.</span></li>
+
+<li class="substepexpand"><span>Monitor the Web service: this will send the Web service traffic
+through the TCP/IP Monitor, which allows you to watch the SOAP traffic generated
+by the Web service and to test this traffic for WS-I compliance. Alternately
+you can manually set up a TCP/IP monitor as described in <a href="../../org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html">Using the TCP/IP Monitor to test Web services</a></span></li>
 
 </ol>
 
 </li>
 
-<li class="stepexpand"><span>Web Services Skeleton Java Bean Configuration page: Select the
+<li><span>Web Services Skeleton Java™ Bean Configuration page: Select the
 folder where the generated Java will be stored. If you want to review
 or edit the mappings between packages and namespaces, select the  <span class="uicontrol">Define
 custom mapping for namespace to package</span> check box. Click  <span class="uicontrol">Next</span>.</span>
 </li>
 
-<li class="stepexpand"><span>Web Service Namespace to Package Mappings page: if you selected
+<li><span>Web Service Namespace to Package Mappings page: if you selected
  <span class="uicontrol">Define custom mapping for package to namespace</span> on
 the previous panel, you can enter your custom mapping pairs on this panel
 by clicking  <span class="uicontrol">Add.</span> Click  <span class="uicontrol">Next</span>.</span>
 </li>
 
-<li class="stepexpand"><span>Web Service Test page: If you selected to test the Web service,
+<li><span>Web Service Test page: If you selected to test the Web service,
 select the test facility for the generated Web service. This will open the
 Web service in the Web Services Explorer. Select the operation you want to
 test, enter the required information, and click  <span class="uicontrol">Go</span>.
 The result will display in the Status pane. Click  <span class="uicontrol">Next</span>.</span>
 </li>
 
-<li class="stepexpand"><span>Web Service Proxy page: If you have selected to generate a proxy,
+<li><span>Web Service Proxy page: If you have selected to generate a proxy,
 this page shows the options for the proxy. It lists the folder where the proxy
 will be generated, and you can optionally create custom mappings between namespaces
 and packages. Click  <span class="uicontrol">Next</span>.</span></li>
 
-<li class="stepexpand"><span>Web Service Client Test page: Use this page to select the following
+<li><span>Web Service Client Test page: Use this page to select the following
 options: </span>
 <ol type="a">
 <li><span>Select your test facility. You can test the generated proxy
-in the Universal Test Client or the Web Service Explorer, or you can generate
-a sample Web service JSP.</span></li>
+in the Web Service Explorer, or you can generate a sample Web service JSP.</span>
+</li>
 
 <li><span>If you selected to test the proxy through a JSP, you can select
 the folder where the JSP will be located, and you can select the methods that
@@ -163,27 +166,20 @@
 
 </li>
 
-<li class="stepexpand"><span>Web Service Publication page: If you have selected to publish your
+<li><span>Web Service Publication page: If you have selected to publish your
 Web service to a UDDI registry, use this page to launch the Web Services Explorer
 and select the UDDI registry to which the Web service will be published. Click
  <span class="uicontrol">Finish</span>.</span></li>
 
 </ol>
 
-<div class="section">After the Web service has been created, the following may occur depending
-on the options you selected: <ul>
+<div class="section"><div class="p">After the Web service has been created,
+the following may occur depending on the options you selected: <ul>
 <li>If you have selected to test the generated proxy using Web service JSPs,
-the proxy is launched in a Web browser at the following URL: <samp class="codeph">http://localhost: <var class="varname">port</var>/ <var class="varname">WebProject</var>Client/sample<em>BeanName</em>/<var class="varname">WebServiceName</var>/TestClient.jsp</samp> You
-can use this sample application to test the Web service by selecting a method,
-entering a value for the method, and clicking  <span class="uicontrol">Invoke</span>.
-The result of the method will display in the results pane.</li>
-
-<li>If you have selected to test the generated proxy using the Universal Test
-Client, it will be launched in a browser window at the following URL:  <tt class="sysout">http://localhost:9080/UTC/preload?object= <var class="varname">BeanPackage</var>. <var class="varname">BeanServiceProxy</var></tt>. In the Reference pane,
-under Object References, expand the proxy stub to display the methods of the
-Web service. Click the method you want to test, enter a value in the Parameters
-pane, and click  <span class="uicontrol">Invoke</span>. The result will be generated
-below.</li>
+the proxy is launched in a Web browser at the following URL: http://localhost: <var class="varname">port</var>/ <var class="varname">WebProject</var>Client/sample<em>BeanName</em>/ <var class="varname">WebServiceName</var>/TestClient.jsp You can use
+this sample application to test the Web service by selecting a method, entering
+a value for the method, and clicking  <span class="uicontrol">Invoke</span>. The result
+of the method will display in the results pane.</li>
 
 <li>If you have selected to test the Web service using the Web Services Explorer,
 the Explorer will open. Select the operation you want to test, enter the required
@@ -191,11 +187,12 @@
 
 <li>If you have selected to publish the Web service, the Web Services Explorer
 is launched displaying the page required to publish your Web service. Follow
-the instructions in <var class="varname">Publishing the Web service</var> to complete
+the instructions in  <var class="varname">Publishing the Web service</var> to complete
 this task.</li>
 
 </ul>
 </div>
+</div>
 
 </div>
 
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.dita b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.dita
index 93b3e17..780302c 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.dita
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.dita
@@ -7,6 +7,12 @@
 <shortdesc>If you plan to create a Web service that uses Apache Jakarta Tomcat
 as its server, Tomcat must be installed and a server created before you begin
 creating your Web service.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>creating an Apache Tomcat server</indexterm></indexterm>
+<indexterm>Axis runtime environment<indexterm>creating an Apache Tomcat server</indexterm></indexterm>
+<indexterm>Tomcat server<indexterm>creating a server for Web services</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Install Apache Jakarta Tomcat from this URL: <xref href="http://jakarta.apache.org/tomcat"
 scope="external">http://jakarta.apache.org/tomcat</xref></prereq>
@@ -15,8 +21,8 @@
 <steps>
 <step><cmd>From the File menu, select <uicontrol>New > Other > Server > Server
 > Next</uicontrol>.</cmd></step>
-<step><cmd>Select Tomcat v 3.x, 4.x or v5.x<?Pub Caret?> as the server type,
-electing the correct version of Tomcat for your install, and click <uicontrol>Next</uicontrol>.</cmd>
+<step><cmd>Select Tomcat v 3.x, 4.x or v5.x as the server type, electing the
+correct version of Tomcat for your install, and click <uicontrol>Next</uicontrol>.</cmd>
 </step>
 <step><cmd>On the Tomcat server page:</cmd>
 <substeps>
@@ -40,11 +46,11 @@
 that you have created:</p><ol>
 <li>Create the service Web project by selecting <uicontrol>New > Web > Dynamic
 Web project</uicontrol>. Enter the following information: <ul>
-<li>Web Project: enter a project name</li>
-<li>Servlet version: 2.3</li>
-<li>Target Server: Tomcat server v3.x, 4.x or 5.x depending on the version
-you installed</li>
-<li>Ensure that <uicontrol>Add Module to an EAR module</uicontrol> is <i>not</i> selected.</li>
+<li>Project Name: enter a project name</li>
+<li>Target runtime: Tomcat server v3.x, 4.x or 5.x depending on the version
+you installed. If it is not listed, click New and browse to the location where
+it is installed.</li>
+<li>Ensure that <uicontrol>Add project to an EAR</uicontrol> is <i>not</i> selected.</li>
 </ul></li>
 <li>Click <uicontrol>Finish</uicontrol>.</li>
 <li>To associate the project with the server, right-click the Tomcat server
@@ -54,4 +60,3 @@
 </ol></example>
 </taskbody>
 </task>
-<?Pub *0000003035?>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.html b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.html
index 99299b3..7564222 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.html
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,10 +11,12 @@
 <meta name="DC.Title" content="Creating an Apache Tomcat server and Web project" />
 <meta name="abstract" content="If you plan to create a Web service that uses Apache Jakarta Tomcat as its server, Tomcat must be installed and a server created before you begin creating your Web service." />
 <meta name="description" content="If you plan to create a Web service that uses Apache Jakarta Tomcat as its server, Tomcat must be installed and a server created before you begin creating your Web service." />
+<meta content="Web services, creating an Apache Tomcat server, Axis runtime environment, Tomcat server, creating a server for Web services" name="DC.subject" />
+<meta content="Web services, creating an Apache Tomcat server, Axis runtime environment, Tomcat server, creating a server for Web services" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="creatinganapachetomcatserver" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Creating an Apache Tomcat server and Web project</title>
 </head>
 <body id="creatinganapachetomcatserver"><a name="creatinganapachetomcatserver"><!-- --></a>
@@ -23,6 +25,7 @@
 <h1 class="topictitle1">Creating an Apache Tomcat server and Web project</h1>
 
 
+
 <div><p>If you plan to create a Web service that uses Apache Jakarta Tomcat
 as its server, Tomcat must be installed and a server created before you begin
 creating your Web service.</p>
@@ -36,8 +39,8 @@
 <li class="stepexpand"><span>From the File menu, select <span class="uicontrol">New &gt; Other &gt; Server &gt; Server
 &gt; Next</span>.</span></li>
 
-<li class="stepexpand"><span>Select Tomcat v 3.x, 4.x or v5.x as the server type,
-electing the correct version of Tomcat for your install, and click <span class="uicontrol">Next</span>.</span>
+<li class="stepexpand"><span>Select Tomcat v 3.x, 4.x or v5.x as the server type, electing the
+correct version of Tomcat for your install, and click <span class="uicontrol">Next</span>.</span>
 </li>
 
 <li class="stepexpand"><span>On the Tomcat server page:</span>
@@ -70,14 +73,13 @@
 <ol>
 <li>Create the service Web project by selecting <span class="uicontrol">New &gt; Web &gt; Dynamic
 Web project</span>. Enter the following information: <ul>
-<li>Web Project: enter a project name</li>
+<li>Project Name: enter a project name</li>
 
-<li>Servlet version: 2.3</li>
+<li>Target runtime: Tomcat server v3.x, 4.x or 5.x depending on the version
+you installed. If it is not listed, click New and browse to the location where
+it is installed.</li>
 
-<li>Target Server: Tomcat server v3.x, 4.x or 5.x depending on the version
-you installed</li>
-
-<li>Ensure that <span class="uicontrol">Add Module to an EAR module</span> is <em>not</em> selected.</li>
+<li>Ensure that <span class="uicontrol">Add project to an EAR</span> is <em>not</em> selected.</li>
 
 </ul>
 </li>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/twsbeana.dita b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/twsbeana.dita
index ef2cbeb..6f031d0 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/twsbeana.dita
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/twsbeana.dita
@@ -16,11 +16,23 @@
 client proxy and sample application to test the Web service. When you have
 completed testing, you can publish your Web service to a UDDI Business Registry
 using the Export wizard.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>Axis runtime environment<indexterm>creating
+a Web service</indexterm></indexterm></indexterm><indexterm>Axis runtime environment<indexterm>creating
+a Web service</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
 <prereq><p>Prerequisites:<ol>
-<li conref="tsklwsdla.dita#tsklwsdla/createtomcatlink"></li>
+<li id="createtomcatlink">If you are using the Apache Jakarta Tomcat servlet
+container as your server, you must install it, configure an instance of it,
+and create a Web project targeted to it as described in <xref href="ttomcatserv.dita"
+scope="local">Creating an Apache Tomcat server and Web project</xref></li>
 <li>Create or import a bean into the <tm tmclass="special" tmowner="Sun Microsystems, Inc."
-tmtype="tm" trademark="Java">Java</tm> source folder of the Web project.</li>
+tmtype="tm" trademark="Java">Java</tm> source folder of the Web project. To
+import, select the <b>Java Resources: src</b> folder, and from the file menu
+select <menucascade><uicontrol>Import</uicontrol><uicontrol>General</uicontrol>
+<uicontrol>File System</uicontrol></menucascade> and browse to where your
+package is.</li>
 </ol></p></prereq>
 <context>To create a Web service from a bean using the Apache Axis run-time
 environment:</context>
@@ -34,64 +46,50 @@
 Select the  <uicontrol>Web Service</uicontrol> wizard. Click  <uicontrol>Next</uicontrol>.</info>
 </step>
 <step><cmd>Web Services page: select  <uicontrol>Bottom up Java bean Web service</uicontrol> as
-your Web service type. You can optionally choose to do the following: </cmd>
-<info id="createstep4ul"><ul>
-<li>Start the Web service in a Web project - if you do not select this option
-you will have to manually start the Web service. You must select this option
-to enable the other options on this page.</li>
-<li>Launch the Web Services Explorer to publish your Web service to a UDDI
-registry.</li>
-<li>Generate a <tm tmclass="special" tmowner="Sun Microsystems, Inc." tmtype="tm"
-trademark="Java">Java</tm> bean client proxy to the Web service. The <tm tmclass="special"
-tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm> bean
-client proxy that is generated provides a remote procedure call interface
-to the Web service.</li>
-<li>Test the Web service - this allows you to test the Web service in the
-Web Service Explorer before a proxy is generated.</li>
-<li>Send the Web service traffic through the TCP/IP Monitor, which allows
-you to watch the SOAP traffic generated by the Web service and to test this
-traffic for WS-I compliance. Note that this is only supported for Tomcat v4.0
-and v4.1. If you are using Tomcat v5.0 and want to monitor the Web service
-traffic, you need to manually set up a TCP/IP monitor as described in <xref
-href="../../org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.dita" scope="peer">Using
-the TCP/IP Monitor to test Web services</xref></li>
-</ul></info></step>
-<step><cmd>Object selection page: select the <tm tmclass="special" tmowner="Sun Microsystems, Inc."
-tmtype="tm" trademark="Java">Java</tm> bean from which the Web service will
-be created.</cmd></step>
-<step><cmd>Service Deployment Configuration page: specify the server and client
-deployment settings.</cmd>
-<substeps>
-<substep><cmd>Click  <uicontrol>Edit</uicontrol> and select the Apache Axis
-run-time environment and select the server on which you want to run your Web
-service and Web service client.</cmd></substep>
-<substep><cmd>Select the Web project in which you want your Web service created,
-and the EAR with which it will be associated. </cmd><info>The wizard will
-create these for you if they do not already exist.</info></substep>
-<substep><cmd>Select the type and name of project in which you want the Web
-service client created. If you enter the name of an existing project, the
-project type field must match that of the existing project. If you enter a
-name of a project that does not already exist, the wizard will create the
-project for you. Note that the only project type supported for Axis clients
-is a Web project. If you want the client to be created in a <tm tmclass="special"
-tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm>, EJB,
-or Application Client project, you must select the <tm tmclass="ibm" tmowner="IBM Corporation"
-tmtype="reg" trademark="WebSphere">WebSphere</tm> run-time environment for
-your client.</cmd></substep>
-<substep><cmd>Select an existing EAR or enter a unique name to associate the
-Web service client with a different EAR than the Web service EAR. <b>Note:</b> Selecting
-different EARs for the Web service and Web service client can reduce the chance
-of encountering run time errors, but will use more system resources.</cmd>
-</substep>
+your Web service type, and enter the URI to the WSDL, WSIL, or HTML file that
+will be used to generate the service.</cmd>
+<substeps id="createstep4ul">
+<substep><cmd>Select the stages of Web services development that you want
+to complete using the slider:</cmd><info><ul>
+<li>Develop: this will develop the WSDL definition and implementation of the
+Web service. This includes such tasks as creating the modules which will contain
+the generated code, WSDL files, deployment descriptors, and Java files when
+appropriate.</li>
+<li>Assemble: this ensures the project that will host the Web service or client
+gets associated to an EAR when required by the target application server.</li>
+<li>Deploy: this will create the deployment code for the service.</li>
+<li>Install: this will install and configure the Web module and EARs on the
+target server.</li>
+<li>Start: this will start the server once the service has been installed
+on it. The server-config.wsdd file will be generated.</li>
+<li>Test: this will provide various options for testing the service, such
+as using the Web Service Explorer or sample JSPs.</li>
+</ul></info></substep>
+<substep><cmd>Select your server: the default server is displayed. If you
+want to deploy your service to a different server click the link to specify
+a different server.</cmd></substep>
+<substep><cmd>Select your runtime: the default runtime is displayed. If you
+want to deploy your service to a different runtime click the link to specify
+a different runtime.</cmd></substep>
+<substep><cmd>Select the service project: the project containing the project
+selected in your workspace is displayed. To select a different project and
+EAR click on the project link.</cmd><info>Ensure that the project selected
+as the Client Web Project is different from the Service Web Project, or the
+service will be overwritten by the client's generated artifacts.</info></substep>
+<substep><cmd>If you want to create a client, select the type of proxy to
+be generated and repeat the above steps for the client.</cmd></substep>
+<substep><cmd>Publish the Web service: this will launch the Web Services Explorer
+to publish your Web service to a UDDI registry.</cmd></substep>
+<substep><cmd>Monitor the Web service: this will send the Web service traffic
+through the TCP/IP Monitor, which allows you to watch the SOAP traffic generated
+by the Web service and to test this traffic for WS-I compliance. Alternately
+you can manually set up a TCP/IP monitor as described in <xref href="../../org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.dita"
+scope="peer">Using the TCP/IP Monitor to test Web services</xref></cmd></substep>
 </substeps>
 </step>
-<step><cmd>A message will display stating that you have made a WS-I non-compliant
-selection.</cmd><info>The Apache Axis run-time environment is not WS-I compliant.
-Select <uicontrol>Ignore</uicontrol>.</info></step>
 <step><cmd>Web Service <tm tmclass="special" tmowner="Sun Microsystems, Inc."
 tmtype="tm" trademark="Java">Java</tm> Bean Identity page: the Web service
-URI and WSDL name will be listed.</cmd><info>You&nbsp; have the following
-options:<ul>
+WSDL name will be listed.</cmd><info>You have the following options:<ul>
 <li>Select the methods to expose.</li>
 <li>Select the encoding style. RPC/Encoded is the recommended encoding style
 for the Axis run-time environment. This encoding method is not WS-I compliant.</li>
@@ -113,8 +111,8 @@
 options: </cmd>
 <substeps>
 <substep><cmd>Select your test facility. You can test the generated proxy
-in the Universal Test Client or the Web Service Explorer, or you can generate
-a sample Web service JSP.</cmd></substep>
+in the Web Service Explorer, or you can generate a sample Web service JSP.</cmd>
+</substep>
 <substep><cmd>If you selected to test the proxy through a JSP, you can select
 the folder where the JSP will be located, and you can select the methods that
 will be included in the JSP.</cmd></substep>
@@ -128,21 +126,14 @@
 from Java. ClassNotFound: &lt;bean name></codeph>. This error can be safely
 ignored.</info></step>
 </steps>
-<result><p>After the Web service has been created, the following may occur
-depending on the options you selected: <ul>
+<result id="axiswscreateresult"><p>After the Web service has been created,
+the following may occur depending on the options you selected: <ul>
 <li>If you have selected to test the generated proxy using Web service JSPs,
 the proxy is launched in a Web browser at the following URL: http://localhost: <varname>port</varname>/ <varname>WebProject</varname>Client/sample<i
 >BeanName</i>/ <varname>WebServiceName</varname>/TestClient.jsp You can use
 this sample application to test the Web service by selecting a method, entering
 a value for the method, and clicking  <uicontrol>Invoke</uicontrol>. The result
 of the method will display in the results pane.</li>
-<li>If you have selected to test the generated proxy using the Universal Test
-Client, it will be launched in a browser window at the following URL:  <systemoutput>http://localhost:9080/UTC/preload?object= <varname>BeanPackage</varname
->. <varname>BeanServiceProxy</varname></systemoutput>. In the Reference pane,
-under Object References, expand the proxy stub to display the methods of the
-Web service. Click the method you want to test, enter a value in the Parameters
-pane, and click  <uicontrol>Invoke</uicontrol>. The result will be generated
-below.</li>
 <li>If you have selected to test the Web service using the Web Services Explorer,
 the Explorer will open. Select the operation you want to test, enter the required
 information, and click  <b>Go</b>. The result will display in the Status pane.</li>
@@ -150,15 +141,11 @@
 is launched displaying the page required to publish your Web service. Follow
 the instructions in  <varname>Publishing the Web service</varname> to complete
 this task.</li>
-</ul></p><p> <uicontrol>Important:</uicontrol> If your methods contain types,
+</ul></p></result>
+<postreq><p> <uicontrol>Important:</uicontrol> If your methods contain types,
 not supported by the sample, such as arrays, indexed properties, and collections,
 the methods will be omitted from the sample and you will receive a warning
-message.</p><p>Once you have created your Web service from a bean, you may
-test the methods of your Web service, using the Universal Test Client, and
-then publish your Web service to a UDDI Business Registry. For more information
-on publishing your Web service using the Web Services Explorer, refer to Publishing
-a Web service.&nbsp; For more information on the Universal Test Client, refer
-to the Server tools online help.</p></result>
+message.</p></postreq>
 </taskbody>
 <related-links>
 <linklist><title>Related Concepts</title>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/twsbeana.html b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/twsbeana.html
index 48634b9..f5f9dbe 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/twsbeana.html
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/tasks/twsbeana.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Creating a Web service from a Java bean using the Apache Axis run-time environment" />
 <meta name="abstract" content="The Web Service wizard assists you in creating a new Web service, configuring it for deployment, and deploying the Web service to a server. Once your Web service is deployed, the wizard assists you in generating the client proxy and sample application to test the Web service. When you have completed testing, you can publish your Web service to a UDDI Business Registry using the Export wizard." />
 <meta name="description" content="The Web Service wizard assists you in creating a new Web service, configuring it for deployment, and deploying the Web service to a server. Once your Web service is deployed, the wizard assists you in generating the client proxy and sample application to test the Web service. When you have completed testing, you can publish your Web service to a UDDI Business Registry using the Export wizard." />
+<meta content="Web services, Axis runtime environment, creating a Web service" name="DC.subject" />
+<meta content="Web services, Axis runtime environment, creating a Web service" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/tasks/toverws.html" />
@@ -19,7 +21,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="twsbeana" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Creating a Web service from a Java bean using the Apache Axis
 run-time environment</title>
 </head>
@@ -31,6 +33,7 @@
 
 
 
+
 <div><p>The Web Service wizard assists you in creating a new Web service,
 configuring it for deployment, and deploying the Web service to a server.
 Once your Web service is deployed, the wizard assists you in generating the
@@ -39,11 +42,15 @@
 using the Export wizard.</p>
 
 <div class="p"><div class="p">Prerequisites:<ol>
-<li>If you are using the Apache Jakarta Tomcat servlet
+<li id="twsbeana__createtomcatlink"><a name="twsbeana__createtomcatlink"><!-- --></a>If you are using the Apache Jakarta Tomcat servlet
 container as your server, you must install it, configure an instance of it,
 and create a Web project targeted to it as described in <a href="ttomcatserv.html">Creating an Apache Tomcat server and Web project</a></li>
 
-<li>Create or import a bean into the Java™ source folder of the Web project.</li>
+<li>Create or import a bean into the Java™ source folder of the Web project. To
+import, select the <strong>Java Resources: src</strong> folder, and from the file menu
+select <span class="menucascade"><span class="uicontrol">Import</span> &gt; <span class="uicontrol">General</span>
+ &gt; <span class="uicontrol">File System</span></span> and browse to where your
+package is.</li>
 
 </ol>
 </div>
@@ -65,71 +72,64 @@
 </li>
 
 <li class="stepexpand"><span>Web Services page: select  <span class="uicontrol">Bottom up Java bean Web service</span> as
-your Web service type. You can optionally choose to do the following: </span>
- <ul>
-<li>Start the Web service in a Web project - if you do not select this option
-you will have to manually start the Web service. You must select this option
-to enable the other options on this page.</li>
+your Web service type, and enter the URI to the WSDL, WSIL, or HTML file that
+will be used to generate the service.</span>
+<a name="twsbeana__createstep4ul"><!-- --></a><ol type="a" id="twsbeana__createstep4ul">
+<li class="substepexpand"><span>Select the stages of Web services development that you want
+to complete using the slider:</span> <ul>
+<li>Develop: this will develop the WSDL definition and implementation of the
+Web service. This includes such tasks as creating the modules which will contain
+the generated code, WSDL files, deployment descriptors, and Java files when
+appropriate.</li>
 
-<li>Launch the Web Services Explorer to publish your Web service to a UDDI
-registry.</li>
+<li>Assemble: this ensures the project that will host the Web service or client
+gets associated to an EAR when required by the target application server.</li>
 
-<li>Generate a Java bean client proxy to the Web service. The Java bean
-client proxy that is generated provides a remote procedure call interface
-to the Web service.</li>
+<li>Deploy: this will create the deployment code for the service.</li>
 
-<li>Test the Web service - this allows you to test the Web service in the
-Web Service Explorer before a proxy is generated.</li>
+<li>Install: this will install and configure the Web module and EARs on the
+target server.</li>
 
-<li>Send the Web service traffic through the TCP/IP Monitor, which allows
-you to watch the SOAP traffic generated by the Web service and to test this
-traffic for WS-I compliance. Note that this is only supported for Tomcat v4.0
-and v4.1. If you are using Tomcat v5.0 and want to monitor the Web service
-traffic, you need to manually set up a TCP/IP monitor as described in <a href="../../org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html">Using the TCP/IP Monitor to test Web services</a></li>
+<li>Start: this will start the server once the service has been installed
+on it. The server-config.wsdd file will be generated.</li>
+
+<li>Test: this will provide various options for testing the service, such
+as using the Web Service Explorer or sample JSPs.</li>
 
 </ul>
 </li>
 
-<li class="stepexpand"><span>Object selection page: select the Java bean from which the Web service will
-be created.</span></li>
+<li class="substepexpand"><span>Select your server: the default server is displayed. If you
+want to deploy your service to a different server click the link to specify
+a different server.</span></li>
 
-<li class="stepexpand"><span>Service Deployment Configuration page: specify the server and client
-deployment settings.</span>
-<ol type="a">
-<li class="substepexpand"><span>Click  <span class="uicontrol">Edit</span> and select the Apache Axis
-run-time environment and select the server on which you want to run your Web
-service and Web service client.</span></li>
+<li class="substepexpand"><span>Select your runtime: the default runtime is displayed. If you
+want to deploy your service to a different runtime click the link to specify
+a different runtime.</span></li>
 
-<li class="substepexpand"><span>Select the Web project in which you want your Web service created,
-and the EAR with which it will be associated. </span> The wizard will
-create these for you if they do not already exist.</li>
+<li class="substepexpand"><span>Select the service project: the project containing the project
+selected in your workspace is displayed. To select a different project and
+EAR click on the project link.</span> Ensure that the project selected
+as the Client Web Project is different from the Service Web Project, or the
+service will be overwritten by the client's generated artifacts.</li>
 
-<li class="substepexpand"><span>Select the type and name of project in which you want the Web
-service client created. If you enter the name of an existing project, the
-project type field must match that of the existing project. If you enter a
-name of a project that does not already exist, the wizard will create the
-project for you. Note that the only project type supported for Axis clients
-is a Web project. If you want the client to be created in a Java, EJB,
-or Application Client project, you must select the WebSphere<sup>®</sup> run-time environment for
-your client.</span></li>
+<li class="substepexpand"><span>If you want to create a client, select the type of proxy to
+be generated and repeat the above steps for the client.</span></li>
 
-<li class="substepexpand"><span>Select an existing EAR or enter a unique name to associate the
-Web service client with a different EAR than the Web service EAR. <strong>Note:</strong> Selecting
-different EARs for the Web service and Web service client can reduce the chance
-of encountering run time errors, but will use more system resources.</span>
-</li>
+<li class="substepexpand"><span>Publish the Web service: this will launch the Web Services Explorer
+to publish your Web service to a UDDI registry.</span></li>
+
+<li class="substepexpand"><span>Monitor the Web service: this will send the Web service traffic
+through the TCP/IP Monitor, which allows you to watch the SOAP traffic generated
+by the Web service and to test this traffic for WS-I compliance. Alternately
+you can manually set up a TCP/IP monitor as described in <a href="../../org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html">Using the TCP/IP Monitor to test Web services</a></span></li>
 
 </ol>
 
 </li>
 
-<li class="stepexpand"><span>A message will display stating that you have made a WS-I non-compliant
-selection.</span> The Apache Axis run-time environment is not WS-I compliant.
-Select <span class="uicontrol">Ignore</span>.</li>
-
 <li class="stepexpand"><span>Web Service Java Bean Identity page: the Web service
-URI and WSDL name will be listed.</span> You  have the following
-options:<ul>
+WSDL name will be listed.</span> You have the following options:<ul>
 <li>Select the methods to expose.</li>
 
 <li>Select the encoding style. RPC/Encoded is the recommended encoding style
@@ -159,8 +159,8 @@
 options: </span>
 <ol type="a">
 <li><span>Select your test facility. You can test the generated proxy
-in the Universal Test Client or the Web Service Explorer, or you can generate
-a sample Web service JSP.</span></li>
+in the Web Service Explorer, or you can generate a sample Web service JSP.</span>
+</li>
 
 <li><span>If you selected to test the proxy through a JSP, you can select
 the folder where the JSP will be located, and you can select the methods that
@@ -181,21 +181,14 @@
 
 </ol>
 
-<div class="section"><div class="p">After the Web service has been created, the following may occur
-depending on the options you selected: <ul>
+<div class="section" id="twsbeana__axiswscreateresult"><a name="twsbeana__axiswscreateresult"><!-- --></a><div class="p">After the Web service has been created,
+the following may occur depending on the options you selected: <ul>
 <li>If you have selected to test the generated proxy using Web service JSPs,
 the proxy is launched in a Web browser at the following URL: http://localhost: <var class="varname">port</var>/ <var class="varname">WebProject</var>Client/sample<em>BeanName</em>/ <var class="varname">WebServiceName</var>/TestClient.jsp You can use
 this sample application to test the Web service by selecting a method, entering
 a value for the method, and clicking  <span class="uicontrol">Invoke</span>. The result
 of the method will display in the results pane.</li>
 
-<li>If you have selected to test the generated proxy using the Universal Test
-Client, it will be launched in a browser window at the following URL:  <tt class="sysout">http://localhost:9080/UTC/preload?object= <var class="varname">BeanPackage</var>. <var class="varname">BeanServiceProxy</var></tt>. In the Reference pane,
-under Object References, expand the proxy stub to display the methods of the
-Web service. Click the method you want to test, enter a value in the Parameters
-pane, and click  <span class="uicontrol">Invoke</span>. The result will be generated
-below.</li>
-
 <li>If you have selected to test the Web service using the Web Services Explorer,
 the Explorer will open. Select the operation you want to test, enter the required
 information, and click  <strong>Go</strong>. The result will display in the Status pane.</li>
@@ -207,16 +200,12 @@
 
 </ul>
 </div>
-<p> <span class="uicontrol">Important:</span> If your methods contain types,
+</div>
+
+<div class="section"><p> <span class="uicontrol">Important:</span> If your methods contain types,
 not supported by the sample, such as arrays, indexed properties, and collections,
 the methods will be omitted from the sample and you will receive a warning
 message.</p>
-<p>Once you have created your Web service from a bean, you may
-test the methods of your Web service, using the Universal Test Client, and
-then publish your Web service to a UDDI Business Registry. For more information
-on publishing your Web service using the Web Services Explorer, refer to Publishing
-a Web service.  For more information on the Universal Test Client, refer
-to the Server tools online help.</p>
 </div>
 
 </div>
diff --git a/docs/org.eclipse.jst.ws.axis.ui.doc.user/wsaxisbuild_toc.ditamap b/docs/org.eclipse.jst.ws.axis.ui.doc.user/wsaxisbuild_toc.ditamap
index 3c86830..26af6b5 100644
--- a/docs/org.eclipse.jst.ws.axis.ui.doc.user/wsaxisbuild_toc.ditamap
+++ b/docs/org.eclipse.jst.ws.axis.ui.doc.user/wsaxisbuild_toc.ditamap
@@ -1,8 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
+<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN"
+ "map.dtd">
 <map anchorref="../org.eclipse.jst.ws.doc.user/wscreationt1_toc.ditamap#wsaxis"
 id="wsaxis" title="wsaxis">
+<topicmeta>
+<copyright>
+<copyryear year="2000"/>
+<copyryear year="2006"/>
+<copyrholder> Copyright (c) 2000, 2005 IBM 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:  IBM Corporation - initial API and implementation</copyrholder>
+</copyright>
+</topicmeta>
 <topicref href="concepts/caxistover.dita" navtitle="Axis runtime" toc="no">
 <topicref href="tasks/twsbeana.dita" navtitle="Creating a Web service from a Java bean">
 </topicref>
diff --git a/docs/org.eclipse.jst.ws.consumption.infopop/META-INF/MANIFEST.MF b/docs/org.eclipse.jst.ws.consumption.infopop/META-INF/MANIFEST.MF
index a450cd0..8da9cf1 100644
--- a/docs/org.eclipse.jst.ws.consumption.infopop/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.jst.ws.consumption.infopop/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.consumption.infopop; singleton:=true
-Bundle-Version: 1.0.201.qualifier
+Bundle-Version: 1.0.202.qualifier
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
diff --git a/docs/org.eclipse.jst.ws.consumption.infopop/about.html b/docs/org.eclipse.jst.ws.consumption.infopop/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.jst.ws.consumption.infopop/about.html
+++ b/docs/org.eclipse.jst.ws.consumption.infopop/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.jst.ws.consumption.infopop/build.properties b/docs/org.eclipse.jst.ws.consumption.infopop/build.properties
index d5d8fea..e19612f 100644
--- a/docs/org.eclipse.jst.ws.consumption.infopop/build.properties
+++ b/docs/org.eclipse.jst.ws.consumption.infopop/build.properties
@@ -3,6 +3,5 @@
                wscreationui-f1Contexts.xml,\
                about.html,\
                META-INF/,\
-               wsui-f1Contexts.xml,\
                plugin.properties
 src.includes = build.properties
diff --git a/docs/org.eclipse.jst.ws.consumption.infopop/plugin.xml b/docs/org.eclipse.jst.ws.consumption.infopop/plugin.xml
index 3b80770..cc9d1f8 100644
--- a/docs/org.eclipse.jst.ws.consumption.infopop/plugin.xml
+++ b/docs/org.eclipse.jst.ws.consumption.infopop/plugin.xml
@@ -2,7 +2,7 @@
 <?eclipse version="3.0"?>
 <?NLS TYPE="org.eclipse.help.toc"?> 
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2007 IBM 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
diff --git a/docs/org.eclipse.jst.ws.consumption.infopop/wsconsumptionui-f1Contexts.xml b/docs/org.eclipse.jst.ws.consumption.infopop/wsconsumptionui-f1Contexts.xml
index 983b31d..7ccce3f 100644
--- a/docs/org.eclipse.jst.ws.consumption.infopop/wsconsumptionui-f1Contexts.xml
+++ b/docs/org.eclipse.jst.ws.consumption.infopop/wsconsumptionui-f1Contexts.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.contexts"?>
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2007 IBM 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
@@ -13,7 +13,6 @@
 <contexts>
 <!-- new v6 preference page-->
 <context id="SRPF0001">
-<!--server preference on the server runtime preference page-->
 <description>Select the default Web server to be used for Web service creation.</description>
 </context>
 <context id="SRPF0002">
@@ -31,6 +30,82 @@
 <description>Use this wizard to add and remove handlers for a Web service. The order in which they are listed represents the order in which the handlers will be acted upon.</description>
 </context>
 
+<!--WebServiceWizNewFirstPage-->
+<context id="WSWSCEN0001">
+<!-- First Page-->
+<description>On this page select the artifact from which your Web client will be created, and the stages of Web services development that you want
+to complete:
+- Develop: this will create the client code
+- Assemble: this ensures that the project that will host the client gets associated to an EAR when required by the target application server
+- Deploy: this will create the deployment code for the client
+- Install: this will install the client on the chosen server
+- Start: this will start the server once the client has been installed on it
+- Test: this will provide various options for testing the client
+Select the server and runtime for your Web client, and whether or not you want to publish or monitor the service.
+</description>
+</context>
+
+<context id="WSWSCEN0014">
+<!--Monitor checkbox of the First Page-->
+<description>Monitor the Web service: this will send the Web service traffic
+through the TCP/IP Monitor, which allows you to watch the SOAP traffic generated
+by the Web service and to test this traffic for WS-I compliance.</description>
+</context>
+
+<context id="WSWSCEN0020">
+<!--Service implementation field of the First Page-->
+<description>Enter the URI to the WSDL, WSIL, or HTML file that
+will be used to generate the service</description>
+</context>
+
+<context id="WSWSCEN0022">
+<!--Server link of the First Page-->
+<description>Select your server: the default server is displayed. If you
+want to deploy your service to a different server click the link to specify
+a different server.</description>
+</context>
+
+<context id="WSWSCEN0023">
+<!--runtime link of the First Page-->
+<description>Select your runtime: the default runtime is displayed. If you
+want to deploy your service to a different runtime click the link to specify
+a different runtime.</description>
+</context>
+
+<context id="WSWSCEN0024">
+<!--projects link of the First Page-->
+<description>Select the service project: the project containing the project
+selected in your workspace is displayed. To select a different project and
+EAR click on the project link. Ensure that the project selected
+as the Client Web Project is different from the Service Web Project, or the
+service will be overwritten by the client's generated artifacts.</description>
+</context>
+
+<context id="WSWSCEN0025">
+<!--client type combo of the First Page-->
+<description>The Java bean client proxy that is generated provides a remote procedure call interface to the Web service.</description>
+</context>
+
+<context id="WSWSCEN0026">
+<!--Client slider of the First Page-->
+<description>Select the stages of Web services client development that you want
+to complete using the slider:
+- Develop: this will create the client code
+- Assemble: this ensures that the project that will host the client gets associated to an EAR when required by the target application server
+- Deploy: this will create the deployment code for the client
+- Install: this will install the client on the chosen server
+- Start: this will start the server once the client has been installed on it
+- Test: this will provide various options for testing the client
+</description>
+</context>
+
+<context id="WSWSCEN0030">
+<!--file overwrite checkbox of the First Page-->
+<description>This allows you to overwrite files without receiving a warning message asking for confirmation when overwriting files.</description>
+</context>
+
+
+
 <context id="WSIL0001">
 <!--  WSIL Import Page-->
 <description>Enter the required information to generate a standardized WSDL reference (WSIL) document in your project.</description>
@@ -51,25 +126,6 @@
 <description>This lists all the WSDL URIs that will be included in the WSIL document.</description>
 </context>
 
-<!--WebServiceTPBeanClassPage.java-->
-<context id="PBCL0001">
-<!--PBCL0001 for the Bean Selection Page-->
-<description>Use this page to select the Java bean or class used to create the Web service.</description>
-</context>
-<context id="PBCL0002">
-<!--PBCL0002 for the Bean Selection field of the Bean Selection Page-->
-<description>Enter the name of the Java bean to be used to create the Web service. Defaults the selected Java bean. Click <b>Browse classes </b>to view the bean class of the selected Java bean. The bean class is a model or template (an abstract data type) that can be instantiated to create objects with a common definition and therefore, common properties, operations, and behavior. Click <b>Browse files </b>to select a Java bean from the project.</description>
-</context>
-<context id="PBCL0003">
-<!--PBCL0003 for the Bean Class Browse button of the Bean Selection Page-->
-<description>Click to view the bean class of the selected Java bean.</description>
-</context>
-<context id="PBCL0004">
-<!--PBCL0004 for the Bean Resource Browse button of the Bean Selection Page-->
-<description>Browse to the correct Java bean to be used to create the Web service.</description>
-</context>
-
-
 <context id="PWPR0001">
 <!-- Project Page -->
 <description>Select the type of Web service you want to generate and any file and folder options for your Web service.</description>
@@ -136,6 +192,35 @@
 </context>
 
 
+<!--WebServiceTPBeanClassPage.java-->
+<context id="PBCL0001">
+<!--PBCL0001 for the Bean Selection Page-->
+<description>Use this page to select the Java bean or class used to create the Web service.</description>
+</context>
+<context id="PBCL0002">
+<!--PBCL0002 for the Bean Selection field of the Bean Selection Page-->
+<description>Enter the name of the Java bean to be used to create the Web service. Defaults the selected Java bean. Click <b>Browse classes </b>to view the bean class of the selected Java bean. The bean class is a model or template (an abstract data type) that can be instantiated to create objects with a common definition and therefore, common properties, operations, and behavior. Click <b>Browse files </b>to select a Java bean from the project.</description>
+</context>
+<context id="PBCL0003">
+<!--PBCL0003 for the Bean Class Browse button of the Bean Selection Page-->
+<description>Click to view the bean class of the selected Java bean.</description>
+</context>
+<context id="PBCL0004">
+<!--PBCL0004 for the Bean Resource Browse button of the Bean Selection Page-->
+<description>Browse to the correct Java bean to be used to create the Web service.</description>
+</context>
+
+<context id="PWPB0001">
+<!--  UDDI Publish Page -->
+<description>Select to launch the Web Services Explorer to allow you to publish the Web service.</description>
+</context>
+
+<context id="PWPB0002">
+<!--  UDDI Launch check box of the UDDI Publish Page-->
+<description>If selected will launch the Web Services Explorer to allow you to publish the Web service.</description>
+</context>
+
+
 <context id="PEBD0001">
 <!-- EAR Projects drop-down box -->
 <description>Select from the listed EAR projects.</description>
@@ -198,30 +283,24 @@
 <description>Browse to the location of an existing WSIL document</description>
 </context>
 
-
-<context id="PWPB0001">
-<!--  UDDI Publish Page -->
-<description>Select to launch the Web Services Explorer to allow you to publish the Web service.</description>
-</context>
-
-<context id="PWPB0002">
-<!--  UDDI Launch check box of the UDDI Publish Page-->
-<description>If selected will launch the Web Services Explorer to allow you to publish the Web service.</description>
-</context>
-
 <context id="PWRS0001">
 <!--  Run-time/servers in the Web Service type-->
 <description>Select the scenario configuration for run-time environments, servers, and projects.</description>
 </context>
 
+<context id="PWRS0002">
+<!--  Run-time/servers in the Web Service type-->
+<description>Select the scenario configuration for run-time environments, servers, and projects.</description>
+</context>
+
 <context id="PWRS0004">
 <!--  service-side run-time environment selection of the run-time environment selection Page-->
-<description>This is the server-side run-time environment which the Web service will use. To change this click Edit.</description>
+<description>This is the server-side run-time environment which the Web service will use.</description>
 </context>
 
 <context id="PWRS0005">
 <!-- service-side server selection of the run-time environment selection Page-->
-<description>This is the server-side server on which the Web service will run. To change this click Edit.</description>
+<description>This is the server-side server on which the Web service will run.</description>
 </context>
 
 <context id="PWRS0006">
@@ -234,14 +313,14 @@
 <description>Select the EJB project in which the Web service will be created.</description>
 </context>
 
-<context id="PWRS0008">
+<context id="PWRS0003">
 <!--  client-side run-time environment selection of the run-time environment selection Page-->
-<description>This is the client-side run-time environment which the Web service will use. To change this click Edit.</description>
+<description>This is the client-side run-time environment which the Web service will use.</description>
 </context>
 
 <context id="PWRS0009">
 <!-- client-side server selection of the run-time environment selection Page-->
-<description>This is the client-side server on which the Web service will run. To change this click Edit.</description>
+<description>This is the client-side server on which the Web service will run.</description>
 </context>
 
 <context id="PWRS0010">
@@ -347,7 +426,35 @@
 <description>Enter the password used for HTTP basic authentication.</description>
 </context>
 
+<!--TopologyPreferencePage.java-->
 
+<context id="PTPP0001">
+<!--PTPP0001 for the Topology Preference Page-->
+<description>These tables respresents the the types of projects available into which you can generate 
+a Web service or client. You cannot add or remove project types, however you can change the order in which 
+they appear in the Web services wizard. This is useful if you are creating several Web services that use 
+the same type of service or client project because you can set that service or client project type as the default. To change 
+the order, select a project type and use the up and down arrows to move it within the list. Changing the 
+order of the list does not restrict your ability to select any of the options.
+If you select the check box, by default the Web services wizard will generate the Web services 
+server and client code into different EARs. It is recommended that you enable this feature.
+</description>
+</context>
+
+<context id="PTPP0002">
+<!--PTPP0002 for the Topology Preference Page-->
+<description>This table respresents the the types of projects available into which you can generate a 
+Web services client. You cannot add or remove project types, however you can change the order 
+in which they appear in the Web services wizard. This is useful if you are creating several Web 
+services that use the same type of client project because you can set that client project type as 
+the default. To change the order, select a project type and use the up and down arrows to move it 
+within the list. Changing the order of the list does not restrict your ability to select any of the options.</description>
+</context>
+
+<context id="PTPP0005">
+<!--PTPP0002 for the Topology Preference Page-->
+<description>If you select this check box, by default the Web services wizard will generate the Web services server and client code into different EARs. It is recommended that you enable this feature.</description>
+</context>
 
 
 </contexts>
diff --git a/docs/org.eclipse.jst.ws.consumption.infopop/wscreationui-f1Contexts.xml b/docs/org.eclipse.jst.ws.consumption.infopop/wscreationui-f1Contexts.xml
index 42ee42e..d2ccfe8 100644
--- a/docs/org.eclipse.jst.ws.consumption.infopop/wscreationui-f1Contexts.xml
+++ b/docs/org.eclipse.jst.ws.consumption.infopop/wscreationui-f1Contexts.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.contexts"?>
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2007 IBM 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
@@ -12,7 +12,10 @@
  *******************************************************************************/ -->
 <contexts>
 
-<!--Important - all infopops taken from wsconsumptionui-f1Contexts.xml - use that as translation source-->
+<context id="PWRS0002">
+<!--  Run-time/servers in the Web Service type-->
+<description>Select the scenario configuration for run-time environments, servers, and projects.</description>
+</context>
 
 <context id="PWPR0001">
 <!-- Project Page -->
@@ -66,5 +69,104 @@
 <description>Click this to launch the Web service in a browser window to test it.</description>
 </context>
 
+<!--WebServiceWizNewFirstPage-->
+
+<context id="WSWSCEN0001">
+<!-- First Page-->
+<description>On this page select the artifact from which your Web service or client will be created, and the stages of Web services development that you want
+to complete:
+- Develop: this will create the service code
+- Assemble: this ensures that the project that will host the Web service or client gets associated to an EAR when required by the target application server
+- Deploy: this will create the deployment code for the service
+- Install: this will install the service on the chosen server
+- Start: this will start the server once the service has been installed on it
+- Test: this will provide various options for testing the service
+Select the server and runtime for your Web service or client, and whether or not you want to publish or monitor the service.
+</description>
+</context>
+
+<context id="WSWSCEN0010">
+<!--Web service type combo box of the First Page-->
+<description>Select the type of Web service you want to create. A bottom-up service creates a service from a Java bean or EJB, while a top-down service will create 
+a service from a WSDL file and then create a skeleton Java bean or EJB for you to implement later.</description>
+</context>
+
+<context id="WSWSCEN0014">
+<!--Monitor checkbox of the First Page-->
+<description>Monitor the Web service: this will send the Web service traffic
+through the TCP/IP Monitor, which allows you to watch the SOAP traffic generated
+by the Web service and to test this traffic for WS-I compliance.</description>
+</context>
+
+<context id="WSWSCEN0012">
+<!--Launch UDDI check box of the First Page-->
+<description>Publish the Web service: this will launch the Web Services Explorer
+to publish your Web service to a UDDI registry.</description>
+</context>
+
+<context id="WSWSCEN0020">
+<!--Service implementation field of the First Page-->
+<description>Enter the URI to the WSDL, WSIL, or HTML file that
+will be used to generate the service</description>
+</context>
+
+<context id="WSWSCEN0021">
+<!--Service slider of the First Page-->
+<description>Select the stages of Web services development that you want
+to complete using the slider:
+- Develop: this will create the service code
+- Assemble: this ensures that the project that will host the Web service or client gets associated to an EAR when required by the target application server
+- Deploy: this will create the deployment code for the service
+- Install: this will install the service on the chosen server
+- Start: this will start the server once the service has been installed on it
+- Test: this will provide various options for testing the service
+</description>
+</context>
+
+<context id="WSWSCEN0022">
+<!--Server link of the First Page-->
+<description>Select your server: the default server is displayed. If you
+want to deploy your service to a different server click the link to specify
+a different server.</description>
+</context>
+
+<context id="WSWSCEN0023">
+<!--runtime link of the First Page-->
+<description>Select your runtime: the default runtime is displayed. If you
+want to deploy your service to a different runtime click the link to specify
+a different runtime.</description>
+</context>
+
+<context id="WSWSCEN0024">
+<!--projects link of the First Page-->
+<description>Select the service project: the project containing the project
+selected in your workspace is displayed. To select a different project and
+EAR click on the project link. Ensure that the project selected
+as the Client Web Project is different from the Service Web Project, or the
+service will be overwritten by the client's generated artifacts.</description>
+</context>
+
+<context id="WSWSCEN0025">
+<!--client type combo of the First Page-->
+<description>The Java bean client proxy that is generated provides a remote procedure call interface to the Web service.</description>
+</context>
+
+<context id="WSWSCEN0026">
+<!--Client slider of the First Page-->
+<description>Select the stages of Web services client development that you want
+to complete using the slider:
+- Develop: this will create the client code
+- Assemble: this ensures that the project that will host the Web service or client gets associated to an EAR when required by the target application server
+- Deploy: this will create the deployment code for the client
+- Install: this will install the client on the chosen server
+- Start: this will start the server once the client has been installed on it
+- Test: this will provide various options for testing the client
+</description>
+</context>
+
+<context id="WSWSCEN0030">
+<!--file overwrite checkbox of the First Page-->
+<description>This allows you to overwrite files without receiving a warning message asking for confirmation when overwriting files.</description>
+</context>
 
 </contexts>
diff --git a/docs/org.eclipse.jst.ws.consumption.infopop/wsui-f1Contexts.xml b/docs/org.eclipse.jst.ws.consumption.infopop/wsui-f1Contexts.xml
deleted file mode 100644
index c0c7d91..0000000
--- a/docs/org.eclipse.jst.ws.consumption.infopop/wsui-f1Contexts.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?NLS TYPE="org.eclipse.help.contexts"?>
-<!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/ -->
-<contexts>
-
-
-
-<context id="PPAD0006">
-<!--  create web service check box-->
-<description>Select this check box to hide the option of generating a Web service client when you right-click a file in the Project Explorer or Navigator.</description>
-</context>
-
-<context id="PPAD0008">
-<!--  generate skeleton check box-->
-<description>Select this check box to hide the option of generating skeleton Java classes when you right-click a file in the Project Explorer or Navigator. The skeleton bean contains a set of methods that correspond to the operations described in the WSDL document. When the bean is created, each method has a trivial implementation that you replace by editing the bean.</description>
-</context>
-
-<context id="PPAD0009">
-<!--  publish WSDL check box-->
-<description>Select this check box to hide the option of publishing the Web service's WSDL file to a UDDI registry when you right-click a file in the Project Explorer or Navigator.</description>
-</context>
-
-
-</contexts>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/.cvsignore b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/.cvsignore
index c9d32ab..f7177bd 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/.cvsignore
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/.cvsignore
@@ -1,3 +1,4 @@
 org.eclipse.jst.ws.consumption.ui.doc.user_1.0.0.jar
 bak
 temp
+DitaLink.cat
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/META-INF/MANIFEST.MF b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/META-INF/MANIFEST.MF
index b169c0b..780f81f 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.consumption.ui.doc.user; singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.202.qualifier
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
 Eclipse-LazyStart: true
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/about.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/about.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/build.properties b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/build.properties
index 72b92f5..f0636e7 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/build.properties
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/build.properties
@@ -2,6 +2,7 @@
                plugin.xml,\
                wsconsumptionbuild_toc.xml,\
                wsconsumptiont_toc.xml,\
+               org.eclipse.jst.ws.consumption.ui.doc.userindex.xml,\
                about.html,\
                images/,\
                concepts/,\
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/build.xml b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/build.xml
index ae96a16..23a513f 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/build.xml
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/build.xml
@@ -25,7 +25,7 @@
 -->
 <project name="eclipsehelp" default="all">
 
-	<property name="dita.ot.dir" location="C:/DITA-OT1.2.1" />
+	<property name="dita.ot.dir" location="C:/DITA-OT1.2.2" />
 
 	<path id="dost.class.path">
 		<pathelement location="${dita.ot.dir}${file.separator}lib${file.separator}dost.jar" />
@@ -47,7 +47,7 @@
 			<property name="args.csspath" value="org.eclipse.wst.doc.user" />
 			<property name="args.eclipse.provider" value="Eclipse.org" />
 			<property name="args.eclipse.version" value="1.5.0" />
-			<property name="args.input" location="wsconsumptionbuild_toc.ditamap" />
+			<property name="args.input" location="wsconsumptiont_toc.ditamap" />
 			<property name="clean.temp" value="true" />
 			<property name="dita.extname" value=".dita" />
 			<property name="dita.temp.dir" location="temp" />
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.dita
index 49df34f..baabb38 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="cuddi" xml:lang="en-us">
 <title>Universal Description, Discovery, and Integration (UDDI)</title>
 <titlealts>
@@ -8,6 +9,11 @@
 </titlealts>
 <shortdesc>Universal Description, Discovery, and Integration (UDDI) specification
 defines a way to publish and discover information about Web services.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>UDDI</indexterm><indexterm>Universal Description, Discovery,
+and Integration </indexterm><indexterm>Web services<indexterm>UDDI</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <conbody>
 <p>UDDI has two functions: <ul>
 <li>It is a SOAP-based protocol that defines how clients communicate with
@@ -78,8 +84,6 @@
 </linklist>
 <linklist><title>Related Tasks</title>
 <link href="../tasks/tuddiexp.dita"></link>
-<link href="../../org.eclipse.jst.ws.uddi.registry.doc.user/tasks/tuddiwiz.dita"
-scope="peer"><linktext> Configuring a Unit Test UDDI Registry</linktext></link>
 </linklist>
 <linklist><title>Related Reference</title>
 <link href="../ref/ruddi.dita"></link>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.html
index 33969e1..73e2bd7 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,16 +11,17 @@
 <meta name="DC.Title" content="Universal Description, Discovery, and Integration (UDDI)" />
 <meta name="abstract" content="Universal Description, Discovery, and Integration (UDDI) specification defines a way to publish and discover information about Web services." />
 <meta name="description" content="Universal Description, Discovery, and Integration (UDDI) specification defines a way to publish and discover information about Web services." />
+<meta content="UDDI, Universal Description, Discovery, and Integration, Web services" name="DC.subject" />
+<meta content="UDDI, Universal Description, Discovery, and Integration, Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsdlud.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsilud.html" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/tuddiexp.html" />
-<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.uddi.registry.doc.user/tasks/tuddiwiz.html" />
 <meta scheme="URI" name="DC.Relation" content="../ref/ruddi.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="cuddi" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Universal Description, Discovery, and Integration (UDDI)</title>
 </head>
 <body id="cuddi"><a name="cuddi"><!-- --></a>
@@ -30,6 +31,7 @@
 
 
 
+
 <div><p>Universal Description, Discovery, and Integration (UDDI) specification
 defines a way to publish and discover information about Web services.</p>
 
@@ -107,12 +109,11 @@
 
 <div class="linklist"><strong>Related Tasks</strong><br />
 
-<div><a href="../tasks/tuddiexp.html" title="Through UDDI and WSIL, other applications can discover WSDL documents and bind with them to execute transactions or perform other business processes.">Publishing Web services and business entities</a></div>
-<div><a href="../../org.eclipse.jst.ws.uddi.registry.doc.user/tasks/tuddiwiz.html"> Configuring a Unit Test UDDI Registry</a></div></div>
+<div><a href="../tasks/tuddiexp.html" title="Through UDDI and WSIL, other applications can discover WSDL documents and bind with them to execute transactions or perform other business processes.">Publishing Web services and business entities</a></div></div>
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cwsdlud.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cwsdlud.dita
index 729ea84..fecbf45 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cwsdlud.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cwsdlud.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="cwsdlud" xml:lang="en-us">
 <title>Relationship between UDDI and WSDL</title>
 <shortdesc>The Universal Description, Discovery, and Integration (UDDI) specification
@@ -8,6 +9,10 @@
 has two functions: (1) it is a SOAP-based protocol that defines how UDDI clients
 communicate with registries, and (2) it is a particular set of globally replicated
 registries.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>UDDI<indexterm>relationship with WSDL</indexterm></indexterm>
+<indexterm>WSDL<indexterm>relationship with UDDI</indexterm></indexterm></keywords>
+</metadata></prolog>
 <conbody>
 <p>Registering a service involves four core data structure types:</p>
 <ul>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cwsdlud.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cwsdlud.html
index 577a6ed..4ad54c0 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cwsdlud.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cwsdlud.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Relationship between UDDI and WSDL" />
 <meta name="abstract" content="The Universal Description, Discovery, and Integration (UDDI) specification defines a way to publish and discover information about Web services. UDDI has two functions: (1) it is a SOAP-based protocol that defines how UDDI clients communicate with registries, and (2) it is a particular set of globally replicated registries." />
 <meta name="description" content="The Universal Description, Discovery, and Integration (UDDI) specification defines a way to publish and discover information about Web services. UDDI has two functions: (1) it is a SOAP-based protocol that defines how UDDI clients communicate with registries, and (2) it is a particular set of globally replicated registries." />
+<meta content="UDDI, relationship with WSDL, WSDL, relationship with UDDI" name="DC.subject" />
+<meta content="UDDI, relationship with WSDL, WSDL, relationship with UDDI" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cuddi.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="../ref/ruddi.html" />
@@ -18,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="cwsdlud" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Relationship between UDDI and WSDL</title>
 </head>
 <body id="cwsdlud"><a name="cwsdlud"><!-- --></a>
@@ -27,6 +29,7 @@
 <h1 class="topictitle1">Relationship between UDDI and WSDL</h1>
 
 
+
 <div><p>The Universal Description, Discovery, and Integration (UDDI) specification
 defines a way to publish and discover information about Web services. UDDI
 has two functions: (1) it is a SOAP-based protocol that defines how UDDI clients
@@ -145,7 +148,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div>
 <div><a href="../../org.eclipse.jst.ws.doc.user/ref/rwsdl.html">Web Services Description Language (WSDL)</a></div></div>
 </div>
 
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/bindnode.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/bindnode.gif
index c60abfc..7bf5d03 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/bindnode.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/bindnode.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/fswsdlicon.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/fswsdlicon.gif
index b03233a..3060e55 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/fswsdlicon.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/fswsdlicon.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/loginicon.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/loginicon.gif
new file mode 100644
index 0000000..ed510ca
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/loginicon.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/logouticon.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/logouticon.gif
new file mode 100644
index 0000000..d7709cf
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/logouticon.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/opnode.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/opnode.gif
index 3e8a295..a8eb349 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/opnode.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/opnode.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/scenario7.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/scenario7.gif
index 9808268..a36531e 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/scenario7.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/scenario7.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/servnode.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/servnode.gif
index 65b9c09..e51233d 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/servnode.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/servnode.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlbnddetl.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlbnddetl.gif
index a22eda6..002262f 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlbnddetl.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlbnddetl.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlexp.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlexp.gif
index 27f3f69..92ef10a 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlexp.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlexp.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlfavicon.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlfavicon.gif
index cb9d514..f9acc3d 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlfavicon.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlfavicon.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlicon.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlicon.gif
index 7b6bd28..9aec326 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlicon.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlicon.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlnode.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlnode.gif
index 68ef08c..7b7521a 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlnode.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlnode.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlop.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlop.gif
index a0f370e..287dd4a 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlop.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlop.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlopret.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlopret.gif
index 60d7e41..2c83e35 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlopret.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlopret.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlopretx.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlopretx.gif
index ff93bdd..0f5d577 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlopretx.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlopretx.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlservdet.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlservdet.gif
index 6c197c0..987cb85 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlservdet.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlservdet.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlstatx.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlstatx.gif
index 6081fa9..91ba787 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlstatx.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdlstatx.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdltemp.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdltemp.gif
new file mode 100644
index 0000000..99bd207
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wsdltemp.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wswizicon.gif b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wswizicon.gif
index a4fe8b3..3b17aa7 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wswizicon.gif
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/images/wswizicon.gif
Binary files differ
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/myplugin.xml b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/myplugin.xml
index 248e72b..6551d73 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/myplugin.xml
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/myplugin.xml
@@ -17,4 +17,7 @@
 		<toc file="wsconsumptionbuild_toc.xml"/>
 		<toc file="wsconsumptiont_toc.xml" />
 	</extension>
+    <extension point="org.eclipse.help.index">
+      <index file="org.eclipse.jst.ws.consumption.ui.doc.userindex.xml"/>
+</extension>
 </plugin>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/org.eclipse.jst.ws.consumption.ui.doc.userindex.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/org.eclipse.jst.ws.consumption.ui.doc.userindex.html
new file mode 100644
index 0000000..82527a6
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/org.eclipse.jst.ws.consumption.ui.doc.userindex.html
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="security" content="public" />
+<meta name="Robots" content="index,follow" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta name="DC.Format" content="XHTML" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/ibmdita.css" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
+<title>Index</title>
+</head>
+<body>
+<h1>Index</h1>
+<a name="IDX0_42" href="#IDX1_42">B</a>
+<a name="IDX0_44" href="#IDX1_44">D</a>
+<a name="IDX0_52" href="#IDX1_52">R</a>
+<a name="IDX0_53" href="#IDX1_53">S</a>
+<a name="IDX0_55" href="#IDX1_55">U</a>
+<a name="IDX0_57" href="#IDX1_57">W</a>
+<hr></hr>
+<strong><a name="IDX1_42" href="#IDX0_42">B</a></strong>
+<ul class="indexlist">
+<li>business entities
+<ul class="indexlist">
+<li><a href="tasks/tuddiexp.html#tuddiexp">publishing</a>
+</li>
+<li><a href="tasks/tpubent.html#tpubent">publishing to UDDI</a>
+</li>
+<li><a href="tasks/tunpub.html#tunpub">removing from a UDDI registry</a>
+</li>
+<li><a href="tasks/tupdate.html#tupdate">updating in a UDDI registry</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong><a name="IDX1_44" href="#IDX0_44">D</a></strong>
+<ul class="indexlist">
+<li>data structure types
+<ul class="indexlist">
+<li><a href="ref/ruddi.html#ruddi">UDDI registry</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong><a name="IDX1_52" href="#IDX0_52">R</a></strong>
+<ul class="indexlist">
+<li>registries
+<ul class="indexlist">
+<li><a href="tasks/taddreg.html#taddreg">adding to the Web Services Explorer</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong><a name="IDX1_53" href="#IDX0_53">S</a></strong>
+<ul class="indexlist">
+<li>service interfaces
+<ul class="indexlist">
+<li><a href="tasks/tunpub.html#tunpub">removing from a UDDI registry</a>
+</li>
+<li><a href="tasks/tupdate.html#tupdate">updating UDDI registries</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong><a name="IDX1_55" href="#IDX0_55">U</a></strong>
+<ul class="indexlist">
+<li><a href="concepts/cuddi.html#cuddi">UDDI</a>
+<ul class="indexlist">
+<li><a href="ref/ruddi.html#ruddi">data structure types</a>
+</li>
+<li><a href="tasks/tdiscov.html#tdiscov">discovering Web services</a>
+</li>
+<li><a href="tasks/tlogexp.html#tlogexp">logging into a registry</a>
+</li>
+<li><a href="tasks/tassert.html#tassert">managing publisher assertions</a>
+</li>
+<li><a href="tasks/tbusproj.html#tbusproj">managing services</a>
+</li>
+<li><a href="tasks/tpubent.html#tpubent">publishing a business entity</a>
+</li>
+<li><a href="tasks/tpublish.html#tpublish">publishing a Web service</a>
+</li>
+<li><a href="tasks/treg.html#treg">registering with a registry</a>
+</li>
+<li><a href="concepts/cwsdlud.html#cwsdlud">relationship with WSDL</a>
+</li>
+<li><a href="tasks/tunpub.html#tunpub">removing services from a registry</a>
+</li>
+</ul>
+</li>
+<li><a href="concepts/cuddi.html#cuddi">Universal Description, Discovery, and Integration</a>
+</li>
+</ul>
+<strong><a name="IDX1_57" href="#IDX0_57">W</a></strong>
+<ul class="indexlist">
+<li>Web Service Explorer
+<ul class="indexlist">
+<li><a href="tasks/tbkmrk.html#tbkmrk">adding Favorites</a>
+</li>
+</ul>
+</li>
+<li>Web services
+<ul class="indexlist">
+<li><a href="tasks/taddreg.html#taddreg">adding a registry to the Web Services Explorer</a>
+</li>
+<li><a href="tasks/tdiscov.html#tdiscov">discovering</a>
+</li>
+<li><a href="tasks/twsdlexp.html#twsdlexp">exploring WSDL</a>
+</li>
+<li><a href="tasks/tgenwsil.html#tgenwsil">generating WSIL</a>
+</li>
+<li><a href="tasks/tbusproj.html#tbusproj">managing services</a>
+</li>
+<li><a href="tasks/tpubent.html#tpubent">publishing a business entity</a>
+</li>
+<li><a href="tasks/tpublish.html#tpublish">publishing to a UDDI registry</a>
+</li>
+<li><a href="tasks/treg.html#treg">registering with a UDDI registry</a>
+</li>
+<li><a href="tasks/tunpub.html#tunpub">removing from a UDDI registry</a>
+</li>
+<li><a href="tasks/ttestwsdl.html#ttestwsdl">testing with the Web Services Explorer</a>
+</li>
+<li><a href="concepts/cuddi.html#cuddi">UDDI</a>
+</li>
+<li><a href="tasks/tupdate.html#tupdate">updating UDDI registries</a>
+</li>
+</ul>
+</li>
+<li>Web Services
+<ul class="indexlist">
+<li>publishing
+<ul class="indexlist">
+<li><a href="tasks/tuddiexp.html#tuddiexp">overview</a>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Web Services Explorer
+<ul class="indexlist">
+<li><a href="tasks/taddreg.html#taddreg">adding a registry</a>
+</li>
+<li><a href="tasks/tstrtexp.html#tstrtexp">launching</a>
+</li>
+<li><a href="tasks/tlogexp.html#tlogexp">logging into a UDDI registry</a>
+</li>
+<li><a href="tasks/tuddiexp.html#tuddiexp">publishing Web services</a>
+</li>
+</ul>
+</li>
+<li>WSDL
+<ul class="indexlist">
+<li><a href="tasks/tbkmrk.html#tbkmrk">adding to Favorites</a>
+</li>
+<li><a href="tasks/twsdlexp.html#twsdlexp">exploring</a>
+</li>
+<li><a href="concepts/cwsdlud.html#cwsdlud">relationship with UDDI</a>
+</li>
+<li><a href="tasks/ttestwsdl.html#ttestwsdl">testing with the Web Services Explorer</a>
+</li>
+</ul>
+</li>
+<li>WSIL
+<ul class="indexlist">
+<li><a href="tasks/tbkmrk.html#tbkmrk">adding to Favorites</a>
+</li>
+<li><a href="tasks/tdiscov.html#tdiscov">discovering Web services</a>
+</li>
+<li><a href="tasks/tgenwsil.html#tgenwsil">generating</a>
+</li>
+</ul>
+</li>
+</ul>
+</body></html>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/org.eclipse.jst.ws.consumption.ui.doc.userindex.xml b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/org.eclipse.jst.ws.consumption.ui.doc.userindex.xml
new file mode 100644
index 0000000..ed74e7d
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/org.eclipse.jst.ws.consumption.ui.doc.userindex.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="utf-8"?>
+<index>
+  <entry keyword="UDDI">
+    <topic href="concepts/cuddi.html#cuddi" title="Universal Description, Discovery, and Integration (UDDI)"/>
+    <entry keyword="relationship with WSDL">
+      <topic href="concepts/cwsdlud.html#cwsdlud" title="Relationship between UDDI and WSDL"/>
+    </entry>
+    <entry keyword="discovering Web services">
+      <topic href="tasks/tdiscov.html#tdiscov" title="Discovering Web Services"/>
+    </entry>
+    <entry keyword="registering with a registry">
+      <topic href="tasks/treg.html#treg" title="Registering with a UDDI registry"/>
+    </entry>
+    <entry keyword="logging into a registry">
+      <topic href="tasks/tlogexp.html#tlogexp" title="Logging in to a UDDI registry"/>
+    </entry>
+    <entry keyword="publishing a business entity">
+      <topic href="tasks/tpubent.html#tpubent" title="Publishing a business entity"/>
+    </entry>
+    <entry keyword="publishing a Web service">
+      <topic href="tasks/tpublish.html#tpublish" title="Publishing a Web service"/>
+    </entry>
+    <entry keyword="data structure types">
+      <topic href="ref/ruddi.html#ruddi" title="Data structure types (UDDI registry)"/>
+    </entry>
+    <entry keyword="removing services from a registry">
+      <topic href="tasks/tunpub.html#tunpub" title="Removing a business entity, Web service, or service interface from a registry"/>
+    </entry>
+    <entry keyword="managing services">
+      <topic href="tasks/tbusproj.html#tbusproj" title="Managing referenced services"/>
+    </entry>
+    <entry keyword="managing publisher assertions">
+      <topic href="tasks/tassert.html#tassert" title="Managing publisher assertions"/>
+    </entry>
+  </entry>
+  <entry keyword="Universal Description, Discovery, and Integration">
+    <topic href="concepts/cuddi.html#cuddi" title="Universal Description, Discovery, and Integration (UDDI)"/>
+  </entry>
+  <entry keyword="Web services">
+    <entry keyword="UDDI">
+      <topic href="concepts/cuddi.html#cuddi" title="Universal Description, Discovery, and Integration (UDDI)"/>
+    </entry>
+    <entry keyword="discovering">
+      <topic href="tasks/tdiscov.html#tdiscov" title="Discovering Web Services"/>
+    </entry>
+    <entry keyword="exploring WSDL">
+      <topic href="tasks/twsdlexp.html#twsdlexp" title="Exploring WSDL using the WSDL Explorer"/>
+    </entry>
+    <entry keyword="testing with the Web Services Explorer">
+      <topic href="tasks/ttestwsdl.html#ttestwsdl" title="Testing WSDL documents and Web services using the WSDL Explorer"/>
+    </entry>
+    <entry keyword="registering with a UDDI registry">
+      <topic href="tasks/treg.html#treg" title="Registering with a UDDI registry"/>
+    </entry>
+    <entry keyword="adding a registry to the Web Services Explorer">
+      <topic href="tasks/taddreg.html#taddreg" title="Adding a Registry to the Web Services Explorer"/>
+    </entry>
+    <entry keyword="publishing a business entity">
+      <topic href="tasks/tpubent.html#tpubent" title="Publishing a business entity"/>
+    </entry>
+    <entry keyword="publishing to a UDDI registry">
+      <topic href="tasks/tpublish.html#tpublish" title="Publishing a Web service"/>
+    </entry>
+    <entry keyword="updating UDDI registries">
+      <topic href="tasks/tupdate.html#tupdate" title="Updating a business entity, Web service, or service interface"/>
+    </entry>
+    <entry keyword="removing from a UDDI registry">
+      <topic href="tasks/tunpub.html#tunpub" title="Removing a business entity, Web service, or service interface from a registry"/>
+    </entry>
+    <entry keyword="managing services">
+      <topic href="tasks/tbusproj.html#tbusproj" title="Managing referenced services"/>
+    </entry>
+    <entry keyword="generating WSIL">
+      <topic href="tasks/tgenwsil.html#tgenwsil" title="Generating a WSIL file"/>
+    </entry>
+  </entry>
+  <entry keyword="WSDL">
+    <entry keyword="relationship with UDDI">
+      <topic href="concepts/cwsdlud.html#cwsdlud" title="Relationship between UDDI and WSDL"/>
+    </entry>
+    <entry keyword="exploring">
+      <topic href="tasks/twsdlexp.html#twsdlexp" title="Exploring WSDL using the WSDL Explorer"/>
+    </entry>
+    <entry keyword="testing with the Web Services Explorer">
+      <topic href="tasks/ttestwsdl.html#ttestwsdl" title="Testing WSDL documents and Web services using the WSDL Explorer"/>
+    </entry>
+    <entry keyword="adding to Favorites">
+      <topic href="tasks/tbkmrk.html#tbkmrk" title="Adding a registry, business entity, business service, service interface, WSIL, or WSDL service to Favorites"/>
+    </entry>
+  </entry>
+  <entry keyword="WSIL">
+    <entry keyword="discovering Web services">
+      <topic href="tasks/tdiscov.html#tdiscov" title="Discovering Web Services"/>
+    </entry>
+    <entry keyword="adding to Favorites">
+      <topic href="tasks/tbkmrk.html#tbkmrk" title="Adding a registry, business entity, business service, service interface, WSIL, or WSDL service to Favorites"/>
+    </entry>
+    <entry keyword="generating">
+      <topic href="tasks/tgenwsil.html#tgenwsil" title="Generating a WSIL file"/>
+    </entry>
+  </entry>
+  <entry keyword="Web Services">
+    <entry keyword="publishing">
+      <entry keyword="overview">
+        <topic href="tasks/tuddiexp.html#tuddiexp" title="Publishing Web services and business entities"/>
+      </entry>
+    </entry>
+  </entry>
+  <entry keyword="business entities">
+    <entry keyword="publishing">
+      <topic href="tasks/tuddiexp.html#tuddiexp" title="Publishing Web services and business entities"/>
+    </entry>
+    <entry keyword="publishing to UDDI">
+      <topic href="tasks/tpubent.html#tpubent" title="Publishing a business entity"/>
+    </entry>
+    <entry keyword="updating in a UDDI registry">
+      <topic href="tasks/tupdate.html#tupdate" title="Updating a business entity, Web service, or service interface"/>
+    </entry>
+    <entry keyword="removing from a UDDI registry">
+      <topic href="tasks/tunpub.html#tunpub" title="Removing a business entity, Web service, or service interface from a registry"/>
+    </entry>
+  </entry>
+  <entry keyword="Web Services Explorer">
+    <entry keyword="publishing Web services">
+      <topic href="tasks/tuddiexp.html#tuddiexp" title="Publishing Web services and business entities"/>
+    </entry>
+    <entry keyword="launching">
+      <topic href="tasks/tstrtexp.html#tstrtexp" title="Launching the Web Services Explorer"/>
+    </entry>
+    <entry keyword="logging into a UDDI registry">
+      <topic href="tasks/tlogexp.html#tlogexp" title="Logging in to a UDDI registry"/>
+    </entry>
+    <entry keyword="adding a registry">
+      <topic href="tasks/taddreg.html#taddreg" title="Adding a Registry to the Web Services Explorer"/>
+    </entry>
+  </entry>
+  <entry keyword="registries">
+    <entry keyword="adding to the Web Services Explorer">
+      <topic href="tasks/taddreg.html#taddreg" title="Adding a Registry to the Web Services Explorer"/>
+    </entry>
+  </entry>
+  <entry keyword="data structure types">
+    <entry keyword="UDDI registry">
+      <topic href="ref/ruddi.html#ruddi" title="Data structure types (UDDI registry)"/>
+    </entry>
+  </entry>
+  <entry keyword="service interfaces">
+    <entry keyword="updating UDDI registries">
+      <topic href="tasks/tupdate.html#tupdate" title="Updating a business entity, Web service, or service interface"/>
+    </entry>
+    <entry keyword="removing from a UDDI registry">
+      <topic href="tasks/tunpub.html#tunpub" title="Removing a business entity, Web service, or service interface from a registry"/>
+    </entry>
+  </entry>
+  <entry keyword="Web Service Explorer">
+    <entry keyword="adding Favorites">
+      <topic href="tasks/tbkmrk.html#tbkmrk" title="Adding a registry, business entity, business service, service interface, WSIL, or WSDL service to Favorites"/>
+    </entry>
+  </entry>
+</index>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/plugin.xml b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/plugin.xml
index 248e72b..6551d73 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/plugin.xml
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/plugin.xml
@@ -17,4 +17,7 @@
 		<toc file="wsconsumptionbuild_toc.xml"/>
 		<toc file="wsconsumptiont_toc.xml" />
 	</extension>
+    <extension point="org.eclipse.help.index">
+      <index file="org.eclipse.jst.ws.consumption.ui.doc.userindex.xml"/>
+</extension>
 </plugin>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/ref/ruddi.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/ref/ruddi.dita
index 1d63add..e976fef 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/ref/ruddi.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/ref/ruddi.dita
@@ -1,14 +1,19 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE reference  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN"
+ "reference.dtd">
 <reference id="ruddi" xml:lang="en-us">
 <title>Data structure types (UDDI registry)</title>
 <shortdesc>Once you have registered and logged in to the UDDI registry that
-you want to use, you can register your Web service.&nbsp; Registration of
-a service involves four core data structure types: business information, service
-information, binding information, and information describing the specifications
-for services. The relationship between these data types is described in Figure
-1.</shortdesc>
+you want to use, you can register your Web service. Registration of a service
+involves four core data structure types: business information, service information,
+binding information, and information describing the specifications for services.
+The relationship between these data types is described in Figure 1.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>UDDI<indexterm>data structure types</indexterm></indexterm>
+<indexterm>data structure types<indexterm>UDDI registry</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <refbody>
 <section><lq> <p> <uicontrol>Business information.</uicontrol> Information
 that is contained in a  <systemoutput>businessEntity</systemoutput> structure.
@@ -65,9 +70,8 @@
 <link href="../../org.eclipse.jst.ws.doc.user/concepts/cws.dita" scope="peer">
 <linktext>Web services development</linktext></link>
 </linklist>
-<linklist><title>Related Tasks</title><?Pub Caret?>
+<linklist><title>Related Tasks</title>
 <link href="../tasks/tuddiexp.dita"></link>
 </linklist>
 </related-links>
 </reference>
-<?Pub *0000005079?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/ref/ruddi.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/ref/ruddi.html
index f6ad7be..4de9dbf 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/ref/ruddi.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/ref/ruddi.html
@@ -2,22 +2,24 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
 <meta content="reference" name="DC.Type" />
 <meta name="DC.Title" content="Data structure types (UDDI registry)" />
-<meta name="abstract" content="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1." />
-<meta name="description" content="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1." />
+<meta name="abstract" content="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1." />
+<meta name="description" content="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1." />
+<meta content="UDDI, data structure types, UDDI registry" name="DC.subject" />
+<meta content="UDDI, data structure types, UDDI registry" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/tuddiexp.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="ruddi" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Data structure types (UDDI registry)</title>
 </head>
 <body id="ruddi"><a name="ruddi"><!-- --></a>
@@ -26,12 +28,12 @@
 <h1 class="topictitle1">Data structure types (UDDI registry)</h1>
 
 
+
 <div><p>Once you have registered and logged in to the UDDI registry that
-you want to use, you can register your Web service.  Registration of
-a service involves four core data structure types: business information, service
-information, binding information, and information describing the specifications
-for services. The relationship between these data types is described in Figure
-1.</p>
+you want to use, you can register your Web service. Registration of a service
+involves four core data structure types: business information, service information,
+binding information, and information describing the specifications for services.
+The relationship between these data types is described in Figure 1.</p>
 
 <div class="section"><blockquote> <p> <span class="uicontrol">Business information.</span> Information
 that is contained in a  <tt class="sysout">businessEntity</tt> structure.
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/taddreg.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/taddreg.dita
index f0689c2..7015ecc 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/taddreg.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/taddreg.dita
@@ -1,13 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
-<task id="taddreg" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
+<task id="taddreg" xml:lang="en-us">
 <title>Adding a Registry to the Web Services Explorer</title>
 <titlealts>
 <searchtitle>Adding a Registry to the Web Services Explorer</searchtitle>
 </titlealts>
 <shortdesc>Although the Web Services Explorer comes populated with several
 registries, you can also add additional registries to your list of favorites.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>adding a registry to the Web Services
+Explorer</indexterm></indexterm><indexterm>Web Services Explorer<indexterm>adding
+a registry</indexterm></indexterm><indexterm>registries<indexterm>adding to
+the Web Services Explorer</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
 <prereq><p>Prerequisites:<ol>
 <li><xref href="treg.dita">Register with a registry</xref></li>
@@ -69,4 +76,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000003609?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/taddreg.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/taddreg.html
index 01a8899..f4e5943 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/taddreg.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/taddreg.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Adding a Registry to the Web Services Explorer" />
 <meta name="abstract" content="Although the Web Services Explorer comes populated with several registries, you can also add additional registries to your list of favorites." />
 <meta name="description" content="Although the Web Services Explorer comes populated with several registries, you can also add additional registries to your list of favorites." />
+<meta content="Web services, adding a registry to the Web Services Explorer, Web Services Explorer, adding a registry, registries, adding to the Web Services Explorer" name="DC.subject" />
+<meta content="Web services, adding a registry to the Web Services Explorer, Web Services Explorer, adding a registry, registries, adding to the Web Services Explorer" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
@@ -21,7 +23,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="taddreg" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Adding a Registry to the Web Services Explorer</title>
 </head>
 <body id="taddreg"><a name="taddreg"><!-- --></a>
@@ -31,6 +33,7 @@
 
 
 
+
 <div><p>Although the Web Services Explorer comes populated with several
 registries, you can also add additional registries to your list of favorites.</p>
 
@@ -105,7 +108,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tassert.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tassert.dita
index d64061e..8498da7 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tassert.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tassert.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tassert" xml:lang="en-us">
 <title>Managing publisher assertions</title>
 <shortdesc>A publisher assertion is a way in UDDI to associate businessEntity
@@ -10,10 +11,14 @@
 businessEntity structures. For example, a large company may have several subsidiaries
 that have different descriptions but are still closely coupled and want to
 make their relationships visible in UDDI registries.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>UDDI<indexterm>managing publisher assertions</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Prerequisites:<ol>
 <li><xref href="treg.dita">Register with a registry</xref></li>
-<li><xref href="tstrtexp.dita">Launch the<?Pub Caret?> Web Services Explorer</xref></li>
+<li><xref href="tstrtexp.dita">Launch the Web Services Explorer</xref></li>
 <li><xref href="taddreg.dita">Add the registry to the Web Services Explorer</xref></li>
 </ol></prereq>
 <context><p>For more information on publisher assertions, refer to the  <xref
@@ -54,4 +59,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000003014?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tassert.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tassert.html
index 9a13bac..19d22fb 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tassert.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tassert.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Managing publisher assertions" />
 <meta name="abstract" content="A publisher assertion is a way in UDDI to associate businessEntity structures.  The publisher assertion defines a group of businessEntity structures. Many businesses are not effectively represented by a single businessEntity. A publisher assertion allows for associations to be formed between several businessEntity structures. For example, a large company may have several subsidiaries that have different descriptions but are still closely coupled and want to make their relationships visible in UDDI registries." />
 <meta name="description" content="A publisher assertion is a way in UDDI to associate businessEntity structures.  The publisher assertion defines a group of businessEntity structures. Many businesses are not effectively represented by a single businessEntity. A publisher assertion allows for associations to be formed between several businessEntity structures. For example, a large company may have several subsidiaries that have different descriptions but are still closely coupled and want to make their relationships visible in UDDI registries." />
+<meta content="UDDI, managing publisher assertions" name="DC.subject" />
+<meta content="UDDI, managing publisher assertions" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
@@ -21,7 +23,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="tassert" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Managing publisher assertions</title>
 </head>
 <body id="tassert"><a name="tassert"><!-- --></a>
@@ -30,6 +32,7 @@
 <h1 class="topictitle1">Managing publisher assertions</h1>
 
 
+
 <div><p>A publisher assertion is a way in UDDI to associate businessEntity
 structures.  The publisher assertion defines a group of businessEntity
 structures. Many businesses are not effectively represented by a single businessEntity.
@@ -89,7 +92,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbkmrk.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbkmrk.dita
index d82ec6d..e9dc690 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbkmrk.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbkmrk.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tbkmrk" xml:lang="en-us">
 <title>Adding a registry, business entity, business service, service interface,
 WSIL, or WSDL service to Favorites</title>
@@ -8,12 +9,20 @@
 <searchtitle>Adding a registry, business entity, business service, service
 interface, WSIL, or WSDL service to Favorites</searchtitle>
 </titlealts>
+<shortdesc>You can add a registry, business entity, business service, service
+interface, WSIL, or WSDL service to the Web Service Explorer Favorites if
+you plan to access them in the future.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web Service Explorer<indexterm>adding Favorites</indexterm></indexterm>
+<indexterm>WSIL<indexterm>adding to Favorites</indexterm></indexterm><indexterm>WSDL<indexterm>adding
+to Favorites</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Prerequisite:  <ul>
 <li><xref href="tstrtexp.dita">Launch the Web Services Explorer</xref></li>
 </ul></prereq>
 <context><p>To add a registry, business entity, Web service, service interface,
-WSIL, or WSDL to Favorites using the<?Pub Caret?> Web Services Explorer:</p></context>
+WSIL, or WSDL to Favorites using the Web Services Explorer:</p></context>
 <steps>
 <step><cmd>Navigate through the registry hierarchy to find the registry, business
 entity, Web service, service interface or the WSIL page to find the WSIL or
@@ -48,4 +57,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002422?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbkmrk.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbkmrk.html
index 27bf2f0..97a7c43 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbkmrk.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbkmrk.html
@@ -2,13 +2,17 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
 <meta content="task" name="DC.Type" />
 <meta name="DC.Title" content="Adding a registry, business entity, business service, service interface, WSIL, or WSDL service to Favorites" />
+<meta name="abstract" content="You can add a registry, business entity, business service, service interface, WSIL, or WSDL service to the Web Service Explorer Favorites if you plan to access them in the future." />
+<meta name="description" content="You can add a registry, business entity, business service, service interface, WSIL, or WSDL service to the Web Service Explorer Favorites if you plan to access them in the future." />
+<meta content="Web Service Explorer, adding Favorites, WSIL, adding to Favorites, WSDL, adding to Favorites" name="DC.subject" />
+<meta content="Web Service Explorer, adding Favorites, WSIL, adding to Favorites, WSDL, adding to Favorites" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
@@ -19,7 +23,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="tbkmrk" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Adding a registry, business entity, business service, service
 interface, WSIL, or WSDL service to Favorites</title>
 </head>
@@ -30,7 +34,12 @@
 WSIL, or WSDL service to Favorites</h1>
 
 
-<div>
+
+
+<div><p>You can add a registry, business entity, business service, service
+interface, WSIL, or WSDL service to the Web Service Explorer Favorites if
+you plan to access them in the future.</p>
+
 <div class="p">Prerequisite:  <ul>
 <li><a href="tstrtexp.html">Launch the Web Services Explorer</a></li>
 
@@ -80,7 +89,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbusproj.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbusproj.dita
index 719454c..94c5d55 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbusproj.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbusproj.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tbusproj" xml:lang="en-us">
 <title>Managing referenced services</title>
 <shortdesc>A service projection enables a business entity to reference a service
@@ -8,10 +9,14 @@
 structure as a projection to an already published businessService, businesses
 can share or reuse services.&nbsp; Service projections are managed centrally
 as part of the referencing businessEntity.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>managing services</indexterm></indexterm>
+<indexterm>UDDI<indexterm>managing services</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Prerequisites:<ol>
 <li><xref href="treg.dita">Register with a registry</xref></li>
-<li><xref href="tstrtexp.dita">Launch the <?Pub Caret?>Web Services Explorer</xref></li>
+<li><xref href="tstrtexp.dita">Launch the Web Services Explorer</xref></li>
 <li><xref href="taddreg.dita">Add the registry to the Web Services Explorer</xref></li>
 </ol></prereq>
 <context><p>For more information on referenced services, refer to the  <xref
@@ -47,4 +52,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002499?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbusproj.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbusproj.html
index d24195b..3f6317b 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbusproj.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tbusproj.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Managing referenced services" />
 <meta name="abstract" content="A service projection enables a business entity to reference a service that was published by another business entity. By using the businessService structure as a projection to an already published businessService, businesses can share or reuse services.  Service projections are managed centrally as part of the referencing businessEntity." />
 <meta name="description" content="A service projection enables a business entity to reference a service that was published by another business entity. By using the businessService structure as a projection to an already published businessService, businesses can share or reuse services.  Service projections are managed centrally as part of the referencing businessEntity." />
+<meta content="Web services, managing services, UDDI" name="DC.subject" />
+<meta content="Web services, managing services, UDDI" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
@@ -21,7 +23,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="tbusproj" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Managing referenced services</title>
 </head>
 <body id="tbusproj"><a name="tbusproj"><!-- --></a>
@@ -30,6 +32,7 @@
 <h1 class="topictitle1">Managing referenced services</h1>
 
 
+
 <div><p>A service projection enables a business entity to reference a service
 that was published by another business entity. By using the businessService
 structure as a projection to an already published businessService, businesses
@@ -80,7 +83,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tdiscov.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tdiscov.dita
index 890aaf3..2959f7f 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tdiscov.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tdiscov.dita
@@ -1,16 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tdiscov" xml:lang="en-us">
 <title>Discovering Web Services</title>
 <titlealts>
 <searchtitle>Discovering and importing Web services</searchtitle>
 </titlealts>
-<shortdesc>Web services can be located through a public business registry
-such as the <tm tmclass="ibm" tmowner="IBM Corporation" tmtype="reg" trademark="IBM">IBM</tm> UDDI
-Business Registry, a private business registry, or a WSIL document. UDDI manages
-the discovery of Web services by relying on a distributed registry of businesses
-and their service descriptions implemented in a common XML format.</shortdesc>
+<shortdesc>Web services can be located through a public business registry,
+a private business registry, or a WSIL document. UDDI manages the discovery
+of Web services by relying on a distributed registry of businesses and their
+service descriptions implemented in a common XML format.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>discovering</indexterm></indexterm>
+<indexterm>UDDI<indexterm>discovering Web services</indexterm></indexterm>
+<indexterm>WSIL<indexterm>discovering Web services</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq><p>Prerequisites:<ol>
 <li><xref href="treg.dita">Register with a registry</xref></li>
@@ -23,10 +29,8 @@
 it provides. For more information on the Web Services Inspection Language
 specification, refer to  <xref href="http://www-106.ibm.com/developerworks/webservices/library/ws-wsilspec.html"
 scope="external"> www.ibm.com/developerworks/webservices/library/ws-wsilspec.html</xref>.
- For more information on UDDI and the <tm tmclass="ibm" tmowner="IBM Corporation"
-tmtype="reg" trademark="IBM">IBM</tm> UDDI Business registries, refer to  <xref
-href="http://www.ibm.com/services/uddi/index.html" scope="external">www.ibm.com/services/uddi/index.html</xref>.</p><p>You
-can discover a Web service in two ways using the Web Services Explorer:</p></context>
+ .</p><p>You can discover a Web service in two ways using the Web Services
+Explorer:</p></context>
 <result><ul>
 <li> <xref href="#tdiscov/discover_from_uddi">Discovering a Web service from
 a UDDI registry</xref> </li>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tdiscov.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tdiscov.html
index 6202e19..bea2b76 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tdiscov.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tdiscov.html
@@ -2,19 +2,21 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
 <meta content="task" name="DC.Type" />
 <meta name="DC.Title" content="Discovering Web Services" />
-<meta name="abstract" content="Web services can be located through a public business registry such as the IBM UDDI Business Registry, a private business registry, or a WSIL document. UDDI manages the discovery of Web services by relying on a distributed registry of businesses and their service descriptions implemented in a common XML format." />
-<meta name="description" content="Web services can be located through a public business registry such as the IBM UDDI Business Registry, a private business registry, or a WSIL document. UDDI manages the discovery of Web services by relying on a distributed registry of businesses and their service descriptions implemented in a common XML format." />
+<meta name="abstract" content="Web services can be located through a public business registry, a private business registry, or a WSIL document. UDDI manages the discovery of Web services by relying on a distributed registry of businesses and their service descriptions implemented in a common XML format." />
+<meta name="description" content="Web services can be located through a public business registry, a private business registry, or a WSIL document. UDDI manages the discovery of Web services by relying on a distributed registry of businesses and their service descriptions implemented in a common XML format." />
+<meta content="Web services, discovering, UDDI, discovering Web services, WSIL" name="DC.subject" />
+<meta content="Web services, discovering, UDDI, discovering Web services, WSIL" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tdiscov" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Discovering and importing Web services</title>
 </head>
 <body id="tdiscov"><a name="tdiscov"><!-- --></a>
@@ -24,11 +26,11 @@
 
 
 
-<div><p>Web services can be located through a public business registry
-such as the IBM<sup>®</sup> UDDI
-Business Registry, a private business registry, or a WSIL document. UDDI manages
-the discovery of Web services by relying on a distributed registry of businesses
-and their service descriptions implemented in a common XML format.</p>
+
+<div><p>Web services can be located through a public business registry,
+a private business registry, or a WSIL document. UDDI manages the discovery
+of Web services by relying on a distributed registry of businesses and their
+service descriptions implemented in a common XML format.</p>
 
 <div class="p"><div class="p">Prerequisites:<ol>
 <li><a href="treg.html">Register with a registry</a></li>
@@ -46,9 +48,9 @@
 WSIL allows you to go directly to the service provider and ask for the services
 it provides. For more information on the Web Services Inspection Language
 specification, refer to  <a href="http://www-106.ibm.com/developerworks/webservices/library/ws-wsilspec.html" target="_blank">www.ibm.com/developerworks/webservices/library/ws-wsilspec.html</a>.
- For more information on UDDI and the IBM UDDI Business registries, refer to  <a href="http://www.ibm.com/services/uddi/index.html" target="_blank">www.ibm.com/services/uddi/index.html</a>.</p>
-<p>You
-can discover a Web service in two ways using the Web Services Explorer:</p>
+ .</p>
+<p>You can discover a Web service in two ways using the Web Services
+Explorer:</p>
 </div>
 
 <div class="section"><ul>
@@ -264,7 +266,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 </div>
 
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tgenwsil.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tgenwsil.dita
index c7cc928..a9d32f9 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tgenwsil.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tgenwsil.dita
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
-<task id="tgenwsil" xml:lang="en-us"><?Pub Caret1?>
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
+<task id="tgenwsil" xml:lang="en-us">
 <title>Generating a WSIL file</title>
 <titlealts>
 <searchtitle>Generating a WSIL file</searchtitle>
@@ -10,6 +11,10 @@
 mechanism that is an alternative to UDDI as well as complementary to UDDI.
 WSIL can be generated at any point in the Web service development cycle once
 the WSDL file for the Web service has been created.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>generating WSIL</indexterm></indexterm>
+<indexterm>WSIL<indexterm>generating</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
 <prereq><b>Prerequisites:</b> In order to generate a WSIL file, you need to
 know the URL to a WSDL file.</prereq>
@@ -65,4 +70,3 @@
 </taskbody>
 </task>
 </task>
-<?Pub *0000003434?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tgenwsil.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tgenwsil.html
index cbbc8e8..ab114a4 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tgenwsil.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tgenwsil.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,10 +11,12 @@
 <meta name="DC.Title" content="Generating a WSIL file" />
 <meta name="abstract" content="Web Services Inspection Language (WSIL) is a service discovery mechanism that is an alternative to UDDI as well as complementary to UDDI. WSIL can be generated at any point in the Web service development cycle once the WSDL file for the Web service has been created." />
 <meta name="description" content="Web Services Inspection Language (WSIL) is a service discovery mechanism that is an alternative to UDDI as well as complementary to UDDI. WSIL can be generated at any point in the Web service development cycle once the WSDL file for the Web service has been created." />
+<meta content="Web services, generating WSIL, WSIL, generating" name="DC.subject" />
+<meta content="Web services, generating WSIL, WSIL, generating" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tgenwsil" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Generating a WSIL file</title>
 </head>
 <body id="tgenwsil"><a name="tgenwsil"><!-- --></a>
@@ -24,6 +26,7 @@
 
 
 
+
 <div><p>Web Services Inspection Language (WSIL) is a service discovery
 mechanism that is an alternative to UDDI as well as complementary to UDDI.
 WSIL can be generated at any point in the Web service development cycle once
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tlogexp.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tlogexp.dita
index f500682..dd0f0e7 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tlogexp.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tlogexp.dita
@@ -1,11 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--ArborText, Inc., 1988-2002, v.4002-->
-<!DOCTYPE task PUBLIC "-//IBM//DTD DITA Task//EN"
- "..\dtd\task.dtd">
-<?Pub Inc?>
+<!--Arbortext, Inc., 1988-2005, v.4002-->
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tlogexp" xml:lang="en-us">
 <title>Logging in to a UDDI registry</title>
-<shortdesc> <uicontrol></uicontrol>&nbsp;</shortdesc>
+<shortdesc>If you have published your Web service to a UDDI registry you can
+log into the registry and manage the service through the Web Services Explorer.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>UDDI<indexterm>logging into a registry</indexterm></indexterm>
+<indexterm>Web Services Explorer<indexterm>logging into a UDDI registry</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Prerequisites:<ol>
 <li><xref href="treg.dita">Register with a registry</xref></li>
@@ -13,38 +18,38 @@
 </ol></prereq>
 <context><p>To Log in to the registry:</p></context>
 <steps>
-<step><cmd> In the UDDI Navigator pane, select the registry.</cmd></step>
-<step><cmd> In the Actions pane, select the  <uicontrol>Login</uicontrol> icon
- <image href="../images/login.gif" alt="Picture of the Login icon."/> in the
-toolbar.</cmd></step>
-<step><cmd>In the Actions pane, enter the publish URL and your user ID and
-password in the  <uicontrol>Publish URL</uicontrol>,  <uicontrol>User ID</uicontrol> and
- <uicontrol>Password</uicontrol> fields respectively.&nbsp; The Publish URL
-field is the URL of the registry to which you are publishing your business
-entity or business service.&nbsp; Click  <uicontrol>Go</uicontrol>.</cmd>
+<step><cmd>Once you have selected a registry, you can scroll to the <uicontrol>Other
+Actions</uicontrol> section of the page and select <uicontrol>Login</uicontrol>,
+or use the login button at the top of the Explorer: <image href="../images/loginicon.gif">
+<alt>screen capture of the login icon</alt></image>.</cmd></step>
+<step><cmd>Enter the URL (if it has not been prefilled for you), the user
+ID, and the password for the registry and click <uicontrol>Go</uicontrol>.</cmd>
 </step>
+<step><cmd>The Summary of Business page displays. It lists all the businesses
+associated with the registry.</cmd></step>
 </steps>
 <result><p>When you have successfully logged in, the Status pane displays
 a message indicating you were successful.</p></result>
+<postreq>To log out of the registry click the Logout button: <image href="../images/logouticon.gif">
+<alt>screen capture of the logout icon</alt></image>.</postreq>
 </taskbody>
 <related-links>
 <linklist><title>Related Concepts</title>
-<link href="../../com.ibm.etools.webservice.doc/concepts/cwsinwsa.dita" product="AD"
-scope="peer"><linktext> Tools for Web services development</linktext></link>
-<link href="../../com.ibm.etools.webservice.doc/concepts/cws.dita" product="AD"
-scope="peer"><linktext>Web services development</linktext></link>
+<link href="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.dita" scope="peer">
+<linktext> Tools for Web services development</linktext></link>
+<link href="../../org.eclipse.jst.ws.doc.user/concepts/cws.dita" scope="peer">
+<linktext>Web services development</linktext></link>
 <link href="../concepts/cuddi.dita"></link>
 </linklist>
 <linklist><title>Related Tasks</title>
 <link href="tuddiexp.dita"></link>
 <link href="tstrtexp.dita"></link>
 <link href="treg.dita"></link>
-<link href="../../com.ibm.etools.webservice.creation.doc/tasks/toverws.dita"
-product="AD" scope="peer"><linktext> Developing Web services</linktext></link>
-</linklist><?Pub Caret1?>
+<link href="../../org.eclipse.jst.ws.doc.user/tasks/toverws.dita" scope="peer">
+<linktext> Developing Web services</linktext></link>
+</linklist>
 <linklist><title>Related Reference</title>
 <link href="../ref/ruddi.dita"></link>
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002235?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tlogexp.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tlogexp.html
new file mode 100644
index 0000000..f976a53
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tlogexp.html
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
+<meta content="public" name="security" />
+<meta content="index,follow" name="Robots" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta content="task" name="DC.Type" />
+<meta name="DC.Title" content="Logging in to a UDDI registry" />
+<meta name="abstract" content="If you have published your Web service to a UDDI registry you can log into the registry and manage the service through the Web Services Explorer." />
+<meta name="description" content="If you have published your Web service to a UDDI registry you can log into the registry and manage the service through the Web Services Explorer." />
+<meta content="UDDI, logging into a registry, Web Services Explorer, logging into a UDDI registry" name="DC.subject" />
+<meta content="UDDI, logging into a registry, Web Services Explorer, logging into a UDDI registry" name="keywords" />
+<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
+<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
+<meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
+<meta scheme="URI" name="DC.Relation" content="tuddiexp.html" />
+<meta scheme="URI" name="DC.Relation" content="tstrtexp.html" />
+<meta scheme="URI" name="DC.Relation" content="treg.html" />
+<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/tasks/toverws.html" />
+<meta scheme="URI" name="DC.Relation" content="../ref/ruddi.html" />
+<meta content="XHTML" name="DC.Format" />
+<meta content="tlogexp" name="DC.Identifier" />
+<meta content="en-us" name="DC.Language" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
+<title>Logging in to a UDDI registry</title>
+</head>
+<body id="tlogexp"><a name="tlogexp"><!-- --></a>
+
+
+<h1 class="topictitle1">Logging in to a UDDI registry</h1>
+
+
+
+<div><p>If you have published your Web service to a UDDI registry you can
+log into the registry and manage the service through the Web Services Explorer.</p>
+
+<div class="p">Prerequisites:<ol>
+<li><a href="treg.html">Register with a registry</a></li>
+
+<li><a href="tstrtexp.html">Launch the Web Services Explorer</a></li>
+
+</ol>
+</div>
+
+<div class="section"><p>To Log in to the registry:</p>
+</div>
+
+<ol>
+<li><span>Once you have selected a registry, you can scroll to the <span class="uicontrol">Other
+Actions</span> section of the page and select <span class="uicontrol">Login</span>,
+or use the login button at the top of the Explorer: <img src="../images/loginicon.gif" alt="screen capture of the login icon" />.</span></li>
+
+<li><span>Enter the URL (if it has not been prefilled for you), the user
+ID, and the password for the registry and click <span class="uicontrol">Go</span>.</span>
+</li>
+
+<li><span>The Summary of Business page displays. It lists all the businesses
+associated with the registry.</span></li>
+
+</ol>
+
+<div class="section"><p>When you have successfully logged in, the Status pane displays
+a message indicating you were successful.</p>
+</div>
+
+<div class="section">To log out of the registry click the Logout button: <img src="../images/logouticon.gif" alt="screen capture of the logout icon" />.</div>
+
+</div>
+
+<div>
+<div class="linklist"><strong>Related Concepts</strong><br />
+
+<div><a href="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html"> Tools for Web services development</a></div>
+<div><a href="../../org.eclipse.jst.ws.doc.user/concepts/cws.html">Web services development</a></div>
+<div><a href="../concepts/cuddi.html" title="Universal Description, Discovery, and Integration (UDDI) specification defines a way to publish and discover information about Web services.">Universal Description, Discovery, and Integration (UDDI)</a></div></div>
+
+<div class="linklist"><strong>Related Tasks</strong><br />
+
+<div><a href="tuddiexp.html" title="Through UDDI and WSIL, other applications can discover WSDL documents and bind with them to execute transactions or perform other business processes.">Publishing Web services and business entities</a></div>
+<div><a href="tstrtexp.html" title="The Web services tools allows you to launch the Web Services Explorer in several ways.">Launching the Web Services Explorer</a></div>
+<div><a href="treg.html" title="In order to publish your business entity and Web service to a UDDI registry, you must first register with the registry that you want to use.">Registering with a UDDI registry</a></div>
+<div><a href="../../org.eclipse.jst.ws.doc.user/tasks/toverws.html"> Developing Web services</a></div></div>
+
+<div class="linklist"><strong>Related Reference</strong><br />
+
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpubent.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpubent.dita
index fceac20..30afdc1 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpubent.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpubent.dita
@@ -1,11 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
-<task id="tpubent" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
+<task id="tpubent" xml:lang="en-us">
 <title>Publishing a business entity</title>
 <shortdesc>A business entity contains information about the business that
 has published a service.&nbsp; Before you can publish a business service,
 you must publish a business entity.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>UDDI<indexterm>publishing a business entity</indexterm></indexterm>
+<indexterm>Web services<indexterm>publishing a business entity</indexterm></indexterm>
+<indexterm>business entities<indexterm>publishing to UDDI</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Prerequisites:<ol>
 <li><xref href="treg.dita">Register with a registry</xref></li>
@@ -93,4 +100,3 @@
 </related-links>
 </task>
 </task>
-<?Pub *0000005120?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpubent.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpubent.html
index 940a4b1..547536e 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpubent.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpubent.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,10 +11,12 @@
 <meta name="DC.Title" content="Publishing a business entity" />
 <meta name="abstract" content="A business entity contains information about the business that has published a service.  Before you can publish a business service, you must publish a business entity." />
 <meta name="description" content="A business entity contains information about the business that has published a service.  Before you can publish a business service, you must publish a business entity." />
+<meta content="UDDI, publishing a business entity, Web services, business entities, publishing to UDDI" name="DC.subject" />
+<meta content="UDDI, publishing a business entity, Web services, business entities, publishing to UDDI" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tpubent" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Publishing a business entity</title>
 </head>
 <body id="tpubent"><a name="tpubent"><!-- --></a>
@@ -23,6 +25,7 @@
 <h1 class="topictitle1">Publishing a business entity</h1>
 
 
+
 <div><p>A business entity contains information about the business that
 has published a service.  Before you can publish a business service,
 you must publish a business entity.</p>
@@ -148,7 +151,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 </div>
 
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpublish.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpublish.dita
index 8ad83ce..9eb0419 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpublish.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpublish.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tpublish" xml:lang="en-us">
 <title>Publishing a Web service</title>
 <titlealts>
@@ -9,6 +10,11 @@
 <shortdesc>The Web service, also known as the business service, describes
 a Web service's endpoint and where its WSDL file resides. The WSDL file lists
 the operations that service provides.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>UDDI<indexterm>publishing a Web service</indexterm></indexterm>
+<indexterm>Web services<indexterm>publishing to a UDDI registry</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Prerequisites:<ol>
 <li> <xref href="treg.dita">Register with a registry</xref>.</li>
@@ -75,10 +81,10 @@
 <result><p> <b>Important:</b> Ensure that you select the service document,
 since the service element is the basis for the Business Service that you will
 publish.&nbsp; You cannot publish a Business Service using a WSDL document
-that does not have service elements.</p><p>The<?Pub Caret?> Web Services Explorer
-is automatically updated with your published Web service. The registry contains
-pointers to the URL of the WSDL service document of the Web service. Businesses
-can now discover and integrate with your Web service.</p></result>
+that does not have service elements.</p><p>The Web Services Explorer is automatically
+updated with your published Web service. The registry contains pointers to
+the URL of the WSDL service document of the Web service. Businesses can now
+discover and integrate with your Web service.</p></result>
 </taskbody>
 <related-links>
 <linklist><title>Related Concepts</title>
@@ -99,4 +105,3 @@
 </related-links>
 </task>
 </task>
-<?Pub *0000005221?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpublish.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpublish.html
index 5151914..e75619a 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpublish.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tpublish.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,10 +11,12 @@
 <meta name="DC.Title" content="Publishing a Web service" />
 <meta name="abstract" content="The Web service, also known as the business service, describes a Web service's endpoint and where its WSDL file resides. The WSDL file lists the operations that service provides." />
 <meta name="description" content="The Web service, also known as the business service, describes a Web service's endpoint and where its WSDL file resides. The WSDL file lists the operations that service provides." />
+<meta content="UDDI, publishing a Web service, Web services, publishing to a UDDI registry" name="DC.subject" />
+<meta content="UDDI, publishing a Web service, Web services, publishing to a UDDI registry" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tpublish" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Publishing a Web service</title>
 </head>
 <body id="tpublish"><a name="tpublish"><!-- --></a>
@@ -24,6 +26,7 @@
 
 
 
+
 <div><p>The Web service, also known as the business service, describes
 a Web service's endpoint and where its WSDL file resides. The WSDL file lists
 the operations that service provides.</p>
@@ -131,10 +134,10 @@
 since the service element is the basis for the Business Service that you will
 publish.  You cannot publish a Business Service using a WSDL document
 that does not have service elements.</p>
-<p>The Web Services Explorer
-is automatically updated with your published Web service. The registry contains
-pointers to the URL of the WSDL service document of the Web service. Businesses
-can now discover and integrate with your Web service.</p>
+<p>The Web Services Explorer is automatically
+updated with your published Web service. The registry contains pointers to
+the URL of the WSDL service document of the Web service. Businesses can now
+discover and integrate with your Web service.</p>
 </div>
 
 </div>
@@ -154,7 +157,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 </div>
 
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/treg.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/treg.dita
index 19bffea..0fb6abd 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/treg.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/treg.dita
@@ -1,45 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
-<task id="treg" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
+<task id="treg" xml:lang="en-us">
 <title>Registering with a UDDI registry</title>
 <titlealts>
 <searchtitle>Registering with a UDDI Registry</searchtitle>
 </titlealts>
 <shortdesc>In order to publish your business entity and Web service to a UDDI
 registry, you must first register with the registry that you want to use.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>UDDI<indexterm>registering with a registry</indexterm></indexterm>
+<indexterm>Web services<indexterm>registering with a UDDI registry</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
-<context><p>There are many different public and private registries with which
-you can register.&nbsp; For a list of public registries refer to  <xref href="http://www.uddi.org/register.html"
-scope="external">www.uddi.org/register.html</xref> Since each registry is
-different, the registry provider will give you instructions for registering.</p><p>The
-following registries are automatically added to Favorites:</p><ul>
-<li><tm tmclass="ibm" tmowner="IBM Corporation" tmtype="reg" trademark="IBM">IBM</tm> UDDI
-Registry</li>
-<li><tm tmclass="ibm" tmowner="IBM Corporation" tmtype="reg" trademark="IBM">IBM</tm> UDDI
-Test Registry</li>
-<li><tm tmclass="special" tmowner="Microsoft Corporation" tmtype="reg" trademark="Microsoft">Microsoft</tm> UDDI
-Registry</li>
-<li><tm tmclass="special" tmowner="Microsoft Corporation" tmtype="reg" trademark="Microsoft">Microsoft</tm> UDDI
-Test Registry</li>
+<context><p>There are many different private registries with which you can
+register. Since each registry is different, the registry provider will give
+you instructions for registering.</p><p>The following registries are automatically
+added to Favorites:</p><ul>
 <li>SAP UDDI Registry</li>
 <li>SAP UDDI Test Registry</li>
 <li>XMethods Registry</li>
 <li>NTT Communications Registry</li>
 </ul><p>You can use any of these registries by selecting the Favorites icon
 in the Web Services Explorer toolbar. All of these registries are based on
-the UDDI Business Registry Version 2. Go to the following URL to obtain a
-user ID and password for the <tm tmclass="ibm" tmowner="IBM Corporation" tmtype="reg"
-trademark="IBM">IBM</tm> UDDI registry:  <xref format="html" href="http://www-3.ibm.com/services/uddi/"
-scope="external">www.ibm.com/services/uddi/</xref>. The details page of each
-registry will have registration instructions.</p><p>The <tm tmclass="ibm"
-tmowner="IBM Corporation" tmtype="reg" trademark="IBM">IBM</tm> UDDI Test
-Registry allows you to develop your Web service and experience the UDDI registration
-process without placing your Web service in an official registry. Use the <tm
-tmclass="ibm" tmowner="IBM Corporation" tmtype="reg" trademark="IBM">IBM</tm> UDDI
-Test Registry or a private registry to experiment with UDDI, and to test and
-validate your Web service.&nbsp;The public production registries are listed
-under Favorites. The Web Services Explorer does not preload any registries
+the UDDI Business Registry Version 2. The details page of each registry will
+have registration instructions.</p><p>The public production registries are
+listed under Favorites. The Web Services Explorer does not preload any registries
 by default.&nbsp; You can preload registries from the favorites section of
 the Web Services Explorer or by using the Unit Test UDDI wizard. You can also
 preload and configure private registries using the Unit Test UDDI wizard.
@@ -64,4 +52,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000003759?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/treg.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/treg.html
index 6c1a805..08ae54d 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/treg.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/treg.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Registering with a UDDI registry" />
 <meta name="abstract" content="In order to publish your business entity and Web service to a UDDI registry, you must first register with the registry that you want to use." />
 <meta name="description" content="In order to publish your business entity and Web service to a UDDI registry, you must first register with the registry that you want to use." />
+<meta content="UDDI, registering with a registry, Web services, registering with a UDDI registry" name="DC.subject" />
+<meta content="UDDI, registering with a registry, Web services, registering with a UDDI registry" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
@@ -20,7 +22,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="treg" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Registering with a UDDI Registry</title>
 </head>
 <body id="treg"><a name="treg"><!-- --></a>
@@ -30,27 +32,16 @@
 
 
 
+
 <div><p>In order to publish your business entity and Web service to a UDDI
 registry, you must first register with the registry that you want to use.</p>
 
-<div class="section"><p>There are many different public and private registries with which
-you can register.  For a list of public registries refer to  <a href="http://www.uddi.org/register.html" target="_blank">www.uddi.org/register.html</a> Since each registry is
-different, the registry provider will give you instructions for registering.</p>
-<p>The
-following registries are automatically added to Favorites:</p>
+<div class="section"><p>There are many different private registries with which you can
+register. Since each registry is different, the registry provider will give
+you instructions for registering.</p>
+<p>The following registries are automatically
+added to Favorites:</p>
 <ul>
-<li>IBM<sup>®</sup> UDDI
-Registry</li>
-
-<li>IBM UDDI
-Test Registry</li>
-
-<li>Microsoft<sup>®</sup> UDDI
-Registry</li>
-
-<li>Microsoft UDDI
-Test Registry</li>
-
 <li>SAP UDDI Registry</li>
 
 <li>SAP UDDI Test Registry</li>
@@ -62,15 +53,10 @@
 </ul>
 <p>You can use any of these registries by selecting the Favorites icon
 in the Web Services Explorer toolbar. All of these registries are based on
-the UDDI Business Registry Version 2. Go to the following URL to obtain a
-user ID and password for the IBM UDDI registry:  <a href="http://www-3.ibm.com/services/uddi/" target="_blank">www.ibm.com/services/uddi/</a>. The details page of each
-registry will have registration instructions.</p>
-<p>The IBM UDDI Test
-Registry allows you to develop your Web service and experience the UDDI registration
-process without placing your Web service in an official registry. Use the IBM UDDI
-Test Registry or a private registry to experiment with UDDI, and to test and
-validate your Web service. The public production registries are listed
-under Favorites. The Web Services Explorer does not preload any registries
+the UDDI Business Registry Version 2. The details page of each registry will
+have registration instructions.</p>
+<p>The public production registries are
+listed under Favorites. The Web Services Explorer does not preload any registries
 by default.  You can preload registries from the favorites section of
 the Web Services Explorer or by using the Unit Test UDDI wizard. You can also
 preload and configure private registries using the Unit Test UDDI wizard.
@@ -95,7 +81,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tsampapp.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tsampapp.html
deleted file mode 100644
index 5c65754..0000000
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tsampapp.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html lang="en-us" xml:lang="en-us">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/ -->
-<link rel="stylesheet" type="text/css" href="../../org.eclipse.wst.doc.user/common.css" />
-<title>Generating a Java client proxy and a sample application from
-a WSDL document</title>
-</head>
-<body id="tsampapp"><a name="tsampapp"><!-- --></a>
-
-<h1 class="topictitle1">Generating a Java client proxy and a sample application
-from a WSDL document using the IBM SOAP run-time environment</h1>
-<div><p>The Web Service Client wizard assists you in generating a Java™ bean
-proxy and a sample application.  The sample Web application demonstrates
-how to code a proxy file.</p>
-<div class="p">Prerequisites:<ol><li id="tsampapp__createtomcatlinks"><a name="tsampapp__createtomcatlinks"><!-- --></a>If you are using the Apache Jakarta Tomcat servlet
-container as your server, you must install it, configure an instance of it,
-and create a Web project targeted to it as described in <a href="../../org.eclipse.jst.ws.axis.creation.ui.doc.user/tasks/ttomcatserv.html">Creating a WebSphere<sup>®</sup> Server and Web project</a></li>
-<li id="tsampapp__prereqcreatewsprojs"><a name="tsampapp__prereqcreatewsprojs"><!-- --></a>If you are using a WebSphere server, create a dynamic
-Web project targeted to the appropriate server as described in <a href="../../org.eclipse.jst.ws.doc.user/tasks/twasserv.html">Creating a WebSphere Server and Web project</a>.</li>
-<li>Discover and import a WSDL document into the Web project. You can only
-use a WSDL file that contains a service element.</li>
-</ol>
-</div>
-<div class="section"><p>To generate a Java client proxy and a sample application
-from a discovered WSDL document:</p>
-</div>
-<ol><li><span>Switch to the J2EE perspective (<span class="uicontrol">Window &gt; Open Perspective
-&gt; J2EE</span>).</span></li>
-<li><span>In the Project Explorer view, select the Web project in which you
-want to generate a sample application.</span></li>
-<li><span>Click  <span class="uicontrol">File &gt; New &gt; Other</span>. Select  <span class="uicontrol">Web
-Services</span> in order to display the various Web service wizards.
-Select the  <span class="uicontrol">Web Service Client</span> wizard. Click  <span class="uicontrol">Next</span>.</span></li>
-<li><span>Web Services panel: Select the type of proxy to be generated, and
-whether or not it will be tested.</span></li>
-<li><span>Client Environment Configuration page: Select the run-time environment
-and the server for your Web service client.</span><ol type="a"><li class="substepexpand"><span>Click  <span class="uicontrol">Explore Options</span> and select the IBM<sup>®</sup> SOAP
-run-time environment and select the server on which you want to run your Web
-service client.</span> If you want to use the Apache Axis 1.0 run-time
-environment or the IBM WebSphere run-time environments, refer to the appropriate
-task. </li>
-<li class="substepexpand"><span>Select the type and name of project in which you want the Web
-service client created.</span> <ul><li> If you enter the name of an existing project, the project type field
-must match that of the existing project. Ensure that the project selected
-as the Client Web Project is different from the Service Web Project, or the
-service will be overwritten by the client's generated artifacts.</li>
-<li>If you enter a name of a project that does not already exist, the wizard
-will create the project for you.</li>
-<li>Note that the only project type supported for Axis and SOAP run-time clients
-is a Web project. If you want the client to be created in a Java, EJB,
-or Application Client project, you must select the WebSphere run-time environment for
-your client.</li>
-</ul>
-</li>
-<li class="substepexpand"><span> Select an existing EAR or enter a unique name to associate
-the Web service client with a different EAR than the Web service EAR. <strong>Note:</strong> Selecting
-different EARs for the Web service and Web service client can reduce the chance
-of encountering run time errors, but will use more system resources.</span></li>
-</ol>
-</li>
-<li><span>Web Service Selection panel: Enter the URI to the WSDL, WSIL, or
-HTML file that will be used to generate the Java bean. You can optionally generate a
-WSIL file from this file as well.</span></li>
-<li><span>Web Service Binding Proxy Generation panel: Select the binding
-and proxy options.</span></li>
-<li><span>Web Service Proxy Test panel: Select the test facility that you
-will use to test the proxy, and the methods that you want included in the
-proxy. Note that the Universal Test Client (UTC) is only compatible with Web
-service clients deployed on WebSphere servers. Click  <span class="uicontrol">Finish</span></span></li>
-</ol>
-<div class="section"><p>Notes<sup>®</sup>:</p>
-<ul><li>When defining custom mappings ensure the bean, serializer, and deserializer
-classes are on the build path of the Web project, otherwise the wizard will
-not accept their class names.</li>
-<li>Indexed properties that result from WSDL XSD complex Types involving more
-than one occurrence of DOM Elements are not supported by the sample. SOAP
-encoded methods using indexed properties are not available for invocation.
-Literal XML encoded methods using indexed properties are available for invocation;
-however, the inputs and outputs must be specified as Literal XML.</li>
-<li>Only the following types are supported by the sample application:  <ul><li>Members that use getters and setters.</li>
-<li>All primitive types and corresponding Java types.</li>
-<li>Java type
-String.</li>
-<li>org.w3c.dom.Element</li>
-<li>Java beans.</li>
-<li>BigDecimal, GregorianCalendar, and Date.</li>
-</ul>
-</li>
-</ul>
-<p><strong>Important:</strong> It is recommended that you select the service WSDL
-document rather than the binding WSDL document in order to generate a client
-proxy that contains the complete endpoint information. The service element
-is the basis for the Business Service that you will publish. You cannot publish
-a Business Service using a WSDL document that does not have service elements. 
-If you generate a proxy from a WSDL binding document, you must call the  <tt class="sysout">setEndPoint()</tt> method
-to set an endpoint URL before you call any other method in the proxy. 
-The proxy generated from a WSDL binding document is not automatically equipped
-with an endpoint URL.</p>
-<p>The generated Java bean proxy provides a remote procedure
-call interface to the Web service. The sample Web application demonstrates
-how to code the proxy file.</p>
-<p>Once you have generated your Java client
-proxy, you may test the methods of the Web service through the proxy using
-Web Services sample JSPs or the Universal test client.</p>
-<ul><li>If you have selected to test the generated proxy using Web service JSPs,
-the proxy is launched in a Web browser at the following URL:<samp class="codeph"> http://localhost: <var class="varname">port</var>/WebProjectClient/sample/ <var class="varname">WebService</var>/TestClient.jsp </samp> You can use this sample application to test the
-Web service by selecting a method, entering a value for the method, and clicking
- <span class="uicontrol">Invoke</span>. The result of the method will display in the
-results pane.</li>
-<li>If you have selected to test the generated proxy using the Universal Test
-Client, it will be launched in a browser window at the following URL:<samp class="codeph">  <tt class="sysout">http://localhost:9080/UTC/preload?object=proxy.soap. <var class="varname">ProxyName</var>Proxy</tt> </samp> In the Reference pane,
-under Object References, expand the proxy to display the methods of the Web
-service. Click the method you want to test, enter a value in the Parameters
-pane, and click  <span class="uicontrol">Invoke</span>. The result will be generated
-below.</li>
-</ul>
-<p>For more information on creating a Web project, refer to the Web application
-development documentation.</p>
-</div>
-</div>
-<div>
-<div class="linklist"><strong>Collected links</strong><br />
-
-<div><a href="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html"> Tools for Web services development</a></div>
-<div><a href="../../org.eclipse.jst.ws.doc.user/concepts/cws.html">Web services development</a></div></div>
-
-<div class="linklist"><strong>Related Tasks</strong><br />
-
-<div><a href="tuddiexp.html" title="Through UDDI and WSIL, other applications can discover WSDL documents and bind with them to execute transactions or perform other business processes.">Publishing Web services and business entities</a></div></div>
-
-</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tstrtexp.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tstrtexp.dita
index f52b646..7edc104 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tstrtexp.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tstrtexp.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tstrtexp" xml:lang="en-us">
 <title>Launching the Web Services Explorer</title>
 <titlealts>
@@ -8,6 +9,10 @@
 </titlealts>
 <shortdesc>The Web services tools allows you to launch the Web Services Explorer
 in several ways.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web Services Explorer<indexterm>launching</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <context><ul>
 <li>From the main toolbar in the J2EE perspective.</li>
@@ -88,11 +93,11 @@
 <task id="d0e134" xml:lang="en-us">
 <title>Launching the Web Services Explorer from a WSDL file</title>
 <taskbody>
-<context><p>To launch the<?Pub Caret?> Web Services Explorer from a WSDL file,
-select the WSDL file and right-click and choose  <b>Web Services > Test with
-Web Services Explorer</b> or  <b>Publish WSDL file</b>.&nbsp; The Web Services
-Explorer opens. The  <b>Test with Web Services Explorer</b> action will preload
-the WSDL in the WSDL page.</p></context>
+<context><p>To launch the Web Services Explorer from a WSDL file, select the
+WSDL file and right-click and choose  <b>Web Services > Test with Web Services
+Explorer</b> or  <b>Publish WSDL file</b>.&nbsp; The Web Services Explorer
+opens. The  <b>Test with Web Services Explorer</b> action will preload the
+WSDL in the WSDL page.</p></context>
 </taskbody>
 <related-links>
 <linklist><title>Related Concepts</title>
@@ -112,4 +117,3 @@
 </related-links>
 </task>
 </task>
-<?Pub *0000005105?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tstrtexp.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tstrtexp.html
index 4682e8d..61804a1 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tstrtexp.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tstrtexp.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,10 +11,12 @@
 <meta name="DC.Title" content="Launching the Web Services Explorer" />
 <meta name="abstract" content="The Web services tools allows you to launch the Web Services Explorer in several ways." />
 <meta name="description" content="The Web services tools allows you to launch the Web Services Explorer in several ways." />
+<meta content="Web Services Explorer, launching" name="DC.subject" />
+<meta content="Web Services Explorer, launching" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tstrtexp" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Launching the Web Services Explorer</title>
 </head>
 <body id="tstrtexp"><a name="tstrtexp"><!-- --></a>
@@ -24,6 +26,7 @@
 
 
 
+
 <div><p>The Web services tools allows you to launch the Web Services Explorer
 in several ways.</p>
 
@@ -151,11 +154,11 @@
 <h2 class="topictitle2">Launching the Web Services Explorer from a WSDL file</h2>
 
 <div>
-<div class="section"><p>To launch the Web Services Explorer from a WSDL file,
-select the WSDL file and right-click and choose  <strong>Web Services &gt; Test with
-Web Services Explorer</strong> or  <strong>Publish WSDL file</strong>.  The Web Services
-Explorer opens. The  <strong>Test with Web Services Explorer</strong> action will preload
-the WSDL in the WSDL page.</p>
+<div class="section"><p>To launch the Web Services Explorer from a WSDL file, select the
+WSDL file and right-click and choose  <strong>Web Services &gt; Test with Web Services
+Explorer</strong> or  <strong>Publish WSDL file</strong>.  The Web Services Explorer
+opens. The  <strong>Test with Web Services Explorer</strong> action will preload the
+WSDL in the WSDL page.</p>
 </div>
 
 </div>
@@ -174,7 +177,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 </div>
 
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.dita
index 4857182..325031c 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="ttestwsdl" xml:lang="en-us">
 <title>Testing WSDL documents and Web services using the WSDL Explorer</title>
 <titlealts>
@@ -11,8 +12,13 @@
 applications can discover WSDL documents and bind with them to execute transactions
 or perform other business processes. The Web Services Explorer allows you
 to explore, import, and test WSDL documents.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>testing with the Web Services Explorer</indexterm></indexterm>
+<indexterm>Web services<indexterm>testing with the Web Services Explorer</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
-<prereq>Prerequisites:&nbsp; To use the WSDL Explorer:<ul>
+<prereq>Prerequisites: To use the WSDL Explorer:<ul>
 <li>You must have a valid URL for a WSDL document.</li>
 <li>You must launch the Web Services Explorer: <xref href="tstrtexp.dita">Launch
 the Web Services Explorer</xref></li>
@@ -31,9 +37,9 @@
 </step>
 <step><cmd>Select WSDL Main in the Navigator pane, enter or browse to an existing
 WSDL URL in the right-hand pane, and click  <b>Go</b>. For this example the
-WSDL being used is a Web Service which returns a temperature for any entered
-zip code.   <image alt="Screen capture of the WSDL Main pane of the Web Services Explorer"
-href="../images/wsdlexp.gif" placement="break"></image>  The following nodes
+WSDL being used is a Web Service which converts temperature from Celsius to
+Fahrenheit or Fahrenheit to Celsius.   <image alt="Screen capture of the WSDL Main pane of the Web Services Explorer"
+href="../images/wsdltemp.gif" placement="break"></image>  The following nodes
 will be added to the WSDL tree: </cmd><info><ul>
 <li>The WSDL node:  <image alt="WSDL node icon" href="../images/wsdlnode.gif">
 </image></li>
@@ -45,13 +51,13 @@
 </image></li>
 </ul></info></step>
 <step><cmd>In the WSDL Binding Details pane, click the operation (in this
-example the  <systemoutput>getTemp</systemoutput> operation) to display: </cmd>
+example the  <systemoutput>CtoF</systemoutput> operation) to display: </cmd>
 <info><ul>
 <li>A drop-down list with the endpoints available for this operation</li>
 <li>Fields for each of the parameters of this operation (in this example the
- <systemoutput>zipcode</systemoutput> parameter) and the type of information
-the parameter is looking for (in this example  <systemoutput>zipcode</systemoutput> is
-requesting a string).   <image alt="Invoke a WSDL Operation pane of the Web Services Explorer"
+ <systemoutput>temp</systemoutput> parameter) and the type of information
+the parameter is looking for (in this example  <systemoutput>temp</systemoutput> is
+requesting an integer).<image alt="Invoke a WSDL Operation pane of the Web Services Explorer"
 href="../images/wsdlop.gif" placement="break"></image>  The Form view allows
 you to enter the parameters for the Web service operation call. Parameters
 names are displayed as links whose action is to display a dialog describing
@@ -60,7 +66,7 @@
  <image alt="Screen capture of the XSD Information Dialog" href="../images/scenario7.gif"
 placement="break"></image> &nbsp;</li>
 </ul></info></step>
-<step><cmd>Enter your string and click  <b>Go</b>. The result is returned
+<step><cmd>Enter your integer and click  <b>Go</b>. The result is returned
 in the Status pane.   <image alt="Screen capture of an invoked WSDL operation showing the result in the Status pane"
 href="../images/wsdlopret.gif" placement="break"></image> &nbsp;</cmd></step>
 <step><cmd>If you are using SOAP as your binding method, clicking Source or
@@ -71,8 +77,8 @@
 validate the XML if you modify it, but not the parameter values you enter.
  <image alt="Source view of the Invoke a WSDL Operation pane." href="../images/wsdlopretx.gif"
 placement="break"></image></cmd></step>
-<step><cmd>&nbsp;If you are using SOAP as your binding type, you will also
-have the option of toggling the Status pane between the Source and Form views.
+<step><cmd>If you are using SOAP as your binding type, you will also have
+the option of toggling the Status pane between the Source and Form views.
 The Source view shows the SOAP request and response envelopes, including the
 parameters you have entered to test the service and the returned value.   <image
 alt="Screen capture of the source view of the SOAP request and response envelopes"
@@ -87,7 +93,7 @@
 <linktext>Web services development</linktext></link>
 <link href="../concepts/cuddi.dita"></link>
 </linklist>
-<linklist><title>Related Tasks</title><?Pub Caret?>
+<linklist><title>Related Tasks</title>
 <link href="tuddiexp.dita"></link>
 <link href="tstrtexp.dita"></link>
 <link href="../../org.eclipse.jst.ws.doc.user/tasks/toverws.dita" scope="peer">
@@ -95,4 +101,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000005726?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.html
index ab25be2..9921b8b 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Testing WSDL documents and Web services using the WSDL Explorer" />
 <meta name="abstract" content="WSDL documents allow developers to expose their applications as network-accessible services on the Internet. Through UDDI and WSIL, other applications can discover WSDL documents and bind with them to execute transactions or perform other business processes. The Web Services Explorer allows you to explore, import, and test WSDL documents." />
 <meta name="description" content="WSDL documents allow developers to expose their applications as network-accessible services on the Internet. Through UDDI and WSIL, other applications can discover WSDL documents and bind with them to execute transactions or perform other business processes. The Web Services Explorer allows you to explore, import, and test WSDL documents." />
+<meta content="WSDL, testing with the Web Services Explorer, Web services" name="DC.subject" />
+<meta content="WSDL, testing with the Web Services Explorer, Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
@@ -20,7 +22,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="ttestwsdl" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Using the WSDL Explorer</title>
 </head>
 <body id="ttestwsdl"><a name="ttestwsdl"><!-- --></a>
@@ -30,13 +32,14 @@
 
 
 
+
 <div><p>WSDL documents allow developers to expose their applications as
 network-accessible services on the Internet. Through UDDI and WSIL, other
 applications can discover WSDL documents and bind with them to execute transactions
 or perform other business processes. The Web Services Explorer allows you
 to explore, import, and test WSDL documents.</p>
 
-<div class="p">Prerequisites:  To use the WSDL Explorer:<ul>
+<div class="p">Prerequisites: To use the WSDL Explorer:<ul>
 <li>You must have a valid URL for a WSDL document.</li>
 
 <li>You must launch the Web Services Explorer: <a href="tstrtexp.html">Launch the Web Services Explorer</a></li>
@@ -63,8 +66,8 @@
 
 <li class="stepexpand"><span>Select WSDL Main in the Navigator pane, enter or browse to an existing
 WSDL URL in the right-hand pane, and click  <strong>Go</strong>. For this example the
-WSDL being used is a Web Service which returns a temperature for any entered
-zip code.   <br /><img src="../images/wsdlexp.gif" alt="Screen capture of the WSDL Main pane of the Web Services Explorer" /><br />  The following nodes
+WSDL being used is a Web Service which converts temperature from Celsius to
+Fahrenheit or Fahrenheit to Celsius.   <br /><img src="../images/wsdltemp.gif" alt="Screen capture of the WSDL Main pane of the Web Services Explorer" /><br />  The following nodes
 will be added to the WSDL tree: </span> <ul>
 <li>The WSDL node:  <img src="../images/wsdlnode.gif" alt="WSDL node icon" /></li>
 
@@ -79,14 +82,14 @@
 </li>
 
 <li class="stepexpand"><span>In the WSDL Binding Details pane, click the operation (in this
-example the  <tt class="sysout">getTemp</tt> operation) to display: </span>
+example the  <tt class="sysout">CtoF</tt> operation) to display: </span>
  <ul>
 <li>A drop-down list with the endpoints available for this operation</li>
 
 <li>Fields for each of the parameters of this operation (in this example the
- <tt class="sysout">zipcode</tt> parameter) and the type of information
-the parameter is looking for (in this example  <tt class="sysout">zipcode</tt> is
-requesting a string).   <br /><img src="../images/wsdlop.gif" alt="Invoke a WSDL Operation pane of the Web Services Explorer" /><br />  The Form view allows
+ <tt class="sysout">temp</tt> parameter) and the type of information
+the parameter is looking for (in this example  <tt class="sysout">temp</tt> is
+requesting an integer).<br /><img src="../images/wsdlop.gif" alt="Invoke a WSDL Operation pane of the Web Services Explorer" /><br />  The Form view allows
 you to enter the parameters for the Web service operation call. Parameters
 names are displayed as links whose action is to display a dialog describing
 embedded XML Schema Definition Language (XSD) information. More information
@@ -96,7 +99,7 @@
 </ul>
 </li>
 
-<li class="stepexpand"><span>Enter your string and click  <strong>Go</strong>. The result is returned
+<li class="stepexpand"><span>Enter your integer and click  <strong>Go</strong>. The result is returned
 in the Status pane.   <br /><img src="../images/wsdlopret.gif" alt="Screen capture of an invoked WSDL operation showing the result in the Status pane" /><br />  </span></li>
 
 <li class="stepexpand"><span>If you are using SOAP as your binding method, clicking Source or
@@ -107,8 +110,8 @@
 validate the XML if you modify it, but not the parameter values you enter.
  <br /><img src="../images/wsdlopretx.gif" alt="Source view of the Invoke a WSDL Operation pane." /><br /></span></li>
 
-<li class="stepexpand"><span> If you are using SOAP as your binding type, you will also
-have the option of toggling the Status pane between the Source and Form views.
+<li class="stepexpand"><span>If you are using SOAP as your binding type, you will also have
+the option of toggling the Status pane between the Source and Form views.
 The Source view shows the SOAP request and response envelopes, including the
 parameters you have entered to test the service and the returned value.   <br /><img src="../images/wsdlstatx.gif" alt="Screen capture of the source view of the SOAP request and response envelopes" /><br /> </span></li>
 
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.dita
index 1ac3b81..ad8bd38 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.dita
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
-<task id="tuddiexp" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
+<task id="tuddiexp" xml:lang="en-us">
 <title>Publishing Web services and business entities</title>
 <titlealts>
 <searchtitle>Publishing Web services and business entities with the Web Services
@@ -9,6 +10,12 @@
 </titlealts>
 <shortdesc>Through UDDI and WSIL, other applications can discover WSDL documents
 and bind with them to execute transactions or perform other business processes. </shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web Services<indexterm>publishing<indexterm>overview</indexterm></indexterm></indexterm>
+<indexterm>business entities<indexterm>publishing</indexterm></indexterm>
+<indexterm>Web Services Explorer<indexterm>publishing Web services</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <context><p>UDDI enables the discovery of Web services by providing a distributed
 registry of businesses and their service descriptions, implemented in a common
@@ -33,6 +40,7 @@
 <li> <xref href="taddreg.dita">Add a registry to the Web Services Explorer</xref> </li>
 <li> <xref href="tbkmrk.dita">Adding a registry, business entity, business
 service, service interface, WSIL, or WSDL service to Favorites</xref> </li>
+<li><xref href="tlogexp.dita"></xref></li>
 <li> <xref href="tdiscov.dita">Discover a Web service</xref> </li>
 <li> <xref href="tpubent.dita">Publish a business entity to a registry</xref> </li>
 <li> <xref href="tpublish.dita">Publish a business service to a registry</xref> </li>
@@ -76,8 +84,7 @@
 are launched by the user or by the tools themselves (such as the Universal
 Test Client).  The Web Services Explorer will now launch in an external browser
 and its URL should be in the Address field. This can then be pasted or opened
-using am accessibility assisting browser such as <tm tmclass="ibm" tmowner="IBM Corporation"
-tmtype="reg" trademark="IBM">IBM</tm> Home Page Reader.</li>
+using am accessibility assisting browser.</li>
 <li>When performing an advanced find or publish in the UDDI page of the Web
 Services Explorer, the items in the drop down list for picking a language
 in conjunction with a name or description is sorted  according to the operating
@@ -113,8 +120,6 @@
 <link href="tuddiexp.dita"></link>
 <link href="tstrtexp.dita"></link>
 <link href="twsdlexp.dita"></link>
-<link href="../../org.eclipse.jst.ws.uddi.registry.doc.user/tasks/tuddiwiz.dita"
-scope="peer"><linktext>Configure a private registry</linktext></link>
 <link href="../../org.eclipse.jst.ws.doc.user/tasks/toverws.dita" scope="peer">
 <linktext> Developing Web services</linktext></link>
 </linklist>
@@ -123,4 +128,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000007522?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.html
index ddb5d68..b53f26e 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,19 +11,20 @@
 <meta name="DC.Title" content="Publishing Web services and business entities" />
 <meta name="abstract" content="Through UDDI and WSIL, other applications can discover WSDL documents and bind with them to execute transactions or perform other business processes." />
 <meta name="description" content="Through UDDI and WSIL, other applications can discover WSDL documents and bind with them to execute transactions or perform other business processes." />
+<meta content="Web Services, publishing, overview, business entities, Web Services Explorer, publishing Web services" name="DC.subject" />
+<meta content="Web Services, publishing, overview, business entities, Web Services Explorer, publishing Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
 <meta scheme="URI" name="DC.Relation" content="tuddiexp.html" />
 <meta scheme="URI" name="DC.Relation" content="tstrtexp.html" />
 <meta scheme="URI" name="DC.Relation" content="twsdlexp.html" />
-<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.uddi.registry.doc.user/tasks/tuddiwiz.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/tasks/toverws.html" />
 <meta scheme="URI" name="DC.Relation" content="../ref/ruddi.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tuddiexp" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Publishing Web services and business entities with the Web Services
 Explorer</title>
 </head>
@@ -34,6 +35,7 @@
 
 
 
+
 <div><p>Through UDDI and WSIL, other applications can discover WSDL documents
 and bind with them to execute transactions or perform other business processes. </p>
 
@@ -65,6 +67,8 @@
 
 <li> <a href="tbkmrk.html">Adding a registry, business entity, business service, service interface, WSIL, or WSDL service to Favorites</a> </li>
 
+<li><a href="tlogexp.html" title="If you have published your Web service to a UDDI registry you can&#10;log into the registry and manage the service through the Web Services Explorer.">Logging in to a UDDI registry</a></li>
+
 <li> <a href="tdiscov.html">Discover a Web service</a> </li>
 
 <li> <a href="tpubent.html">Publish a business entity to a registry</a> </li>
@@ -130,7 +134,7 @@
 are launched by the user or by the tools themselves (such as the Universal
 Test Client).  The Web Services Explorer will now launch in an external browser
 and its URL should be in the Address field. This can then be pasted or opened
-using am accessibility assisting browser such as IBM<sup>®</sup> Home Page Reader.</li>
+using am accessibility assisting browser.</li>
 
 <li>When performing an advanced find or publish in the UDDI page of the Web
 Services Explorer, the items in the drop down list for picking a language
@@ -174,12 +178,11 @@
 <div><a href="tuddiexp.html" title="Through UDDI and WSIL, other applications can discover WSDL documents and bind with them to execute transactions or perform other business processes.">Publishing Web services and business entities</a></div>
 <div><a href="tstrtexp.html" title="The Web services tools allows you to launch the Web Services Explorer in several ways.">Launching the Web Services Explorer</a></div>
 <div><a href="twsdlexp.html" title="">Exploring WSDL using the WSDL Explorer</a></div>
-<div><a href="../../org.eclipse.jst.ws.uddi.registry.doc.user/tasks/tuddiwiz.html">Configure a private registry</a></div>
 <div><a href="../../org.eclipse.jst.ws.doc.user/tasks/toverws.html"> Developing Web services</a></div></div>
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tunpub.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tunpub.dita
index 7f9097d..831d6b6 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tunpub.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tunpub.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tunpub" xml:lang="en-us">
 <title>Removing a business entity, Web service, or service interface from
 a registry</title>
@@ -10,12 +11,19 @@
 </titlealts>
 <shortdesc>After you have published a business entity, Web service, or service
 interface, you can remove or unpublish it through the Web Services Explorer.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>removing from a UDDI registry</indexterm></indexterm>
+<indexterm>service interfaces<indexterm>removing from a UDDI registry</indexterm></indexterm>
+<indexterm>business entities<indexterm>removing from a UDDI registry</indexterm></indexterm>
+<indexterm>UDDI<indexterm>removing services from a registry</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Prerequisites:<ol>
 <li> <xref href="tpubent.dita">Publish a business entity</xref>.</li>
 <li> <xref href="tpublish.dita">Publish a Web service</xref>.</li>
 <li> <xref href="tpublish.dita">Publish a service interface</xref>.</li>
-<li> <xref href="tstrtexp.dita">Launch the<?Pub Caret?> Web Services Explorer</xref>.</li>
+<li> <xref href="tstrtexp.dita">Launch the Web Services Explorer</xref>.</li>
 </ol></prereq>
 <context>To unpublish a business entity, Web service, or service interface
 using the Web Services Explorer:</context>
@@ -53,4 +61,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002492?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tunpub.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tunpub.html
index 81dfe01..4dbc524 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tunpub.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tunpub.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Removing a business entity, Web service, or service interface from a registry" />
 <meta name="abstract" content="After you have published a business entity, Web service, or service interface, you can remove or unpublish it through the Web Services Explorer." />
 <meta name="description" content="After you have published a business entity, Web service, or service interface, you can remove or unpublish it through the Web Services Explorer." />
+<meta content="Web services, removing from a UDDI registry, service interfaces, business entities, UDDI, removing services from a registry" name="DC.subject" />
+<meta content="Web services, removing from a UDDI registry, service interfaces, business entities, UDDI, removing services from a registry" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
@@ -24,7 +26,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="tunpub" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Removing a business entity, Web service, or service interface
 from a registry</title>
 </head>
@@ -36,6 +38,7 @@
 
 
 
+
 <div><p>After you have published a business entity, Web service, or service
 interface, you can remove or unpublish it through the Web Services Explorer.</p>
 
@@ -92,7 +95,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tupdate.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tupdate.dita
index 23165cb..c4fdd25 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tupdate.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tupdate.dita
@@ -1,10 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tupdate" xml:lang="en-us">
 <title>Updating a business entity, Web service, or service interface</title>
 <shortdesc>After you have published a business entity, Web service, or service
 interface, you can update it through the Web Services Explorer.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>business entities<indexterm>updating in a UDDI registry</indexterm></indexterm>
+<indexterm>Web services<indexterm>updating UDDI registries</indexterm></indexterm>
+<indexterm>service interfaces<indexterm>updating UDDI registries</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Prerequisites:<ol>
 <li> <xref href="tpubent.dita">Publish a business entity</xref>.</li>
@@ -25,8 +32,8 @@
 </step>
 </steps>
 <result><p>The business entity, Web service, or service interface is updated
-in the registry and the<?Pub Caret?> Web Services Explorer is automatically
-updated with your change.</p></result>
+in the registry and the Web Services Explorer is automatically updated with
+your change.</p></result>
 </taskbody>
 <related-links>
 <linklist><title>Related Concepts</title>
@@ -48,4 +55,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002323?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tupdate.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tupdate.html
index 183653e..0644aec 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tupdate.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tupdate.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Updating a business entity, Web service, or service interface" />
 <meta name="abstract" content="After you have published a business entity, Web service, or service interface, you can update it through the Web Services Explorer." />
 <meta name="description" content="After you have published a business entity, Web service, or service interface, you can update it through the Web Services Explorer." />
+<meta content="business entities, updating in a UDDI registry, Web services, updating UDDI registries, service interfaces" name="DC.subject" />
+<meta content="business entities, updating in a UDDI registry, Web services, updating UDDI registries, service interfaces" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cuddi.html" />
@@ -23,7 +25,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="tupdate" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Updating a business entity, Web service, or service interface</title>
 </head>
 <body id="tupdate"><a name="tupdate"><!-- --></a>
@@ -32,6 +34,7 @@
 <h1 class="topictitle1">Updating a business entity, Web service, or service interface</h1>
 
 
+
 <div><p>After you have published a business entity, Web service, or service
 interface, you can update it through the Web Services Explorer.</p>
 
@@ -65,8 +68,8 @@
 </ol>
 
 <div class="section"><p>The business entity, Web service, or service interface is updated
-in the registry and the Web Services Explorer is automatically
-updated with your change.</p>
+in the registry and the Web Services Explorer is automatically updated with
+your change.</p>
 </div>
 
 </div>
@@ -88,7 +91,7 @@
 
 <div class="linklist"><strong>Related Reference</strong><br />
 
-<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service.  Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
+<div><a href="../ref/ruddi.html" title="Once you have registered and logged in to the UDDI registry that you want to use, you can register your Web service. Registration of a service involves four core data structure types: business information, service information, binding information, and information describing the specifications for services. The relationship between these data types is described in Figure 1.">Data structure types (UDDI registry)</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdisc.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdisc.html
deleted file mode 100644
index 1186622..0000000
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdisc.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE html
-  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html lang="en-us" xml:lang="en-us">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/ -->
-<link rel="stylesheet" type="text/css" href="../../org.eclipse.wst.doc.user/common.css" />
-<title>Creating a Web service proxy using Faces</title>
-</head>
-<body id="creatingawebserviceproxy"><a name="creatingawebserviceproxy"><!-- --></a>
-
-<h1 class="topictitle1">Creating a Web service proxy using Faces</h1>
-<div><p>The Web Service Discovery Dialog allows you to discover a Web service
-that exists online or in your workspace, create a proxy to the Web service,
-and then place the methods of the proxy on a Faces JSP file.</p>
-<div class="p">Prerequisite: You must have a Faces JSP file on which you will place
-the proxy methods.</div>
-<div class="section">To discover a Web service and create a proxy for it:</div>
-<ol><li><span>Open your Faces JSP file in an editor by double-clicking it.</span></li>
-<li><span>The Page Data view should be open below the Project Navigator.
-If the Page Data view is not visible, open from the Window menu by selecting <span class="menucascade"><span class="uicontrol">Show View</span> &gt; <span class="uicontrol">Other</span> &gt; <span class="uicontrol">Web</span> &gt; <span class="uicontrol">Page Data</span></span>.</span></li>
-<li><span>In the Page Data view, right-click and select <span class="uicontrol">New</span> &gt; <span class="uicontrol">Web
-Service</span>.</span></li>
-<li><span>In the Web Service Discovery Dialog, select how you want to find
-a Web service: </span>
-<table border="1" frame="hsides" rules="rows" cellpadding="4" cellspacing="0" summary="" class="choicetableborder">
-<thead><tr><th valign="bottom" align="left" id="d0e42-option">Option</th>
-<th valign="bottom" align="left" id="d0e42-desc">Description</th></tr></thead>
-<tbody><tr><td valign="top" headers="d0e42-option" id="d0e49"><strong>Searching a public or private UDDI registry.</strong></td>
-<td valign="top" headers="d0e42-desc d0e49">If
-you select this option the UDDI Registry page displays.<ol type="a"><li>Enter the URL of a public or private UDDI registry, or select from the
-registries supplied.</li>
-<li>Enter the text with which you want to search the registry. This can include
-either the partial or full name or key (UUID) of the service.</li>
-<li>Select if you want to search by the name of the Web service, or by the
-key that is associated with a published Web service, and click <span class="uicontrol">Go</span>.</li>
-<li>The UDDI Services table is populated with a list of available Web services
-that match your criteria, including their name, description, and a URL where
-their WSDL file is located.<ul><li>To see additional information about the service, click Details. This will
-launch the Web service in the Web Services Explorer. For more information
-about using the Web Services Explorer, refer to <a href="ttestwsdl.html">Testing WSDL documents and Web services using the WSDL Explorer</a>.</li>
-<li>Click a WSDL file to continue creating your Web service proxy. Go to step <a href="#creatingawebserviceproxy__disc_step_5">5</a>.</li>
-</ul>
-</li>
-</ol>
-</td>
-</tr>
-<tr><td valign="top" headers="d0e42-option" id="d0e77"><strong>From a known URL. This can include known WSDL, WSIL, DISCO,
-and HTML URLs.</strong></td>
-<td valign="top" headers="d0e42-desc d0e77">When you select this option, the URL page
-displays. Enter the URL to a WSDL, WSIL, DISCO or HTML file that contains
-a Web service, and click <span class="uicontrol">Go</span>.<ul><li>If you entered a URL to a WSIL, HMTL, or DISCO file, a list of Web services
-available from the URL are displayed. Select one of the Web services by clicking
-on the WSDL file, and go to step <a href="#creatingawebserviceproxy__disc_step_5">5</a>.</li>
-<li>If you entered a URL to a WSDL file, go to step <a href="#creatingawebserviceproxy__disc_step_5">5</a>.</li>
-</ul>
-</td>
-</tr>
-<tr><td valign="top" headers="d0e42-option" id="d0e96"><strong>Selecting from Web services that are deployed and running
-in your workspace.</strong></td>
-<td valign="top" headers="d0e42-desc d0e96">If you selected to discover Web services
-that are in your workspace, the Workspace page displays. It contains a list
-of the Web services available in your workspace. Select a Web service by clicking
-on the appropriate WSDL file and go to step <a href="#creatingawebserviceproxy__disc_step_5">5</a>.</td>
-</tr>
-</tbody></table>
-</li>
-<li id="creatingawebserviceproxy__disc_step_5"><a name="creatingawebserviceproxy__disc_step_5"><!-- --></a><span>Once you have selected a WSDL file, a table displays
-the Web Service name and location, any documentation included in the Web service,
-and lists the available ports.</span><ol type="a"><li class="substepexpand"><span>If there is more than one port, select the port for which you
-want to create the proxy.</span></li>
-<li class="substepexpand"><span>To test the Web service and to see additional information about
-it, click Details. This will launch the Web service in the Web Services Explorer.</span> For more information about using the Web Services Explorer, refer to <a href="ttestwsdl.html">Testing WSDL documents and Web services
-using the WSDL Explorer</a>.</li>
-<li class="substepexpand"><span>Once you have ensured that the chosen Web service is the correct
-one, click Add to Project.</span> This generates your proxy bean.</li>
-</ol>
-</li>
-<li><span>The proxy is now listed in the list of existing proxy beans. Click <span class="uicontrol">OK</span> to
-add it to your Page Data.</span></li>
-<li id="creatingawebserviceproxy__ws_disc_step_7"><a name="creatingawebserviceproxy__ws_disc_step_7"><!-- --></a><span>Select the proxy method in the Page Data view,
-and drag it onto your Faces JSP file Design view. You will be asked if you
-want to use this bean to update fields or to display fields. Select the appropriate
-choice, and if necessary add an action to the bean by clicking the Browse
-button beside the Action field. Repeat for any other elements that you want
-to add to the page.</span></li>
-</ol>
-<div class="section">The proxy for the Web service is now on a Faces JSP. Save the Faces
-JSP and run it on a sever to test your Web service.</div>
-</div>
-<div></div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdlexp.dita b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdlexp.dita
index 646b7e5..0494c89 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdlexp.dita
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdlexp.dita
@@ -1,13 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="twsdlexp" xml:lang="en-us">
 <title>Exploring WSDL using the WSDL Explorer</title>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>exploring</indexterm></indexterm><indexterm>Web
+services<indexterm>exploring WSDL</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
 <prereq>Prerequisites: To use the WSDL Explorer, you must have a valid URL
 for a WSDL document.</prereq>
 <context>The WSDL Explorer allows you to explore, and test WSDL documents.
 The following actions are available in the WSDL Explorer:<ul>
+<li>Show WSDL details:  <image alt="WSDL Details icon" href="../images/wsdldtlicon.gif">
+</image></li>
 <li>Import WSDL to the Workbench:  <image alt="Import WSDL to the Workbench icon"
 href="../images/mptwsdlicon.gif"></image></li>
 <li>Import WSDL to your file system:  <image alt="Import WSDL to your file system icon"
@@ -16,8 +23,6 @@
 href="../images/wswizicon.gif"></image></li>
 <li>Add WSDL to Favorites:  <image alt="Add WSDL to Favorites icon" href="../images/wsdlfavicon.gif">
 </image></li>
-<li>Show WSDL details:  <image alt="WSDL Details icon" href="../images/wsdldtlicon.gif">
-</image></li>
 </ul></context>
 </taskbody>
 <task id="d0e47" xml:lang="en-us">
@@ -68,9 +73,9 @@
 <task id="d0e105" xml:lang="en-us">
 <title>Adding a WSDL file to your favorites</title>
 <taskbody>
-<context><p>To add the WSDL file to Favorites, click this icon:  </p><p>.
-The Status pane displays that the WSDL was successfully added to your list
-of favorites. </p></context>
+<context><p>To add the WSDL file to Favorites, click this icon:  <image alt="Add WSDL to Favorites icon"
+href="../images/wsdlfavicon.gif"></image></p><p>. The Status pane displays
+that the WSDL was successfully added to your list of favorites. </p></context>
 </taskbody>
 </task>
 <task id="d0e110" xml:lang="en-us">
@@ -123,7 +128,7 @@
 <related-links>
 <linklist><title>Related Concepts</title>
 <link href="../../org.eclipse.jst.ws.doc.user/concepts/cws.dita" scope="peer">
-<linktext>Web services development</linktext></link><?Pub Caret?>
+<linktext>Web services development</linktext></link>
 <link href="../concepts/cuddi.dita"></link>
 </linklist>
 <linklist><title>Related Tasks</title>
@@ -135,4 +140,3 @@
 </related-links>
 </task>
 </task>
-<?Pub *0000006946?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdlexp.html b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdlexp.html
index a54aad9..1edc5c6 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdlexp.html
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdlexp.html
@@ -2,17 +2,19 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
 <meta content="task" name="DC.Type" />
 <meta name="DC.Title" content="Exploring WSDL using the WSDL Explorer" />
+<meta content="WSDL, exploring, Web services, exploring WSDL" name="DC.subject" />
+<meta content="WSDL, exploring, Web services, exploring WSDL" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="twsdlexp" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Exploring WSDL using the WSDL Explorer</title>
 </head>
 <body id="twsdlexp"><a name="twsdlexp"><!-- --></a>
@@ -20,12 +22,15 @@
 
 <h1 class="topictitle1">Exploring WSDL using the WSDL Explorer</h1>
 
+
 <div>
 <div class="p">Prerequisites: To use the WSDL Explorer, you must have a valid URL
 for a WSDL document.</div>
 
 <div class="section">The WSDL Explorer allows you to explore, and test WSDL documents.
 The following actions are available in the WSDL Explorer:<ul>
+<li>Show WSDL details:  <img src="../images/wsdldtlicon.gif" alt="WSDL Details icon" /></li>
+
 <li>Import WSDL to the Workbench:  <img src="../images/mptwsdlicon.gif" alt="Import WSDL to the Workbench icon" /></li>
 
 <li>Import WSDL to your file system:  <img src="../images/fswsdlicon.gif" alt="Import WSDL to your file system icon" /></li>
@@ -34,8 +39,6 @@
 
 <li>Add WSDL to Favorites:  <img src="../images/wsdlfavicon.gif" alt="Add WSDL to Favorites icon" /></li>
 
-<li>Show WSDL details:  <img src="../images/wsdldtlicon.gif" alt="WSDL Details icon" /></li>
-
 </ul>
 </div>
 
@@ -114,10 +117,9 @@
 <h2 class="topictitle2">Adding a WSDL file to your favorites</h2>
 
 <div>
-<div class="section"><p>To add the WSDL file to Favorites, click this icon:  </p>
-<p>.
-The Status pane displays that the WSDL was successfully added to your list
-of favorites. </p>
+<div class="section"><p>To add the WSDL file to Favorites, click this icon:  <img src="../images/wsdlfavicon.gif" alt="Add WSDL to Favorites icon" /></p>
+<p>. The Status pane displays
+that the WSDL was successfully added to your list of favorites. </p>
 </div>
 
 </div>
@@ -170,7 +172,7 @@
 
 </ol>
 
-<div class="section"><div class="note"><span class="notetitle">Note: </span>When the
+<div class="section"><div class="note"><span class="notetitle">Note:</span> When the
 Web Services Explorer loads WSDL files that use multiple inline schemas, warning
 messages will be generated for types that are referenced across these schemas.
 The warning message will be similar to: <samp class="codeph">Reference of type &lt;<em>qualified_type_name</em>&gt;
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptionbuild_toc.ditamap b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptionbuild_toc.ditamap
index 6723889..1092c2c 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptionbuild_toc.ditamap
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptionbuild_toc.ditamap
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
+<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN"
+ "map.dtd">
 <map anchorref="../org.eclipse.jst.ws.doc.user/webservice_toc.ditamap#wsconsumptiont"
 title="wsconsumptiont">
 <topicref href="concepts/cuddi.dita" navtitle="Universal Description, Discovery, and Integration (UDDI)">
@@ -17,6 +18,7 @@
 <topicref href="tasks/tstrtexp.dita" navtitle="Launching the Web Services Explorer">
 </topicref>
 <topicref href="tasks/treg.dita" navtitle="Registering with a registry"></topicref>
+<topicref href="tasks/tlogexp.dita" navtitle="Logging into a registry"></topicref>
 <topicref href="tasks/taddreg.dita" navtitle="Adding a Registry to the Web Services Explorer">
 </topicref>
 <topicref href="tasks/tpubent.dita" navtitle="Publishing a business entity">
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptionbuild_toc.xml b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptionbuild_toc.xml
index 4bd6903..805740e 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptionbuild_toc.xml
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptionbuild_toc.xml
@@ -11,6 +11,7 @@
 <topic label="Publishing Web services and business entities" href="tasks/tuddiexp.html">
 <topic label="Launching the Web Services Explorer" href="tasks/tstrtexp.html"/>
 <topic label="Registering with a UDDI registry" href="tasks/treg.html"/>
+<topic label="Logging in to a UDDI registry" href="tasks/tlogexp.html"/>
 <topic label="Adding a Registry to the Web Services Explorer" href="tasks/taddreg.html"/>
 <topic label="Publishing a business entity" href="tasks/tpubent.html"/>
 <topic label="Publishing a Web service" href="tasks/tpublish.html">
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptiont_toc.ditamap b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptiont_toc.ditamap
index f815f48..4c2c85b 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptiont_toc.ditamap
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptiont_toc.ditamap
@@ -1,12 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
+<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN"
+ "map.dtd">
 <map anchorref="../org.eclipse.jst.ws.doc.user/webservice_toc.ditamap#wsconsumptiont"
-title="wsconsumptiont"><?Pub Caret1?>
+title="wsconsumptiont">
 <topicref href="tasks/tuddiexp.dita" navtitle="Publishing Web services and business entities">
 <topicref href="tasks/tstrtexp.dita" navtitle="Launching the Web Services Explorer">
 </topicref>
 <topicref href="tasks/treg.dita" navtitle="Registering with a registry"></topicref>
+<topicref href="tasks/tlogexp.dita" navtitle="Logging into a registry"></topicref>
 <topicref href="tasks/taddreg.dita" navtitle="Adding a Registry to the Web Services Explorer">
 </topicref>
 <topicref href="tasks/tpubent.dita" navtitle="Publishing a business entity">
@@ -26,4 +28,3 @@
 <topicref href="tasks/tbkmrk.dita" navtitle="Adding to Favorites"></topicref>
 </topicref>
 </map>
-<?Pub *0000001480?>
diff --git a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptiont_toc.xml b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptiont_toc.xml
index c290461..f2e60b4 100644
--- a/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptiont_toc.xml
+++ b/docs/org.eclipse.jst.ws.consumption.ui.doc.user/wsconsumptiont_toc.xml
@@ -1,18 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<?NLS  TYPE="org.eclipse.help.toc"?>
-<toc label="wsconsumptiont" link_to="../org.eclipse.jst.ws.doc.user/webservice_toc.xml#wsconsumptiont" topic="tasks/tuddiexp.html">
-   <topic label="Publishing Web services and business entities" href="tasks/tuddiexp.html">
-      <topic label="Launching the Web Services Explorer" href="tasks/tstrtexp.html"/>
-      <topic label="Registering with a UDDI registry" href="tasks/treg.html"/>
-      <topic label="Adding a Registry to the IBM Web Services Explorer" href="tasks/taddreg.html"/>
-      <topic label="Publishing a business entity" href="tasks/tpubent.html"/>
-      <topic label="Publishing a Web service" href="tasks/tpublish.html">
-         <topic label="Data structure types (UDDI registry)" href="ref/ruddi.html"/>
-      </topic>
-      <topic label="Updating a business entity, Web service, or service interface" href="tasks/tupdate.html"/>
-      <topic label="Removing a business entity, Web service, or service interface from a registry" href="tasks/tunpub.html"/>
-      <topic label="Managing referenced services" href="tasks/tbusproj.html"/>
-      <topic label="Managing publisher assertions" href="tasks/tassert.html"/>
-      <topic label="Adding a registry, business entity, business service, service interface, WSIL, or WSDL service to Favorites" href="tasks/tbkmrk.html"/>
-   </topic>
-</toc>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc link_to="../org.eclipse.jst.ws.doc.user/webservice_toc.xml#wsconsumptiont" label="wsconsumptiont" topic="tasks/tuddiexp.html">
+<topic label="Publishing Web services and business entities" href="tasks/tuddiexp.html">
+<topic label="Launching the Web Services Explorer" href="tasks/tstrtexp.html"/>
+<topic label="Registering with a UDDI registry" href="tasks/treg.html"/>
+<topic label="Logging in to a UDDI registry" href="tasks/tlogexp.html"/>
+<topic label="Adding a Registry to the Web Services Explorer" href="tasks/taddreg.html"/>
+<topic label="Publishing a business entity" href="tasks/tpubent.html"/>
+<topic label="Publishing a Web service" href="tasks/tpublish.html">
+<topic label="Data structure types (UDDI registry)" href="ref/ruddi.html"/>
+</topic>
+<topic label="Updating a business entity, Web service, or service interface" href="tasks/tupdate.html"/>
+<topic label="Removing a business entity, Web service, or service interface from a registry" href="tasks/tunpub.html"/>
+<topic label="Managing referenced services" href="tasks/tbusproj.html"/>
+<topic label="Managing publisher assertions" href="tasks/tassert.html"/>
+<topic label="Adding a registry, business entity, business service, service interface, WSIL, or WSDL service to Favorites" href="tasks/tbkmrk.html"/>
+</topic>
+</toc>
diff --git a/docs/org.eclipse.jst.ws.doc.user/.cvsignore b/docs/org.eclipse.jst.ws.doc.user/.cvsignore
index c84496d..c6a7b23 100644
--- a/docs/org.eclipse.jst.ws.doc.user/.cvsignore
+++ b/docs/org.eclipse.jst.ws.doc.user/.cvsignore
@@ -1,3 +1,5 @@
 org.eclipse.jst.ws.doc.user_1.0.0.jar
 bak
 temp
+build.xml
+out
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.doc.user/META-INF/MANIFEST.MF b/docs/org.eclipse.jst.ws.doc.user/META-INF/MANIFEST.MF
index f76bbfa..9c91d04 100644
--- a/docs/org.eclipse.jst.ws.doc.user/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.jst.ws.doc.user/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.doc.user; singleton:=true
-Bundle-Version: 1.0.2.qualifier
+Bundle-Version: 1.0.203.qualifier
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
diff --git a/docs/org.eclipse.jst.ws.doc.user/about.html b/docs/org.eclipse.jst.ws.doc.user/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.jst.ws.doc.user/about.html
+++ b/docs/org.eclipse.jst.ws.doc.user/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.jst.ws.doc.user/build.properties b/docs/org.eclipse.jst.ws.doc.user/build.properties
index 3c5317f..6a03143 100644
--- a/docs/org.eclipse.jst.ws.doc.user/build.properties
+++ b/docs/org.eclipse.jst.ws.doc.user/build.properties
@@ -1,6 +1,7 @@
 bin.includes = plugin.properties,\
                plugin.xml,\
                webservice_toc.xml,\
+               org.eclipse.jst.ws.doc.userindex.xml,\
                about.html,\
                images/,\
                concepts/,\
diff --git a/docs/org.eclipse.jst.ws.doc.user/build.xml b/docs/org.eclipse.jst.ws.doc.user/build.xml
index ce22ff9..123957c 100644
--- a/docs/org.eclipse.jst.ws.doc.user/build.xml
+++ b/docs/org.eclipse.jst.ws.doc.user/build.xml
@@ -25,7 +25,7 @@
 -->
 <project name="eclipsehelp" default="all">
 
-	<property name="dita.ot.dir" location="C:/DITA-OT1.2.1" />
+	<property name="dita.ot.dir" location="C:/DITA-OT1.2.2" />
 
 	<path id="dost.class.path">
 		<pathelement location="${dita.ot.dir}${file.separator}lib${file.separator}dost.jar" />
@@ -47,7 +47,7 @@
 			<property name="args.csspath" value="org.eclipse.wst.doc.user" />
 			<property name="args.eclipse.provider" value="Eclipse.org" />
 			<property name="args.eclipse.version" value="1.5.0" />
-			<property name="args.input" location="webservice_toc.ditamap" />    		
+			<property name="args.input" location="webservice_toc.ditamap" /> 
 			<property name="clean.temp" value="true" />
 			<property name="dita.extname" value=".dita" />
 			<property name="dita.temp.dir" location="temp" />
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.dita
index 537a28c..9a41343 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.dita
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
-<concept id="cjaxrpc" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
+<concept id="cjaxrpc" xml:lang="en-us">
 <title>JAX-RPC</title>
 <shortdesc>JAX-RPC stands for <tm tmclass="special" tmowner="Sun Microsystems, Inc."
 tmtype="tm" trademark="Java">Java</tm> API for XML-based RPC, also known as
@@ -16,6 +17,10 @@
 tmtype="tm" trademark="Java">Java</tm> platform. Often used in a distributed
 client/server model, an RPC mechanism enables clients to execute procedures
 on other systems.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>JAX-RPC</indexterm><indexterm>Web services<indexterm>JAX-RPC</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <conbody>
 <p>The current release of JAX-RPC requires the support of SOAP over HTTP for
 interoperability purposes. The SOAP specification defines message structure,
@@ -58,4 +63,3 @@
 </linklist>
 </related-links>
 </concept>
-<?Pub *0000003863?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.html
index e18d4f2..8df90f3 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cjaxrpc.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="JAX-RPC" />
 <meta name="abstract" content="JAX-RPC stands for Java API for XML-based RPC, also known as JSR 101. It is a specification that describes Java Application Programming Interfaces (APIs) and conventions for building Web services and Web service clients that use remote procedure calls (RPC) and XML. It standardizes the Java to WSDL and WSDL to Java mappings, and provides the core APIs for developing Web services and Web service clients on the Java platform. Often used in a distributed client/server model, an RPC mechanism enables clients to execute procedures on other systems." />
 <meta name="description" content="JAX-RPC stands for Java API for XML-based RPC, also known as JSR 101. It is a specification that describes Java Application Programming Interfaces (APIs) and conventions for building Web services and Web service clients that use remote procedure calls (RPC) and XML. It standardizes the Java to WSDL and WSDL to Java mappings, and provides the core APIs for developing Web services and Web service clients on the Java platform. Often used in a distributed client/server model, an RPC mechanism enables clients to execute procedures on other systems." />
+<meta content="JAX-RPC, Web services" name="DC.subject" />
+<meta content="JAX-RPC, Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsstandards.html" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
@@ -19,7 +21,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="cjaxrpc" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>JAX-RPC</title>
 </head>
 <body id="cjaxrpc"><a name="cjaxrpc"><!-- --></a>
@@ -28,6 +30,7 @@
 <h1 class="topictitle1">JAX-RPC</h1>
 
 
+
 <div><p>JAX-RPC stands for Java™ API for XML-based RPC, also known as
 JSR 101. It is a specification that describes Java Application Programming Interfaces
 (APIs) and conventions for building Web services and Web service clients that
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cjsr109.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cjsr109.dita
index 0736ad1..7055484 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cjsr109.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cjsr109.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="cjsr109" xml:lang="en-us">
 <title>JSR 109 and JSR 921- Implementing Enterprise Web services</title>
 <shortdesc>JSR 109 and JSR 921 (Implementing Enterprise Web Services) define
@@ -8,6 +9,11 @@
 services in the J2EE environment; more specifically, in the Web, EJB, and
 Client Application containers. One of its main goals is to ensure vendors'
 implementations interoperate.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>JSR 109</indexterm><indexterm>Web services<indexterm>JSR
+109</indexterm></indexterm><indexterm>JSR 921</indexterm><indexterm>Web services<indexterm>JSR
+921</indexterm></indexterm></keywords>
+</metadata></prolog>
 <conbody>
 <p>JSR 109 and JSR 921 build on top of JAX-RPC to cover the use of JAX-RPC
 in a J2EE environment, as well as the implementation and deployment of Web
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cjsr109.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cjsr109.html
index 9a13e2c..0ddcc79 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cjsr109.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cjsr109.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="JSR 109 and JSR 921- Implementing Enterprise Web services" />
 <meta name="abstract" content="JSR 109 and JSR 921 (Implementing Enterprise Web Services) define the programming model and run-time architecture to deploy and look up Web services in the J2EE environment; more specifically, in the Web, EJB, and Client Application containers. One of its main goals is to ensure vendors' implementations interoperate." />
 <meta name="description" content="JSR 109 and JSR 921 (Implementing Enterprise Web Services) define the programming model and run-time architecture to deploy and look up Web services in the J2EE environment; more specifically, in the Web, EJB, and Client Application containers. One of its main goals is to ensure vendors' implementations interoperate." />
+<meta content="JSR 109, Web services, JSR 109, JSR 921, JSR 921" name="DC.subject" />
+<meta content="JSR 109, Web services, JSR 109, JSR 921, JSR 921" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsstandards.html" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
@@ -19,7 +21,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="cjsr109" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>JSR 109 and JSR 921- Implementing Enterprise Web services</title>
 </head>
 <body id="cjsr109"><a name="cjsr109"><!-- --></a>
@@ -28,6 +30,7 @@
 <h1 class="topictitle1">JSR 109 and JSR 921- Implementing Enterprise Web services</h1>
 
 
+
 <div><p>JSR 109 and JSR 921 (Implementing Enterprise Web Services) define
 the programming model and run-time architecture to deploy and look up Web
 services in the J2EE environment; more specifically, in the Web, EJB, and
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/csoap.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/csoap.dita
index 66b53ce..e348503 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/csoap.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/csoap.dita
@@ -1,12 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="csoap" xml:lang="en-us">
 <title>SOAP</title>
 <shortdesc>SOAP (formerly known as Simple Object Access Protocol) is a lightweight
 protocol for the exchange of information in a decentralized, distributed environment.
 A SOAP message is a transmission of information from a sender to a receiver.
 SOAP messages can be combined to perform request/response patterns. </shortdesc>
+<prolog><metadata>
+<keywords><indexterm>SOAP<indexterm>overview</indexterm></indexterm><indexterm>Web
+services<indexterm>SOAP</indexterm><indexterm>binding styles</indexterm><indexterm>encoding
+styles</indexterm><indexterm>mappings</indexterm></indexterm></keywords>
+</metadata></prolog>
 <conbody>
 <p>SOAP is transport independent but is most commonly carried over HTTP in
 order to run with the existing Internet infrastructure.&nbsp; SOAP enables
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/csoap.html b/docs/org.eclipse.jst.ws.doc.user/concepts/csoap.html
index a93b362..9d5c178 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/csoap.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/csoap.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,14 +11,15 @@
 <meta name="DC.Title" content="SOAP" />
 <meta name="abstract" content="SOAP (formerly known as Simple Object Access Protocol) is a lightweight protocol for the exchange of information in a decentralized, distributed environment. A SOAP message is a transmission of information from a sender to a receiver. SOAP messages can be combined to perform request/response patterns." />
 <meta name="description" content="SOAP (formerly known as Simple Object Access Protocol) is a lightweight protocol for the exchange of information in a decentralized, distributed environment. A SOAP message is a transmission of information from a sender to a receiver. SOAP messages can be combined to perform request/response patterns." />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsstandards.html" />
+<meta content="SOAP, overview, Web services, binding styles, encoding styles, mappings" name="DC.subject" />
+<meta content="SOAP, overview, Web services, binding styles, encoding styles, mappings" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="csoap" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>SOAP</title>
 </head>
 <body id="csoap"><a name="csoap"><!-- --></a>
@@ -27,6 +28,7 @@
 <h1 class="topictitle1">SOAP</h1>
 
 
+
 <div><p>SOAP (formerly known as Simple Object Access Protocol) is a lightweight
 protocol for the exchange of information in a decentralized, distributed environment.
 A SOAP message is a transmission of information from a sender to a receiver.
@@ -137,10 +139,6 @@
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cwsstandards.html" title="One of the key attributes of Internet standards is that they focus on protocols and not on implementations. The Internet is composed of heterogeneous technologies that successfully interoperate through shared protocols. This prevents individual vendors from imposing a standard on the Internet. Open Source software development plays a crucial role in preserving the interoperability of vendor implementations of standards.">Web services standards</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cws.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cws.dita
index b7e681f..b0e6286 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cws.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cws.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="cws" xml:lang="en-us">
 <title>Web services overview</title>
 <shortdesc>A Web service is a set of related application functions that can
@@ -9,6 +10,10 @@
 Web services allow buyers and sellers all over the world to discover each
 other, connect dynamically, and execute transactions in real time with minimal
 human interaction.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>overview</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <conbody>
 <p>Web services are self-contained, self-describing modular applications that
 can be published, located, and invoked across the Web.</p>
@@ -71,7 +76,7 @@
 1. Service roles and interactions.</p><p> <image alt="Figure 1 illustrates the interactions between the service broker, service provider, and service requestor."
 href="../images/roles.gif"></image> </p><p>For more information on Web services,
 refer to  <xref format="html" href="http://www.ibm.com/developerworks/webservices"
-scope="external">www..com/developerworks/webservices</xref></p></section>
+scope="external">www.ibm.com/developerworks/webservices</xref></p></section>
 </conbody>
 <related-links>
 <linklist><title>Related Concepts</title>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cws.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cws.html
index 9718d7e..baa93d2 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cws.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cws.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,14 +11,15 @@
 <meta name="DC.Title" content="Web services overview" />
 <meta name="abstract" content="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction." />
 <meta name="description" content="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction." />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsstandards.html" />
+<meta content="Web services, overview" name="DC.subject" />
+<meta content="Web services, overview" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsstandards.html" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="cws" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Web services overview</title>
 </head>
 <body id="cws"><a name="cws"><!-- --></a>
@@ -27,6 +28,7 @@
 <h1 class="topictitle1">Web services overview</h1>
 
 
+
 <div><p>A Web service is a set of related application functions that can
 be programmatically invoked over the Internet. Businesses can dynamically
 mix and match Web services to perform complex transactions with minimal programming.
@@ -114,17 +116,12 @@
 1. Service roles and interactions.</p>
 <p> <img src="../images/roles.gif" alt="Figure 1 illustrates the interactions between the service broker, service provider, and service requestor." /> </p>
 <p>For more information on Web services,
-refer to  <a href="http://www.ibm.com/developerworks/webservices" target="_blank">www..com/developerworks/webservices</a></p>
+refer to  <a href="http://www.ibm.com/developerworks/webservices" target="_blank">www.ibm.com/developerworks/webservices</a></p>
 </div>
 
 </div>
 
 <div>
-<ul class="ullinks">
-<li class="ulchildlink"><strong><a href="../concepts/cwsstandards.html">Web services standards</a></strong><br />
-One of the key attributes of Internet standards is that they focus on protocols and not on implementations. The Internet is composed of heterogeneous technologies that successfully interoperate through shared protocols. This prevents individual vendors from imposing a standard on the Internet. Open Source software development plays a crucial role in preserving the interoperability of vendor implementations of standards.</li>
-</ul>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="cwsinwsa.html" title="">Tools for Web services development</a></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsbtmup.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsbtmup.dita
index a7a19ea..bd2078a 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsbtmup.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsbtmup.dita
@@ -1,12 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
-<concept id="creatingbottom-upwebservices" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
+<concept id="creatingbottom-upwebservices" xml:lang="en-us">
 <title>Creating bottom-up Web services</title>
 <shortdesc>Web services can be created using two methods: top-down development
 and bottom-up development. Bottom-up Web services development involves creating
 a Web service from a <tm tmclass="special" tmowner="Sun Microsystems, Inc."
 tmtype="tm" trademark="Java">Java</tm> bean or enterprise bean.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>bottom-up<indexterm>overview</indexterm></indexterm></indexterm>
+<indexterm>bottom-up<indexterm>creating Web services</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <conbody>
 <p>Although bottom-up Web service development may be faster and easier, especially
 if you are new to Web services, the top-down approach is the recommended way
@@ -30,4 +36,3 @@
 </linklist>
 </related-links>
 </concept>
-<?Pub *0000001612?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsbtmup.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsbtmup.html
index cac91b9..c4d88fc 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsbtmup.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsbtmup.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,7 +11,8 @@
 <meta name="DC.Title" content="Creating bottom-up Web services" />
 <meta name="abstract" content="Web services can be created using two methods: top-down development and bottom-up development. Bottom-up Web services development involves creating a Web service from a Java bean or enterprise bean." />
 <meta name="description" content="Web services can be created using two methods: top-down development and bottom-up development. Bottom-up Web services development involves creating a Web service from a Java bean or enterprise bean." />
-<meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
+<meta content="Web services, bottom-up, overview, creating Web services" name="DC.subject" />
+<meta content="Web services, bottom-up, overview, creating Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="cwstopdown.html" />
@@ -19,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="creatingbottom-upwebservices" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Creating bottom-up Web services</title>
 </head>
 <body id="creatingbottom-upwebservices"><a name="creatingbottom-upwebservices"><!-- --></a>
@@ -28,6 +29,7 @@
 <h1 class="topictitle1">Creating bottom-up Web services</h1>
 
 
+
 <div><p>Web services can be created using two methods: top-down development
 and bottom-up development. Bottom-up Web services development involves creating
 a Web service from a Java™ bean or enterprise bean.</p>
@@ -44,10 +46,6 @@
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/toverws.html" title="Use Web services tools to discover, create, and publish Web services that are created from Java beans, enterprise beans, and WSDL files. You can create of Web services using a top-down approach (which starts with a WSDL file) or a bottom-up approach (which starts with a Java bean or EJB).">Developing Web services</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsdl.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsdl.dita
index 750fc10..cc89e9f 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsdl.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsdl.dita
@@ -1,13 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
-<?Pub Inc?>
-<concept id="cwsdl" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
+<concept id="cwsdl" xml:lang="en-us">
 <title>Web Services Description Language (WSDL)</title>
 <shortdesc>Web Services Description Language (WSDL) is a standard specification
 for describing networked, XML-based services. It provides a simple way for
 service providers to describe the basic format of requests to their systems
 regardless of the underlying run-time implementation.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>overview</indexterm></indexterm><indexterm>Web
+services<indexterm>WSDL</indexterm></indexterm></keywords>
+</metadata></prolog>
 <conbody>
 <p>WSDL defines an XML format for describing network services as a set of
  <varname>endpoints</varname> that operate on messages that contain either
@@ -67,4 +71,3 @@
 </linklist>
 </related-links>
 </concept>
-<?Pub *0000004138?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsdl.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsdl.html
index ad54b51..92eeab5 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsdl.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsdl.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,15 +11,15 @@
 <meta name="DC.Title" content="Web Services Description Language (WSDL)" />
 <meta name="abstract" content="Web Services Description Language (WSDL) is a standard specification for describing networked, XML-based services. It provides a simple way for service providers to describe the basic format of requests to their systems regardless of the underlying run-time implementation." />
 <meta name="description" content="Web Services Description Language (WSDL) is a standard specification for describing networked, XML-based services. It provides a simple way for service providers to describe the basic format of requests to their systems regardless of the underlying run-time implementation." />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsstandards.html" />
-<meta scheme="URI" name="DC.Relation" content="../ref/rwsdl.html" />
+<meta content="WSDL, overview, Web services" name="DC.subject" />
+<meta content="WSDL, overview, Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="cwsdl" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Web Services Description Language (WSDL)</title>
 </head>
 <body id="cwsdl"><a name="cwsdl"><!-- --></a>
@@ -28,6 +28,7 @@
 <h1 class="topictitle1">Web Services Description Language (WSDL)</h1>
 
 
+
 <div><p>Web Services Description Language (WSDL) is a standard specification
 for describing networked, XML-based services. It provides a simple way for
 service providers to describe the basic format of requests to their systems
@@ -86,15 +87,6 @@
 </div>
 
 <div>
-<ul class="ullinks">
-<li class="ulchildlink"><strong><a href="../ref/rwsdl.html">Web Services Description Language (WSDL) reference</a></strong><br />
-A WSDL document defines services as collections of network endpoints, or ports. In WSDL, the abstract definition of endpoints and messages is separated from their concrete network deployment or data format bindings. This allows the reuse of abstract definitions: messages, which are abstract descriptions of the data being exchanged, and port types which are abstract collections of operations.</li>
-</ul>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cwsstandards.html" title="One of the key attributes of Internet standards is that they focus on protocols and not on implementations. The Internet is composed of heterogeneous technologies that successfully interoperate through shared protocols. This prevents individual vendors from imposing a standard on the Internet. Open Source software development plays a crucial role in preserving the interoperability of vendor implementations of standards.">Web services standards</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsil.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsil.dita
index f9bf930..2b10f23 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsil.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsil.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="cwsil" xml:lang="en-us">
 <title>Web Services Inspection Language (WSIL)</title>
 <shortdesc>Web Services Inspection Language (WSIL) is a service discovery
@@ -8,6 +9,10 @@
 When you discover Web services with UDDI, you go to a centralized registry.&nbsp;
 WSIL is an alternative approach to Web service discovery.&nbsp; WSIL allows
 you to go directly to the service provider and ask for the services it provides.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSIL<indexterm>overview</indexterm></indexterm><indexterm>Web
+services<indexterm>WSIL</indexterm></indexterm></keywords>
+</metadata></prolog>
 <conbody>
 <p><tm tmclass="ibm" tmowner="IBM Corporation" tmtype="reg" trademark="IBM">IBM</tm> and
 Microsoft's proposal for the WSIL specification is designed around an XML-based
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsil.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsil.html
index 0f2abab..27d1b08 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsil.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsil.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,15 +11,15 @@
 <meta name="DC.Title" content="Web Services Inspection Language (WSIL)" />
 <meta name="abstract" content="Web Services Inspection Language (WSIL) is a service discovery mechanism that is an alternative to UDDI as well as complementary to UDDI. When you discover Web services with UDDI, you go to a centralized registry.  WSIL is an alternative approach to Web service discovery.  WSIL allows you to go directly to the service provider and ask for the services it provides." />
 <meta name="description" content="Web Services Inspection Language (WSIL) is a service discovery mechanism that is an alternative to UDDI as well as complementary to UDDI. When you discover Web services with UDDI, you go to a centralized registry.  WSIL is an alternative approach to Web service discovery.  WSIL allows you to go directly to the service provider and ask for the services it provides." />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsstandards.html" />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsilud.html" />
+<meta content="WSIL, overview, Web services" name="DC.subject" />
+<meta content="WSIL, overview, Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="cwsil" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Web Services Inspection Language (WSIL)</title>
 </head>
 <body id="cwsil"><a name="cwsil"><!-- --></a>
@@ -28,6 +28,7 @@
 <h1 class="topictitle1">Web Services Inspection Language (WSIL)</h1>
 
 
+
 <div><p>Web Services Inspection Language (WSIL) is a service discovery
 mechanism that is an alternative to UDDI as well as complementary to UDDI.
 When you discover Web services with UDDI, you go to a centralized registry. 
@@ -104,15 +105,6 @@
 </div>
 
 <div>
-<ul class="ullinks">
-<li class="ulchildlink"><strong><a href="../concepts/cwsilud.html">Relationship between UDDI and WSIL</a></strong><br />
-The Web Services Inspection Language (WSIL) and the Universal Description, Discovery, and Integration (UDDI) specification both address issues related to Web service discovery.  However, each specification takes a different approach to the discovery of Web services.  The two specifications can be used separately or jointly; searching with WSIL can result in finding items in UDDI.</li>
-</ul>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cwsstandards.html" title="One of the key attributes of Internet standards is that they focus on protocols and not on implementations. The Internet is composed of heterogeneous technologies that successfully interoperate through shared protocols. This prevents individual vendors from imposing a standard on the Internet. Open Source software development plays a crucial role in preserving the interoperability of vendor implementations of standards.">Web services standards</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsilud.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsilud.dita
index 477eb1f..6a58a0b 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsilud.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsilud.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="cwsilud" xml:lang="en-us">
 <title>Relationship between UDDI and WSIL</title>
 <shortdesc>The Web Services Inspection Language (WSIL) and the Universal Description,
@@ -9,6 +10,10 @@
 approach to the discovery of Web services.&nbsp; The two specifications can
 be used separately or jointly; searching with WSIL can result in finding items
 in UDDI.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>UDDI<indexterm>relationship with WSIL</indexterm></indexterm>
+<indexterm>WSIL<indexterm>relationship with UDDI</indexterm></indexterm></keywords>
+</metadata></prolog>
 <conbody>
 <p>The UDDI specification addresses Web service discovery through the use
 of a centralized model.&nbsp; One or more repositories are created to house
@@ -60,9 +65,8 @@
 <link href="cwsil.dita"></link>
 </linklist>
 <linklist><title>Related Tasks</title>
-<link href="../tasks/toverws.dita" scope="peer"><?Pub Caret?><linktext> Developing
-Web services</linktext></link>
+<link href="../tasks/toverws.dita" scope="peer"><linktext> Developing Web
+services</linktext></link>
 </linklist>
 </related-links>
 </concept>
-<?Pub *0000004226?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsilud.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsilud.html
index f471b5b..e8d522a 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsilud.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsilud.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,7 +11,8 @@
 <meta name="DC.Title" content="Relationship between UDDI and WSIL" />
 <meta name="abstract" content="The Web Services Inspection Language (WSIL) and the Universal Description, Discovery, and Integration (UDDI) specification both address issues related to Web service discovery.  However, each specification takes a different approach to the discovery of Web services.  The two specifications can be used separately or jointly; searching with WSIL can result in finding items in UDDI." />
 <meta name="description" content="The Web Services Inspection Language (WSIL) and the Universal Description, Discovery, and Integration (UDDI) specification both address issues related to Web service discovery.  However, each specification takes a different approach to the discovery of Web services.  The two specifications can be used separately or jointly; searching with WSIL can result in finding items in UDDI." />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsil.html" />
+<meta content="UDDI, relationship with WSIL, WSIL, relationship with UDDI" name="DC.subject" />
+<meta content="UDDI, relationship with WSIL, WSIL, relationship with UDDI" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsil.html" />
@@ -19,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="cwsilud" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Relationship between UDDI and WSIL</title>
 </head>
 <body id="cwsilud"><a name="cwsilud"><!-- --></a>
@@ -28,6 +29,7 @@
 <h1 class="topictitle1">Relationship between UDDI and WSIL</h1>
 
 
+
 <div><p>The Web Services Inspection Language (WSIL) and the Universal Description,
 Discovery, and Integration (UDDI) specification both address issues related
 to Web service discovery.  However, each specification takes a different
@@ -80,16 +82,12 @@
 solution alone may provide the best fit.  The UDDI and WSIL specifications
 should not be viewed as mutually exclusive.</p>
 
-<div class="note"><span class="notetitle">Note: </span>Both UDDI and WSIL contain only references to WSDL - they do not contain
+<div class="note"><span class="notetitle">Note:</span> Both UDDI and WSIL contain only references to WSDL - they do not contain
 the WSDL documents themselves.</div>
 
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cwsil.html" title="Web Services Inspection Language (WSIL) is a service discovery mechanism that is an alternative to UDDI as well as complementary to UDDI. When you discover Web services with UDDI, you go to a centralized registry.  WSIL is an alternative approach to Web service discovery.  WSIL allows you to go directly to the service provider and ask for the services it provides.">Web Services Inspection Language (WSIL)</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
@@ -98,8 +96,8 @@
 
 <div class="linklist"><strong>Related Tasks</strong><br />
 
-<div><a href="../tasks/toverws.html"> Developing
-Web services</a></div></div>
+<div><a href="../tasks/toverws.html"> Developing Web
+services</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.dita
index dfcefe1..5cd0a18 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.dita
@@ -1,8 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="cwsinwsa" xml:lang="en-us">
 <title>Tools for Web services development</title>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>tools overview</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <conbody>
 <p>Tools are provided to assist with the following aspects of Web services
 development:</p>
@@ -28,7 +33,7 @@
 you in creating your own Web service client application.</li>
 <li> <uicontrol>Publish</uicontrol>. Publish Web services to a UDDI v2 or
 v3 Business Registry, advertising your Web services so that other businesses
-and clie<?Pub Caret?>nts can access them.</li>
+and clients can access them.</li>
 </ul>
 </conbody>
 <related-links>
@@ -41,4 +46,3 @@
 </linklist>
 </related-links>
 </concept>
-<?Pub *0000002161?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html
index 4e13225..6a8d15d 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsinwsa.html
@@ -2,21 +2,21 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
 <meta content="concept" name="DC.Type" />
 <meta name="DC.Title" content="Tools for Web services development" />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cws.html" />
-<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.html" />
+<meta content="Web services, tools overview" name="DC.subject" />
+<meta content="Web services, tools overview" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="cwsinwsa" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Tools for Web services development</title>
 </head>
 <body id="cwsinwsa"><a name="cwsinwsa"><!-- --></a>
@@ -24,6 +24,7 @@
 
 <h1 class="topictitle1">Tools for Web services development</h1>
 
+
 <div>
 <p>Tools are provided to assist with the following aspects of Web services
 development:</p>
@@ -60,15 +61,6 @@
 </div>
 
 <div>
-<ul class="ullinks">
-<li class="ulchildlink"><strong><a href="../../org.eclipse.jst.ws.axis.ui.doc.user/concepts/caxistover.html">Creating Web services with the Apache Axis run-time environment</a></strong><br />
-</li>
-</ul>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsiover.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsiover.dita
index 578dadf..4523c81 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsiover.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsiover.dita
@@ -1,10 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
-<concept id="cwsiover" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
+<concept id="cwsiover" xml:lang="en-us">
 <title>Web services interoperability (WS-I)</title>
 <shortdesc>WS-I is an organization designed to promote Web service interoperability
 across platforms, operating systems, and programming languages.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>interoperability (WS-I)</indexterm><indexterm>WS-I</indexterm></indexterm>
+<indexterm>WS-I (Web services interoperability)</indexterm></keywords>
+</metadata></prolog>
 <conbody>
 <p>For more information on WS-I, refer to their Web site:  <xref format="html"
 href="http://www.ws-i.org/" scope="external">http://www.ws-i.org/</xref>.
@@ -33,4 +38,3 @@
 </linklist>
 </related-links>
 </concept>
-<?Pub *0000002039?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsiover.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsiover.html
index a39d3a3..627c0d5 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsiover.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsiover.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,13 +11,13 @@
 <meta name="DC.Title" content="Web services interoperability (WS-I)" />
 <meta name="abstract" content="WS-I is an organization designed to promote Web service interoperability across platforms, operating systems, and programming languages." />
 <meta name="description" content="WS-I is an organization designed to promote Web service interoperability across platforms, operating systems, and programming languages." />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cws.html" />
-<meta scheme="URI" name="DC.Relation" content="../tasks/twsicomply.html" />
+<meta content="Web services, interoperability (WS-I), WS-I, WS-I (Web services interoperability)" name="DC.subject" />
+<meta content="Web services, interoperability (WS-I), WS-I, WS-I (Web services interoperability)" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/twsicomply.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="cwsiover" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Web services interoperability (WS-I)</title>
 </head>
 <body id="cwsiover"><a name="cwsiover"><!-- --></a>
@@ -26,6 +26,7 @@
 <h1 class="topictitle1">Web services interoperability (WS-I)</h1>
 
 
+
 <div><p>WS-I is an organization designed to promote Web service interoperability
 across platforms, operating systems, and programming languages.</p>
 
@@ -53,18 +54,9 @@
 </div>
 
 <div>
-<ul class="ullinks">
-<li class="ulchildlink"><strong><a href="../tasks/twsicomply.html">Setting the level of WS-I compliance</a></strong><br />
-The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols, and secured Web services, are not WS-I compliant.</li>
-</ul>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
-</div>
-
 <div class="linklist"><strong>Related Tasks</strong><br />
 
-<div><a href="../tasks/twsicomply.html" title="The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols, and secured Web services, are not WS-I compliant.">Setting the level of WS-I compliance</a></div></div>
+<div><a href="../tasks/twsicomply.html" title="The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols are not WS-I compliant.">Setting the level of WS-I compliance</a></div></div>
 </div>
 
 </body>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsstandards.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsstandards.dita
index 0aadf7c..f1bb940 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsstandards.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsstandards.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
 <concept id="webservicesstandards" xml:lang="en-us">
 <title>Web services standards</title>
 <shortdesc>One of the key attributes of Internet standards is that they focus
@@ -9,6 +10,10 @@
 prevents individual vendors from imposing a standard on the Internet. Open
 Source software development plays a crucial role in preserving the interoperability
 of vendor implementations of standards.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>standards</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <conbody>
 <p>The following standards play key roles in Web services: Universal Description,
 Discovery and Integration (UDDI), Web Services Description Language (WSDL),
@@ -50,7 +55,8 @@
 <li>A convention for representing remote procedure calls and responses.</li>
 </ul>SOAP enables the binding and usage of discovered Web services by defining
 a message path for routing messages. SOAP may be used to query UDDI for Web
-services. For more information on SOAP, refer to  <xref format="html" href="http://www.w3.org/TR/SOAP"
+services. For more information on SOAP 1.1 (SOAP 1.2 is not supported by the
+Web services tools), refer to  <xref format="html" href="http://www.w3.org/TR/SOAP"
 scope="external">www.w3.org/TR/SOAP</xref></p>
 <p>Figure 2. Relationships between SOAP, UDDI, WSIL and WSDL.</p>
 <p> <image alt="Figure 2 illustrates the relationships between SOAP, UDDI, WSIL, and WSDL."
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsstandards.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsstandards.html
index 5feb7bc..f1c4e04 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwsstandards.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwsstandards.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,13 +11,8 @@
 <meta name="DC.Title" content="Web services standards" />
 <meta name="abstract" content="One of the key attributes of Internet standards is that they focus on protocols and not on implementations. The Internet is composed of heterogeneous technologies that successfully interoperate through shared protocols. This prevents individual vendors from imposing a standard on the Internet. Open Source software development plays a crucial role in preserving the interoperability of vendor implementations of standards." />
 <meta name="description" content="One of the key attributes of Internet standards is that they focus on protocols and not on implementations. The Internet is composed of heterogeneous technologies that successfully interoperate through shared protocols. This prevents individual vendors from imposing a standard on the Internet. Open Source software development plays a crucial role in preserving the interoperability of vendor implementations of standards." />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cws.html" />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsdl.html" />
-<meta scheme="URI" name="DC.Relation" content="../concepts/csoap.html" />
-<meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.html" />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsil.html" />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cjaxrpc.html" />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cjsr109.html" />
+<meta content="Web services, standards" name="DC.subject" />
+<meta content="Web services, standards" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsiover.html" />
@@ -25,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="webservicesstandards" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Web services standards</title>
 </head>
 <body id="webservicesstandards"><a name="webservicesstandards"><!-- --></a>
@@ -34,6 +29,7 @@
 <h1 class="topictitle1">Web services standards</h1>
 
 
+
 <div><p>One of the key attributes of Internet standards is that they focus
 on protocols and not on implementations. The Internet is composed of heterogeneous
 technologies that successfully interoperate through shared protocols. This
@@ -84,7 +80,8 @@
 </ul>
 SOAP enables the binding and usage of discovered Web services by defining
 a message path for routing messages. SOAP may be used to query UDDI for Web
-services. For more information on SOAP, refer to  <a href="http://www.w3.org/TR/SOAP" target="_blank">www.w3.org/TR/SOAP</a></div>
+services. For more information on SOAP 1.1 (SOAP 1.2 is not supported by the
+Web services tools), refer to  <a href="http://www.w3.org/TR/SOAP" target="_blank">www.w3.org/TR/SOAP</a></div>
 
 <p>Figure 2. Relationships between SOAP, UDDI, WSIL and WSDL.</p>
 
@@ -153,9 +150,9 @@
 <div class="tablenoborder"><table summary="" cellspacing="0" cellpadding="4" frame="border" border="1" rules="all">
 <thead align="left">
 <tr>
-<th valign="top" width="47.73869346733669%" id="N101A4">Technology or specification</th>
+<th valign="top" width="47.73869346733669%" id="N101BE">Technology or specification</th>
 
-<th valign="top" width="52.26130653266332%" id="N101AC">Version or level supported</th>
+<th valign="top" width="52.26130653266332%" id="N101C6">Version or level supported</th>
 
 </tr>
 
@@ -163,132 +160,132 @@
 
 <tbody>
 <tr>
-<td colspan="2" valign="top" headers="N101A4 N101AC "><strong>Transports</strong></td>
+<td colspan="2" valign="top" headers="N101BE N101C6 "><strong>Transports</strong></td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">HTTP/HTTPS</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">HTTP/HTTPS</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">v1.0 and v1.1</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">v1.0 and v1.1</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">JMS</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">JMS</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">&nbsp;</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">&nbsp;</td>
 
 </tr>
 
 <tr>
-<td colspan="2" valign="top" headers="N101A4 N101AC "><strong>Messaging</strong></td>
+<td colspan="2" valign="top" headers="N101BE N101C6 "><strong>Messaging</strong></td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">SOAP specification</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">SOAP specification</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">v1.1</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">v1.1</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">SOAP Attachements</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">SOAP Attachements</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">&nbsp;</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">&nbsp;</td>
 
 </tr>
 
 <tr>
-<td colspan="2" valign="top" headers="N101A4 N101AC "><strong>Description</strong></td>
+<td colspan="2" valign="top" headers="N101BE N101C6 "><strong>Description</strong></td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">UDDI</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">UDDI</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">v2.0</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">v2.0</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">WSDL</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">WSDL</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">v1.1</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">v1.1</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">WSIL</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">WSIL</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">v1.0</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">v1.0</td>
 
 </tr>
 
 <tr>
-<td colspan="2" valign="top" headers="N101A4 N101AC "><strong>Security</strong></td>
+<td colspan="2" valign="top" headers="N101BE N101C6 "><strong>Security</strong></td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">WS-Security</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">WS-Security</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">OASIS Standard 1.0</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">OASIS Standard 1.0</td>
 
 </tr>
 
 <tr>
-<td colspan="2" valign="top" headers="N101A4 N101AC "><strong>Ineroperability</strong></td>
+<td colspan="2" valign="top" headers="N101BE N101C6 "><strong>Ineroperability</strong></td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">WS-I Basic Profile</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">WS-I Basic Profile</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">1.1.2</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">1.1.2</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">WS-I Simple SOAP Binding Profile</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">WS-I Simple SOAP Binding Profile</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">1.0.3</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">1.0.3</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">WS-I Attachments Profile</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">WS-I Attachments Profile</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">1.0</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">1.0</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 "><strong>Other Standards</strong></td>
+<td valign="top" width="47.73869346733669%" headers="N101BE "><strong>Other Standards</strong></td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">&nbsp;</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">&nbsp;</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">JAX-RPC</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">JAX-RPC</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">v1.0 for J2EE 1.3, v1.1 for J2EE 1.4</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">v1.0 for J2EE 1.3, v1.1 for J2EE 1.4</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">JSR 109</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">JSR 109</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">J2EE 1.3</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">J2EE 1.3</td>
 
 </tr>
 
 <tr>
-<td valign="top" width="47.73869346733669%" headers="N101A4 ">JSR 921</td>
+<td valign="top" width="47.73869346733669%" headers="N101BE ">JSR 921</td>
 
-<td valign="top" width="52.26130653266332%" headers="N101AC ">J2EE 1.4</td>
+<td valign="top" width="52.26130653266332%" headers="N101C6 ">J2EE 1.4</td>
 
 </tr>
 
@@ -300,25 +297,6 @@
 </div>
 
 <div>
-<ul class="ullinks">
-<li class="ulchildlink"><strong><a href="../concepts/cwsdl.html">Web Services Description Language (WSDL)</a></strong><br />
-Web Services Description Language (WSDL) is a standard specification for describing networked, XML-based services. It provides a simple way for service providers to describe the basic format of requests to their systems regardless of the underlying run-time implementation.</li>
-<li class="ulchildlink"><strong><a href="../concepts/csoap.html">SOAP</a></strong><br />
-SOAP (formerly known as Simple Object Access Protocol) is a lightweight protocol for the exchange of information in a decentralized, distributed environment. A SOAP message is a transmission of information from a sender to a receiver. SOAP messages can be combined to perform request/response patterns.</li>
-<li class="ulchildlink"><strong><a href="../../org.eclipse.jst.ws.consumption.ui.doc.user/concepts/cuddi.html">Universal Description, Discovery, and Integration (UDDI)</a></strong><br />
-</li>
-<li class="ulchildlink"><strong><a href="../concepts/cwsil.html">Web Services Inspection Language (WSIL)</a></strong><br />
-Web Services Inspection Language (WSIL) is a service discovery mechanism that is an alternative to UDDI as well as complementary to UDDI. When you discover Web services with UDDI, you go to a centralized registry.  WSIL is an alternative approach to Web service discovery.  WSIL allows you to go directly to the service provider and ask for the services it provides.</li>
-<li class="ulchildlink"><strong><a href="../concepts/cjaxrpc.html">JAX-RPC</a></strong><br />
-JAX-RPC stands for Java API for XML-based RPC, also known as JSR 101. It is a specification that describes Java Application Programming Interfaces (APIs) and conventions for building Web services and Web service clients that use remote procedure calls (RPC) and XML. It standardizes the Java to WSDL and WSDL to Java mappings, and provides the core APIs for developing Web services and Web service clients on the Java platform. Often used in a distributed client/server model, an RPC mechanism enables clients to execute procedures on other systems.</li>
-<li class="ulchildlink"><strong><a href="../concepts/cjsr109.html">JSR 109 and JSR 921- Implementing Enterprise Web services</a></strong><br />
-JSR 109 and JSR 921 (Implementing Enterprise Web Services) define the programming model and run-time architecture to deploy and look up Web services in the J2EE environment; more specifically, in the Web, EJB, and Client Application containers. One of its main goals is to ensure vendors' implementations interoperate.</li>
-</ul>
-
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwstopdown.dita b/docs/org.eclipse.jst.ws.doc.user/concepts/cwstopdown.dita
index b15b6ce..1a01729 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwstopdown.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwstopdown.dita
@@ -1,21 +1,29 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
-<concept id="creatingtop-downwebservices" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
+<concept id="creatingtop-downwebservices" xml:lang="en-us">
 <title>Creating top-down Web services</title>
 <shortdesc>Web services can be created using two methods: top-down development
 and bottom-up development. Top-down Web services development involves creating
 a Web service from a WSDL file.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>top-down<indexterm>overview</indexterm></indexterm></indexterm>
+<indexterm>top-down<indexterm>creating Web services</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <conbody>
-<p>Although bottom-up Web service development may be faster and easier, especially
-if you are new to Web services, the top-down approach is the recommended way
-of creating a Web service.</p>
 <p>When creating a Web service using a top-down approach, first you design
 the implementation of the Web service by creating a WSDL file. You can do
 this using the WSDL Editor. You can then use the Web services wizard to create
 the Web service and skeleton <tm tmclass="special" tmowner="Sun Microsystems, Inc."
 tmtype="tm" trademark="Java">Java</tm> classes to which you can add the required
 code.</p>
+<p>Although bottom-up Web service development may be faster and easier, especially
+if you are new to Web services, the top-down approach is the recommended way
+of creating a Web service. By creating the WSDL file first you will ultimately
+have more control over the Web service, and can eliminate interoperability
+issues that may arise when creating a Web service using the bottom-up method.</p>
 </conbody>
 <related-links>
 <linklist><title>Related Concepts</title>
@@ -29,4 +37,3 @@
 </linklist>
 </related-links>
 </concept>
-<?Pub *0000001482?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/concepts/cwstopdown.html b/docs/org.eclipse.jst.ws.doc.user/concepts/cwstopdown.html
index cf7c793..e8fb10a 100644
--- a/docs/org.eclipse.jst.ws.doc.user/concepts/cwstopdown.html
+++ b/docs/org.eclipse.jst.ws.doc.user/concepts/cwstopdown.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,7 +11,8 @@
 <meta name="DC.Title" content="Creating top-down Web services" />
 <meta name="abstract" content="Web services can be created using two methods: top-down development and bottom-up development. Top-down Web services development involves creating a Web service from a WSDL file." />
 <meta name="description" content="Web services can be created using two methods: top-down development and bottom-up development. Top-down Web services development involves creating a Web service from a WSDL file." />
-<meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
+<meta content="Web services, top-down, overview, creating Web services" name="DC.subject" />
+<meta content="Web services, top-down, overview, creating Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="cws.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="cwsbtmup.html" />
@@ -19,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="creatingtop-downwebservices" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Creating top-down Web services</title>
 </head>
 <body id="creatingtop-downwebservices"><a name="creatingtop-downwebservices"><!-- --></a>
@@ -28,27 +29,26 @@
 <h1 class="topictitle1">Creating top-down Web services</h1>
 
 
+
 <div><p>Web services can be created using two methods: top-down development
 and bottom-up development. Top-down Web services development involves creating
 a Web service from a WSDL file.</p>
 
-<p>Although bottom-up Web service development may be faster and easier, especially
-if you are new to Web services, the top-down approach is the recommended way
-of creating a Web service.</p>
-
 <p>When creating a Web service using a top-down approach, first you design
 the implementation of the Web service by creating a WSDL file. You can do
 this using the WSDL Editor. You can then use the Web services wizard to create
 the Web service and skeleton Java™ classes to which you can add the required
 code.</p>
 
+<p>Although bottom-up Web service development may be faster and easier, especially
+if you are new to Web services, the top-down approach is the recommended way
+of creating a Web service. By creating the WSDL file first you will ultimately
+have more control over the Web service, and can eliminate interoperability
+issues that may arise when creating a Web service using the bottom-up method.</p>
+
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/toverws.html" title="Use Web services tools to discover, create, and publish Web services that are created from Java beans, enterprise beans, and WSDL files. You can create of Web services using a top-down approach (which starts with a WSDL file) or a bottom-up approach (which starts with a Java bean or EJB).">Developing Web services</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/myplugin.xml b/docs/org.eclipse.jst.ws.doc.user/myplugin.xml
index 6eda01a..abfc949 100644
--- a/docs/org.eclipse.jst.ws.doc.user/myplugin.xml
+++ b/docs/org.eclipse.jst.ws.doc.user/myplugin.xml
@@ -2,7 +2,7 @@
 <?eclipse version="3.0"?>
 <?NLS TYPE="org.eclipse.help.toc"?> 
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
diff --git a/docs/org.eclipse.jst.ws.doc.user/org.eclipse.jst.ws.doc.userindex.html b/docs/org.eclipse.jst.ws.doc.user/org.eclipse.jst.ws.doc.userindex.html
new file mode 100644
index 0000000..fde7154
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.doc.user/org.eclipse.jst.ws.doc.userindex.html
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="security" content="public" />
+<meta name="Robots" content="index,follow" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta name="DC.Format" content="XHTML" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/ibmdita.css" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
+<title>Index</title>
+</head>
+<body>
+<h1>Index</h1>
+<a name="IDX0_42" href="#IDX1_42">B</a>
+<a name="IDX0_4A" href="#IDX1_4A">J</a>
+<a name="IDX0_50" href="#IDX1_50">P</a>
+<a name="IDX0_53" href="#IDX1_53">S</a>
+<a name="IDX0_54" href="#IDX1_54">T</a>
+<a name="IDX0_55" href="#IDX1_55">U</a>
+<a name="IDX0_57" href="#IDX1_57">W</a>
+<hr></hr>
+<strong><a name="IDX1_42" href="#IDX0_42">B</a></strong>
+<ul class="indexlist">
+<li>bottom-up
+<ul class="indexlist">
+<li><a href="concepts/cwsbtmup.html#creatingbottom-upwebservices">creating Web services</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong><a name="IDX1_4A" href="#IDX0_4A">J</a></strong>
+<ul class="indexlist">
+<li><a href="concepts/cjaxrpc.html#cjaxrpc">JAX-RPC</a>
+</li>
+<li><a href="concepts/cjsr109.html#cjsr109">JSR 109</a>
+</li>
+<li><a href="concepts/cjsr109.html#cjsr109">JSR 921</a>
+</li>
+</ul>
+<strong><a name="IDX1_50" href="#IDX0_50">P</a></strong>
+<ul class="indexlist">
+<li>preferences
+<ul class="indexlist">
+<li><a href="ref/rwspref.html#rwspref">setting for Web services</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong><a name="IDX1_53" href="#IDX0_53">S</a></strong>
+<ul class="indexlist">
+<li>SOAP
+<ul class="indexlist">
+<li><a href="concepts/csoap.html#csoap">overview</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong><a name="IDX1_54" href="#IDX0_54">T</a></strong>
+<ul class="indexlist">
+<li>top-down
+<ul class="indexlist">
+<li><a href="concepts/cwstopdown.html#creatingtop-downwebservices">creating Web services</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong><a name="IDX1_55" href="#IDX0_55">U</a></strong>
+<ul class="indexlist">
+<li>UDDI
+<ul class="indexlist">
+<li><a href="concepts/cwsilud.html#cwsilud">relationship with WSIL</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong><a name="IDX1_57" href="#IDX0_57">W</a></strong>
+<ul class="indexlist">
+<li>Web services
+<ul class="indexlist">
+<li><a href="concepts/csoap.html#csoap">binding styles</a>
+</li>
+<li>bottom-up
+<ul class="indexlist">
+<li><a href="concepts/cwsbtmup.html#creatingbottom-upwebservices">overview</a>
+</li>
+</ul>
+</li>
+<li>creating
+<ul class="indexlist">
+<li><a href="tasks/toverws.html#toverws">overview</a>
+</li>
+</ul>
+</li>
+<li><a href="concepts/csoap.html#csoap">encoding styles</a>
+</li>
+<li>interoperability
+<ul class="indexlist">
+<li><a href="tasks/twsicomply.html#twsicomply">setting compliance</a>
+</li>
+</ul>
+</li>
+<li><a href="concepts/cwsiover.html#cwsiover">interoperability (WS-I)</a>
+</li>
+<li><a href="concepts/cjaxrpc.html#cjaxrpc">JAX-RPC</a>
+</li>
+<li><a href="concepts/cjsr109.html#cjsr109">JSR 109</a>
+</li>
+<li><a href="concepts/cjsr109.html#cjsr109">JSR 921</a>
+</li>
+<li><a href="concepts/csoap.html#csoap">mappings</a>
+</li>
+<li><a href="concepts/cws.html#cws">overview</a>
+</li>
+<li><a href="ref/rwspref.html#rwspref">setting preferences</a>
+</li>
+<li><a href="tasks/twsicomply.html#twsicomply">setting WS-I compliance</a>
+</li>
+<li><a href="concepts/csoap.html#csoap">SOAP</a>
+</li>
+<li><a href="concepts/cwsstandards.html#webservicesstandards">standards</a>
+</li>
+<li><a href="concepts/cwsinwsa.html#cwsinwsa">tools overview</a>
+</li>
+<li>top-down
+<ul class="indexlist">
+<li><a href="concepts/cwstopdown.html#creatingtop-downwebservices">overview</a>
+</li>
+</ul>
+</li>
+<li><a href="concepts/cwsiover.html#cwsiover">WS-I</a>
+</li>
+<li><a href="concepts/cwsdl.html#cwsdl">WSDL</a>
+</li>
+<li><a href="ref/rwsdl.html#rwsdl">WSDL reference</a>
+</li>
+<li><a href="concepts/cwsil.html#cwsil">WSIL</a>
+</li>
+</ul>
+</li>
+<li>WS-I
+<ul class="indexlist">
+<li><a href="tasks/twsicomply.html#twsicomply">setting compliance</a>
+</li>
+</ul>
+</li>
+<li><a href="concepts/cwsiover.html#cwsiover">WS-I (Web services interoperability)</a>
+</li>
+<li>WSDL
+<ul class="indexlist">
+<li><a href="concepts/cwsdl.html#cwsdl">overview</a>
+</li>
+<li><a href="ref/rwsdl.html#rwsdl">reference</a>
+</li>
+</ul>
+</li>
+<li>WSIL
+<ul class="indexlist">
+<li><a href="concepts/cwsil.html#cwsil">overview</a>
+</li>
+<li><a href="concepts/cwsilud.html#cwsilud">relationship with UDDI</a>
+</li>
+</ul>
+</li>
+</ul>
+</body></html>
diff --git a/docs/org.eclipse.jst.ws.doc.user/org.eclipse.jst.ws.doc.userindex.xml b/docs/org.eclipse.jst.ws.doc.user/org.eclipse.jst.ws.doc.userindex.xml
new file mode 100644
index 0000000..f4fbb5e
--- /dev/null
+++ b/docs/org.eclipse.jst.ws.doc.user/org.eclipse.jst.ws.doc.userindex.xml
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="utf-8"?>
+<index>
+  <entry keyword="Web services">
+    <entry keyword="overview">
+      <topic href="concepts/cws.html#cws" title="Web services overview"/>
+    </entry>
+    <entry keyword="standards">
+      <topic href="concepts/cwsstandards.html#webservicesstandards" title="Web services standards"/>
+    </entry>
+    <entry keyword="WSDL">
+      <topic href="concepts/cwsdl.html#cwsdl" title="Web Services Description Language (WSDL)"/>
+    </entry>
+    <entry keyword="WSDL reference">
+      <topic href="ref/rwsdl.html#rwsdl" title="Web Services Description Language (WSDL) reference"/>
+    </entry>
+    <entry keyword="SOAP">
+      <topic href="concepts/csoap.html#csoap" title="SOAP"/>
+    </entry>
+    <entry keyword="binding styles">
+      <topic href="concepts/csoap.html#csoap" title="SOAP"/>
+    </entry>
+    <entry keyword="encoding styles">
+      <topic href="concepts/csoap.html#csoap" title="SOAP"/>
+    </entry>
+    <entry keyword="mappings">
+      <topic href="concepts/csoap.html#csoap" title="SOAP"/>
+    </entry>
+    <entry keyword="WSIL">
+      <topic href="concepts/cwsil.html#cwsil" title="Web Services Inspection Language (WSIL)"/>
+    </entry>
+    <entry keyword="JAX-RPC">
+      <topic href="concepts/cjaxrpc.html#cjaxrpc" title="JAX-RPC"/>
+    </entry>
+    <entry keyword="JSR 109">
+      <topic href="concepts/cjsr109.html#cjsr109" title="JSR 109 and JSR 921- Implementing Enterprise Web services"/>
+    </entry>
+    <entry keyword="JSR 921">
+      <topic href="concepts/cjsr109.html#cjsr109" title="JSR 109 and JSR 921- Implementing Enterprise Web services"/>
+    </entry>
+    <entry keyword="tools overview">
+      <topic href="concepts/cwsinwsa.html#cwsinwsa" title="Tools for Web services development"/>
+    </entry>
+    <entry keyword="setting preferences">
+      <topic href="ref/rwspref.html#rwspref" title="Web services preferences"/>
+    </entry>
+    <entry keyword="interoperability (WS-I)">
+      <topic href="concepts/cwsiover.html#cwsiover" title="Web services interoperability (WS-I)"/>
+    </entry>
+    <entry keyword="WS-I">
+      <topic href="concepts/cwsiover.html#cwsiover" title="Web services interoperability (WS-I)"/>
+    </entry>
+    <entry keyword="setting WS-I compliance">
+      <topic href="tasks/twsicomply.html#twsicomply" title="Setting the level of WS-I compliance"/>
+    </entry>
+    <entry keyword="interoperability">
+      <entry keyword="setting compliance">
+        <topic href="tasks/twsicomply.html#twsicomply" title="Setting the level of WS-I compliance"/>
+      </entry>
+    </entry>
+    <entry keyword="creating">
+      <entry keyword="overview">
+        <topic href="tasks/toverws.html#toverws" title="Developing Web services"/>
+      </entry>
+    </entry>
+    <entry keyword="top-down">
+      <entry keyword="overview">
+        <topic href="concepts/cwstopdown.html#creatingtop-downwebservices" title="Creating top-down Web services"/>
+      </entry>
+    </entry>
+    <entry keyword="bottom-up">
+      <entry keyword="overview">
+        <topic href="concepts/cwsbtmup.html#creatingbottom-upwebservices" title="Creating bottom-up Web services"/>
+      </entry>
+    </entry>
+  </entry>
+  <entry keyword="WSDL">
+    <entry keyword="overview">
+      <topic href="concepts/cwsdl.html#cwsdl" title="Web Services Description Language (WSDL)"/>
+    </entry>
+    <entry keyword="reference">
+      <topic href="ref/rwsdl.html#rwsdl" title="Web Services Description Language (WSDL) reference"/>
+    </entry>
+  </entry>
+  <entry keyword="SOAP">
+    <entry keyword="overview">
+      <topic href="concepts/csoap.html#csoap" title="SOAP"/>
+    </entry>
+  </entry>
+  <entry keyword="WSIL">
+    <entry keyword="overview">
+      <topic href="concepts/cwsil.html#cwsil" title="Web Services Inspection Language (WSIL)"/>
+    </entry>
+    <entry keyword="relationship with UDDI">
+      <topic href="concepts/cwsilud.html#cwsilud" title="Relationship between UDDI and WSIL"/>
+    </entry>
+  </entry>
+  <entry keyword="UDDI">
+    <entry keyword="relationship with WSIL">
+      <topic href="concepts/cwsilud.html#cwsilud" title="Relationship between UDDI and WSIL"/>
+    </entry>
+  </entry>
+  <entry keyword="JAX-RPC">
+    <topic href="concepts/cjaxrpc.html#cjaxrpc" title="JAX-RPC"/>
+  </entry>
+  <entry keyword="JSR 109">
+    <topic href="concepts/cjsr109.html#cjsr109" title="JSR 109 and JSR 921- Implementing Enterprise Web services"/>
+  </entry>
+  <entry keyword="JSR 921">
+    <topic href="concepts/cjsr109.html#cjsr109" title="JSR 109 and JSR 921- Implementing Enterprise Web services"/>
+  </entry>
+  <entry keyword="preferences">
+    <entry keyword="setting for Web services">
+      <topic href="ref/rwspref.html#rwspref" title="Web services preferences"/>
+    </entry>
+  </entry>
+  <entry keyword="WS-I (Web services interoperability)">
+    <topic href="concepts/cwsiover.html#cwsiover" title="Web services interoperability (WS-I)"/>
+  </entry>
+  <entry keyword="WS-I">
+    <entry keyword="setting compliance">
+      <topic href="tasks/twsicomply.html#twsicomply" title="Setting the level of WS-I compliance"/>
+    </entry>
+  </entry>
+  <entry keyword="top-down">
+    <entry keyword="creating Web services">
+      <topic href="concepts/cwstopdown.html#creatingtop-downwebservices" title="Creating top-down Web services"/>
+    </entry>
+  </entry>
+  <entry keyword="bottom-up">
+    <entry keyword="creating Web services">
+      <topic href="concepts/cwsbtmup.html#creatingbottom-upwebservices" title="Creating bottom-up Web services"/>
+    </entry>
+  </entry>
+</index>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.doc.user/plugin.xml b/docs/org.eclipse.jst.ws.doc.user/plugin.xml
index 6eda01a..abfc949 100644
--- a/docs/org.eclipse.jst.ws.doc.user/plugin.xml
+++ b/docs/org.eclipse.jst.ws.doc.user/plugin.xml
@@ -2,7 +2,7 @@
 <?eclipse version="3.0"?>
 <?NLS TYPE="org.eclipse.help.toc"?> 
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
diff --git a/docs/org.eclipse.jst.ws.doc.user/ref/rwsdl.dita b/docs/org.eclipse.jst.ws.doc.user/ref/rwsdl.dita
index 4b0b3bf..6fceb7d 100644
--- a/docs/org.eclipse.jst.ws.doc.user/ref/rwsdl.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/ref/rwsdl.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE reference  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN"
+ "reference.dtd">
 <reference id="rwsdl" xml:lang="en-us">
 <title>Web Services Description Language (WSDL) reference</title>
 <shortdesc>A WSDL document defines services as collections of network endpoints,
@@ -9,6 +10,10 @@
 the reuse of abstract definitions: messages, which are abstract descriptions
 of the data being exchanged, and port types which are abstract collections
 of operations. </shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>reference</indexterm></indexterm><indexterm>Web
+services<indexterm>WSDL reference</indexterm></indexterm></keywords>
+</metadata></prolog>
 <refbody>
 <section><p>The concrete protocol and data format specifications for a particular
 port type constitutes a reusable binding. A port is defined by associating
@@ -46,6 +51,5 @@
 <link href="../../org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.dita"
 scope="peer"><linktext> Using the Web Services Explorer</linktext></link>
 </linklist>
-</related-links><?Pub Caret1?>
+</related-links>
 </reference>
-<?Pub *0000002813?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/ref/rwsdl.html b/docs/org.eclipse.jst.ws.doc.user/ref/rwsdl.html
index fbb8200..4982989 100644
--- a/docs/org.eclipse.jst.ws.doc.user/ref/rwsdl.html
+++ b/docs/org.eclipse.jst.ws.doc.user/ref/rwsdl.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,7 +11,8 @@
 <meta name="DC.Title" content="Web Services Description Language (WSDL) reference" />
 <meta name="abstract" content="A WSDL document defines services as collections of network endpoints, or ports. In WSDL, the abstract definition of endpoints and messages is separated from their concrete network deployment or data format bindings. This allows the reuse of abstract definitions: messages, which are abstract descriptions of the data being exchanged, and port types which are abstract collections of operations." />
 <meta name="description" content="A WSDL document defines services as collections of network endpoints, or ports. In WSDL, the abstract definition of endpoints and messages is separated from their concrete network deployment or data format bindings. This allows the reuse of abstract definitions: messages, which are abstract descriptions of the data being exchanged, and port types which are abstract collections of operations." />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsdl.html" />
+<meta content="WSDL, reference, Web services, WSDL reference" name="DC.subject" />
+<meta content="WSDL, reference, Web services, WSDL reference" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
@@ -19,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="rwsdl" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Web Services Description Language (WSDL) reference</title>
 </head>
 <body id="rwsdl"><a name="rwsdl"><!-- --></a>
@@ -28,6 +29,7 @@
 <h1 class="topictitle1">Web Services Description Language (WSDL) reference</h1>
 
 
+
 <div><p>A WSDL document defines services as collections of network endpoints,
 or ports. In WSDL, the abstract definition of endpoints and messages is separated
 from their concrete network deployment or data format bindings. This allows
@@ -74,10 +76,6 @@
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cwsdl.html" title="Web Services Description Language (WSDL) is a standard specification for describing networked, XML-based services. It provides a simple way for service providers to describe the basic format of requests to their systems regardless of the underlying run-time implementation.">Web Services Description Language (WSDL)</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="../concepts/cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/ref/rwspref.dita b/docs/org.eclipse.jst.ws.doc.user/ref/rwspref.dita
index 551af5a..f9834aa 100644
--- a/docs/org.eclipse.jst.ws.doc.user/ref/rwspref.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/ref/rwspref.dita
@@ -1,28 +1,84 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE reference  PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd">
+<!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN"
+ "reference.dtd">
 <reference id="rwspref" xml:lang="en-us">
 <title>Web services preferences</title>
+<shortdesc>Before you begin developing Web services or clients, you can optimize
+the workbench for Web services development by setting a variety of preferences.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>setting preferences</indexterm></indexterm>
+<indexterm>preferences<indexterm>setting for Web services</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <refbody>
 <section><p id="setprefmain">To set any of the Web services preferences, follow
 these steps:<ol>
 <li>Click  <uicontrol>Window > Preferences</uicontrol> to open the Preferences
 notebook.</li>
-<li>Expand  <uicontrol>Web services</uicontrol>, and click the preference
-category that you want to set</li>
+<li>Expand  <uicontrol>Web services</uicontrol> or <uicontrol>Web and XML</uicontrol>,
+and click the preference category that you want to set</li>
 <li>Select the check boxes that you want to set as the default when creating
 your Web service.</li>
 <li>Click  <uicontrol>OK</uicontrol> to apply the changes and close the Preferences
 notebook.</li>
 </ol>If you require more information on any of the options, select the option
 and press  <uicontrol>F1</uicontrol>.</p><p>Web services tools enable you
-to define the following preferences:</p><dl><dlentry id="popupdialogselect">
+to define the following preferences:</p><dl><dlentry id="axisemitterpref">
+<dt>Axis Emitter</dt>
+<dd>This page allows you to set the following preferences used when creating
+or consuming Axis Web services.</dd>
+<dd><b>WSDL2Java</b><ul>
+<li>Generate code for all elements: By default, WSDL2Java only generates code
+for those elements in the WSDL file that are referenced. For additional information
+regarding how referencing works refer to the Axis reference guide: <xref href="http://ws.apache.org/axis/java/reference.html"
+scope="external"></xref></li>
+<li>Emits separate Helper classes for metadata: If you select this option
+WSDL2Java will create a separate helper class that contains the metadata rather
+than including it in the skeleton.</li>
+<li>Prefers building beans to straight arrays for wrapped XML array types:
+The default behavior is to map this XML construct: <codeblock>&lt;element name="array">
+ &lt;complexType>
+  &lt;sequence>
+   &lt;element name="item" type="xs:string"/>
+  &lt;/sequence>
+ &lt;/complexType>
+&lt;/element></codeblock>to a Java String array (String[]). If you would rather
+a specific JavaBean class (ArrayOfString) be generated for these types of
+schemas, select this option. </li>
+<li>Add scope to deploy.wsdd: This indicates how to deploy the server implementation.
+Application uses one instance of the implementation class for all requests.
+Request creates a new instance of the implementation class for each request.
+Session creates a new instance of the implementation class for each session.</li>
+<li>Timeout in seconds: The default is 45. Use -1 to disable the timeout.</li>
+</ul></dd>
+<dd><b>Java2WSDL</b><ul>
+<li>Look for allowed methods in inherited class: If this option is specified,
+the Java2WSDL parser will look into extended classes to determine the list
+of methods to export into the WSDL file. </li>
+<li>Analyze the service class for compliance to JAX-RPC before generating
+code: If selected, the tools will examine the Java service class and its value
+types to determine if it satisfies important requirements of the JAX-RPC specification.</li>
+</ul></dd>
+</dlentry><dlentry id="popupdialogselect">
 <dt>Popup Dialog Selection</dt>
 <dd>The Dialogs preferences enable you to determine which dialog boxes that
 you want to see when running popup actions. If you have disabled any of the
 dialogs by selecting "Do not show this dialog again" on the first page of
 a Web services wizard, you can undo your change by clearing the check box
 beside the dialog that you have chosen to hide.</dd>
+</dlentry><dlentry id="wsicompliance">
+<dt>Profile Compliance and Validation</dt>
+<dd>The WS-I Compliance preferences allow you to select your level of compliance
+with the WS-I Simple SOAP Binding Profile (SSBP) and WS-I Attachement Profile
+(AP). Note: if you change the level of WS-I compliance while WS-I incompliances
+are listed in the Task view, the Task view will not be automatically updated.
+The workspace must be revalidated before the warnings will be removed from
+the Task view. For more information on WS-I, refer to: <xref href="http://www.ws-i.org/"
+scope="external"></xref></dd>
+<dd>For validation preferences, you can choose whether or not WSDL files consumed
+by the Web services wizards are validated, and whether or not the WSDL validation
+must complete before the wizard will move to the next step.</dd>
 </dlentry><dlentry id="projtopology">
 <dt>Project Topology</dt>
 <dd>The Project Topology preferences allow you to:<ul>
@@ -40,24 +96,40 @@
 <dt>Resource Management</dt>
 <dd>The Resource Management preferences enable you to determine the file and
 folder creation and overwriting defaults that you want to use when creating
-your Web service.</dd>
+your Web service.<ul>
+<li>Overwrite files without warning: selecting this will allow the wizards
+to overwrite any existing files in the workspace without prompting. If it
+is not selected you will be prompted each time a file needs to be overwritten.</li>
+<li>Create folders when necessary: selecting this enables the wizards to create
+any required folders.</li>
+<li>Check out files without warning: select to check out files without receiving
+a warning message asking for confirmation.</li>
+<li>Merge generated skeleton file: this check box is disabled by default.
+ If this check box is enabled, when a skeleton file of the same name already
+exists in the workspace, the newly generated skeleton file will merge with
+the existing skeleton file.  Enable this to preserve code that you have already
+modified in the existing skeleton files.<p>Note that when this preference
+is enabled, if you change the return type of an interface, the resulting skeleton
+file will have a method returning the type as defined in the new interface
+but would have a method body from the original skeleton file (which would
+be returning a different type).  This will result in an compilation error
+that the you will have to correct manually.</p></li>
+</ul></dd>
 </dlentry><dlentry id="scenariodefaults">
 <dt>Scenario Defaults</dt>
 <dd>The Scenario Defaults preferences enable you to set the following scenario
 defaults that you want to use when creating your Web service:<ul>
-<li>which type of Web service you want to be selected by default.</li>
-<li>whether or not you want the Web service started by the wizard.</li>
+<li>which type of Web service and client you want to be selected by default.</li>
+<li>which phases of the Web service lifecycle you want to complete in the
+wizard.</li>
 <li>if you want the Web Services Explorer to launch by default so that you
 can publish your Web service to a UDDI registry.</li>
-<li>if you want to generate a proxy and the default type of proxy generated.</li>
-<li>if you want the Web Services Explorer to launch by default so that you
-can test the Web service.</li>
 <li>if you want the Web service SOAP traffic routed through a TCP/IP monitor
 so that you can monitor the SOAP packets and optionally test them for WS-I
 compliance.</li>
 </ul>Note that all these defaults can be overridden in the wizard.</dd>
 </dlentry><dlentry id="serverandruntime">
-<dt>Server and Runtime</dt><?Pub Caret?>
+<dt>Server and Runtime</dt>
 <dd>Select the server, Web service run-time environment, and J2EE version
 that you want selected by default in the Web services wizard. Note that all
 these defaults can be overridden in the wizard.</dd>
@@ -70,14 +142,6 @@
 <dd>When creating a WSDL file in the WSDL editor, you can set the default
 target namespace. If you do not select to change the default, your WSDL file
 will have http://tempuri.org as its target namespace.</dd>
-</dlentry><dlentry id="wsicompliance">
-<dt>WS-I Compliance</dt>
-<dd>The WS-I Compliance preferences allow you to select your level of compliance
-with the WS-I Simple SOAP Binding Profile (SSBP) and WS-I Attachement Profile
-(AP). Note: if you change the level of WS-I compliance while WS-I incompliances
-are listed in the Task view, the Task view will not be automatically updated.
-The workspace must be revalidated before the warnings will be removed from
-the Task view. For more information on WS-I, refer to: </dd>
 </dlentry></dl></section>
 </refbody>
 <related-links>
@@ -90,4 +154,3 @@
 </linklist>
 </related-links>
 </reference>
-<?Pub *0000004954?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/ref/rwspref.html b/docs/org.eclipse.jst.ws.doc.user/ref/rwspref.html
index 4ede987..53ca7ba 100644
--- a/docs/org.eclipse.jst.ws.doc.user/ref/rwspref.html
+++ b/docs/org.eclipse.jst.ws.doc.user/ref/rwspref.html
@@ -2,20 +2,24 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
 <meta content="reference" name="DC.Type" />
 <meta name="DC.Title" content="Web services preferences" />
+<meta name="abstract" content="Before you begin developing Web services or clients, you can optimize the workbench for Web services development by setting a variety of preferences." />
+<meta name="description" content="Before you begin developing Web services or clients, you can optimize the workbench for Web services development by setting a variety of preferences." />
+<meta content="Web services, setting preferences, preferences, setting for Web services" name="DC.subject" />
+<meta content="Web services, setting preferences, preferences, setting for Web services" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../tasks/toverws.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="rwspref" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Web services preferences</title>
 </head>
 <body id="rwspref"><a name="rwspref"><!-- --></a>
@@ -23,14 +27,18 @@
 
 <h1 class="topictitle1">Web services preferences</h1>
 
-<div>
+
+
+<div><p>Before you begin developing Web services or clients, you can optimize
+the workbench for Web services development by setting a variety of preferences.</p>
+
 <div class="section"><div class="p" id="rwspref__setprefmain"><a name="rwspref__setprefmain"><!-- --></a>To set any of the Web services preferences, follow
 these steps:<ol>
 <li>Click  <span class="uicontrol">Window &gt; Preferences</span> to open the Preferences
 notebook.</li>
 
-<li>Expand  <span class="uicontrol">Web services</span>, and click the preference
-category that you want to set</li>
+<li>Expand  <span class="uicontrol">Web services</span> or <span class="uicontrol">Web and XML</span>,
+and click the preference category that you want to set</li>
 
 <li>Select the check boxes that you want to set as the default when creating
 your Web service.</li>
@@ -44,6 +52,55 @@
 <p>Web services tools enable you
 to define the following preferences:</p>
 <dl>
+<dt class="dlterm"><a name="rwspref__axisemitterpref"><!-- --></a>Axis Emitter</dt>
+
+<dd>This page allows you to set the following preferences used when creating
+or consuming Axis Web services.</dd>
+
+<dd class="ddexpand"><strong>WSDL2Java</strong><ul>
+<li>Generate code for all elements: By default, WSDL2Java only generates code
+for those elements in the WSDL file that are referenced. For additional information
+regarding how referencing works refer to the Axis reference guide: <a href="http://ws.apache.org/axis/java/reference.html" target="_blank">http://ws.apache.org/axis/java/reference.html</a></li>
+
+<li>Emits separate Helper classes for metadata: If you select this option
+WSDL2Java will create a separate helper class that contains the metadata rather
+than including it in the skeleton.</li>
+
+<li>Prefers building beans to straight arrays for wrapped XML array types:
+The default behavior is to map this XML construct: <pre>&lt;element name="array"&gt;
+ &lt;complexType&gt;
+  &lt;sequence&gt;
+   &lt;element name="item" type="xs:string"/&gt;
+  &lt;/sequence&gt;
+ &lt;/complexType&gt;
+&lt;/element&gt;</pre>
+to a Java String array (String[]). If you would rather
+a specific JavaBean class (ArrayOfString) be generated for these types of
+schemas, select this option. </li>
+
+<li>Add scope to deploy.wsdd: This indicates how to deploy the server implementation.
+Application uses one instance of the implementation class for all requests.
+Request creates a new instance of the implementation class for each request.
+Session creates a new instance of the implementation class for each session.</li>
+
+<li>Timeout in seconds: The default is 45. Use -1 to disable the timeout.</li>
+
+</ul>
+</dd>
+
+<dd class="ddexpand"><strong>Java2WSDL</strong><ul>
+<li>Look for allowed methods in inherited class: If this option is specified,
+the Java2WSDL parser will look into extended classes to determine the list
+of methods to export into the WSDL file. </li>
+
+<li>Analyze the service class for compliance to JAX-RPC before generating
+code: If selected, the tools will examine the Java service class and its value
+types to determine if it satisfies important requirements of the JAX-RPC specification.</li>
+
+</ul>
+</dd>
+
+
 <dt class="dlterm"><a name="rwspref__popupdialogselect"><!-- --></a>Popup Dialog Selection</dt>
 
 <dd>The Dialogs preferences enable you to determine which dialog boxes that
@@ -53,6 +110,20 @@
 beside the dialog that you have chosen to hide.</dd>
 
 
+<dt class="dlterm"><a name="rwspref__wsicompliance"><!-- --></a>Profile Compliance and Validation</dt>
+
+<dd>The WS-I Compliance preferences allow you to select your level of compliance
+with the WS-I Simple SOAP Binding Profile (SSBP) and WS-I Attachement Profile
+(AP). Note: if you change the level of WS-I compliance while WS-I incompliances
+are listed in the Task view, the Task view will not be automatically updated.
+The workspace must be revalidated before the warnings will be removed from
+the Task view. For more information on WS-I, refer to: <a href="http://www.ws-i.org/" target="_blank">http://www.ws-i.org/</a></dd>
+
+<dd class="ddexpand">For validation preferences, you can choose whether or not WSDL files consumed
+by the Web services wizards are validated, and whether or not the WSDL validation
+must complete before the wizard will move to the next step.</dd>
+
+
 <dt class="dlterm"><a name="rwspref__projtopology"><!-- --></a>Project Topology</dt>
 
 <dd>The Project Topology preferences allow you to:<ul>
@@ -75,25 +146,45 @@
 
 <dd>The Resource Management preferences enable you to determine the file and
 folder creation and overwriting defaults that you want to use when creating
-your Web service.</dd>
+your Web service.<ul>
+<li>Overwrite files without warning: selecting this will allow the wizards
+to overwrite any existing files in the workspace without prompting. If it
+is not selected you will be prompted each time a file needs to be overwritten.</li>
+
+<li>Create folders when necessary: selecting this enables the wizards to create
+any required folders.</li>
+
+<li>Check out files without warning: select to check out files without receiving
+a warning message asking for confirmation.</li>
+
+<li>Merge generated skeleton file: this check box is disabled by default.
+ If this check box is enabled, when a skeleton file of the same name already
+exists in the workspace, the newly generated skeleton file will merge with
+the existing skeleton file.  Enable this to preserve code that you have already
+modified in the existing skeleton files.<p>Note that when this preference
+is enabled, if you change the return type of an interface, the resulting skeleton
+file will have a method returning the type as defined in the new interface
+but would have a method body from the original skeleton file (which would
+be returning a different type).  This will result in an compilation error
+that the you will have to correct manually.</p>
+</li>
+
+</ul>
+</dd>
 
 
 <dt class="dlterm"><a name="rwspref__scenariodefaults"><!-- --></a>Scenario Defaults</dt>
 
 <dd>The Scenario Defaults preferences enable you to set the following scenario
 defaults that you want to use when creating your Web service:<ul>
-<li>which type of Web service you want to be selected by default.</li>
+<li>which type of Web service and client you want to be selected by default.</li>
 
-<li>whether or not you want the Web service started by the wizard.</li>
+<li>which phases of the Web service lifecycle you want to complete in the
+wizard.</li>
 
 <li>if you want the Web Services Explorer to launch by default so that you
 can publish your Web service to a UDDI registry.</li>
 
-<li>if you want to generate a proxy and the default type of proxy generated.</li>
-
-<li>if you want the Web Services Explorer to launch by default so that you
-can test the Web service.</li>
-
 <li>if you want the Web service SOAP traffic routed through a TCP/IP monitor
 so that you can monitor the SOAP packets and optionally test them for WS-I
 compliance.</li>
@@ -121,16 +212,6 @@
 target namespace. If you do not select to change the default, your WSDL file
 will have http://tempuri.org as its target namespace.</dd>
 
-
-<dt class="dlterm"><a name="rwspref__wsicompliance"><!-- --></a>WS-I Compliance</dt>
-
-<dd>The WS-I Compliance preferences allow you to select your level of compliance
-with the WS-I Simple SOAP Binding Profile (SSBP) and WS-I Attachement Profile
-(AP). Note: if you change the level of WS-I compliance while WS-I incompliances
-are listed in the Task view, the Task view will not be automatically updated.
-The workspace must be revalidated before the warnings will be removed from
-the Task view. For more information on WS-I, refer to: </dd>
-
 </dl>
 </div>
 
diff --git a/docs/org.eclipse.jst.ws.doc.user/tasks/toverws.dita b/docs/org.eclipse.jst.ws.doc.user/tasks/toverws.dita
index a2ad77a..6e045f5 100644
--- a/docs/org.eclipse.jst.ws.doc.user/tasks/toverws.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/tasks/toverws.dita
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
-<task id="toverws" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
+<task id="toverws" xml:lang="en-us">
 <title>Developing Web services</title>
 <shortdesc>Use Web services tools to discover, create, and publish Web services
 that are created from <tm tmclass="special" tmowner="Sun Microsystems, Inc."
@@ -10,6 +11,10 @@
 a WSDL file) or a bottom-up approach (which starts with a <tm tmclass="special"
 tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm> bean
 or EJB).</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>creating<indexterm>overview</indexterm></indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <context><p>In this release, the development path that you would typically
 follow to create and publish a Web service is as follows:</p></context>
@@ -39,11 +44,11 @@
 top-down Web services</linktext></link>
 </linklist>
 <linklist><title>Related Tasks</title>
-<link href="../../org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.dita" scope="peer"><linktext>Creating a new WSDL file</linktext>
-</link>
+<link href="../../org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.dita" scope="peer">
+<linktext>Creating a new WSDL file</linktext></link>
 <link href="../../org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tuddiexp.dita"
-scope="peer"><linktext>Publishing Web services and business entities</linktext></link>
+scope="peer"><linktext>Publishing Web services and business entities</linktext>
+</link>
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002379?>
diff --git a/docs/org.eclipse.jst.ws.doc.user/tasks/toverws.html b/docs/org.eclipse.jst.ws.doc.user/tasks/toverws.html
index cfbb328..4097a46 100644
--- a/docs/org.eclipse.jst.ws.doc.user/tasks/toverws.html
+++ b/docs/org.eclipse.jst.ws.doc.user/tasks/toverws.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,8 +11,8 @@
 <meta name="DC.Title" content="Developing Web services" />
 <meta name="abstract" content="Use Web services tools to discover, create, and publish Web services that are created from Java beans, enterprise beans, and WSDL files. You can create of Web services using a top-down approach (which starts with a WSDL file) or a bottom-up approach (which starts with a Java bean or EJB)." />
 <meta name="description" content="Use Web services tools to discover, create, and publish Web services that are created from Java beans, enterprise beans, and WSDL files. You can create of Web services using a top-down approach (which starts with a WSDL file) or a bottom-up approach (which starts with a Java bean or EJB)." />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwstopdown.html" />
-<meta scheme="URI" name="DC.Relation" content="../concepts/cwsbtmup.html" />
+<meta content="Web services, creating, overview" name="DC.subject" />
+<meta content="Web services, creating, overview" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cws.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsinwsa.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsbtmup.html" />
@@ -22,7 +22,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="toverws" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Developing Web services</title>
 </head>
 <body id="toverws"><a name="toverws"><!-- --></a>
@@ -31,6 +31,7 @@
 <h1 class="topictitle1">Developing Web services</h1>
 
 
+
 <div><p>Use Web services tools to discover, create, and publish Web services
 that are created from Java™ beans, enterprise beans, and WSDL files.
 You can create of Web services using a top-down approach (which starts with
@@ -66,13 +67,6 @@
 </div>
 
 <div>
-<ul class="ullinks">
-<li class="ulchildlink"><strong><a href="../concepts/cwstopdown.html">Creating top-down Web services</a></strong><br />
-Web services can be created using two methods: top-down development and bottom-up development. Top-down Web services development involves creating a Web service from a WSDL file.</li>
-<li class="ulchildlink"><strong><a href="../concepts/cwsbtmup.html">Creating bottom-up Web services</a></strong><br />
-Web services can be created using two methods: top-down development and bottom-up development. Bottom-up Web services development involves creating a Web service from a Java bean or enterprise bean.</li>
-</ul>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="../concepts/cws.html" title="A Web service is a set of related application functions that can be programmatically invoked over the Internet. Businesses can dynamically mix and match Web services to perform complex transactions with minimal programming. Web services allow buyers and sellers all over the world to discover each other, connect dynamically, and execute transactions in real time with minimal human interaction.">Web services overview</a></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/tasks/twsicomply.dita b/docs/org.eclipse.jst.ws.doc.user/tasks/twsicomply.dita
index 66db972..c1847bc 100644
--- a/docs/org.eclipse.jst.ws.doc.user/tasks/twsicomply.dita
+++ b/docs/org.eclipse.jst.ws.doc.user/tasks/twsicomply.dita
@@ -1,14 +1,21 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="twsicomply" xml:lang="en-us">
 <title>Setting the level of WS-I compliance</title>
 <shortdesc>The Web services WS-I validation tools support the level of WS-I
 compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding
 Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You
 can choose to make your Web service compliant or non-compliant, depending
-on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols,
-and secured Web services, are not WS-I compliant.</shortdesc>
+on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols
+are not WS-I compliant.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>Web services<indexterm>setting WS-I compliance</indexterm></indexterm>
+<indexterm>WS-I<indexterm>setting compliance</indexterm></indexterm><indexterm>Web
+services<indexterm>interoperability<indexterm>setting compliance</indexterm></indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <context><p>You can set the level of compliance for either the Basic Profile
 and the Simple SOAP Binding Profile, or for the Attachments Profile. You can
@@ -31,8 +38,8 @@
 </step>
 <step><cmd>Select  <b>Web Services</b> from the component tree on the left-hand
 side of the panel.</cmd></step>
-<step><cmd>Under Profile Compliance and Validation, select the level of compliance
-you want from the drop-down lists.</cmd></step>
+<step><cmd>Under <b>Profile Compliance and Validation</b>, select the level
+of compliance you want from the drop-down lists.</cmd></step>
 <step><cmd>Click  <b>Apply</b>, then click  <b>OK</b>.</cmd></step>
 </steps>
 </taskbody>
@@ -44,11 +51,11 @@
 <steps>
 <step><cmd>In the Project Navigator, right click and select  <b>Properties</b>.</cmd>
 </step>
-<step><cmd>Select  <b>WS-I Compliance</b> from the component tree on the left-hand
-side of the panel.</cmd></step>
-<step><cmd>Under WS-I compliance, select the level of compliance you want
-from the drop-down lists, or select to have the project share the same level
-of WS-I compliance as the workspace</cmd></step>
+<step><cmd>Select  <b>Profile Compliance and Validation</b> from the component
+tree on the left-hand side of the panel.</cmd></step>
+<step><cmd>Select the level of compliance you want from the drop-down lists,
+or select to have the project share the same level of WS-I compliance as the
+workspace</cmd></step>
 <step><cmd>Click  <b>Apply</b>, then click  <b>OK</b>.</cmd></step>
 </steps>
 </taskbody>
diff --git a/docs/org.eclipse.jst.ws.doc.user/tasks/twsicomply.html b/docs/org.eclipse.jst.ws.doc.user/tasks/twsicomply.html
index af10a55..d83e174 100644
--- a/docs/org.eclipse.jst.ws.doc.user/tasks/twsicomply.html
+++ b/docs/org.eclipse.jst.ws.doc.user/tasks/twsicomply.html
@@ -2,19 +2,21 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
 <meta content="task" name="DC.Type" />
 <meta name="DC.Title" content="Setting the level of WS-I compliance" />
-<meta name="abstract" content="The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols, and secured Web services, are not WS-I compliant." />
-<meta name="description" content="The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols, and secured Web services, are not WS-I compliant." />
+<meta name="abstract" content="The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols are not WS-I compliant." />
+<meta name="description" content="The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols are not WS-I compliant." />
+<meta content="Web services, setting WS-I compliance, WS-I, setting compliance, Web services, interoperability" name="DC.subject" />
+<meta content="Web services, setting WS-I compliance, WS-I, setting compliance, Web services, interoperability" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="twsicomply" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Setting the level of WS-I compliance</title>
 </head>
 <body id="twsicomply"><a name="twsicomply"><!-- --></a>
@@ -23,12 +25,13 @@
 <h1 class="topictitle1">Setting the level of WS-I compliance</h1>
 
 
+
 <div><p>The Web services WS-I validation tools support the level of WS-I
 compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding
 Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You
 can choose to make your Web service compliant or non-compliant, depending
-on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols,
-and secured Web services, are not WS-I compliant.</p>
+on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols
+are not WS-I compliant.</p>
 
 <div class="section"><p>You can set the level of compliance for either the Basic Profile
 and the Simple SOAP Binding Profile, or for the Attachments Profile. You can
@@ -64,8 +67,8 @@
 <li><span>Select  <strong>Web Services</strong> from the component tree on the left-hand
 side of the panel.</span></li>
 
-<li><span>Under Profile Compliance and Validation, select the level of compliance
-you want from the drop-down lists.</span></li>
+<li><span>Under <strong>Profile Compliance and Validation</strong>, select the level
+of compliance you want from the drop-down lists.</span></li>
 
 <li><span>Click  <strong>Apply</strong>, then click  <strong>OK</strong>.</span></li>
 
@@ -73,11 +76,6 @@
 
 </div>
 
-<div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cwsiover.html" title="WS-I is an organization designed to promote Web service interoperability across platforms, operating systems, and programming languages.">Web services interoperability (WS-I)</a></div>
-</div>
-</div>
 </div>
 
 <div class="nested1" xml:lang="en-us" id="xvgdsgfsg"><a name="xvgdsgfsg"><!-- --></a>
@@ -91,12 +89,12 @@
 <li><span>In the Project Navigator, right click and select  <strong>Properties</strong>.</span>
 </li>
 
-<li><span>Select  <strong>WS-I Compliance</strong> from the component tree on the left-hand
-side of the panel.</span></li>
+<li><span>Select  <strong>Profile Compliance and Validation</strong> from the component
+tree on the left-hand side of the panel.</span></li>
 
-<li><span>Under WS-I compliance, select the level of compliance you want
-from the drop-down lists, or select to have the project share the same level
-of WS-I compliance as the workspace</span></li>
+<li><span>Select the level of compliance you want from the drop-down lists,
+or select to have the project share the same level of WS-I compliance as the
+workspace</span></li>
 
 <li><span>Click  <strong>Apply</strong>, then click  <strong>OK</strong>.</span></li>
 
@@ -105,10 +103,6 @@
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../concepts/cwsiover.html" title="WS-I is an organization designed to promote Web service interoperability across platforms, operating systems, and programming languages.">Web services interoperability (WS-I)</a></div>
-</div>
-
 <div class="linklist"><strong>Related Concepts</strong><br />
 
 <div><a href="../concepts/cwsiover.html" title="WS-I is an organization designed to promote Web service interoperability across platforms, operating systems, and programming languages.">Web services interoperability (WS-I)</a></div></div>
diff --git a/docs/org.eclipse.jst.ws.doc.user/webservice_toc.ditamap b/docs/org.eclipse.jst.ws.doc.user/webservice_toc.ditamap
index 1b17a24..8ea946c 100644
--- a/docs/org.eclipse.jst.ws.doc.user/webservice_toc.ditamap
+++ b/docs/org.eclipse.jst.ws.doc.user/webservice_toc.ditamap
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
+<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN"
+ "map.dtd">
 <map id="wsmaintoc" title="wsmaintoc">
 <topicref href="concepts/cws.dita" navtitle="Web services development">
 <topicref href="concepts/cwsstandards.dita" navtitle="Web services standards"
@@ -67,7 +68,8 @@
 <topicref href="../org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.dita"
 navtitle="Generating a Java client proxy from a WSDL document using the Axis run-time environment"
 scope="peer"></topicref>
-</topicref>
+<anchor id="extending_ws_client_creation"/></topicref>
+<navref mapref="../org.eclipse.wst.command.env.doc.user/wsaxisant_toc.ditamap"/>
 </topicref>
 <topicref navtitle="Testing and validating Web services">
 <topicref href="../org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.dita"
diff --git a/docs/org.eclipse.jst.ws.doc.user/webservice_toc.xml b/docs/org.eclipse.jst.ws.doc.user/webservice_toc.xml
index 0c4661c..b5d76c3 100644
--- a/docs/org.eclipse.jst.ws.doc.user/webservice_toc.xml
+++ b/docs/org.eclipse.jst.ws.doc.user/webservice_toc.xml
@@ -44,7 +44,9 @@
 <topic label="Creating Web service clients">
 <topic label="Discovering and importing a Web service" href="../org.eclipse.jst.ws.consumption.ui.doc.user/tasks/tdiscov.html"/>
 <topic label="Generating a Java client proxy from a WSDL document using the Axis run-time environment" href="../org.eclipse.jst.ws.axis.ui.doc.user/tasks/tsampappa.html"/>
+<anchor id="extending_ws_client_creation"/>
 </topic>
+<link toc="../org.eclipse.wst.command.env.doc.user/wsaxisant_toc.xml"/>
 </topic>
 <topic label="Testing and validating Web services">
 <topic label="Testing WSDL documents and Web services with the WSDL Explorer" href="../org.eclipse.jst.ws.consumption.ui.doc.user/tasks/ttestwsdl.html"/>
diff --git a/docs/org.eclipse.jst.ws.infopop/META-INF/MANIFEST.MF b/docs/org.eclipse.jst.ws.infopop/META-INF/MANIFEST.MF
index 0fa9d57..eabc76f 100644
--- a/docs/org.eclipse.jst.ws.infopop/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.jst.ws.infopop/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Web services UI
 Bundle-SymbolicName: org.eclipse.jst.ws.infopop; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.201.qualifier
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
-Eclipse-AutoStart: true
+Eclipse-LazyStart: true
diff --git a/docs/org.eclipse.jst.ws.infopop/about.html b/docs/org.eclipse.jst.ws.infopop/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.jst.ws.infopop/about.html
+++ b/docs/org.eclipse.jst.ws.infopop/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.jst.ws.infopop/build.properties b/docs/org.eclipse.jst.ws.infopop/build.properties
index 76184b8..e30e471 100644
--- a/docs/org.eclipse.jst.ws.infopop/build.properties
+++ b/docs/org.eclipse.jst.ws.infopop/build.properties
@@ -1,6 +1,5 @@
 bin.includes = plugin.xml,\
                webserviceui-f1Contexts.xml,\
                about.html,\
-               META-INF/,\
-               wsui-f1Contexts.xml
+               META-INF/
 src.includes = build.properties
diff --git a/docs/org.eclipse.jst.ws.infopop/plugin.xml b/docs/org.eclipse.jst.ws.infopop/plugin.xml
index 4db6d24..03e4a94 100644
--- a/docs/org.eclipse.jst.ws.infopop/plugin.xml
+++ b/docs/org.eclipse.jst.ws.infopop/plugin.xml
@@ -2,7 +2,7 @@
 <?eclipse version="3.0"?>
 <?NLS TYPE="org.eclipse.help.toc"?> 
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
@@ -14,6 +14,5 @@
 <plugin>
 	<extension point="org.eclipse.help.contexts">
 		<contexts file="webserviceui-f1Contexts.xml" plugin="org.eclipse.jst.ws.ui"/>
-		<contexts file="wsui-f1Contexts.xml" plugin="org.eclipse.jst.ws.ui"/>
 	</extension>
 </plugin>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.infopop/webserviceui-f1Contexts.xml b/docs/org.eclipse.jst.ws.infopop/webserviceui-f1Contexts.xml
index 07059b4..e7981de 100644
--- a/docs/org.eclipse.jst.ws.infopop/webserviceui-f1Contexts.xml
+++ b/docs/org.eclipse.jst.ws.infopop/webserviceui-f1Contexts.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?NLS TYPE="org.eclipse.help.contexts"?>
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
@@ -11,6 +11,7 @@
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/ -->
 <contexts>
+
 <!--DRES: Resource Selection Dialog-->
 <context id="DRES0001">
 <!--Resource Type drop down-->
@@ -21,53 +22,41 @@
 <description>Lists the resources that can be turned into a Web service.</description>
 </context>
 
-
-<context id="PPAD0004">
-<!--  Hide generate client check box-->
-<description>Select this check box to hide the option of generating a Web service client when you right-click a file in the Project Explorer or Navigator.</description>
-</context>
-
-<context id="PPAD0005">
-<!--  Hide generate sample check box-->
-<description>Select this check box to hide the option of generating sample JSP code for the Web service when you right-click a file in the Project Explorer or Navigator.</description>
-</context>
-
-<!--TopologyPreferencePage.java-->
-<context id="PTPP0002">
-<!--PTPP0002 for the Topology Preference Page-->
-<description>This table respresents the the types of projects available into which you can generate a Web services client. You cannot add or remove project types, however you can change the order in which they appear in the Web services wizard. This is useful if you are creating several Web services that use the same type of client project because you can set that client project type as the default. To change the order, select a project type and use the up and down arrows to move it within the list. Changing the order of the list does not restrict your ability to select any of the options.</description>
-</context>
-
-<context id="PTPP0003">
-<!--PTPP0002 for the Topology Preference Page-->
-<description>Click this button to move the selected client project type towards the beginning of the list. This changes the order of the items in the client selection list and does not restrict your selection in any way.</description>
-</context>
-
-<context id="PTPP0004">
-<!--PTPP0004 for the Topology Preference Page-->
-<description>Click this button to move the selected client project type towards the end of the list. This changes the order of the items in the client selection list and does not restrict your selection in any way.</description>
-</context>
-
-<context id="PTPP0005">
-<!--PTPP0002 for the Topology Preference Page-->
-<description>If you select this check box, by default the Web services wizard will generate the Web services server and client code into different EARs. It is recommended that you enable this feature.</description>
-</context>
-
 <!--PPRM: Resource Management Preference page-->
 
+<context id="PPRM0001">
+<!--main page-->
+<description>The Resource Management preferences enable you to determine the defaults that you want to use when creating your Web service.</description>
+</context>
+
 <context id="PPRM0002">
 <!--File overwrite check box-->
-<description>The Resource Management preferences enable you to determine the defaults that you want to use when creating your Web service. Allows you to overwrite files without receiving a warning message asking for confirmation when overwriting files.</description>
+<description>This checkbox allows you to overwrite files without receiving a warning message asking for confirmation when overwriting files.</description>
 </context>
 <context id="PPRM0003">
 <!--Create folders check box-->
-<description>The Resource Management preferences enable you to determine the defaults that you want to use when creating your Web service. Select to create folders and folder structures without receiving a warning message asking for confirmation.</description>
+<description>Select this checkbox to create folders and folder structures without receiving a warning message asking for confirmation.</description>
 </context>
 <context id="PPRM0004">
 <!--Check out files check box-->
-<description>The Resource Management preferences enable you to determine the defaults that you want to use when creating your Web service. Select to check out files without receiving a warning message asking for confirmation.</description>
+<description>Select this checkbox to check out files without receiving a warning message asking for confirmation.</description>
 </context>
 
+<context id="PPRM0005">
+<!--Skeleton merge-->
+<description>This check box is disabled by default. If this check box is enabled, when a skeleton 
+file of the same name already exists in the workspace, the newly generated skeleton file will merge 
+with the existing skeleton file.  Enable this to preserve code that you have already modified in the 
+existing skeleton files.  
+<br />
+Note that when this preference is enabled, if you change the return type
+of an interface, the resulting skeleton file will have a method returning the
+type as defined in the new interface but would have a method body from the
+original skeleton file (which would be returning a different type).  This will
+result in an compilation error that the you will have to correct manually.
+
+</description>
+</context>
 
 <!--PPSD: Scenario Defaults Preference page-->
 
@@ -98,4 +87,30 @@
 </context>
 
 
+<context id="PPAD0004">
+<!--  Hide generate client check box-->
+<description>Select this check box to hide the option of generating a Web service client when you right-click a file in the Project Explorer or Navigator.</description>
+</context>
+
+<context id="PPAD0005">
+<!--  Hide generate sample check box-->
+<description>Select this check box to hide the option of generating sample JSP code for the Web service when you right-click a file in the Project Explorer or Navigator.</description>
+</context>
+
+<context id="PPAD0006">
+<!--  create web service check box-->
+<description>Select this check box to hide the option of generating a Web service client when you right-click a file in the Project Explorer or Navigator.</description>
+</context>
+
+<context id="PPAD0008">
+<!--  generate skeleton check box-->
+<description>Select this check box to hide the option of generating skeleton Java classes when you right-click a file in the Project Explorer or Navigator. The skeleton bean contains a set of methods that correspond to the operations described in the WSDL document. When the bean is created, each method has a trivial implementation that you replace by editing the bean.</description>
+</context>
+
+<context id="PPAD0009">
+<!--  publish WSDL check box-->
+<description>Select this check box to hide the option of publishing the Web service's WSDL file to a UDDI registry when you right-click a file in the Project Explorer or Navigator.</description>
+</context>
+
+
 </contexts>
\ No newline at end of file
diff --git a/docs/org.eclipse.jst.ws.infopop/wsui-f1Contexts.xml b/docs/org.eclipse.jst.ws.infopop/wsui-f1Contexts.xml
deleted file mode 100644
index c0c7d91..0000000
--- a/docs/org.eclipse.jst.ws.infopop/wsui-f1Contexts.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?NLS TYPE="org.eclipse.help.contexts"?>
-<!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM 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:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/ -->
-<contexts>
-
-
-
-<context id="PPAD0006">
-<!--  create web service check box-->
-<description>Select this check box to hide the option of generating a Web service client when you right-click a file in the Project Explorer or Navigator.</description>
-</context>
-
-<context id="PPAD0008">
-<!--  generate skeleton check box-->
-<description>Select this check box to hide the option of generating skeleton Java classes when you right-click a file in the Project Explorer or Navigator. The skeleton bean contains a set of methods that correspond to the operations described in the WSDL document. When the bean is created, each method has a trivial implementation that you replace by editing the bean.</description>
-</context>
-
-<context id="PPAD0009">
-<!--  publish WSDL check box-->
-<description>Select this check box to hide the option of publishing the Web service's WSDL file to a UDDI registry when you right-click a file in the Project Explorer or Navigator.</description>
-</context>
-
-
-</contexts>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.command.env.doc.user/.cvsignore b/docs/org.eclipse.wst.command.env.doc.user/.cvsignore
new file mode 100644
index 0000000..a84668c
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/.cvsignore
@@ -0,0 +1,3 @@
+org.eclipse.wst.command.env.doc.user_1.0.0.jar
+bak
+temp
diff --git a/docs/org.eclipse.wst.command.env.doc.user/.project b/docs/org.eclipse.wst.command.env.doc.user/.project
new file mode 100644
index 0000000..ff3950b
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.wst.command.env.doc.user</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/docs/org.eclipse.wst.command.env.doc.user/META-INF/MANIFEST.MF b/docs/org.eclipse.wst.command.env.doc.user/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bd8e432
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/META-INF/MANIFEST.MF
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.wst.command.env.doc.user;singleton:=true
+Bundle-Version: 1.5.0.qualifier
+Bundle-Vendor: %pluginProvider
+Bundle-Localization: plugin
+Eclipse-LazyStart: true
diff --git a/docs/org.eclipse.wst.command.env.doc.user/about.html b/docs/org.eclipse.wst.command.env.doc.user/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.wst.command.env.doc.user/build.properties b/docs/org.eclipse.wst.command.env.doc.user/build.properties
new file mode 100644
index 0000000..5486a35
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/build.properties
@@ -0,0 +1,7 @@
+bin.includes = plugin.properties,\
+               plugin.xml,\
+               wsaxisant_toc.xml,\
+               about.html,\
+               topics/,\
+               META-INF/
+src.includes = build.properties
diff --git a/docs/org.eclipse.wst.command.env.doc.user/build.xml b/docs/org.eclipse.wst.command.env.doc.user/build.xml
new file mode 100644
index 0000000..b6540fe
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/build.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!-- 
+
+	This script build the Help plug-in by transforming the DITA source files into HTML.
+	
+	To use this script, you must install DITA-OT on your machine in the directory
+	defined by the dita.ot.dir property.
+	
+	Run the default target after you edit the DITA source files to regenerate the HTML.
+	
+	To customize this script for other Help plug-ins, modify the value of the args.input property
+	to be the DITA map file for the plug-in.
+	
+	NOTE: This script assumes that links to sibling Help plug-ins have scope="peer", otherwise the
+	output directory structure will be shifted incorrectly.
+	
+	NOTE: This script assumes that you hand code your plugin.xml file in myplugin.xml. This file
+	will be copied over the generated plugin.xml which is currently not being generated correctly
+	by DITA-OT.
+	
+	ChangeLog:
+	2006-04-05 Arthur Ryman <ryman@ca.ibm.com>
+	- Created.
+
+-->
+<project name="eclipsehelp" default="all">
+
+	<property name="dita.ot.dir" location="C:/DITA-OT1.2.2" />
+
+	<path id="dost.class.path">
+		<pathelement location="${dita.ot.dir}${file.separator}lib${file.separator}dost.jar" />
+	</path>
+
+	<taskdef name="integrate" classname="org.dita.dost.platform.IntegratorTask">
+		<classpath refid="dost.class.path" />
+	</taskdef>
+	<target name="all" depends="integrate, eclipsehelp">
+	</target>
+	<target name="integrate">
+		<integrate ditadir="${dita.ot.dir}" />
+	</target>
+
+	<!-- revise below here -->
+	<target name="eclipsehelp">
+		<ant antfile="${dita.ot.dir}${file.separator}conductor.xml" target="init" dir="${dita.ot.dir}">
+			<property name="args.copycss" value="no" />
+			<property name="args.csspath" value="org.eclipse.wst.doc.user" />
+			<property name="args.eclipse.provider" value="Eclipse.org" />
+			<property name="args.eclipse.version" value="1.5.0" />
+			<property name="args.input" location="wsaxisant_toc.ditamap" /> 
+			<property name="clean.temp" value="true" />
+			<property name="dita.extname" value=".dita" />
+			<property name="dita.temp.dir" location="temp" />
+			<property name="output.dir" location=".." />
+			<property name="transtype" value="eclipsehelp" />
+		</ant>
+		<copy file="myplugin.xml" tofile="plugin.xml" overwrite="yes" />
+	</target>
+</project>
diff --git a/docs/org.eclipse.wst.command.env.doc.user/myplugin.xml b/docs/org.eclipse.wst.command.env.doc.user/myplugin.xml
new file mode 100644
index 0000000..0e13f1e
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/myplugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<?NLS TYPE="org.eclipse.help.toc"?> 
+
+<!-- /*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/ -->
+
+<plugin>
+   <extension
+         point="org.eclipse.help.toc">
+         <toc file="wsaxisant_toc.xml" />
+   </extension>
+
+</plugin>
diff --git a/docs/org.eclipse.wst.command.env.doc.user/org.eclipse.wst.command.env.doc.user.maplist b/docs/org.eclipse.wst.command.env.doc.user/org.eclipse.wst.command.env.doc.user.maplist
new file mode 100644
index 0000000..265f263
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/org.eclipse.wst.command.env.doc.user.maplist
@@ -0,0 +1,8 @@
+<maplist version="3.6.2">

+  <nav>

+    <map file="wsaxisant_toc.ditamap"/>

+  </nav>

+  <link>

+    <map file="wsaxisant_toc.ditamap"/>

+  </link>

+</maplist>

diff --git a/docs/org.eclipse.wst.command.env.doc.user/plugin.properties b/docs/org.eclipse.wst.command.env.doc.user/plugin.properties
new file mode 100644
index 0000000..c5c2dac
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/plugin.properties
@@ -0,0 +1,15 @@
+###############################################################################
+# Copyright (c) 2001, 2006 IBM 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:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+# NLS_MESSAGEFORMAT_VAR 
+# NLS_ENCODING=UTF-8 
+
+pluginName     = Web services Axis Ant task documentation
+pluginProvider = Eclipse.org
diff --git a/docs/org.eclipse.wst.command.env.doc.user/plugin.xml b/docs/org.eclipse.wst.command.env.doc.user/plugin.xml
new file mode 100644
index 0000000..0e13f1e
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<?NLS TYPE="org.eclipse.help.toc"?> 
+
+<!-- /*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/ -->
+
+<plugin>
+   <extension
+         point="org.eclipse.help.toc">
+         <toc file="wsaxisant_toc.xml" />
+   </extension>
+
+</plugin>
diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/cwsaxisant.dita b/docs/org.eclipse.wst.command.env.doc.user/topics/cwsaxisant.dita
new file mode 100644
index 0000000..62cf826
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/cwsaxisant.dita
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--Arbortext, Inc., 1988-2005, v.4002-->

+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"

+ "concept.dtd">

+<concept id="creatingawebservicefromajavabean" xml:lang="en-us">

+<title>Creating Axis runtime environment Web services and clients using Web

+services Ant tasks</title>

+<titlealts>

+<searchtitle>Creating Axis runtime environment Web services and clients using

+Ant tasks</searchtitle>

+</titlealts>

+<shortdesc>If you prefer not to use the Web service wizard, you can use Ant

+files to create Web services and clients using the Axis runtime environment.

+The Web services Ant tasks can be run in two ways: through the Eclipse workspace

+using <menucascade><uicontrol>Run As</uicontrol><uicontrol>Ant Build...</uicontrol>

+</menucascade>, or they can be run headless through the command line. Once

+you have created your Web service, you can then deploy it to a server, test

+it, and publish it as a business entity or business service.</shortdesc>

+<conbody>

+<section><title>Prerequisites</title><p>Before you create a Web service or

+client using the Ant tasks, you need to complete a few prerequisites.</p><ul>

+<li>Install Apache Tomcat, create a server, and create a dynamic Web project

+associated with that server as described in <xref href="../../org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.dita">Creating

+an Apache Tomcat server and Web project</xref></li>

+<li>Import the required Ant files into your workspace:<ol>

+<li>Create a project.</li>

+<li>Import the required Ant files. Select <menucascade><uicontrol>File</uicontrol>

+<uicontrol>New</uicontrol><uicontrol>Other</uicontrol><uicontrol>Web Services</uicontrol>

+<uicontrol>Ant Files</uicontrol><uicontrol>Next</uicontrol></menucascade>.</li>

+<li>Select the project you created, and click <uicontrol>Finish</uicontrol>.</li>

+</ol>Three files will be imported into this project:<ul>

+<li>wsgen.xml - this is the Ant file.</li>

+<li>axisservice.properties - this is a sample Ant properties file referenced

+by the Ant file. You can modify the properties in this file to generate a

+Web service.</li>

+<li>axisclient.properties - this is a sample Ant properties file referenced

+by the Ant file. You can modify the properties in this file to generate a

+Web service client.</li>

+</ul></li>

+<li>Create a dynamic Web project for the Web service or client.</li>

+</ul></section>

+<section><title>Creating a Web service or client</title><p>Once you've completed

+the prerequisites you can do the following:</p></section>

+</conbody>

+</concept>

diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/cwsaxisant.html b/docs/org.eclipse.wst.command.env.doc.user/topics/cwsaxisant.html
new file mode 100644
index 0000000..7faac23
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/cwsaxisant.html
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
+<meta content="public" name="security" />
+<meta content="index,follow" name="Robots" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta content="concept" name="DC.Type" />
+<meta name="DC.Title" content="Creating Axis runtime environment Web services and clients using Web services Ant tasks" />
+<meta name="abstract" content="If you prefer not to use the Web service wizard, you can use Ant files to create Web services and clients using the Axis runtime environment. The Web services Ant tasks can be run in two ways: through the Eclipse workspace using Run As &gt; Ant Build..., or they can be run headless through the command line. Once you have created your Web service, you can then deploy it to a server, test it, and publish it as a business entity or business service." />
+<meta name="description" content="If you prefer not to use the Web service wizard, you can use Ant files to create Web services and clients using the Axis runtime environment. The Web services Ant tasks can be run in two ways: through the Eclipse workspace using Run As &gt; Ant Build..., or they can be run headless through the command line. Once you have created your Web service, you can then deploy it to a server, test it, and publish it as a business entity or business service." />
+<meta scheme="URI" name="DC.Relation" content="../topics/twbwsa.html" />
+<meta scheme="URI" name="DC.Relation" content="../topics/twbwsclienta.html" />
+<meta content="XHTML" name="DC.Format" />
+<meta content="creatingawebservicefromajavabean" name="DC.Identifier" />
+<meta content="en-us" name="DC.Language" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
+<title>Creating Axis runtime environment Web services and clients using
+Ant tasks</title>
+</head>
+<body id="creatingawebservicefromajavabean"><a name="creatingawebservicefromajavabean"><!-- --></a>
+
+
+<h1 class="topictitle1">Creating Axis runtime environment Web services and clients using Web
+services Ant tasks</h1>
+
+
+
+<div><p>If you prefer not to use the Web service wizard, you can use Ant
+files to create Web services and clients using the Axis runtime environment.
+The Web services Ant tasks can be run in two ways: through the Eclipse workspace
+using <span class="menucascade"><span class="uicontrol">Run As</span> &gt; <span class="uicontrol">Ant Build...</span>
+</span>, or they can be run headless through the command line. Once
+you have created your Web service, you can then deploy it to a server, test
+it, and publish it as a business entity or business service.</p>
+
+<div class="section"><h4 class="sectiontitle">Prerequisites</h4><p>Before you create a Web service or
+client using the Ant tasks, you need to complete a few prerequisites.</p>
+<ul>
+<li>Install Apache Tomcat, create a server, and create a dynamic Web project
+associated with that server as described in <a href="../../org.eclipse.jst.ws.axis.ui.doc.user/tasks/ttomcatserv.html">Creating an Apache Tomcat server and Web project</a></li>
+
+<li>Import the required Ant files into your workspace:<ol>
+<li>Create a project.</li>
+
+<li>Import the required Ant files. Select <span class="menucascade"><span class="uicontrol">File</span>
+ &gt; <span class="uicontrol">New</span> &gt; <span class="uicontrol">Other</span> &gt; <span class="uicontrol">Web Services</span>
+ &gt; <span class="uicontrol">Ant Files</span> &gt; <span class="uicontrol">Next</span></span>.</li>
+
+<li>Select the project you created, and click <span class="uicontrol">Finish</span>.</li>
+
+</ol>
+Three files will be imported into this project:<ul>
+<li>wsgen.xml - this is the Ant file.</li>
+
+<li>axisservice.properties - this is a sample Ant properties file referenced
+by the Ant file. You can modify the properties in this file to generate a
+Web service.</li>
+
+<li>axisclient.properties - this is a sample Ant properties file referenced
+by the Ant file. You can modify the properties in this file to generate a
+Web service client.</li>
+
+</ul>
+</li>
+
+<li>Create a dynamic Web project for the Web service or client.</li>
+
+</ul>
+</div>
+
+<div class="section"><h4 class="sectiontitle">Creating a Web service or client</h4><p>Once you've completed
+the prerequisites you can do the following:</p>
+</div>
+
+</div>
+
+<div>
+<ul class="ullinks">
+<li class="ulchildlink"><strong><a href="../topics/twbwsa.html">Creating a Web service using Ant tasks in the Workbench</a></strong><br />
+You can use Ant through the Eclipse workspace to generate a Web service using the Axis run-time environment. Both top-down and bottom-up Web services development is supported with the Ant tasks.</li>
+<li class="ulchildlink"><strong><a href="../topics/twbwsclienta.html">Creating a Web service client using Ant tasks</a></strong><br />
+If you have a WSDL file you can use Ant through the Eclipse workspace to generate a Web service client using the Axis run-time environment.</li>
+</ul>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/rbuwsa.dita b/docs/org.eclipse.wst.command.env.doc.user/topics/rbuwsa.dita
new file mode 100644
index 0000000..c04dafa
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/rbuwsa.dita
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--Arbortext, Inc., 1988-2005, v.4002-->

+<!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN"

+ "reference.dtd">

+<reference id="bottom-upaxiswebservicecommandlinereference" xml:lang="en-us">

+<title>Bottom-up Axis Web service Ant task properties file reference</title>

+<shortdesc>The <userinput>axisservice.properties</userinput> file is used

+to pass data to the Web services Ant tasks when creating an Axis Web service

+. This file shows the available options.</shortdesc>

+<refbody>

+<section><title>Parameters</title><parml><plentry>

+<pt>ScenarioType</pt>

+<pd><synph> Options: <codeph>service</codeph> </synph></pd>

+<pd>This is a required element that tells the Ant task if it is creating a

+Web service or a Web service client.</pd>

+</plentry><plentry>

+<pt>InitialSelection</pt>

+<pd>Enter the workspace relative URI to the WSDL file or Java bean within

+your workspace. For example <userinput>/dynamicWebProjectName/WebContent/myService.wsdl</userinput> or <userinput>/dynamicWebProjectName/src/myBean.java</userinput

+></pd>

+</plentry><plentry>

+<pt>ListRuntimes</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>If <codeph>true</codeph> is selected, the list of valid runtime options

+will be provided when the Ant task is run.</pd>

+</plentry><plentry>

+<pt>ListServers</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>If <codeph>true</codeph> is selected, the list of valid server options

+will be provided when the Ant task is run.</pd>

+</plentry><plentry>

+<pt>Service.RuntimeId</pt>

+<pd>This is the ID of the Web service's runtime. This parameter should not

+be modified.</pd>

+</plentry><plentry>

+<pt>Service.ServerId</pt>

+<pd>Options:<sl>

+<sli><codeph>org.eclipse.jst.server.tomcat.x</codeph> (where <codeph>x</codeph> is <codeph>32,

+40, 41, 50,</codeph> or <codeph>55</codeph>)</sli>

+<sli><codeph>org.eclipse.jst.server.generic.weblogicx</codeph> (where <codeph>x</codeph> is <codeph>81</codeph> or <codeph>90</codeph>) </sli>

+<sli><codeph>org.eclipse.jst.server.generic.jbossx</codeph> (where <codeph>x</codeph> is <codeph>323</codeph> or <codeph>4</codeph>)</sli>

+<sli><codeph>org.eclipse.jst.server.generic.jonas4</codeph></sli>

+<sli><codeph>org.eclipse.jst.server.generic.oracle1013</codeph></sli>

+<sli><codeph>org.eclipse.jst.servers.websphere.6</codeph></sli>

+</sl></pd>

+<pd>This is the ID of the target server. Delete or comment out this parameter

+to have the Ant task select the correct value based on the server settings

+of the dynamic Web project.</pd>

+</plentry><plentry>

+<pt>ServiceProjectName</pt>

+<pd>By default the service project is given the name of the WSDL file or Java

+bean from which it is created. Use this parameter to create the service project

+with a different name.</pd>

+</plentry><plentry>

+<pt>ServiceEarProjectName</pt>

+<pd>By default the service EAR project is given the name of the WSDL file

+or Java bean from which it is created. Use this parameter to create the service

+EAR project with a different name.</pd>

+</plentry><plentry>

+<pt>Mappings</pt>

+<pd>Enter the workspace relative URI to a property file containing mappings.</pd>

+<pd>Mappings are used to override the default namespace names in the generated

+WSDL. The content of the properties file must be of the format package = namespace </pd>

+</plentry><plentry>

+<pt>JavaOutput</pt>

+<pd>Enter the workspace relative URI to an existing Java source folder for

+the generated Java code.</pd>

+</plentry><plentry>

+<pt>Methods</pt>

+<pd>Use this parameter to limit which methods are exposed in the service.

+It must be in the form of a space delimited string of method signatures. For

+example, <userinput>method1(parmType1) method2(parmType2)</userinput>. If

+no list is provided, all methods are exposed. </pd>

+</plentry><plentry>

+<pt>Style</pt>

+<pd><synph> Options: <codeph>DOCUMENT</codeph> <codeph>RPC</codeph> <codeph>WRAPPED</codeph></synph></pd>

+<pd>Select the SOAP message style. The default is <codeph>DOCUMENT</codeph>.</pd>

+</plentry><plentry>

+<pt>Use</pt>

+<pd><synph> Options: <codeph>LITERAL</codeph> <codeph>ENCODED</codeph></synph></pd>

+<pd>Select if the SOAP message will be literal or encoded. The default is <codeph>LITERAL</codeph>.</pd>

+</plentry><plentry>

+<pt>OverwriteFilesEnabled</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>Use this parameter to tell the Ant task to overwrite any file that it

+creates with the same name as an existing file. By default this is set to <codeph>true</codeph>.</pd>

+</plentry><plentry>

+<pt>CreateFoldersEnabled</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>Use this parameter to tell the Ant task to create any neccessary folders.

+By default this is set to <codeph>true</codeph>.</pd>

+</plentry><plentry>

+<pt>CheckoutFilesEnabled</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>Use this parameter to tell the Ant task to checkout files from CVS without

+prompting you. By default this is set to <codeph>true</codeph>.</pd>

+</plentry></parml></section>

+</refbody>

+</reference>

diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/rbuwsa.html b/docs/org.eclipse.wst.command.env.doc.user/topics/rbuwsa.html
new file mode 100644
index 0000000..75c4329
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/rbuwsa.html
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
+<meta content="public" name="security" />
+<meta content="index,follow" name="Robots" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta content="reference" name="DC.Type" />
+<meta name="DC.Title" content="Bottom-up Axis Web service Ant task properties file reference" />
+<meta name="abstract" content="The axisservice.properties file is used to pass data to the Web services Ant tasks when creating an Axis Web service . This file shows the available options." />
+<meta name="description" content="The axisservice.properties file is used to pass data to the Web services Ant tasks when creating an Axis Web service . This file shows the available options." />
+<meta scheme="URI" name="DC.Relation" content="../topics/twbwsa.html" />
+<meta content="XHTML" name="DC.Format" />
+<meta content="bottom-upaxiswebservicecommandlinereference" name="DC.Identifier" />
+<meta content="en-us" name="DC.Language" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
+<title>Bottom-up Axis Web service Ant task properties file reference</title>
+</head>
+<body id="bottom-upaxiswebservicecommandlinereference"><a name="bottom-upaxiswebservicecommandlinereference"><!-- --></a>
+
+
+<h1 class="topictitle1">Bottom-up Axis Web service Ant task properties file reference</h1>
+
+
+<div><p>The <kbd class="userinput">axisservice.properties</kbd> file is used
+to pass data to the Web services Ant tasks when creating an Axis Web service
+. This file shows the available options.</p>
+
+<div class="section"><h4 class="sectiontitle">Parameters</h4><dl>
+<dt class="dlterm">ScenarioType</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">service</samp> </span></dd>
+
+<dd class="ddexpand">This is a required element that tells the Ant task if it is creating a
+Web service or a Web service client.</dd>
+
+
+<dt class="dlterm">InitialSelection</dt>
+
+<dd>Enter the workspace relative URI to the WSDL file or Java bean within
+your workspace. For example <kbd class="userinput">/dynamicWebProjectName/WebContent/myService.wsdl</kbd> or <kbd class="userinput">/dynamicWebProjectName/src/myBean.java</kbd></dd>
+
+
+<dt class="dlterm">ListRuntimes</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">If <samp class="codeph">true</samp> is selected, the list of valid runtime options
+will be provided when the Ant task is run.</dd>
+
+
+<dt class="dlterm">ListServers</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">If <samp class="codeph">true</samp> is selected, the list of valid server options
+will be provided when the Ant task is run.</dd>
+
+
+<dt class="dlterm">Service.RuntimeId</dt>
+
+<dd>This is the ID of the Web service's runtime. This parameter should not
+be modified.</dd>
+
+
+<dt class="dlterm">Service.ServerId</dt>
+
+<dd>Options:<ul class="simple">
+<li><samp class="codeph">org.eclipse.jst.server.tomcat.x</samp> (where <samp class="codeph">x</samp> is <samp class="codeph">32,
+40, 41, 50,</samp> or <samp class="codeph">55</samp>)</li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.weblogicx</samp> (where <samp class="codeph">x</samp> is <samp class="codeph">81</samp> or <samp class="codeph">90</samp>) </li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.jbossx</samp> (where <samp class="codeph">x</samp> is <samp class="codeph">323</samp> or <samp class="codeph">4</samp>)</li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.jonas4</samp></li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.oracle1013</samp></li>
+
+<li><samp class="codeph">org.eclipse.jst.servers.websphere.6</samp></li>
+
+</ul>
+</dd>
+
+<dd class="ddexpand">This is the ID of the target server. Delete or comment out this parameter
+to have the Ant task select the correct value based on the server settings
+of the dynamic Web project.</dd>
+
+
+<dt class="dlterm">ServiceProjectName</dt>
+
+<dd>By default the service project is given the name of the WSDL file or Java
+bean from which it is created. Use this parameter to create the service project
+with a different name.</dd>
+
+
+<dt class="dlterm">ServiceEarProjectName</dt>
+
+<dd>By default the service EAR project is given the name of the WSDL file
+or Java bean from which it is created. Use this parameter to create the service
+EAR project with a different name.</dd>
+
+
+<dt class="dlterm">Mappings</dt>
+
+<dd>Enter the workspace relative URI to a property file containing mappings.</dd>
+
+<dd class="ddexpand">Mappings are used to override the default namespace names in the generated
+WSDL. The content of the properties file must be of the format package = namespace </dd>
+
+
+<dt class="dlterm">JavaOutput</dt>
+
+<dd>Enter the workspace relative URI to an existing Java source folder for
+the generated Java code.</dd>
+
+
+<dt class="dlterm">Methods</dt>
+
+<dd>Use this parameter to limit which methods are exposed in the service.
+It must be in the form of a space delimited string of method signatures. For
+example, <kbd class="userinput">method1(parmType1) method2(parmType2)</kbd>. If
+no list is provided, all methods are exposed. </dd>
+
+
+<dt class="dlterm">Style</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">DOCUMENT</samp> <samp class="codeph">RPC</samp> <samp class="codeph">WRAPPED</samp></span></dd>
+
+<dd class="ddexpand">Select the SOAP message style. The default is <samp class="codeph">DOCUMENT</samp>.</dd>
+
+
+<dt class="dlterm">Use</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">LITERAL</samp> <samp class="codeph">ENCODED</samp></span></dd>
+
+<dd class="ddexpand">Select if the SOAP message will be literal or encoded. The default is <samp class="codeph">LITERAL</samp>.</dd>
+
+
+<dt class="dlterm">OverwriteFilesEnabled</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">Use this parameter to tell the Ant task to overwrite any file that it
+creates with the same name as an existing file. By default this is set to <samp class="codeph">true</samp>.</dd>
+
+
+<dt class="dlterm">CreateFoldersEnabled</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">Use this parameter to tell the Ant task to create any neccessary folders.
+By default this is set to <samp class="codeph">true</samp>.</dd>
+
+
+<dt class="dlterm">CheckoutFilesEnabled</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">Use this parameter to tell the Ant task to checkout files from CVS without
+prompting you. By default this is set to <samp class="codeph">true</samp>.</dd>
+
+</dl>
+</div>
+
+</div>
+
+<div>
+<div class="familylinks">
+<div class="parentlink"><strong>Parent topic:</strong> <a href="../topics/twbwsa.html" title="You can use Ant through the Eclipse workspace to generate a Web service using the Axis run-time environment. Both top-down and bottom-up Web services development is supported with the Ant tasks.">Creating a Web service using Ant tasks in the Workbench</a></div>
+</div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/rtdwsa.dita b/docs/org.eclipse.wst.command.env.doc.user/topics/rtdwsa.dita
new file mode 100644
index 0000000..1b4000a
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/rtdwsa.dita
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--Arbortext, Inc., 1988-2005, v.4002-->

+<!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN"

+ "reference.dtd">

+<reference id="top-downaxiswebservicecommandlinereference" xml:lang="en-us">

+<title>Top-down Axis Web service Ant task properties file reference</title>

+<shortdesc>The <userinput>axisservice.properties</userinput> file is used

+to pass data to the Web services Ant tasks when creating an Axis Web service

+. This file shows the available options.</shortdesc>

+<refbody>

+<section><title>Parameters</title><parml><plentry>

+<pt>ScenarioType</pt>

+<pd><synph> Options: <codeph>service</codeph> </synph></pd>

+<pd>This is a required element that tells the Ant task if it is creating a

+Web service or a Web service client.</pd>

+</plentry><plentry>

+<pt>InitialSelection</pt>

+<pd>Enter the workspace relative URI to the WSDL file or Java bean within

+your workspace. For example <userinput>/dynamicWebProjectName/WebContent/myService.wsdl</userinput> or <userinput>/dynamicWebProjectName/src/myBean.java</userinput

+></pd>

+</plentry><plentry>

+<pt>ListRuntimes</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>If <codeph>true</codeph> is selected, the list of valid runtime options

+will be provided when the Ant task is run.</pd>

+</plentry><plentry>

+<pt>ListServers</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>If <codeph>true</codeph> is selected, the list of valid server options

+will be provided when the Ant task is run.</pd>

+</plentry><plentry>

+<pt>Service.RuntimeId</pt>

+<pd>This is the ID of the Web service's runtime. This parameter should not

+be modified.</pd>

+</plentry><plentry>

+<pt>Service.ServerId</pt>

+<pd>Options:<sl>

+<sli><codeph>org.eclipse.jst.server.tomcat.x</codeph> (where <codeph>x</codeph> is <codeph>32,

+40, 41, 50,</codeph> or <codeph>55</codeph>)</sli>

+<sli><codeph>org.eclipse.jst.server.generic.weblogicx</codeph> (where <codeph>x</codeph> is <codeph>81</codeph> or <codeph>90</codeph>) </sli>

+<sli><codeph>org.eclipse.jst.server.generic.jbossx</codeph> (where <codeph>x</codeph> is <codeph>323</codeph> or <codeph>4</codeph>)</sli>

+<sli><codeph>org.eclipse.jst.server.generic.jonas4</codeph></sli>

+<sli><codeph>org.eclipse.jst.server.generic.oracle1013</codeph></sli>

+<sli><codeph>org.eclipse.jst.servers.websphere.6</codeph></sli>

+</sl></pd>

+<pd>This is the ID of the target server. Delete or comment out this parameter

+to have the Ant task select the correct value based on the server settings

+of the dynamic Web project.</pd>

+</plentry><plentry>

+<pt>ServiceProjectName</pt>

+<pd>By default the service project is given the name of the WSDL file or Java

+bean from which it is created. Use this parameter to create the service project

+with a different name.</pd>

+</plentry><plentry>

+<pt>ServiceEarProjectName</pt>

+<pd>By default the service EAR project is given the name of the WSDL file

+or Java bean from which it is created. Use this parameter to create the service

+EAR project with a different name.</pd>

+</plentry><plentry>

+<pt>Mappings</pt>

+<pd>Enter the workspace relative URI to a property file containing mappings.</pd>

+<pd>Mappings are used to override the default package names of the generated

+Java template classes. The content of the properties file must be of the format

+namespace=package </pd>

+</plentry><plentry>

+<pt>JavaOutput</pt>

+<pd>Enter the workspace relative URI to an existing Java source folder for

+the generated Java code.</pd>

+</plentry><plentry>

+<pt>Methods</pt>

+<pd>Use this parameter to limit which methods are exposed in the service.

+It must be in the form of a space delimited string of method signatures. For

+example, <userinput>method1(parmType1) method2(parmType2)</userinput>. If

+no list is provided, all methods are exposed. </pd>

+</plentry><plentry>

+<pt>Style</pt>

+<pd><synph> Options: <codeph>DOCUMENT</codeph> <codeph>RPC</codeph> <codeph>WRAPPED</codeph></synph></pd>

+<pd>Select the SOAP message style. The default is <codeph>DOCUMENT</codeph>.</pd>

+</plentry><plentry>

+<pt>Use</pt>

+<pd><synph> Options: <codeph>LITERAL</codeph> <codeph>ENCODED</codeph></synph></pd>

+<pd>Select if the SOAP message will be literal or encoded. The default is <codeph>LITERAL</codeph>.</pd>

+</plentry><plentry>

+<pt>OverwriteFilesEnabled</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>Use this parameter to tell the Ant task to overwrite any file that it

+creates with the same name as an existing file. By default this is set to <codeph>true</codeph>.</pd>

+</plentry><plentry>

+<pt>CreateFoldersEnabled</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>Use this parameter to tell the Ant task to create any neccessary folders.

+By default this is set to <codeph>true</codeph>.</pd>

+</plentry><plentry>

+<pt>CheckoutFilesEnabled</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>Use this parameter to tell the Ant task to checkout files from CVS without

+prompting you. By default this is set to <codeph>true</codeph>.</pd>

+</plentry></parml></section>

+</refbody>

+</reference>

diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/rtdwsa.html b/docs/org.eclipse.wst.command.env.doc.user/topics/rtdwsa.html
new file mode 100644
index 0000000..823132f
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/rtdwsa.html
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
+<meta content="public" name="security" />
+<meta content="index,follow" name="Robots" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta content="reference" name="DC.Type" />
+<meta name="DC.Title" content="Top-down Axis Web service Ant task properties file reference" />
+<meta name="abstract" content="The axisservice.properties file is used to pass data to the Web services Ant tasks when creating an Axis Web service . This file shows the available options." />
+<meta name="description" content="The axisservice.properties file is used to pass data to the Web services Ant tasks when creating an Axis Web service . This file shows the available options." />
+<meta scheme="URI" name="DC.Relation" content="../topics/twbwsa.html" />
+<meta content="XHTML" name="DC.Format" />
+<meta content="top-downaxiswebservicecommandlinereference" name="DC.Identifier" />
+<meta content="en-us" name="DC.Language" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
+<title>Top-down Axis Web service Ant task properties file reference</title>
+</head>
+<body id="top-downaxiswebservicecommandlinereference"><a name="top-downaxiswebservicecommandlinereference"><!-- --></a>
+
+
+<h1 class="topictitle1">Top-down Axis Web service Ant task properties file reference</h1>
+
+
+<div><p>The <kbd class="userinput">axisservice.properties</kbd> file is used
+to pass data to the Web services Ant tasks when creating an Axis Web service
+. This file shows the available options.</p>
+
+<div class="section"><h4 class="sectiontitle">Parameters</h4><dl>
+<dt class="dlterm">ScenarioType</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">service</samp> </span></dd>
+
+<dd class="ddexpand">This is a required element that tells the Ant task if it is creating a
+Web service or a Web service client.</dd>
+
+
+<dt class="dlterm">InitialSelection</dt>
+
+<dd>Enter the workspace relative URI to the WSDL file or Java bean within
+your workspace. For example <kbd class="userinput">/dynamicWebProjectName/WebContent/myService.wsdl</kbd> or <kbd class="userinput">/dynamicWebProjectName/src/myBean.java</kbd></dd>
+
+
+<dt class="dlterm">ListRuntimes</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">If <samp class="codeph">true</samp> is selected, the list of valid runtime options
+will be provided when the Ant task is run.</dd>
+
+
+<dt class="dlterm">ListServers</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">If <samp class="codeph">true</samp> is selected, the list of valid server options
+will be provided when the Ant task is run.</dd>
+
+
+<dt class="dlterm">Service.RuntimeId</dt>
+
+<dd>This is the ID of the Web service's runtime. This parameter should not
+be modified.</dd>
+
+
+<dt class="dlterm">Service.ServerId</dt>
+
+<dd>Options:<ul class="simple">
+<li><samp class="codeph">org.eclipse.jst.server.tomcat.x</samp> (where <samp class="codeph">x</samp> is <samp class="codeph">32,
+40, 41, 50,</samp> or <samp class="codeph">55</samp>)</li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.weblogicx</samp> (where <samp class="codeph">x</samp> is <samp class="codeph">81</samp> or <samp class="codeph">90</samp>) </li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.jbossx</samp> (where <samp class="codeph">x</samp> is <samp class="codeph">323</samp> or <samp class="codeph">4</samp>)</li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.jonas4</samp></li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.oracle1013</samp></li>
+
+<li><samp class="codeph">org.eclipse.jst.servers.websphere.6</samp></li>
+
+</ul>
+</dd>
+
+<dd class="ddexpand">This is the ID of the target server. Delete or comment out this parameter
+to have the Ant task select the correct value based on the server settings
+of the dynamic Web project.</dd>
+
+
+<dt class="dlterm">ServiceProjectName</dt>
+
+<dd>By default the service project is given the name of the WSDL file or Java
+bean from which it is created. Use this parameter to create the service project
+with a different name.</dd>
+
+
+<dt class="dlterm">ServiceEarProjectName</dt>
+
+<dd>By default the service EAR project is given the name of the WSDL file
+or Java bean from which it is created. Use this parameter to create the service
+EAR project with a different name.</dd>
+
+
+<dt class="dlterm">Mappings</dt>
+
+<dd>Enter the workspace relative URI to a property file containing mappings.</dd>
+
+<dd class="ddexpand">Mappings are used to override the default package names of the generated
+Java template classes. The content of the properties file must be of the format
+namespace=package </dd>
+
+
+<dt class="dlterm">JavaOutput</dt>
+
+<dd>Enter the workspace relative URI to an existing Java source folder for
+the generated Java code.</dd>
+
+
+<dt class="dlterm">Methods</dt>
+
+<dd>Use this parameter to limit which methods are exposed in the service.
+It must be in the form of a space delimited string of method signatures. For
+example, <kbd class="userinput">method1(parmType1) method2(parmType2)</kbd>. If
+no list is provided, all methods are exposed. </dd>
+
+
+<dt class="dlterm">Style</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">DOCUMENT</samp> <samp class="codeph">RPC</samp> <samp class="codeph">WRAPPED</samp></span></dd>
+
+<dd class="ddexpand">Select the SOAP message style. The default is <samp class="codeph">DOCUMENT</samp>.</dd>
+
+
+<dt class="dlterm">Use</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">LITERAL</samp> <samp class="codeph">ENCODED</samp></span></dd>
+
+<dd class="ddexpand">Select if the SOAP message will be literal or encoded. The default is <samp class="codeph">LITERAL</samp>.</dd>
+
+
+<dt class="dlterm">OverwriteFilesEnabled</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">Use this parameter to tell the Ant task to overwrite any file that it
+creates with the same name as an existing file. By default this is set to <samp class="codeph">true</samp>.</dd>
+
+
+<dt class="dlterm">CreateFoldersEnabled</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">Use this parameter to tell the Ant task to create any neccessary folders.
+By default this is set to <samp class="codeph">true</samp>.</dd>
+
+
+<dt class="dlterm">CheckoutFilesEnabled</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">Use this parameter to tell the Ant task to checkout files from CVS without
+prompting you. By default this is set to <samp class="codeph">true</samp>.</dd>
+
+</dl>
+</div>
+
+</div>
+
+<div>
+<div class="familylinks">
+<div class="parentlink"><strong>Parent topic:</strong> <a href="../topics/twbwsa.html" title="You can use Ant through the Eclipse workspace to generate a Web service using the Axis run-time environment. Both top-down and bottom-up Web services development is supported with the Ant tasks.">Creating a Web service using Ant tasks in the Workbench</a></div>
+</div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/rwsclienta.dita b/docs/org.eclipse.wst.command.env.doc.user/topics/rwsclienta.dita
new file mode 100644
index 0000000..c7346ca
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/rwsclienta.dita
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--Arbortext, Inc., 1988-2005, v.4002-->

+<!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN"

+ "reference.dtd">

+<reference id="axiswebserviceclientcommandlinereference" xml:lang="en-us">

+<title>Axis Web service client Ant task properties file reference</title>

+<shortdesc>The <userinput>axisclient.properties</userinput> file is used to

+pass data to the Web services Ant tasks when creating an Axis Web service

+client. This file shows the available options.</shortdesc>

+<refbody>

+<section><title>Parameters</title><parml><plentry>

+<pt>ScenarioType</pt>

+<pd><synph> Options: <codeph>client</codeph></synph></pd>

+<pd>This is a required element that tells the Ant task if it is creating a

+Web service or a Web service client.</pd>

+</plentry><plentry>

+<pt>InitialSelection</pt>

+<pd>Enter the workspace relative URI to the WSDL file or Java bean within

+your workspace. For example <userinput>/dynamicWebProjectName/WebContent/myService.wsdl</userinput> or <userinput>/dynamicWebProjectName/src/myBean.java</userinput

+></pd>

+</plentry><plentry>

+<pt>ListRuntimes</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>If <codeph>true</codeph> is selected, the list of valid runtime options

+will be provided when the Ant task is run.</pd>

+</plentry><plentry>

+<pt>ListServers</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>If <codeph>true</codeph> is selected, the list of valid server options

+will be provided when the Ant task is run.</pd>

+</plentry><plentry>

+<pt>Client.RuntimeId</pt>

+<pd>This is the ID of the Web service's runtime. This parameter should not

+be modified.</pd>

+</plentry><plentry>

+<pt>Client.ServerId</pt>

+<pd>Options:<sl>

+<sli><codeph>org.eclipse.jst.server.tomcat.x</codeph> (where <codeph>x</codeph> is <codeph>32,

+40, 41, 50,</codeph> or <codeph>55</codeph>)</sli>

+<sli><codeph>org.eclipse.jst.server.generic.weblogicx</codeph> (where <codeph>x</codeph> is <codeph>81</codeph> or <codeph>90</codeph>) </sli>

+<sli><codeph>org.eclipse.jst.server.generic.jbossx</codeph> (where <codeph>x</codeph> is <codeph>323</codeph> or <codeph>4</codeph>)</sli>

+<sli><codeph>org.eclipse.jst.server.generic.jonas4</codeph></sli>

+<sli><codeph>org.eclipse.jst.server.generic.oracle1013</codeph></sli>

+<sli><codeph>org.eclipse.jst.servers.websphere.6</codeph></sli>

+</sl></pd>

+<pd>This is the ID of the target server. Delete or comment out this parameter

+to have the Ant task select the correct value based on the server settings

+of the dynamic Web project.</pd>

+</plentry><plentry>

+<pt>ClientProjectName</pt>

+<pd>By default the client project is given the name of the WSDL file or Java

+bean from which it is created. Use this parameter to create the service project

+with a different name.</pd>

+</plentry><plentry>

+<pt>ClientEarProjectName</pt>

+<pd>By default the client EAR project is given the name of the WSDL file or

+Java bean from which it is created. Use this parameter to create the service

+EAR project with a different name.</pd>

+</plentry><plentry>

+<pt>ClientComponentType</pt>

+<pd><p>Options: <userinput>jst.web</userinput> <userinput>jst.java</userinput></p><p>Use

+this parameter to select the type of client project. The only valid client

+project type for Axis clients is <userinput>jst.web</userinput>.</p></pd>

+</plentry><plentry>

+<pt>CustomizeClientMappings</pt>

+<pd><p>Options: <userinput>true</userinput> <userinput>false</userinput></p><p>Mappings

+are used to override the default namespace names in the generated WSDL. The

+content of the properties file must be of the format package = namespace</p></pd>

+</plentry><plentry>

+<pt>Mappings</pt>

+<pd>Enter the workspace relative URI to a property file containing mappings. </pd>

+</plentry><plentry>

+<pt>OverwriteFilesEnabled</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>Use this parameter to tell the Ant task to overwrite any file that it

+creates with the same name as an existing file. By default this is set to <codeph>true</codeph>.</pd>

+</plentry><plentry>

+<pt>CreateFoldersEnabled</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>Use this parameter to tell the Ant task to create any neccessary folders.

+By default this is set to <codeph>true</codeph>.</pd>

+</plentry><plentry>

+<pt>CheckoutFilesEnabled</pt>

+<pd><synph> Options: <codeph>true</codeph> <codeph>false</codeph></synph></pd>

+<pd>Use this parameter to tell the Ant task to checkout files from CVS without

+prompting you. By default this is set to <codeph>true</codeph>.</pd>

+</plentry></parml></section>

+</refbody>

+</reference>

diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/rwsclienta.html b/docs/org.eclipse.wst.command.env.doc.user/topics/rwsclienta.html
new file mode 100644
index 0000000..cd2b343
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/rwsclienta.html
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
+<meta content="public" name="security" />
+<meta content="index,follow" name="Robots" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta content="reference" name="DC.Type" />
+<meta name="DC.Title" content="Axis Web service client Ant task properties file reference" />
+<meta name="abstract" content="The axisclient.properties file is used to pass data to the Web services Ant tasks when creating an Axis Web service client. This file shows the available options." />
+<meta name="description" content="The axisclient.properties file is used to pass data to the Web services Ant tasks when creating an Axis Web service client. This file shows the available options." />
+<meta scheme="URI" name="DC.Relation" content="../topics/twbwsclienta.html" />
+<meta content="XHTML" name="DC.Format" />
+<meta content="axiswebserviceclientcommandlinereference" name="DC.Identifier" />
+<meta content="en-us" name="DC.Language" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
+<title>Axis Web service client Ant task properties file reference</title>
+</head>
+<body id="axiswebserviceclientcommandlinereference"><a name="axiswebserviceclientcommandlinereference"><!-- --></a>
+
+
+<h1 class="topictitle1">Axis Web service client Ant task properties file reference</h1>
+
+
+<div><p>The <kbd class="userinput">axisclient.properties</kbd> file is used to
+pass data to the Web services Ant tasks when creating an Axis Web service
+client. This file shows the available options.</p>
+
+<div class="section"><h4 class="sectiontitle">Parameters</h4><dl>
+<dt class="dlterm">ScenarioType</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">client</samp></span></dd>
+
+<dd class="ddexpand">This is a required element that tells the Ant task if it is creating a
+Web service or a Web service client.</dd>
+
+
+<dt class="dlterm">InitialSelection</dt>
+
+<dd>Enter the workspace relative URI to the WSDL file or Java bean within
+your workspace. For example <kbd class="userinput">/dynamicWebProjectName/WebContent/myService.wsdl</kbd> or <kbd class="userinput">/dynamicWebProjectName/src/myBean.java</kbd></dd>
+
+
+<dt class="dlterm">ListRuntimes</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">If <samp class="codeph">true</samp> is selected, the list of valid runtime options
+will be provided when the Ant task is run.</dd>
+
+
+<dt class="dlterm">ListServers</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">If <samp class="codeph">true</samp> is selected, the list of valid server options
+will be provided when the Ant task is run.</dd>
+
+
+<dt class="dlterm">Client.RuntimeId</dt>
+
+<dd>This is the ID of the Web service's runtime. This parameter should not
+be modified.</dd>
+
+
+<dt class="dlterm">Client.ServerId</dt>
+
+<dd>Options:<ul class="simple">
+<li><samp class="codeph">org.eclipse.jst.server.tomcat.x</samp> (where <samp class="codeph">x</samp> is <samp class="codeph">32,
+40, 41, 50,</samp> or <samp class="codeph">55</samp>)</li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.weblogicx</samp> (where <samp class="codeph">x</samp> is <samp class="codeph">81</samp> or <samp class="codeph">90</samp>) </li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.jbossx</samp> (where <samp class="codeph">x</samp> is <samp class="codeph">323</samp> or <samp class="codeph">4</samp>)</li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.jonas4</samp></li>
+
+<li><samp class="codeph">org.eclipse.jst.server.generic.oracle1013</samp></li>
+
+<li><samp class="codeph">org.eclipse.jst.servers.websphere.6</samp></li>
+
+</ul>
+</dd>
+
+<dd class="ddexpand">This is the ID of the target server. Delete or comment out this parameter
+to have the Ant task select the correct value based on the server settings
+of the dynamic Web project.</dd>
+
+
+<dt class="dlterm">ClientProjectName</dt>
+
+<dd>By default the client project is given the name of the WSDL file or Java
+bean from which it is created. Use this parameter to create the service project
+with a different name.</dd>
+
+
+<dt class="dlterm">ClientEarProjectName</dt>
+
+<dd>By default the client EAR project is given the name of the WSDL file or
+Java bean from which it is created. Use this parameter to create the service
+EAR project with a different name.</dd>
+
+
+<dt class="dlterm">ClientComponentType</dt>
+
+<dd><p>Options: <kbd class="userinput">jst.web</kbd> <kbd class="userinput">jst.java</kbd></p>
+<p>Use
+this parameter to select the type of client project. The only valid client
+project type for Axis clients is <kbd class="userinput">jst.web</kbd>.</p>
+</dd>
+
+
+<dt class="dlterm">CustomizeClientMappings</dt>
+
+<dd><p>Options: <kbd class="userinput">true</kbd> <kbd class="userinput">false</kbd></p>
+<p>Mappings
+are used to override the default namespace names in the generated WSDL. The
+content of the properties file must be of the format package = namespace</p>
+</dd>
+
+
+<dt class="dlterm">Mappings</dt>
+
+<dd>Enter the workspace relative URI to a property file containing mappings. </dd>
+
+
+<dt class="dlterm">OverwriteFilesEnabled</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">Use this parameter to tell the Ant task to overwrite any file that it
+creates with the same name as an existing file. By default this is set to <samp class="codeph">true</samp>.</dd>
+
+
+<dt class="dlterm">CreateFoldersEnabled</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">Use this parameter to tell the Ant task to create any neccessary folders.
+By default this is set to <samp class="codeph">true</samp>.</dd>
+
+
+<dt class="dlterm">CheckoutFilesEnabled</dt>
+
+<dd><span class="synph"> Options: <samp class="codeph">true</samp> <samp class="codeph">false</samp></span></dd>
+
+<dd class="ddexpand">Use this parameter to tell the Ant task to checkout files from CVS without
+prompting you. By default this is set to <samp class="codeph">true</samp>.</dd>
+
+</dl>
+</div>
+
+</div>
+
+<div>
+<div class="familylinks">
+<div class="parentlink"><strong>Parent topic:</strong> <a href="../topics/twbwsclienta.html" title="If you have a WSDL file you can use Ant through the Eclipse workspace to generate a Web service client using the Axis run-time environment.">Creating a Web service client using Ant tasks</a></div>
+</div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsa.dita b/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsa.dita
new file mode 100644
index 0000000..45e9143
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsa.dita
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--Arbortext, Inc., 1988-2005, v.4002-->

+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"

+ "task.dtd">

+<task id="ttdwsa" xml:lang="en-us">

+<title>Creating a Web service using Ant tasks in the Workbench</title>

+<titlealts>

+<searchtitle>Creating an Axis runtime Web service using Ant tasks in the Workbench</searchtitle>

+</titlealts>

+<shortdesc>You can use Ant through the Eclipse workspace to generate a Web

+service using the Axis run-time environment. Both top-down and bottom-up Web

+services development is supported with the Ant tasks.</shortdesc>

+<taskbody>

+<prereq>Before creating the Web service you must:<ul>

+<li>complete the prerequisites listed in: <xref href="cwsaxisant.dita"></xref></li>

+<li>if you are creating a top-down Web service, create or import a WSDL file

+into the <userinput>WebConent</userinput> folder of the dynamic Web project

+you created.</li>

+<li>If you are creating a bottom-up Web service, create or import a Java bean

+into the <userinput>src</userinput> folder of the dynamic Web project.</li>

+</ul></prereq>

+<context>In order to create the Web service you need to modify the Ant file

+and the service Ant properties file.</context>

+<steps>

+<step><cmd>Edit the Ant file (<userinput>wsgen.xml</userinput>) that you imported

+in the prerequisite steps. Ensure that it points to the service Ant properties

+file: it should contain a line stating <userinput>&lt;property file="axisservice.properties"/></userinput>.</cmd>

+<info>Save any changes that you have made.</info></step>

+<step><cmd>Edit the <userinput>axisservice.properties</userinput> file that

+you imported in the prerequisite steps.</cmd>

+<substeps>

+<substep><cmd>Ensure that the scenarioType parameter is set to service.</cmd>

+</substep>

+<substep><cmd>Set the workspace parameter so that it points to the location

+of your WSDL file or Java bean.</cmd></substep>

+<substep><cmd>All other parameters are optional and should be deleted if not

+explicitly set. The default values for the remaining parameters will be retrieved

+from the dynamic project settings and preferences. For additional information

+on how to set these parameters refer to: </cmd><info><ul>

+<li><xref href="rtdwsa.dita"></xref></li>

+<li><xref href="rbuwsa.dita"></xref></li>

+</ul></info></substep>

+</substeps>

+<info>Save the <userinput>axisservice.properties</userinput> file.</info>

+</step>

+<step><cmd>Right-click <userinput>wsgen.xml</userinput> and select <menucascade>

+<uicontrol>Run As</uicontrol><uicontrol>Ant Build...</uicontrol></menucascade></cmd>

+</step>

+<step><cmd>In the dialog that opens, select the <uicontrol>JRE</uicontrol> tab

+and select <uicontrol>Run in the same JRE as the workspace</uicontrol>.</cmd>

+<info>Click <uicontrol>Apply</uicontrol> and then click <uicontrol>Run</uicontrol>.</info>

+</step>

+<step><cmd>Once your Web service has been generated the console displays a <userinput>Build

+Successful</userinput> message.</cmd></step>

+</steps>

+<result>The WSDL file for the service will have been created and placed in

+the dynamic Web project's WebContent\wsdl folder. The following files will

+have been created and placed in a subdirectory of the dynamic Web project's

+WebContent\WEB-INF folder:<ul>

+<li>web.xml</li>

+<li>undeploy.wsdd</li>

+<li>deploy.wsdd </li>

+</ul>If you are creating a top-down Web service, Web service files similar

+to the following ones will be created and placed under the dynamic Web project's

+src folder. Depending on the WSDL file on which the Web service is based,

+the files for your Web service may be different:<ul>

+<li><i>Service_name</i>_PortType.java</li>

+<li><i>Service_name</i>_Service.java</li>

+<li><i>Service_name</i>_ServiceLocator.java</li>

+<li><i>Service_name</i>SOAPImpl.java</li>

+<li><i>Service_name</i>SOAPSkeleton.java</li>

+<li><i>Service_name</i>SOAPStub.java</li>

+</ul> </result>

+</taskbody>

+</task>

diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsa.html b/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsa.html
new file mode 100644
index 0000000..d54efc0
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsa.html
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
+<meta content="public" name="security" />
+<meta content="index,follow" name="Robots" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta content="task" name="DC.Type" />
+<meta name="DC.Title" content="Creating a Web service using Ant tasks in the Workbench" />
+<meta name="abstract" content="You can use Ant through the Eclipse workspace to generate a Web service using the Axis run-time environment. Both top-down and bottom-up Web services development is supported with the Ant tasks." />
+<meta name="description" content="You can use Ant through the Eclipse workspace to generate a Web service using the Axis run-time environment. Both top-down and bottom-up Web services development is supported with the Ant tasks." />
+<meta scheme="URI" name="DC.Relation" content="../topics/cwsaxisant.html" />
+<meta scheme="URI" name="DC.Relation" content="../topics/rtdwsa.html" />
+<meta scheme="URI" name="DC.Relation" content="../topics/rbuwsa.html" />
+<meta content="XHTML" name="DC.Format" />
+<meta content="ttdwsa" name="DC.Identifier" />
+<meta content="en-us" name="DC.Language" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
+<title>Creating an Axis runtime Web service using Ant tasks in the Workbench</title>
+</head>
+<body id="ttdwsa"><a name="ttdwsa"><!-- --></a>
+
+
+<h1 class="topictitle1">Creating a Web service using Ant tasks in the Workbench</h1>
+
+
+
+<div><p>You can use Ant through the Eclipse workspace to generate a Web
+service using the Axis run-time environment. Both top-down and bottom-up Web
+services development is supported with the Ant tasks.</p>
+
+<div class="p">Before creating the Web service you must:<ul>
+<li>complete the prerequisites listed in: <a href="cwsaxisant.html" title="If you prefer not to use the Web service wizard, you can use Ant&#10;files to create Web services and clients using the Axis runtime environment.&#10;The Web services Ant tasks can be run in two ways: through the Eclipse workspace&#10;using Run As &gt; Ant Build..., or they can be run headless through the command line. Once&#10;you have created your Web service, you can then deploy it to a server, test&#10;it, and publish it as a business entity or business service.">Creating Axis runtime environment Web services and clients using Web services Ant tasks</a></li>
+
+<li>if you are creating a top-down Web service, create or import a WSDL file
+into the <kbd class="userinput">WebConent</kbd> folder of the dynamic Web project
+you created.</li>
+
+<li>If you are creating a bottom-up Web service, create or import a Java bean
+into the <kbd class="userinput">src</kbd> folder of the dynamic Web project.</li>
+
+</ul>
+</div>
+
+<div class="section">In order to create the Web service you need to modify the Ant file
+and the service Ant properties file.</div>
+
+<ol>
+<li class="stepexpand"><span>Edit the Ant file (<kbd class="userinput">wsgen.xml</kbd>) that you imported
+in the prerequisite steps. Ensure that it points to the service Ant properties
+file: it should contain a line stating <kbd class="userinput">&lt;property file="axisservice.properties"/&gt;</kbd>.</span>
+ Save any changes that you have made.</li>
+
+<li class="stepexpand"><span>Edit the <kbd class="userinput">axisservice.properties</kbd> file that
+you imported in the prerequisite steps.</span>
+<ol type="a">
+<li class="substepexpand"><span>Ensure that the scenarioType parameter is set to service.</span>
+</li>
+
+<li class="substepexpand"><span>Set the workspace parameter so that it points to the location
+of your WSDL file or Java bean.</span></li>
+
+<li class="substepexpand"><span>All other parameters are optional and should be deleted if not
+explicitly set. The default values for the remaining parameters will be retrieved
+from the dynamic project settings and preferences. For additional information
+on how to set these parameters refer to: </span> <ul>
+<li><a href="rtdwsa.html" title="The axisservice.properties file is used&#10;to pass data to the Web services Ant tasks when creating an Axis Web service&#10;. This file shows the available options.">Top-down Axis Web service Ant task properties file reference</a></li>
+
+<li><a href="rbuwsa.html" title="The axisservice.properties file is used&#10;to pass data to the Web services Ant tasks when creating an Axis Web service&#10;. This file shows the available options.">Bottom-up Axis Web service Ant task properties file reference</a></li>
+
+</ul>
+</li>
+
+</ol>
+
+ Save the <kbd class="userinput">axisservice.properties</kbd> file.
+</li>
+
+<li class="stepexpand"><span>Right-click <kbd class="userinput">wsgen.xml</kbd> and select <span class="menucascade">
+<span class="uicontrol">Run As</span> &gt; <span class="uicontrol">Ant Build...</span></span></span>
+</li>
+
+<li class="stepexpand"><span>In the dialog that opens, select the <span class="uicontrol">JRE</span> tab
+and select <span class="uicontrol">Run in the same JRE as the workspace</span>.</span>
+ Click <span class="uicontrol">Apply</span> and then click <span class="uicontrol">Run</span>.
+</li>
+
+<li class="stepexpand"><span>Once your Web service has been generated the console displays a <kbd class="userinput">Build
+Successful</kbd> message.</span></li>
+
+</ol>
+
+<div class="section">The WSDL file for the service will have been created and placed in
+the dynamic Web project's WebContent\wsdl folder. The following files will
+have been created and placed in a subdirectory of the dynamic Web project's
+WebContent\WEB-INF folder:<ul>
+<li>web.xml</li>
+
+<li>undeploy.wsdd</li>
+
+<li>deploy.wsdd </li>
+
+</ul>
+If you are creating a top-down Web service, Web service files similar
+to the following ones will be created and placed under the dynamic Web project's
+src folder. Depending on the WSDL file on which the Web service is based,
+the files for your Web service may be different:<ul>
+<li><em>Service_name</em>_PortType.java</li>
+
+<li><em>Service_name</em>_Service.java</li>
+
+<li><em>Service_name</em>_ServiceLocator.java</li>
+
+<li><em>Service_name</em>SOAPImpl.java</li>
+
+<li><em>Service_name</em>SOAPSkeleton.java</li>
+
+<li><em>Service_name</em>SOAPStub.java</li>
+
+</ul>
+ </div>
+
+</div>
+
+<div>
+<ul class="ullinks">
+<li class="ulchildlink"><strong><a href="../topics/rtdwsa.html">Top-down Axis Web service Ant task properties file reference</a></strong><br />
+The axisservice.properties file is used to pass data to the Web services Ant tasks when creating an Axis Web service . This file shows the available options.</li>
+<li class="ulchildlink"><strong><a href="../topics/rbuwsa.html">Bottom-up Axis Web service Ant task properties file reference</a></strong><br />
+The axisservice.properties file is used to pass data to the Web services Ant tasks when creating an Axis Web service . This file shows the available options.</li>
+</ul>
+
+<div class="familylinks">
+<div class="parentlink"><strong>Parent topic:</strong> <a href="../topics/cwsaxisant.html" title="If you prefer not to use the Web service wizard, you can use Ant files to create Web services and clients using the Axis runtime environment. The Web services Ant tasks can be run in two ways: through the Eclipse workspace using Run As &gt; Ant Build..., or they can be run headless through the command line. Once you have created your Web service, you can then deploy it to a server, test it, and publish it as a business entity or business service.">Creating Axis runtime environment Web services and clients using Web services Ant tasks</a></div>
+</div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsclienta.dita b/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsclienta.dita
new file mode 100644
index 0000000..4b7b5c7
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsclienta.dita
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--Arbortext, Inc., 1988-2005, v.4002-->

+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"

+ "task.dtd">

+<task id="twsclienta" xml:lang="en-us">

+<title>Creating a Web service client using Ant tasks</title>

+<titlealts>

+<searchtitle>Creating an Axis runtime Web service client from a WSDL file

+using command line tools</searchtitle>

+</titlealts>

+<shortdesc>If you have a WSDL file you can use Ant through the Eclipse workspace

+to generate a Web service client using the Axis run-time environment.</shortdesc>

+<taskbody>

+<prereq>Before creating the Web service client you must:<ul>

+<li>complete the prerequisites listed in: <xref href="cwsaxisant.dita"></xref></li>

+<li>create or import a WSDL file into the dynamic Web project you created.</li>

+</ul></prereq>

+<context>In order to create the Web service client you need to modify the

+Ant file and the Ant properties file.</context>

+<steps>

+<step><cmd>Edit the Ant file (<userinput>wsgen.xml</userinput>) that you imported

+in the prerequisite steps. Ensure that it points to the client Ant properties

+file: it should contain a line stating <userinput>&lt;property file="axisclient.properties"/></userinput>.</cmd>

+<info>Save any changes that you have made.</info></step>

+<step><cmd>Edit the <userinput>axisclient.properties</userinput> file that

+you imported in the prerequisite steps.</cmd>

+<substeps>

+<substep><cmd>Ensure that the scenarioType parameter is set to client.</cmd>

+</substep>

+<substep><cmd>Set the workspace parameter so that it points to the location

+of your WSDL file.</cmd></substep>

+<substep><cmd>All other parameters are optional and should be deleted if not

+explicitly set. The default values for the remaining parameters will be retrieved

+from the dynamic project settings. For additional information on how to set

+these parameters refer to: <xref href="rwsclienta.dita"></xref></cmd></substep>

+</substeps>

+<info>Save the <userinput>axisclient.properties</userinput> file.</info></step>

+<step><cmd>Right-click <userinput>wsgen.xml</userinput> and select <menucascade>

+<uicontrol>Run As</uicontrol><uicontrol>Ant Build...</uicontrol></menucascade></cmd>

+</step>

+<step><cmd>In the dialog that opens, select the <uicontrol>JRE</uicontrol> tab

+and select <uicontrol>Run in the same JRE as the workspace</uicontrol>.</cmd>

+<info>Click <uicontrol>Apply</uicontrol> and then click <uicontrol>Run</uicontrol>.</info>

+</step>

+<step><cmd>Once your Web service has been generated the console displays a <userinput>Build

+Successful</userinput> message.</cmd></step>

+</steps>

+<result>The following files will have been created and placed in the dynamic

+Web project's WebContent\wsdl folder:<ul>

+<li><i>Service_name</i>SOAP.wsdl </li>

+</ul>The following files will have been created and placed in the dynamic

+Web project's WebContent\WEB-INF folder:<ul>

+<li>undeploy.wsdd</li>

+<li>deploy.wsdd </li>

+</ul>The following files will have been created and placed under the dynamic

+Web project's src folder. Depending on the WSDL file on which the Web service

+client is based, the files for your Web service client may be different:<ul>

+<li><i>Service_name</i>Proxy.java</li>

+<li>get<i>Service_name</i>.java</li>

+<li>get<i>Service_name</i>Locator.java</li>

+<li>get<i>Service_name</i>Soap.java</li>

+<li>get<i>Service_name</i>SoapProxy.java</li>

+<li>get<i>Service_name</i>SoapStub.java</li>

+</ul> </result>

+</taskbody>

+</task>

diff --git a/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsclienta.html b/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsclienta.html
new file mode 100644
index 0000000..3a076c3
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/topics/twbwsclienta.html
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
+<meta content="public" name="security" />
+<meta content="index,follow" name="Robots" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta content="task" name="DC.Type" />
+<meta name="DC.Title" content="Creating a Web service client using Ant tasks" />
+<meta name="abstract" content="If you have a WSDL file you can use Ant through the Eclipse workspace to generate a Web service client using the Axis run-time environment." />
+<meta name="description" content="If you have a WSDL file you can use Ant through the Eclipse workspace to generate a Web service client using the Axis run-time environment." />
+<meta scheme="URI" name="DC.Relation" content="../topics/cwsaxisant.html" />
+<meta scheme="URI" name="DC.Relation" content="../topics/rwsclienta.html" />
+<meta content="XHTML" name="DC.Format" />
+<meta content="twsclienta" name="DC.Identifier" />
+<meta content="en-us" name="DC.Language" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
+<title>Creating an Axis runtime Web service client from a WSDL file
+using command line tools</title>
+</head>
+<body id="twsclienta"><a name="twsclienta"><!-- --></a>
+
+
+<h1 class="topictitle1">Creating a Web service client using Ant tasks</h1>
+
+
+
+<div><p>If you have a WSDL file you can use Ant through the Eclipse workspace
+to generate a Web service client using the Axis run-time environment.</p>
+
+<div class="p">Before creating the Web service client you must:<ul>
+<li>complete the prerequisites listed in: <a href="cwsaxisant.html" title="If you prefer not to use the Web service wizard, you can use Ant&#10;files to create Web services and clients using the Axis runtime environment.&#10;The Web services Ant tasks can be run in two ways: through the Eclipse workspace&#10;using Run As &gt; Ant Build..., or they can be run headless through the command line. Once&#10;you have created your Web service, you can then deploy it to a server, test&#10;it, and publish it as a business entity or business service.">Creating Axis runtime environment Web services and clients using Web services Ant tasks</a></li>
+
+<li>create or import a WSDL file into the dynamic Web project you created.</li>
+
+</ul>
+</div>
+
+<div class="section">In order to create the Web service client you need to modify the
+Ant file and the Ant properties file.</div>
+
+<ol>
+<li class="stepexpand"><span>Edit the Ant file (<kbd class="userinput">wsgen.xml</kbd>) that you imported
+in the prerequisite steps. Ensure that it points to the client Ant properties
+file: it should contain a line stating <kbd class="userinput">&lt;property file="axisclient.properties"/&gt;</kbd>.</span>
+ Save any changes that you have made.</li>
+
+<li class="stepexpand"><span>Edit the <kbd class="userinput">axisclient.properties</kbd> file that
+you imported in the prerequisite steps.</span>
+<ol type="a">
+<li><span>Ensure that the scenarioType parameter is set to client.</span>
+</li>
+
+<li><span>Set the workspace parameter so that it points to the location
+of your WSDL file.</span></li>
+
+<li><span>All other parameters are optional and should be deleted if not
+explicitly set. The default values for the remaining parameters will be retrieved
+from the dynamic project settings. For additional information on how to set
+these parameters refer to: <a href="rwsclienta.html" title="The axisclient.properties file is used to&#10;pass data to the Web services Ant tasks when creating an Axis Web service&#10;client. This file shows the available options.">Axis Web service client Ant task properties file reference</a></span></li>
+
+</ol>
+
+ Save the <kbd class="userinput">axisclient.properties</kbd> file.</li>
+
+<li class="stepexpand"><span>Right-click <kbd class="userinput">wsgen.xml</kbd> and select <span class="menucascade">
+<span class="uicontrol">Run As</span> &gt; <span class="uicontrol">Ant Build...</span></span></span>
+</li>
+
+<li class="stepexpand"><span>In the dialog that opens, select the <span class="uicontrol">JRE</span> tab
+and select <span class="uicontrol">Run in the same JRE as the workspace</span>.</span>
+ Click <span class="uicontrol">Apply</span> and then click <span class="uicontrol">Run</span>.
+</li>
+
+<li class="stepexpand"><span>Once your Web service has been generated the console displays a <kbd class="userinput">Build
+Successful</kbd> message.</span></li>
+
+</ol>
+
+<div class="section">The following files will have been created and placed in the dynamic
+Web project's WebContent\wsdl folder:<ul>
+<li><em>Service_name</em>SOAP.wsdl </li>
+
+</ul>
+The following files will have been created and placed in the dynamic
+Web project's WebContent\WEB-INF folder:<ul>
+<li>undeploy.wsdd</li>
+
+<li>deploy.wsdd </li>
+
+</ul>
+The following files will have been created and placed under the dynamic
+Web project's src folder. Depending on the WSDL file on which the Web service
+client is based, the files for your Web service client may be different:<ul>
+<li><em>Service_name</em>Proxy.java</li>
+
+<li>get<em>Service_name</em>.java</li>
+
+<li>get<em>Service_name</em>Locator.java</li>
+
+<li>get<em>Service_name</em>Soap.java</li>
+
+<li>get<em>Service_name</em>SoapProxy.java</li>
+
+<li>get<em>Service_name</em>SoapStub.java</li>
+
+</ul>
+ </div>
+
+</div>
+
+<div>
+<ul class="ullinks">
+<li class="ulchildlink"><strong><a href="../topics/rwsclienta.html">Axis Web service client Ant task properties file reference</a></strong><br />
+The axisclient.properties file is used to pass data to the Web services Ant tasks when creating an Axis Web service client. This file shows the available options.</li>
+</ul>
+
+<div class="familylinks">
+<div class="parentlink"><strong>Parent topic:</strong> <a href="../topics/cwsaxisant.html" title="If you prefer not to use the Web service wizard, you can use Ant files to create Web services and clients using the Axis runtime environment. The Web services Ant tasks can be run in two ways: through the Eclipse workspace using Run As &gt; Ant Build..., or they can be run headless through the command line. Once you have created your Web service, you can then deploy it to a server, test it, and publish it as a business entity or business service.">Creating Axis runtime environment Web services and clients using Web services Ant tasks</a></div>
+</div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.command.env.doc.user/wsaxisant_toc.ditamap b/docs/org.eclipse.wst.command.env.doc.user/wsaxisant_toc.ditamap
new file mode 100644
index 0000000..256bfee
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/wsaxisant_toc.ditamap
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--Arbortext, Inc., 1988-2005, v.4002-->

+<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN"

+ "map.dtd">

+<map anchorref="../org.eclipse.jst.ws.doc.user/webservice_toc.ditamap#wsaxisant"

+id="wsaxisant" title="wsaxisant">

+<topicref href="topics/cwsaxisant.dita" navtitle="Creating Axis runtime Web services using Ant tasks">

+<topicref href="topics/twbwsa.dita" navtitle="Creating a Web service using Ant tasks in the Workbench">

+<topicref href="topics/rtdwsa.dita" navtitle="Top-down Axis Web service Ant file reference">

+</topicref>

+<topicref href="topics/rbuwsa.dita" navtitle="Bottom-up Axis Web service Ant file reference">

+</topicref>

+</topicref>

+<topicref href="topics/twbwsclienta.dita" navtitle="Creating a Web service client using Ant tasks in the Workbench">

+<topicref href="topics/rwsclienta.dita" navtitle="Axis Web service client Ant file reference">

+</topicref>

+</topicref>

+</topicref>

+</map>

diff --git a/docs/org.eclipse.wst.command.env.doc.user/wsaxisant_toc.xml b/docs/org.eclipse.wst.command.env.doc.user/wsaxisant_toc.xml
new file mode 100644
index 0000000..a3d8ac6
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.doc.user/wsaxisant_toc.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc link_to="../org.eclipse.jst.ws.doc.user/webservice_toc.xml#wsaxisant" label="wsaxisant" topic="topics/cwsaxisant.html">
+<topic label="Creating Axis runtime environment Web services and clients using Web services Ant tasks" href="topics/cwsaxisant.html">
+<topic label="Creating a Web service using Ant tasks in the Workbench" href="topics/twbwsa.html">
+<topic label="Top-down Axis Web service Ant task properties file reference" href="topics/rtdwsa.html"/>
+<topic label="Bottom-up Axis Web service Ant task properties file reference" href="topics/rbuwsa.html"/>
+</topic>
+<topic label="Creating a Web service client using Ant tasks" href="topics/twbwsclienta.html">
+<topic label="Axis Web service client Ant task properties file reference" href="topics/rwsclienta.html"/>
+</topic>
+</topic>
+</toc>
diff --git a/docs/org.eclipse.wst.command.env.infopop/.cvsignore b/docs/org.eclipse.wst.command.env.infopop/.cvsignore
new file mode 100644
index 0000000..c14487c
--- /dev/null
+++ b/docs/org.eclipse.wst.command.env.infopop/.cvsignore
@@ -0,0 +1 @@
+build.xml
diff --git a/docs/org.eclipse.wst.command.env.infopop/about.html b/docs/org.eclipse.wst.command.env.infopop/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.wst.command.env.infopop/about.html
+++ b/docs/org.eclipse.wst.command.env.infopop/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.wst.ws.infopop/META-INF/MANIFEST.MF b/docs/org.eclipse.wst.ws.infopop/META-INF/MANIFEST.MF
index 982a50c..34c8d83 100644
--- a/docs/org.eclipse.wst.ws.infopop/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.wst.ws.infopop/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.ws.infopop; singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.202.qualifier
 Bundle-Localization: plugin
-Eclipse-AutoStart: true
+Eclipse-LazyStart: true
 Bundle-Vendor: %providerName
diff --git a/docs/org.eclipse.wst.ws.infopop/about.html b/docs/org.eclipse.wst.ws.infopop/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.wst.ws.infopop/about.html
+++ b/docs/org.eclipse.wst.ws.infopop/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.wst.ws.infopop/plugin.xml b/docs/org.eclipse.wst.ws.infopop/plugin.xml
index a24ebc0..3fe3bfd 100644
--- a/docs/org.eclipse.wst.ws.infopop/plugin.xml
+++ b/docs/org.eclipse.wst.ws.infopop/plugin.xml
@@ -1,6 +1,16 @@
 <?xml version="1.0" ?>
 <?eclipse version="3.0"?>
 <?NLS TYPE="org.eclipse.help.toc"?> 
+<!-- /*******************************************************************************
+ * Copyright (c) 2000, 2007 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/ -->
 <plugin>
 	<extension point="org.eclipse.help.contexts">
 		<contexts file="webserviceui-f1Contexts.xml" plugin="org.eclipse.wst.ws.ui"/>
diff --git a/docs/org.eclipse.wst.ws.infopop/webserviceui-f1Contexts.xml b/docs/org.eclipse.wst.ws.infopop/webserviceui-f1Contexts.xml
index 6dbb6be..bed6711 100644
--- a/docs/org.eclipse.wst.ws.infopop/webserviceui-f1Contexts.xml
+++ b/docs/org.eclipse.wst.ws.infopop/webserviceui-f1Contexts.xml
@@ -17,21 +17,119 @@
 <context id="PWSI0001">
 <!--desc-->
 <description>The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols, and secured Web services, are not WS-I compliant.
-<br />
+
 You can set the level of compliance for either the Basic Profile and the Simple SOAP Binding Profile, or for the Attachments Profile. You can select from three levels of compliance with WS-I specifications:
-<ul>
-<li>Require WS-I compliance - this level prevents you from creating a non-compliant Web service.</li>
-<li>Suggest WS-I compliance - this level allows you to create a non-compliant Web service, but provides a visible warning stating how the service is non-compliant.</li>
-<li>Ignore WS-I compliance - this level allows you to create a non-compliant Web service and does not notify you of non-compliance.</li>
-</ul>
-<br>
+- Require WS-I compliance - this level prevents you from creating a non-compliant Web service.
+- Suggest WS-I compliance - this level allows you to create a non-compliant Web service, but provides a visible warning stating how the service is non-compliant.
+- Ignore WS-I compliance - this level allows you to create a non-compliant Web service and does not notify you of non-compliance.
+
 You can also select which types of WSDL files to run validation on:
-<ul>
-<li>By selecting "No wizard WSDL validation" the wizards will not run validation on the WSDL file.</li>
-<li>By selecting to run validation on remote files, the wizards will only validate WSDL files that exist outside of your workspace.</li>
-<li>By selecting to run validation on all WSDL files the wizard will validate all WSDL files, regardless of where they reside.</li>
-</ul>
-<br>
+- By selecting "No wizard WSDL validation" the wizards will not run validation on the WSDL file.
+- By selecting to run validation on remote files, the wizards will only validate WSDL files that exist outside of your workspace.
+- By selecting to run validation on all WSDL files the wizard will validate all WSDL files, regardless of where they reside.
+
+If you select to wait for WSDL validation to complete, the Web services wizards will prevent you from going forward and completing additional wizard pages once you have selected your WSDL file until that WSDL file has been validated. If the WSDL file is not valid, you will be given the option of exiting the wizard or continuing with the invalid WSDL file.
+</description>
+</context>
+
+<context id="PWSI0004">
+<description>The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols, and secured Web services, are not WS-I compliant.
+You can set the level of compliance for either the Basic Profile and the Simple SOAP Binding Profile, or for the Attachments Profile. You can select from three levels of compliance with WS-I specifications:
+- Require WS-I compliance - this level prevents you from creating a non-compliant Web service.
+- Suggest WS-I compliance - this level allows you to create a non-compliant Web service, but provides a visible warning stating how the service is non-compliant.
+- Ignore WS-I compliance - this level allows you to create a non-compliant Web service and does not notify you of non-compliance.
+</description>
+</context>
+
+<context id="PWSI0008">
+<description>The Web services WS-I validation tools support the level of WS-I compliance outlined in the WS-I Basic Profile 1.1, the WS-I Simple SOAP Binding Profile 1.0 (WS-I SSBP), and the WS-I Attachments Profile 1.0 (WS-I AP). You can choose to make your Web service compliant or non-compliant, depending on your needs. For example, encoded style (RPC/encoded), SOAP over JMS protocols, and secured Web services, are not WS-I compliant.
+You can set the level of compliance for either the Basic Profile and the Simple SOAP Binding Profile, or for the Attachments Profile. You can select from three levels of compliance with WS-I specifications:
+- Require WS-I compliance - this level prevents you from creating a non-compliant Web service.
+- Suggest WS-I compliance - this level allows you to create a non-compliant Web service, but provides a visible warning stating how the service is non-compliant.
+- Ignore WS-I compliance - this level allows you to create a non-compliant Web service and does not notify you of non-compliance.
+</description>
+</context>
+
+<context id="PWSI0009">
+<!--desc-->
+<description>
+You can select which types of WSDL files to run validation on:
+- By selecting "No wizard WSDL validation" the wizards will not run validation on the WSDL file.
+- By selecting to run validation on remote files, the wizards will only validate WSDL files that exist outside of your workspace.
+- By selecting to run validation on all WSDL files the wizard will validate all WSDL files, regardless of where they reside.
+</description>
+</context>
+
+<context id="PWSI0010">
+<!--desc-->
+<description>
+You can select which types of WSDL files to run validation on:
+- By selecting "No wizard WSDL validation" the wizards will not run validation on the WSDL file.
+- By selecting to run validation on remote files, the wizards will only validate WSDL files that exist outside of your workspace.
+- By selecting to run validation on all WSDL files the wizard will validate all WSDL files, regardless of where they reside.
+</description>
+</context>
+
+<context id="PWSI00011">
+<!--desc-->
+<description>
+You can select which types of WSDL files to run validation on:
+- By selecting "No wizard WSDL validation" the wizards will not run validation on the WSDL file.
+- By selecting to run validation on remote files, the wizards will only validate WSDL files that exist outside of your workspace.
+- By selecting to run validation on all WSDL files the wizard will validate all WSDL files, regardless of where they reside.
+</description>
+</context>
+
+<context id="PWSI0012">
+<!--desc-->
+<description>
+If you select to wait for WSDL validation to complete, the Web services wizards will prevent you from going forward and completing additional wizard pages once you have selected your WSDL file until that WSDL file has been validated. If the WSDL file is not valid, you will be given the option of exiting the wizard or continuing with the invalid WSDL file.
+</description>
+</context>
+
+<context id="PWRS00009">
+<!--desc-->
+<description>
+You can select which types of WSDL files to run validation on:
+- By selecting "No wizard WSDL validation" the wizards will not run validation on the WSDL file.
+- By selecting to run validation on remote files, the wizards will only validate WSDL files that exist outside of your workspace.
+- By selecting to run validation on all WSDL files the wizard will validate all WSDL files, regardless of where they reside.
+</description>
+</context>
+
+<context id="PWRS00010">
+<!--desc-->
+<description>
+You can select which types of WSDL files to run validation on:
+- By selecting "No wizard WSDL validation" the wizards will not run validation on the WSDL file.
+- By selecting to run validation on remote files, the wizards will only validate WSDL files that exist outside of your workspace.
+- By selecting to run validation on all WSDL files the wizard will validate all WSDL files, regardless of where they reside.
+</description>
+</context>
+
+<context id="PWRS00011">
+<!--desc-->
+<description>
+You can select which types of WSDL files to run validation on:
+- By selecting "No wizard WSDL validation" the wizards will not run validation on the WSDL file.
+- By selecting to run validation on remote files, the wizards will only validate WSDL files that exist outside of your workspace.
+- By selecting to run validation on all WSDL files the wizard will validate all WSDL files, regardless of where they reside.
+</description>
+</context>
+
+<context id="PWRS00012">
+<!--desc-->
+<description>
+You can select which types of WSDL files to run validation on:
+- By selecting "No wizard WSDL validation" the wizards will not run validation on the WSDL file.
+- By selecting to run validation on remote files, the wizards will only validate WSDL files that exist outside of your workspace.
+- By selecting to run validation on all WSDL files the wizard will validate all WSDL files, regardless of where they reside.
+</description>
+</context>
+
+<context id="PWRS0013">
+<!--desc-->
+<description>
 If you select to wait for WSDL validation to complete, the Web services wizards will prevent you from going forward and completing additional wizard pages once you have selected your WSDL file until that WSDL file has been validated. If the WSDL file is not valid, you will be given the option of exiting the wizard or continuing with the invalid WSDL file.
 </description>
 </context>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/.cvsignore b/docs/org.eclipse.wst.wsdl.ui.doc.user/.cvsignore
index 9bf8729..77adf97 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/.cvsignore
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/.cvsignore
@@ -1,3 +1,4 @@
 org.eclipse.wst.wsdl.ui.doc.user_1.0.0.jar
+build.xml
 bak
 temp
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/META-INF/MANIFEST.MF b/docs/org.eclipse.wst.wsdl.ui.doc.user/META-INF/MANIFEST.MF
index 58ee22b..04e839d 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.wsdl.ui.doc.user; singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.203.qualifier
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
-Eclipse-AutoStart: true
+Eclipse-LazyStart: true
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/about.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/about.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/build.properties b/docs/org.eclipse.wst.wsdl.ui.doc.user/build.properties
index e55c0bf..c9b8b49 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/build.properties
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/build.properties
@@ -1,6 +1,7 @@
 bin.includes = wswsdleditorc_toc.xml,\
                wswsdleditort_toc.xml,\
                about.html,\
+               org.eclipse.wst.wsdl.ui.doc.userindex.xml,\
                images/,\
                plugin.properties,\
                plugin.xml,\
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/build.xml b/docs/org.eclipse.wst.wsdl.ui.doc.user/build.xml
index ef2ead0..bd4b3fa 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/build.xml
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/build.xml
@@ -25,7 +25,7 @@
 -->
 <project name="eclipsehelp" default="all">
 
-	<property name="dita.ot.dir" location="C:/DITA-OT1.2.1" />
+	<property name="dita.ot.dir" location="C:/DITA-OT1.2.2" />
 
 	<path id="dost.class.path">
 		<pathelement location="${dita.ot.dir}${file.separator}lib${file.separator}dost.jar" />
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/concepts/cwsdled.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/concepts/cwsdled.dita
index d17fcaf..f7504ea 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/concepts/cwsdled.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/concepts/cwsdled.dita
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"  "concept.dtd">
-<concept id="cwsdled" xml:lang="en-us"><?Pub Caret1?>
+<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN"
+ "concept.dtd">
+<concept id="cwsdled" xml:lang="en-us">
 <title>Editing WSDL files with the WSDL Editor</title>
 <titlealts>
 <searchtitle>Editing WSDL files with the WSDL editor</searchtitle>
@@ -51,6 +52,6 @@
 <link href="../tasks/tcrtwsdl.dita" scope="local"></link>
 <link href="../tasks/tedtwsdl.dita" scope="local"></link>
 </linklist>
-</related-links>
+</related-links><?Pub Caret?>
 </concept>
-<?Pub *0000002624?>
+<?Pub *0000002617?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/concepts/cwsdled.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/concepts/cwsdled.html
index 92dda0b..1e474eb 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/concepts/cwsdled.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/concepts/cwsdled.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -17,7 +17,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="cwsdled" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Editing WSDL files with the WSDL editor</title>
 </head>
 <body id="cwsdled"><a name="cwsdled"><!-- --></a>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/images/httpskel.gif b/docs/org.eclipse.wst.wsdl.ui.doc.user/images/httpskel.gif
index dca2dc3..e2e6686 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/images/httpskel.gif
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/images/httpskel.gif
Binary files differ
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/images/soapskel.gif b/docs/org.eclipse.wst.wsdl.ui.doc.user/images/soapskel.gif
index 219721a..8042735 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/images/soapskel.gif
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/images/soapskel.gif
Binary files differ
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/images/wsdleditor.gif b/docs/org.eclipse.wst.wsdl.ui.doc.user/images/wsdleditor.gif
index fb26004..ccbe3b9 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/images/wsdleditor.gif
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/images/wsdleditor.gif
Binary files differ
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/myplugin.xml b/docs/org.eclipse.wst.wsdl.ui.doc.user/myplugin.xml
index ada66bc..2917121 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/myplugin.xml
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/myplugin.xml
@@ -2,7 +2,7 @@
 <?eclipse version="3.0"?>
 <?NLS TYPE="org.eclipse.help.toc"?>
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
@@ -23,6 +23,9 @@
     <toc file="wswsdleditorc_toc.xml"/>
       
 </extension>
+<extension point="org.eclipse.help.index">
+      <index file="org.eclipse.wst.wsdl.ui.doc.userindex.xml"/>
+</extension>
 
 
 </plugin>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/org.eclipse.wst.wsdl.ui.doc.userindex.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/org.eclipse.wst.wsdl.ui.doc.userindex.html
new file mode 100644
index 0000000..717556b
--- /dev/null
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/org.eclipse.wst.wsdl.ui.doc.userindex.html
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="security" content="public" />
+<meta name="Robots" content="index,follow" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta name="DC.Format" content="XHTML" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/ibmdita.css" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
+<title>Index</title>
+</head>
+<body>
+<h1>Index</h1>
+<a name="IDX0_57" href="#IDX1_57">W</a>
+<hr></hr>
+<strong><a name="IDX1_57" href="#IDX0_57">W</a></strong>
+<ul class="indexlist">
+<li>Web services
+<ul class="indexlist">
+<li><a href="tasks/taddsrvc.html#taddsrvc">adding services to WSDL</a>
+</li>
+<li><a href="tasks/tcrtimpt.html#tcrtimpt">adding WSDL import statements</a>
+</li>
+<li><a href="tasks/taddpart.html#taddpart">adding WSDL message parts</a>
+</li>
+<li><a href="tasks/taddmess.html#taddmess">adding WSDL messages</a>
+</li>
+<li><a href="tasks/taddoper.html#taddoper">adding WSDL operations</a>
+</li>
+<li><a href="tasks/taddport.html#taddport">adding WSDL ports</a>
+</li>
+<li>bindings
+<ul class="indexlist">
+<li><a href="tasks/tsetbind.html#tsetbind">creating</a>
+</li>
+</ul>
+</li>
+<li><a href="tasks/tcrtwsdl.html#tcrtwsdl">creating WSDL</a>
+</li>
+<li><a href="tasks/tcrttype.html#tcrttype">creating WSDL types</a>
+</li>
+<li><a href="tasks/tedtwsdl.html#tedtwsdl">editing WSDL</a>
+</li>
+<li><a href="tasks/timpwsdl.html#timpwsdl">importing WSDL</a>
+</li>
+<li><a href="tasks/tsetprtt.html#tsetprtt">setting port types</a>
+</li>
+<li><a href="tasks/tsetbind.html#tsetbind">setting WSDL bindings</a>
+</li>
+</ul>
+</li>
+<li>WSDL
+<ul class="indexlist">
+<li><a href="tasks/tcrtimpt.html#tcrtimpt">adding import statements</a>
+</li>
+<li><a href="tasks/taddpart.html#taddpart">adding message parts</a>
+</li>
+<li><a href="tasks/taddmess.html#taddmess">adding messages</a>
+</li>
+<li><a href="tasks/taddoper.html#taddoper">adding operations</a>
+</li>
+<li><a href="tasks/taddport.html#taddport">adding ports</a>
+</li>
+<li><a href="tasks/taddsrvc.html#taddsrvc">adding services</a>
+</li>
+<li><a href="tasks/tcrtwsdl.html#tcrtwsdl">creating</a>
+</li>
+<li><a href="tasks/tcrttype.html#tcrttype">creating types</a>
+</li>
+<li><a href="tasks/tedtwsdl.html#tedtwsdl">editing</a>
+</li>
+<li><a href="tasks/timpwsdl.html#timpwsdl">importing</a>
+</li>
+<li><a href="tasks/tsetbind.html#tsetbind">setting bindings</a>
+</li>
+<li><a href="tasks/tsetprtt.html#tsetprtt">setting port types</a>
+</li>
+</ul>
+</li>
+</ul>
+</body></html>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/org.eclipse.wst.wsdl.ui.doc.userindex.xml b/docs/org.eclipse.wst.wsdl.ui.doc.user/org.eclipse.wst.wsdl.ui.doc.userindex.xml
new file mode 100644
index 0000000..c4db7d1
--- /dev/null
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/org.eclipse.wst.wsdl.ui.doc.userindex.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<index>
+  <entry keyword="WSDL">
+    <entry keyword="importing">
+      <topic href="tasks/timpwsdl.html#timpwsdl" title="Importing a WSDL file"/>
+    </entry>
+    <entry keyword="creating">
+      <topic href="tasks/tcrtwsdl.html#tcrtwsdl" title="Creating a new WSDL file"/>
+    </entry>
+    <entry keyword="editing">
+      <topic href="tasks/tedtwsdl.html#tedtwsdl" title="Editing WSDL files"/>
+    </entry>
+    <entry keyword="adding services">
+      <topic href="tasks/taddsrvc.html#taddsrvc" title="Adding a service"/>
+    </entry>
+    <entry keyword="adding ports">
+      <topic href="tasks/taddport.html#taddport" title="Adding a port to a service"/>
+    </entry>
+    <entry keyword="setting port types">
+      <topic href="tasks/tsetprtt.html#tsetprtt" title="Setting a port type"/>
+    </entry>
+    <entry keyword="setting bindings">
+      <topic href="tasks/tsetbind.html#tsetbind" title="Setting a binding"/>
+    </entry>
+    <entry keyword="adding operations">
+      <topic href="tasks/taddoper.html#taddoper" title="Adding an operation"/>
+    </entry>
+    <entry keyword="adding messages">
+      <topic href="tasks/taddmess.html#taddmess" title="Adding a message"/>
+    </entry>
+    <entry keyword="adding message parts">
+      <topic href="tasks/taddpart.html#taddpart" title="Adding a part to a message"/>
+    </entry>
+    <entry keyword="adding import statements">
+      <topic href="tasks/tcrtimpt.html#tcrtimpt" title="Creating an import statement"/>
+    </entry>
+    <entry keyword="creating types">
+      <topic href="tasks/tcrttype.html#tcrttype" title="Creating a new type for your WSDL file"/>
+    </entry>
+  </entry>
+  <entry keyword="Web services">
+    <entry keyword="importing WSDL">
+      <topic href="tasks/timpwsdl.html#timpwsdl" title="Importing a WSDL file"/>
+    </entry>
+    <entry keyword="creating WSDL">
+      <topic href="tasks/tcrtwsdl.html#tcrtwsdl" title="Creating a new WSDL file"/>
+    </entry>
+    <entry keyword="editing WSDL">
+      <topic href="tasks/tedtwsdl.html#tedtwsdl" title="Editing WSDL files"/>
+    </entry>
+    <entry keyword="adding services to WSDL">
+      <topic href="tasks/taddsrvc.html#taddsrvc" title="Adding a service"/>
+    </entry>
+    <entry keyword="adding WSDL ports">
+      <topic href="tasks/taddport.html#taddport" title="Adding a port to a service"/>
+    </entry>
+    <entry keyword="setting port types">
+      <topic href="tasks/tsetprtt.html#tsetprtt" title="Setting a port type"/>
+    </entry>
+    <entry keyword="setting WSDL bindings">
+      <topic href="tasks/tsetbind.html#tsetbind" title="Setting a binding"/>
+    </entry>
+    <entry keyword="bindings">
+      <entry keyword="creating">
+        <topic href="tasks/tsetbind.html#tsetbind" title="Setting a binding"/>
+      </entry>
+    </entry>
+    <entry keyword="adding WSDL operations">
+      <topic href="tasks/taddoper.html#taddoper" title="Adding an operation"/>
+    </entry>
+    <entry keyword="adding WSDL messages">
+      <topic href="tasks/taddmess.html#taddmess" title="Adding a message"/>
+    </entry>
+    <entry keyword="adding WSDL message parts">
+      <topic href="tasks/taddpart.html#taddpart" title="Adding a part to a message"/>
+    </entry>
+    <entry keyword="adding WSDL import statements">
+      <topic href="tasks/tcrtimpt.html#tcrtimpt" title="Creating an import statement"/>
+    </entry>
+    <entry keyword="creating WSDL types">
+      <topic href="tasks/tcrttype.html#tcrttype" title="Creating a new type for your WSDL file"/>
+    </entry>
+  </entry>
+</index>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/plugin.xml b/docs/org.eclipse.wst.wsdl.ui.doc.user/plugin.xml
index ada66bc..2917121 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/plugin.xml
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/plugin.xml
@@ -2,7 +2,7 @@
 <?eclipse version="3.0"?>
 <?NLS TYPE="org.eclipse.help.toc"?>
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
@@ -23,6 +23,9 @@
     <toc file="wswsdleditorc_toc.xml"/>
       
 </extension>
+<extension point="org.eclipse.help.index">
+      <index file="org.eclipse.wst.wsdl.ui.doc.userindex.xml"/>
+</extension>
 
 
 </plugin>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddmess.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddmess.dita
index 1c31331..6161e7e 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddmess.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddmess.dita
@@ -1,25 +1,31 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="taddmess" xml:lang="en-us">
 <title>Adding a message</title>
 <shortdesc>Messages represent an abstract definition of the data being transmitted.
 A message consists of logical parts, each of which is associated with a definition
 within some type system. WSDL messages are top level objects that can be referenced
 by an operation's input, output and fault elements (within a port type).</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>adding messages</indexterm></indexterm>
+<indexterm>Web services<indexterm>adding WSDL messages</indexterm></indexterm>
+</keywords>
+</metadata></prolog><?Pub Caret?>
 <taskbody>
-<context><p>If you want to create a new message for your input, output, or
-fault element, follow these steps:  </p></context>
+<context><p>You can create a message using the Outline view by right-clicking
+the <b>Messages</b> folder and clicking <b>Add Message</b>.</p><p>If you want
+to create a new message for your input, output, or fault element, follow these
+steps:  </p></context>
 <steps>
-<step><cmd>In the Graph view, right-click your input, output, or fault element
-and click  <b>Set Message.</b></cmd></step>
-<step><cmd>Select the  <b>Create a new message</b> radio button.</cmd></step>
+<step><cmd>In the Design view, right-click your input, output, or fault element
+and click  <b>Set Message > New Message.</b></cmd></step>
 <step><cmd>Type the name of the message in dialog.</cmd><info>This name should
 be a unique amongst all messages defined within the enclosing WSDL document.
 Click <b>OK</b>.</info></step>
-<step><cmd>The new message will appear in the graph view within the messages
-section.</cmd><info>An line should be visible connecting the input, output
-or fault with the message.</info></step>
+<step><cmd>The new message will appear in the Design view within the port
+type.</cmd></step>
 </steps>
 <result><p> <b>Note</b>: Messages are referenced within a port type (specifically
 by an operation's input, output and fault objects). The input, output and
@@ -27,27 +33,49 @@
 create a new message by right clicking on a input, output, or fault within
 a binding (these are also known as binding input, binding output and binding
 faults).</p><p> <b>Tip</b>: You can also create a new message for your input,
-output, or fault element using the Outline view. Under the  <b>Port Types</b> 
-folder, right-click your element and click  <b>Set Message > Create a new
-message</b>. Your message will appear in the Outline view under the  <b>Messages</b> folder.&nbsp;</p><p>If
+output, or fault element using the Outline view. Under the  <b>Port Types</b> folder,
+right-click your element and click  <b>Set Message > Add Message</b>. Your
+message will appear in the Outline view under the  <b>Messages</b> folder.</p><p>If
 you want to reuse a message for your input, output, or fault element, follow
-these steps:  </p><ol>
-<li>In the Graph view, right-click your input, output, or fault element and
-click  <b>Set Message.</b></li>
-<li>Press the  <uicontrol>Select an existing message</uicontrol> radio button.</li>
-<li>The existing messages will be listed. Select one and click  <b>Finish</b>.</li>
+these steps:</p><ol>
+<li>In the Design view, right-click your input, output, or fault element and
+click  <b>Set Message > Existing Message.</b></li>
+<li>In the <b>Name</b> field, type a search string to filter the list or leave
+the field blank to view all.</li>
+<li>You can change the scope of the list by selecting one of the following
+options:<ul>
+<li><b>Workspace</b>. Lists the messages available in your workspace.</li>
+<li><b>Enclosing Project</b>. Lists the messages available in the project
+that contains your file.</li>
+<li><b>Current Resource</b>. Lists the messages available in your current
+file.</li>
+<li><b>Working Sets</b>. Lists the messages available in a specified set of
+files. To specify a working set, click <b>Choose</b>. You can select files
+from an existing working set or create a new working set. Once you have selected
+the files, click <b>OK</b>.</li>
+</ul></li>
+<li>The existing messages will be listed. Select one and click  <b>OK</b>.</li>
 </ol><p>If you want to import an existing message for your input, output,
 or fault element, follow these steps:</p><ol>
-<li>In the Graph view, right-click your input, output, or fault element and
-click  <b>Set Message.</b></li>
-<li>Select the  <b>Import message from a file</b> check box. Click  <b>Browse</b>.</li>
-<li>Select the file that contains the message you want to use. Click  <b>OK</b>.</li>
-<li>The messages in the file will be listed. Select one and click  <b>Finish</b>.</li>
+<li>In the Design view, right-click your input, output, or fault element and
+click  <b>Set Message > Existing Message.</b></li>
+<li>In the <b>Name</b> field, type a search string to filter the list or leave
+the field blank to view all.</li>
+<li>You can import a message by selecting one of the following options:<ul>
+<li><b>Workspace</b>. Lists the messages available in your workspace.</li>
+<li><b>Enclosing Project</b>. Lists the messages available in the project
+that contains your file.</li>
+<li><b>Working Sets</b>. Lists the messages available in a specified set of
+files. To specify a working set, click <b>Choose</b>. You can select files
+from an existing working set or create a new working set. Once you have selected
+the files, click <b>OK</b>.</li>
+</ul></li>
+<li>The messages will be listed. Select one and click <b>OK</b>.</li>
 </ol><p>You can now add parts to your message. Parts are a flexible mechanism
 for describing the logical abstract content of a message.</p></result>
 </taskbody>
 <related-links>
-<linklist><title>Related concepts</title><?Pub Caret?>
+<linklist><title>Related concepts</title>
 <link href="../concepts/cwsdled.dita" scope="local"></link>
 </linklist>
 <linklist><title>Related tasks</title>
@@ -56,4 +84,4 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000003378?>
+<?Pub *0000004676?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddmess.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddmess.html
index 769aa0d..f02e221 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddmess.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddmess.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,14 +11,15 @@
 <meta name="DC.Title" content="Adding a message" />
 <meta name="abstract" content="Messages represent an abstract definition of the data being transmitted. A message consists of logical parts, each of which is associated with a definition within some type system. WSDL messages are top level objects that can be referenced by an operation's input, output and fault elements (within a port type)." />
 <meta name="description" content="Messages represent an abstract definition of the data being transmitted. A message consists of logical parts, each of which is associated with a definition within some type system. WSDL messages are top level objects that can be referenced by an operation's input, output and fault elements (within a port type)." />
-<meta scheme="URI" name="DC.Relation" content="../tasks/tedtwsdl.html" />
+<meta content="WSDL, adding messages, Web services, adding WSDL messages" name="DC.subject" />
+<meta content="WSDL, adding messages, Web services, adding WSDL messages" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdled.html" />
 <meta scheme="URI" name="DC.Relation" content="tcrtwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="tedtwsdl.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="taddmess" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Adding a message</title>
 </head>
 <body id="taddmess"><a name="taddmess"><!-- --></a>
@@ -27,28 +28,29 @@
 <h1 class="topictitle1">Adding a message</h1>
 
 
+
 <div><p>Messages represent an abstract definition of the data being transmitted.
 A message consists of logical parts, each of which is associated with a definition
 within some type system. WSDL messages are top level objects that can be referenced
 by an operation's input, output and fault elements (within a port type).</p>
 
-<div class="section"><p>If you want to create a new message for your input, output, or
-fault element, follow these steps:  </p>
+<div class="section"><p>You can create a message using the Outline view by right-clicking
+the <strong>Messages</strong> folder and clicking <strong>Add Message</strong>.</p>
+<p>If you want
+to create a new message for your input, output, or fault element, follow these
+steps:  </p>
 </div>
 
 <ol>
-<li class="stepexpand"><span>In the Graph view, right-click your input, output, or fault element
-and click  <strong>Set Message.</strong></span></li>
-
-<li class="stepexpand"><span>Select the  <strong>Create a new message</strong> radio button.</span></li>
+<li class="stepexpand"><span>In the Design view, right-click your input, output, or fault element
+and click  <strong>Set Message &gt; New Message.</strong></span></li>
 
 <li class="stepexpand"><span>Type the name of the message in dialog.</span> This name should
 be a unique amongst all messages defined within the enclosing WSDL document.
 Click <strong>OK</strong>.</li>
 
-<li class="stepexpand"><span>The new message will appear in the graph view within the messages
-section.</span> An line should be visible connecting the input, output
-or fault with the message.</li>
+<li class="stepexpand"><span>The new message will appear in the Design view within the port
+type.</span></li>
 
 </ol>
 
@@ -59,32 +61,64 @@
 a binding (these are also known as binding input, binding output and binding
 faults).</p>
 <p> <strong>Tip</strong>: You can also create a new message for your input,
-output, or fault element using the Outline view. Under the  <strong>Port Types</strong> 
-folder, right-click your element and click  <strong>Set Message &gt; Create a new
-message</strong>. Your message will appear in the Outline view under the  <strong>Messages</strong> folder. </p>
+output, or fault element using the Outline view. Under the  <strong>Port Types</strong> folder,
+right-click your element and click  <strong>Set Message &gt; Add Message</strong>. Your
+message will appear in the Outline view under the  <strong>Messages</strong> folder.</p>
 <p>If
 you want to reuse a message for your input, output, or fault element, follow
-these steps:  </p>
+these steps:</p>
 <ol>
-<li>In the Graph view, right-click your input, output, or fault element and
-click  <strong>Set Message.</strong></li>
+<li>In the Design view, right-click your input, output, or fault element and
+click  <strong>Set Message &gt; Existing Message.</strong></li>
 
-<li>Press the  <span class="uicontrol">Select an existing message</span> radio button.</li>
+<li>In the <strong>Name</strong> field, type a search string to filter the list or leave
+the field blank to view all.</li>
 
-<li>The existing messages will be listed. Select one and click  <strong>Finish</strong>.</li>
+<li>You can change the scope of the list by selecting one of the following
+options:<ul>
+<li><strong>Workspace</strong>. Lists the messages available in your workspace.</li>
+
+<li><strong>Enclosing Project</strong>. Lists the messages available in the project
+that contains your file.</li>
+
+<li><strong>Current Resource</strong>. Lists the messages available in your current
+file.</li>
+
+<li><strong>Working Sets</strong>. Lists the messages available in a specified set of
+files. To specify a working set, click <strong>Choose</strong>. You can select files
+from an existing working set or create a new working set. Once you have selected
+the files, click <strong>OK</strong>.</li>
+
+</ul>
+</li>
+
+<li>The existing messages will be listed. Select one and click  <strong>OK</strong>.</li>
 
 </ol>
 <p>If you want to import an existing message for your input, output,
 or fault element, follow these steps:</p>
 <ol>
-<li>In the Graph view, right-click your input, output, or fault element and
-click  <strong>Set Message.</strong></li>
+<li>In the Design view, right-click your input, output, or fault element and
+click  <strong>Set Message &gt; Existing Message.</strong></li>
 
-<li>Select the  <strong>Import message from a file</strong> check box. Click  <strong>Browse</strong>.</li>
+<li>In the <strong>Name</strong> field, type a search string to filter the list or leave
+the field blank to view all.</li>
 
-<li>Select the file that contains the message you want to use. Click  <strong>OK</strong>.</li>
+<li>You can import a message by selecting one of the following options:<ul>
+<li><strong>Workspace</strong>. Lists the messages available in your workspace.</li>
 
-<li>The messages in the file will be listed. Select one and click  <strong>Finish</strong>.</li>
+<li><strong>Enclosing Project</strong>. Lists the messages available in the project
+that contains your file.</li>
+
+<li><strong>Working Sets</strong>. Lists the messages available in a specified set of
+files. To specify a working set, click <strong>Choose</strong>. You can select files
+from an existing working set or create a new working set. Once you have selected
+the files, click <strong>OK</strong>.</li>
+
+</ul>
+</li>
+
+<li>The messages will be listed. Select one and click <strong>OK</strong>.</li>
 
 </ol>
 <p>You can now add parts to your message. Parts are a flexible mechanism
@@ -94,10 +128,6 @@
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-
 <div class="linklist"><strong>Related concepts</strong><br />
 
 <div><a href="../concepts/cwsdled.html" title="The WSDL editor allows you to easily and graphically create, modify, view, and validate WSDL files.">Editing WSDL files with the WSDL Editor</a></div></div>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddoper.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddoper.dita
index 2cb1081..150e29e 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddoper.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddoper.dita
@@ -1,11 +1,17 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="taddoper" xml:lang="en-us">
 <title>Adding an operation</title>
 <shortdesc>An operation names the operation and lists the expected inputs
 and outputs. The operation element may also contain a fault sub-element that
 describes any error data the operation may return.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>adding operations</indexterm></indexterm>
+<indexterm>Web services<indexterm>adding WSDL operations</indexterm></indexterm>
+</keywords>
+</metadata></prolog><?Pub Caret?>
 <taskbody>
 <context>Using these, you can declare four transmission primitives that an
 endpoint can support:<ul>
@@ -18,25 +24,28 @@
 </ul><p>You can add an operation to a port type or a port binding.</p><p>To
 add an operation to a port type, follow these steps:</p></context>
 <steps>
-<step><cmd>In the Graph view, right-click your port type.</cmd><info>Click <b>Add&nbsp;Child
-> Operation</b>.</info></step>
-<step><cmd>In the dialog, enter a name for the operation.</cmd></step>
-<step><cmd>Right click on the operation to add an input, output or fault objects.</cmd>
+<step><cmd>In the Design view, right-click your port type.</cmd><info>Click <b>Add
+Operation</b>. To select the new operation, click the operation in the port
+type object.</info></step>
+<step><cmd>In the Properties view, click the <b>General</b> pane.</cmd></step>
+<step><cmd>In the <b>Name</b> field, type the name of the operation.</cmd>
+</step>
+<step><cmd>Right click on the operation to add input, output or fault objects.</cmd>
 <info>Depending on an operation's inputs and outputs it can be classified
 as follows:<ul>
 <li><b>One way operation</b>: input </li>
 <li><b>Request response operation</b>: input, output </li>
 <li><b> Solicit response operation</b>: output, input </li>
-<li><b>Notification operation</b> : output</li>
+<li><b>Notification operation</b>: output</li>
 </ul></info></step>
-<step><cmd>Type any information about the operation you wish the user to read
-in the  <b>Documentation</b> pane.&nbsp;</cmd></step>
+<step><cmd>In the Properties view, type any information about the operation
+you wish the user to read in the  <b>Documentation</b> pane.</cmd></step>
 </steps>
 <result><p> <b>Tip</b>: You can also create a new operation for your port
 type using the Outline view.</p></result>
 </taskbody>
 <related-links>
-<linklist><title>Related concepts</title><?Pub Caret?>
+<linklist><title>Related concepts</title>
 <link href="../concepts/cwsdled.dita" scope="local"></link>
 </linklist>
 <linklist><title>Related tasks</title>
@@ -45,4 +54,4 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002230?>
+<?Pub *0000002602?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddoper.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddoper.html
index 3f566a4..51d1d38 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddoper.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddoper.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,14 +11,15 @@
 <meta name="DC.Title" content="Adding an operation" />
 <meta name="abstract" content="An operation names the operation and lists the expected inputs and outputs. The operation element may also contain a fault sub-element that describes any error data the operation may return." />
 <meta name="description" content="An operation names the operation and lists the expected inputs and outputs. The operation element may also contain a fault sub-element that describes any error data the operation may return." />
-<meta scheme="URI" name="DC.Relation" content="../tasks/tedtwsdl.html" />
+<meta content="WSDL, adding operations, Web services, adding WSDL operations" name="DC.subject" />
+<meta content="WSDL, adding operations, Web services, adding WSDL operations" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdled.html" />
 <meta scheme="URI" name="DC.Relation" content="tcrtwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="tedtwsdl.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="taddoper" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Adding an operation</title>
 </head>
 <body id="taddoper"><a name="taddoper"><!-- --></a>
@@ -27,6 +28,7 @@
 <h1 class="topictitle1">Adding an operation</h1>
 
 
+
 <div><p>An operation names the operation and lists the expected inputs
 and outputs. The operation element may also contain a fault sub-element that
 describes any error data the operation may return.</p>
@@ -50,12 +52,16 @@
 </div>
 
 <ol>
-<li class="stepexpand"><span>In the Graph view, right-click your port type.</span> Click <strong>Add Child
-&gt; Operation</strong>.</li>
+<li class="stepexpand"><span>In the Design view, right-click your port type.</span> Click <strong>Add
+Operation</strong>. To select the new operation, click the operation in the port
+type object.</li>
 
-<li class="stepexpand"><span>In the dialog, enter a name for the operation.</span></li>
+<li class="stepexpand"><span>In the Properties view, click the <strong>General</strong> pane.</span></li>
 
-<li class="stepexpand"><span>Right click on the operation to add an input, output or fault objects.</span>
+<li class="stepexpand"><span>In the <strong>Name</strong> field, type the name of the operation.</span>
+</li>
+
+<li class="stepexpand"><span>Right click on the operation to add input, output or fault objects.</span>
  Depending on an operation's inputs and outputs it can be classified
 as follows:<ul>
 <li><strong>One way operation</strong>: input </li>
@@ -64,13 +70,13 @@
 
 <li><strong> Solicit response operation</strong>: output, input </li>
 
-<li><strong>Notification operation</strong> : output</li>
+<li><strong>Notification operation</strong>: output</li>
 
 </ul>
 </li>
 
-<li class="stepexpand"><span>Type any information about the operation you wish the user to read
-in the  <strong>Documentation</strong> pane. </span></li>
+<li class="stepexpand"><span>In the Properties view, type any information about the operation
+you wish the user to read in the  <strong>Documentation</strong> pane.</span></li>
 
 </ol>
 
@@ -81,10 +87,6 @@
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-
 <div class="linklist"><strong>Related concepts</strong><br />
 
 <div><a href="../concepts/cwsdled.html" title="The WSDL editor allows you to easily and graphically create, modify, view, and validate WSDL files.">Editing WSDL files with the WSDL Editor</a></div></div>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddpart.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddpart.dita
index 1859932..719c4fd 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddpart.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddpart.dita
@@ -1,37 +1,44 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="taddpart" xml:lang="en-us">
 <title>Adding a part to a message</title>
 <shortdesc>All messages contain one or more parts. Parts are a flexible mechanism
 for describing the logical abstract content of a message. The message definition
 associates each part with a type using a message-typing attribute.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>adding message parts</indexterm></indexterm>
+<indexterm>Web services<indexterm>adding WSDL message parts</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <context><p>To add a part to a message, follow these steps:</p></context>
 <steps>
-<step><cmd>In Graph view, select the message you want to add a part to.</cmd>
-</step>
-<step><cmd>Right-click the message and click  <b>Add Child > Part</b>.</cmd>
-</step>
-<step><cmd>Type the name of the part in the dialog.</cmd><info>Click <b>OK</b>.</info>
-</step>
+<step><cmd>In Design view, right-click an input, output, or fault object and
+click <b>Add Part</b>. </cmd><stepresult> The part is added to the input,
+output, or fault's message reference.</stepresult></step>
+<step><cmd>T<?Pub Caret1?>o select the part, click the part in the port type
+object.</cmd></step>
+<step><cmd>In the Properties view, click the <b>General</b> pane.</cmd></step>
+<step><cmd>In the <b>Name</b> field, type the name of the part.</cmd></step>
 <step><cmd>Your part can refer to either a <b>type</b> or an <b>element</b>.</cmd>
 <info>Select the appropriate option from the <b>Reference Kind</b> list.</info>
 </step>
 <step><cmd>If you selected  <b>type</b> in the <b>Reference Kind</b> list,
 you now have the option of selecting an XML schema data type from the <b>Type</b> drop
-down list. The list of types comes from any available referenced XML schemas.</cmd>
-<info></info></step>
+down list.</cmd><info>The list of types comes from any available referenced
+XML schemas.</info></step>
 <step><cmd>If you selected <b>element</b> in the <b>Reference Kind</b> list,
-you now have the option of selecting an <?Pub Caret?>XML schema element from
-the  <b>Element</b> drop down list.&nbsp;The list of elements comes from any
-available referenced XML schemas.</cmd><info></info></step>
+you now have the option of selecting an XML schema element from the  <b>Element</b> drop
+down list.</cmd><info>The list of elements comes from any available referenced
+XML schemas.</info></step>
 </steps>
 <result><p> <b>Tip</b>: You can also create a new part for your message using
 the Outline view. Under the  <b>Messages</b> folder, right-click your element
-and click  <b>Add Child > Part</b>. Your part will automatically appear in
-the Outline view (under the  <b>Messages</b> folder), but it will only appear
-in the Graph view if the message you added it to currently does.</p></result>
+and click <b>Add Part</b>. Your part will automatically appear in the Outline
+view (under the <b>Messages</b> folder), but it will only appear in the Design
+view if the message you added it to currently does.</p></result>
 </taskbody>
 <related-links>
 <linklist><title>Related concepts</title>
@@ -43,4 +50,4 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002294?>
+<?Pub *0000002672?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddpart.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddpart.html
index 12c469d..5a9ce0f 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddpart.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddpart.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,14 +11,15 @@
 <meta name="DC.Title" content="Adding a part to a message" />
 <meta name="abstract" content="All messages contain one or more parts. Parts are a flexible mechanism for describing the logical abstract content of a message. The message definition associates each part with a type using a message-typing attribute." />
 <meta name="description" content="All messages contain one or more parts. Parts are a flexible mechanism for describing the logical abstract content of a message. The message definition associates each part with a type using a message-typing attribute." />
-<meta scheme="URI" name="DC.Relation" content="../tasks/tedtwsdl.html" />
+<meta content="WSDL, adding message parts, Web services, adding WSDL message parts" name="DC.subject" />
+<meta content="WSDL, adding message parts, Web services, adding WSDL message parts" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdled.html" />
 <meta scheme="URI" name="DC.Relation" content="tcrtwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="tedtwsdl.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="taddpart" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Adding a part to a message</title>
 </head>
 <body id="taddpart"><a name="taddpart"><!-- --></a>
@@ -27,6 +28,7 @@
 <h1 class="topictitle1">Adding a part to a message</h1>
 
 
+
 <div><p>All messages contain one or more parts. Parts are a flexible mechanism
 for describing the logical abstract content of a message. The message definition
 associates each part with a type using a message-typing attribute.</p>
@@ -35,14 +37,16 @@
 </div>
 
 <ol>
-<li class="stepexpand"><span>In Graph view, select the message you want to add a part to.</span>
-</li>
+<li class="stepexpand"><span>In Design view, right-click an input, output, or fault object and
+click <strong>Add Part</strong>. </span>  The part is added to the input,
+output, or fault's message reference.</li>
 
-<li class="stepexpand"><span>Right-click the message and click  <strong>Add Child &gt; Part</strong>.</span>
-</li>
+<li class="stepexpand"><span>To select the part, click the part in the port type
+object.</span></li>
 
-<li class="stepexpand"><span>Type the name of the part in the dialog.</span> Click <strong>OK</strong>.
-</li>
+<li class="stepexpand"><span>In the Properties view, click the <strong>General</strong> pane.</span></li>
+
+<li class="stepexpand"><span>In the <strong>Name</strong> field, type the name of the part.</span></li>
 
 <li class="stepexpand"><span>Your part can refer to either a <strong>type</strong> or an <strong>element</strong>.</span>
  Select the appropriate option from the <strong>Reference Kind</strong> list.
@@ -50,30 +54,26 @@
 
 <li class="stepexpand"><span>If you selected  <strong>type</strong> in the <strong>Reference Kind</strong> list,
 you now have the option of selecting an XML schema data type from the <strong>Type</strong> drop
-down list. The list of types comes from any available referenced XML schemas.</span>
- </li>
+down list.</span> The list of types comes from any available referenced
+XML schemas.</li>
 
 <li class="stepexpand"><span>If you selected <strong>element</strong> in the <strong>Reference Kind</strong> list,
-you now have the option of selecting an XML schema element from
-the  <strong>Element</strong> drop down list. The list of elements comes from any
-available referenced XML schemas.</span> </li>
+you now have the option of selecting an XML schema element from the  <strong>Element</strong> drop
+down list.</span> The list of elements comes from any available referenced
+XML schemas.</li>
 
 </ol>
 
 <div class="section"><p> <strong>Tip</strong>: You can also create a new part for your message using
 the Outline view. Under the  <strong>Messages</strong> folder, right-click your element
-and click  <strong>Add Child &gt; Part</strong>. Your part will automatically appear in
-the Outline view (under the  <strong>Messages</strong> folder), but it will only appear
-in the Graph view if the message you added it to currently does.</p>
+and click <strong>Add Part</strong>. Your part will automatically appear in the Outline
+view (under the <strong>Messages</strong> folder), but it will only appear in the Design
+view if the message you added it to currently does.</p>
 </div>
 
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-
 <div class="linklist"><strong>Related concepts</strong><br />
 
 <div><a href="../concepts/cwsdled.html" title="The WSDL editor allows you to easily and graphically create, modify, view, and validate WSDL files.">Editing WSDL files with the WSDL Editor</a></div></div>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddport.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddport.dita
index 77e75c9..e847290 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddport.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddport.dita
@@ -1,11 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="taddport" xml:lang="en-us">
 <title>Adding a port to a service</title>
 <shortdesc>A port defines an individual endpoint by specifying a single address
 for a binding. The port contains a 'binding' attribute that references a binding
 and an address element that provides a specification for the endpoint.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>adding ports</indexterm></indexterm><indexterm>Web
+services<indexterm>adding WSDL ports</indexterm></indexterm></keywords>
+</metadata></prolog><?Pub Caret?>
 <taskbody>
 <context><p>Services are used to group sets of related ports together. Ports
 within a service have the following relationship:</p><ul>
@@ -20,22 +25,30 @@
 operations needed to complete a given task.</li>
 </ul><p>To add a port to a service, follow these steps:</p></context>
 <steps>
-<step><cmd>In the Graph view, right-click the service you want to add a port
-to, then click  <b>Add Child > Port.</b></cmd></step>
-<step><cmd>Type the name of the port in the dialog.</cmd><info>Click <b>Finish</b>.
-The name of the port should provide it with a unique name amongst all the
-ports defined within the service.</info></step>
-<step><cmd>A  <b>Binding</b> defines the message format and protocol details
+<step><cmd>In the Design view, right-click the service you want to add a port
+to, then click <b>Add Port.</b> To select the new port, click the port in
+the service object.</cmd></step>
+<step><cmd>In the Properties view, click the <b>General</b> pane. In the <b>Name</b> field,
+type the name of the port.</cmd><info>The name of the port should provide
+it with a unique name amongst all the ports defined within the service.</info>
+</step>
+<step><cmd>A <b>Binding</b> defines the message format and protocol details
 for operations and messages defined by a particular port type.</cmd><info>You
-can either create a new binding for your port, re-use an existing one, or
-import one. Refer to the related tasks for more details.</info></step>
+can create a new binding for your port, re-use an existing one, or import
+one. Refer to the related tasks for more details.</info></step>
+<step><cmd>In the <b>Address</b> field, type the address of the port.</cmd>
+</step>
 <step><cmd>Type any information about the port you want the user to read in
-the  <b>Documentation</b> field.</cmd></step>
+the <b>Documentation</b> pane.</cmd></step>
+<step><cmd>To manage extensions, click the <b>Extensibility</b> pane. You
+can either add, sort, or remove extensions. <draft-comment>Refer to the related
+tasks for more details. Add link to XSD Editor in related tasks section.</draft-comment></cmd>
+</step>
 </steps>
 <result><p> <b>Tip</b>: You can also create a port using the Outline view
-by right-clicking your service under the  <b>Services</b> folder and clicking
- <b>Add Child > Port</b>. Your port (regardless of which view you create it
-in) will appear in both the Graph view and the Outline view.</p></result>
+by right-clicking your service under the <b>Services</b> folder and clicking <b>Add
+Port</b>. Your port (regardless of which view you create it in) will appear
+in both the Design view and the Outline view.</p></result>
 </taskbody>
 <related-links>
 <linklist><title>Related concepts</title>
@@ -47,3 +60,4 @@
 </linklist>
 </related-links>
 </task>
+<?Pub *0000003322?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddport.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddport.html
index 0f32b68..dbd031e 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddport.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddport.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,14 +11,15 @@
 <meta name="DC.Title" content="Adding a port to a service" />
 <meta name="abstract" content="A port defines an individual endpoint by specifying a single address for a binding. The port contains a 'binding' attribute that references a binding and an address element that provides a specification for the endpoint." />
 <meta name="description" content="A port defines an individual endpoint by specifying a single address for a binding. The port contains a 'binding' attribute that references a binding and an address element that provides a specification for the endpoint." />
-<meta scheme="URI" name="DC.Relation" content="../tasks/tedtwsdl.html" />
+<meta content="WSDL, adding ports, Web services, adding WSDL ports" name="DC.subject" />
+<meta content="WSDL, adding ports, Web services, adding WSDL ports" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdled.html" />
 <meta scheme="URI" name="DC.Relation" content="tcrtwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="tedtwsdl.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="taddport" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Adding a port to a service</title>
 </head>
 <body id="taddport"><a name="taddport"><!-- --></a>
@@ -27,6 +28,7 @@
 <h1 class="topictitle1">Adding a port to a service</h1>
 
 
+
 <div><p>A port defines an individual endpoint by specifying a single address
 for a binding. The port contains a 'binding' attribute that references a binding
 and an address element that provides a specification for the endpoint.</p>
@@ -51,36 +53,41 @@
 </div>
 
 <ol>
-<li class="stepexpand"><span>In the Graph view, right-click the service you want to add a port
-to, then click  <strong>Add Child &gt; Port.</strong></span></li>
+<li class="stepexpand"><span>In the Design view, right-click the service you want to add a port
+to, then click <strong>Add Port.</strong> To select the new port, click the port in
+the service object.</span></li>
 
-<li class="stepexpand"><span>Type the name of the port in the dialog.</span> Click <strong>Finish</strong>.
-The name of the port should provide it with a unique name amongst all the
-ports defined within the service.</li>
+<li class="stepexpand"><span>In the Properties view, click the <strong>General</strong> pane. In the <strong>Name</strong> field,
+type the name of the port.</span> The name of the port should provide
+it with a unique name amongst all the ports defined within the service.
+</li>
 
-<li class="stepexpand"><span>A  <strong>Binding</strong> defines the message format and protocol details
+<li class="stepexpand"><span>A <strong>Binding</strong> defines the message format and protocol details
 for operations and messages defined by a particular port type.</span> You
-can either create a new binding for your port, re-use an existing one, or
-import one. Refer to the related tasks for more details.</li>
+can create a new binding for your port, re-use an existing one, or import
+one. Refer to the related tasks for more details.</li>
+
+<li class="stepexpand"><span>In the <strong>Address</strong> field, type the address of the port.</span>
+</li>
 
 <li class="stepexpand"><span>Type any information about the port you want the user to read in
-the  <strong>Documentation</strong> field.</span></li>
+the <strong>Documentation</strong> pane.</span></li>
+
+<li class="stepexpand"><span>To manage extensions, click the <strong>Extensibility</strong> pane. You
+can either add, sort, or remove extensions. </span>
+</li>
 
 </ol>
 
 <div class="section"><p> <strong>Tip</strong>: You can also create a port using the Outline view
-by right-clicking your service under the  <strong>Services</strong> folder and clicking
- <strong>Add Child &gt; Port</strong>. Your port (regardless of which view you create it
-in) will appear in both the Graph view and the Outline view.</p>
+by right-clicking your service under the <strong>Services</strong> folder and clicking <strong>Add
+Port</strong>. Your port (regardless of which view you create it in) will appear
+in both the Design view and the Outline view.</p>
 </div>
 
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-
 <div class="linklist"><strong>Related concepts</strong><br />
 
 <div><a href="../concepts/cwsdled.html" title="The WSDL editor allows you to easily and graphically create, modify, view, and validate WSDL files.">Editing WSDL files with the WSDL Editor</a></div></div>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddsrvc.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddsrvc.dita
index 709f853..d13dbac 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddsrvc.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddsrvc.dita
@@ -1,29 +1,39 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="taddsrvc" xml:lang="en-us">
 <title>Adding a service</title>
 <shortdesc>The  <systemoutput>service</systemoutput> element is a collection
 of related ports and specifies the location of the service.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>adding services</indexterm></indexterm>
+<indexterm>Web services<indexterm>adding services to WSDL</indexterm></indexterm>
+</keywords>
+</metadata></prolog><?Pub Caret?>
 <taskbody>
 <context><p>To create a new service, follow these steps:</p></context>
 <steps>
-<step><cmd>In the Graph view, right-click in any blank space and click  <b>Add
-Child > Service</b>.</cmd></step>
-<step><cmd>Type the name of the service in the dialog.</cmd><info>The name
-of the service provides it with a unique name amongst all the services defined
-within in the enclosing WSDL document.</info></step>
-<step><cmd>Click  <b>OK</b>.</cmd></step>
+<step><cmd>In the Design view, right-click in any blank space and click <b>Add
+Service</b>. To select the new service, click the service object.</cmd></step>
+<step><cmd>In the Properties view, click the <b>General</b> pane. In the <b>Name</b> field,
+type the name of the service.</cmd><info>The name of the service provides
+it with a unique name amongst all the services defined within in the enclosing
+WSDL document.</info></step>
 <step><cmd>Type any information about the service you want the user to read
-in the  <b>Documentation</b> pane.</cmd></step>
+in the <b>Documentation</b> pane.</cmd></step>
+<step><cmd>To manage extensions, click the <b>Extensibility</b> pane. You
+can either add, sort, or remove extensions.<draft-comment> Refer to the related
+tasks for more details. Add link to the XSD Editor plugin topic for "Adding
+extension components"</draft-comment></cmd></step>
 </steps>
 <result><p> <b>Tip</b>: You can also create a service using the Outline view
-by right-clicking the  <b>Services</b> folder and clicking  <b>Add Child >
-Service</b>.</p><p>You can now add a port to your service. A port defines
-an individual endpoint by specifying a single address for a binding.</p></result>
+by right-clicking the <b>Services</b> folder and clicking <b>Add Service</b>.</p><p>You
+can now add a port to your service. A port defines an individual endpoint
+by specifying a single address for a binding.</p></result>
 </taskbody>
 <related-links>
-<linklist><title>Related concepts</title><?Pub Caret?>
+<linklist><title>Related concepts</title>
 <link href="../concepts/cwsdled.dita" scope="local"></link>
 </linklist>
 <linklist><title>Related tasks</title>
@@ -32,4 +42,4 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000001613?>
+<?Pub *0000002157?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddsrvc.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddsrvc.html
index ee23f10..7a8acb3 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddsrvc.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/taddsrvc.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,14 +11,15 @@
 <meta name="DC.Title" content="Adding a service" />
 <meta name="abstract" content="The service element is a collection of related ports and specifies the location of the service." />
 <meta name="description" content="The service element is a collection of related ports and specifies the location of the service." />
-<meta scheme="URI" name="DC.Relation" content="../tasks/tedtwsdl.html" />
+<meta content="WSDL, adding services, Web services, adding services to WSDL" name="DC.subject" />
+<meta content="WSDL, adding services, Web services, adding services to WSDL" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdled.html" />
 <meta scheme="URI" name="DC.Relation" content="tcrtwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="tedtwsdl.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="taddsrvc" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Adding a service</title>
 </head>
 <body id="taddsrvc"><a name="taddsrvc"><!-- --></a>
@@ -27,6 +28,7 @@
 <h1 class="topictitle1">Adding a service</h1>
 
 
+
 <div><p>The  <tt class="sysout">service</tt> element is a collection
 of related ports and specifies the location of the service.</p>
 
@@ -34,34 +36,32 @@
 </div>
 
 <ol>
-<li class="stepexpand"><span>In the Graph view, right-click in any blank space and click  <strong>Add
-Child &gt; Service</strong>.</span></li>
+<li class="stepexpand"><span>In the Design view, right-click in any blank space and click <strong>Add
+Service</strong>. To select the new service, click the service object.</span></li>
 
-<li class="stepexpand"><span>Type the name of the service in the dialog.</span> The name
-of the service provides it with a unique name amongst all the services defined
-within in the enclosing WSDL document.</li>
-
-<li class="stepexpand"><span>Click  <strong>OK</strong>.</span></li>
+<li class="stepexpand"><span>In the Properties view, click the <strong>General</strong> pane. In the <strong>Name</strong> field,
+type the name of the service.</span> The name of the service provides
+it with a unique name amongst all the services defined within in the enclosing
+WSDL document.</li>
 
 <li class="stepexpand"><span>Type any information about the service you want the user to read
-in the  <strong>Documentation</strong> pane.</span></li>
+in the <strong>Documentation</strong> pane.</span></li>
+
+<li class="stepexpand"><span>To manage extensions, click the <strong>Extensibility</strong> pane. You
+can either add, sort, or remove extensions.</span></li>
 
 </ol>
 
 <div class="section"><p> <strong>Tip</strong>: You can also create a service using the Outline view
-by right-clicking the  <strong>Services</strong> folder and clicking  <strong>Add Child &gt;
-Service</strong>.</p>
-<p>You can now add a port to your service. A port defines
-an individual endpoint by specifying a single address for a binding.</p>
+by right-clicking the <strong>Services</strong> folder and clicking <strong>Add Service</strong>.</p>
+<p>You
+can now add a port to your service. A port defines an individual endpoint
+by specifying a single address for a binding.</p>
 </div>
 
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-
 <div class="linklist"><strong>Related concepts</strong><br />
 
 <div><a href="../concepts/cwsdled.html" title="The WSDL editor allows you to easily and graphically create, modify, view, and validate WSDL files.">Editing WSDL files with the WSDL Editor</a></div></div>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtimpt.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtimpt.dita
index ccec731..2c5fa53 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtimpt.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtimpt.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tcrtimpt" xml:lang="en-us">
 <title>Creating an import statement</title>
 <shortdesc>The import statement is used to import other WSDL documents or
@@ -10,22 +11,30 @@
 which can then be imported as needed. This technique helps in writing clearer
 service definitions, by separating the definitions according to their level
 of abstraction.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>adding import statements</indexterm></indexterm>
+<indexterm>Web services<indexterm>adding WSDL import statements</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
-<context><p>To create an import statement, follow these steps:</p></context>
+<context><?Pub Caret?><p>To create an import statement, follow these steps:</p></context>
 <steps>
-<step><cmd>In the Graph view, right-click the  <b>Imports</b> group and click
- <b>Add Child > Import.</b></cmd></step>
-<step><cmd>Select your new import statement.</cmd></step>
-<step><cmd>Specify the  <b>namespace</b> of the document you wish to import,
-then specify the  <b>location</b> of the document you wish to import.</cmd>
-</step>
+<step><cmd>In the Outline view, right-click the <b>Imports</b> folder and
+click <b>Add Import.</b> Select your new import statement.</cmd></step>
+<step><cmd>In the Properties view, click the <b>General</b> pane.</cmd></step>
+<step><cmd>Click the icon to the right of the <b>Location</b> field.</cmd>
+<stepresult>A "Select file" window opens.</stepresult></step>
+<step><cmd>Select the WSDL file or XML Schema file you wish to import. Click <b>OK</b>.<draft-comment>Send
+for final sign-off</draft-comment></cmd></step>
+<step><cmd>Type any information about the import statement you wish the user
+to read in the <b>Documentation</b> pane.</cmd></step>
 </steps>
 <result>Once you specify the location of the document you wish to import,
 the import object's label changes to reflect the specified location. Imported
 WSDL components may now be visible within the editor.</result>
 </taskbody>
 <related-links>
-<linklist><title>Related concepts</title><?Pub Caret?>
+<linklist><title>Related concepts</title>
 <link href="../concepts/cwsdled.dita" scope="local"></link>
 </linklist>
 <linklist><title>Related tasks</title>
@@ -34,4 +43,4 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000001728?>
+<?Pub *0000002258?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtimpt.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtimpt.html
index bbda93d..8a49410 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtimpt.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtimpt.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,14 +11,15 @@
 <meta name="DC.Title" content="Creating an import statement" />
 <meta name="abstract" content="The import statement is used to import other WSDL documents or XML schemas into your WSDL document. This enables you to have more modular WSDL documents. The use of the import statement allows the separation of the different elements of a service definition into independent documents, which can then be imported as needed. This technique helps in writing clearer service definitions, by separating the definitions according to their level of abstraction." />
 <meta name="description" content="The import statement is used to import other WSDL documents or XML schemas into your WSDL document. This enables you to have more modular WSDL documents. The use of the import statement allows the separation of the different elements of a service definition into independent documents, which can then be imported as needed. This technique helps in writing clearer service definitions, by separating the definitions according to their level of abstraction." />
-<meta scheme="URI" name="DC.Relation" content="../tasks/tedtwsdl.html" />
+<meta content="WSDL, adding import statements, Web services, adding WSDL import statements" name="DC.subject" />
+<meta content="WSDL, adding import statements, Web services, adding WSDL import statements" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdled.html" />
 <meta scheme="URI" name="DC.Relation" content="tcrtwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="tedtwsdl.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tcrtimpt" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Creating an import statement</title>
 </head>
 <body id="tcrtimpt"><a name="tcrtimpt"><!-- --></a>
@@ -27,6 +28,7 @@
 <h1 class="topictitle1">Creating an import statement</h1>
 
 
+
 <div><p>The import statement is used to import other WSDL documents or
 XML schemas into your WSDL document. This enables you to have more modular
 WSDL documents. The use of the  <strong>import</strong> statement allows the separation
@@ -39,14 +41,18 @@
 </div>
 
 <ol>
-<li><span>In the Graph view, right-click the  <strong>Imports</strong> group and click
- <strong>Add Child &gt; Import.</strong></span></li>
+<li class="stepexpand"><span>In the Outline view, right-click the <strong>Imports</strong> folder and
+click <strong>Add Import.</strong> Select your new import statement.</span></li>
 
-<li><span>Select your new import statement.</span></li>
+<li class="stepexpand"><span>In the Properties view, click the <strong>General</strong> pane.</span></li>
 
-<li><span>Specify the  <strong>namespace</strong> of the document you wish to import,
-then specify the  <strong>location</strong> of the document you wish to import.</span>
-</li>
+<li class="stepexpand"><span>Click the icon to the right of the <strong>Location</strong> field.</span>
+ A "Select file" window opens.</li>
+
+<li class="stepexpand"><span>Select the WSDL file or XML Schema file you wish to import. Click <strong>OK</strong>.</span></li>
+
+<li class="stepexpand"><span>Type any information about the import statement you wish the user
+to read in the <strong>Documentation</strong> pane.</span></li>
 
 </ol>
 
@@ -57,10 +63,6 @@
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-
 <div class="linklist"><strong>Related concepts</strong><br />
 
 <div><a href="../concepts/cwsdled.html" title="The WSDL editor allows you to easily and graphically create, modify, view, and validate WSDL files.">Editing WSDL files with the WSDL Editor</a></div></div>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrttype.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrttype.dita
index 00f17d3..2030446 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrttype.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrttype.dita
@@ -1,44 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tcrttype" xml:lang="en-us">
 <title>Creating a new type for your WSDL file</title>
 <shortdesc>Types describe all the data types used between the client and server.
 WSDL is not tied exclusively to a specific typing system, but it uses the
 W3C XML Schema specification as its default choice.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>creating types</indexterm></indexterm>
+<indexterm>Web services<indexterm>creating WSDL types</indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
-<context><p>WSDL allows type systems to be added via extensibility elements.
+<context><p>WSDL allows type systems to be added via extensibility el<?Pub Caret?>ements.
 An extensibility element may appear under the  <b>types</b> element to identify
 the type definition system being used and to provide an XML container element
-for the type definitions.</p><p>To add an extensibility element to your WSDL
-file, follow these steps:</p></context>
-<steps>
-<step><cmd>In the Graph view right-click the  <b>Types</b> group.</cmd></step>
-<step><cmd>Click  <b>Add Child</b> >  <b>Add Schema</b>.&nbsp; You will be
-creating an inline schema - a schema that is defined directly within the WSDL
-file.</cmd><info></info></step>
-<step><cmd>A schema object will appear in the group.</cmd><info>Select it.</info>
-</step>
-<step><cmd>The following information about your schema is listed:  </cmd>
-<info><ul>
-<li> <b>Prefix</b> - The prefix associated with the current namespace</li>
-<li> <b>URI</b> - the target namespace for the schema</li>
-<li>Other attributes, such as  <b>version</b>,  <b>language</b>, and  <b>attribute
-form</b>.</li>
-</ul> You can manually modify the value of any of these attributes.</info>
-</step>
-<step><cmd>You can also add new components to your XML schema. In the Graph
-view, press the arrow icon to the left of the schema object to drill down
-into the schema.</cmd><info> Now you can edit the schema within the graph
-view. When finished, press the <uicontrol>Back</uicontrol> button at the top
-left of the WSDL editor to return to the definition view of the WSDL document.</info>
-</step>
-</steps>
+for the type definitions.</p><p>To add an XSD type or element to your WSDL
+file:</p></context>
+<steps-unordered>
+<step><cmd>In the Design view, click the indicator icon to the right of the
+port type object to drill down into the schema. Now you can edit the schema
+in the XML schema editor.</cmd></step>
+</steps-unordered>
 <result><p>For more information about XML schemas, refer to the XML schema
 editor online documentation.</p></result>
 </taskbody>
 <related-links>
-<linklist><title>Related concepts</title><?Pub Caret?>
+<linklist><title>Related concepts</title>
 <link href="../concepts/cwsdled.dita" scope="local"></link>
 </linklist>
 <linklist><title>Related tasks</title>
@@ -47,4 +36,4 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002458?>
+<?Pub *0000001697?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrttype.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrttype.html
index a9c4db2..7b2977c 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrttype.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrttype.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,14 +11,15 @@
 <meta name="DC.Title" content="Creating a new type for your WSDL file" />
 <meta name="abstract" content="Types describe all the data types used between the client and server. WSDL is not tied exclusively to a specific typing system, but it uses the W3C XML Schema specification as its default choice." />
 <meta name="description" content="Types describe all the data types used between the client and server. WSDL is not tied exclusively to a specific typing system, but it uses the W3C XML Schema specification as its default choice." />
-<meta scheme="URI" name="DC.Relation" content="../tasks/tedtwsdl.html" />
+<meta content="WSDL, creating types, Web services, creating WSDL types" name="DC.subject" />
+<meta content="WSDL, creating types, Web services, creating WSDL types" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdled.html" />
 <meta scheme="URI" name="DC.Relation" content="tcrtwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="tedtwsdl.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tcrttype" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Creating a new type for your WSDL file</title>
 </head>
 <body id="tcrttype"><a name="tcrttype"><!-- --></a>
@@ -27,6 +28,7 @@
 <h1 class="topictitle1">Creating a new type for your WSDL file</h1>
 
 
+
 <div><p>Types describe all the data types used between the client and server.
 WSDL is not tied exclusively to a specific typing system, but it uses the
 W3C XML Schema specification as its default choice.</p>
@@ -35,41 +37,15 @@
 An extensibility element may appear under the  <strong>types</strong> element to identify
 the type definition system being used and to provide an XML container element
 for the type definitions.</p>
-<p>To add an extensibility element to your WSDL
-file, follow these steps:</p>
+<p>To add an XSD type or element to your WSDL
+file:</p>
 </div>
 
-<ol>
-<li class="stepexpand"><span>In the Graph view right-click the  <strong>Types</strong> group.</span></li>
 
-<li class="stepexpand"><span>Click  <strong>Add Child</strong> &gt;  <strong>Add Schema</strong>.  You will be
-creating an inline schema - a schema that is defined directly within the WSDL
-file.</span> </li>
+<div class="p"><span>In the Design view, click the indicator icon to the right of the
+port type object to drill down into the schema. Now you can edit the schema
+in the XML schema editor.</span></div>
 
-<li class="stepexpand"><span>A schema object will appear in the group.</span> Select it.
-</li>
-
-<li class="stepexpand"><span>The following information about your schema is listed:  </span>
- <ul>
-<li> <strong>Prefix</strong> - The prefix associated with the current namespace</li>
-
-<li> <strong>URI</strong> - the target namespace for the schema</li>
-
-<li>Other attributes, such as  <strong>version</strong>,  <strong>language</strong>, and  <strong>attribute
-form</strong>.</li>
-
-</ul>
- You can manually modify the value of any of these attributes.
-</li>
-
-<li class="stepexpand"><span>You can also add new components to your XML schema. In the Graph
-view, press the arrow icon to the left of the schema object to drill down
-into the schema.</span>  Now you can edit the schema within the graph
-view. When finished, press the <span class="uicontrol">Back</span> button at the top
-left of the WSDL editor to return to the definition view of the WSDL document.
-</li>
-
-</ol>
 
 <div class="section"><p>For more information about XML schemas, refer to the XML schema
 editor online documentation.</p>
@@ -78,10 +54,6 @@
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-
 <div class="linklist"><strong>Related concepts</strong><br />
 
 <div><a href="../concepts/cwsdled.html" title="The WSDL editor allows you to easily and graphically create, modify, view, and validate WSDL files.">Editing WSDL files with the WSDL Editor</a></div></div>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.dita
index 3c703c3..d432bed 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.dita
@@ -1,10 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
-<task id="tcrtwsdl" xml:lang="en-us"><?Pub Caret?>
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
+<task id="tcrtwsdl" xml:lang="en-us">
 <title>Creating a new WSDL file</title>
 <shortdesc>You can create a new, empty WSDL file, then edit it using the WSDL
 editor.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>creating</indexterm></indexterm><indexterm>Web
+services<indexterm>creating WSDL</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
 <context><p>To create a WSDL file, follow these steps:</p></context>
 <steps>
@@ -33,21 +38,43 @@
 ports and messages. You can then modify these to meet the requirements of
 your Web service.</info></substep>
 <substep><cmd>If you have chosen to create a WSDL skeleton, select the binding
-options you want to use in the WSDL document. The options are SOAP and HTTP.</cmd>
-<info> If you select SOAP you can then select the encoding style you want
-to use. If you select HTTP you can select whether to create an HTTP getter
-or setter.</info></substep>
+options you want to use in the WSDL document. The options are SOAP and HTTP.
+Use the SOAP protocol when you want to exchange structured and typed information.
+Use the HTTP protocol when you want your application client to just request
+or update information<?Pub Caret?>.</cmd><info> If you select SOAP you can
+then select the encoding style you want to use.<ul>
+<li><b>Document literal</b>. Document style messages, literal encoding. Use
+this style of binding when you want to send SOAP messages that can be validated
+by an XML validator.  All the data types in the SOAP message body are defined
+in a schema, so the WSDL parts must point to schema elements. </li>
+<li><b>RPC literal</b>. RPC style messages, literal encoding. Use this style
+of binding when you want to specify the operation method names in your SOAP
+messages so a server can dispatch the specified methods.  Data types must
+be defined, so the WSDL parts must point to XSD types.</li>
+<li><b>RPC encoded</b>. RPC style messages and SOAP encoding. Use this style
+of binding when you want to encode data graphs in your SOAP messages so a
+server can deserialize the object data.  Data types must be defined, so the
+WSDL parts must point to XSD types.</li>
+</ul> If you select HTTP you can select whether to create an HTTP getter or
+setter.<ul>
+<li><b>HTTP GET</b>. A GET request fetches data from a Web server based on
+an URL value and a set of HTTP headers. Use this method when you want to retrieve
+information specified in the request. </li>
+<li><b>HTTP POST</b>. A POST request sends additional data to the server,
+specified after the URL and the headers. Use this method when you want to
+send data enclosed in the body of the request.</li>
+</ul></info></substep>
 </substeps>
 </step>
 <step><cmd>Click  <b>Finish</b>.</cmd><info>The WSDL file opens in the WSDL
 editor.</info></step>
 </steps>
 <result><p>If you created a WSDL file with a skeleton using SOAP bindings,
-it should look similar to the following:<image alt="Image of a WSDL skeleton using SOAP bindings"
+it should look similar to the following:</p><p><image alt="Image of a WSDL skeleton using SOAP bindings"
 href="../images/soapskel.gif" placement="break"></image></p><p>If you created
 a WSDL file with a skeleton using HTTP bindings, it should look similar to
-the following:<image alt="Image of a WSDL skeleton using HTTP bindings" href="../images/httpskel.gif"
-placement="break"></image></p></result>
+the following:</p><p><image alt="Image of a WSDL skeleton using HTTP bindings"
+href="../images/httpskel.gif" placement="break"></image></p></result>
 </taskbody>
 <related-links>
 <linklist><title>Related concepts</title>
@@ -61,4 +88,4 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000003334?>
+<?Pub *0000004991?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.html
index cf4021e..e9fb000 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tcrtwsdl.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,6 +11,8 @@
 <meta name="DC.Title" content="Creating a new WSDL file" />
 <meta name="abstract" content="You can create a new, empty WSDL file, then edit it using the WSDL editor." />
 <meta name="description" content="You can create a new, empty WSDL file, then edit it using the WSDL editor." />
+<meta content="WSDL, creating, Web services, creating WSDL" name="DC.subject" />
+<meta content="WSDL, creating, Web services, creating WSDL" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdled.html" />
 <meta scheme="URI" name="DC.Relation" content="timpwsdl.html" />
@@ -18,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="tcrtwsdl" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Creating a new WSDL file</title>
 </head>
 <body id="tcrtwsdl"><a name="tcrtwsdl"><!-- --></a>
@@ -27,6 +29,7 @@
 <h1 class="topictitle1">Creating a new WSDL file</h1>
 
 
+
 <div><p>You can create a new, empty WSDL file, then edit it using the WSDL
 editor.</p>
 
@@ -66,10 +69,39 @@
 your Web service.</li>
 
 <li class="substepexpand"><span>If you have chosen to create a WSDL skeleton, select the binding
-options you want to use in the WSDL document. The options are SOAP and HTTP.</span>
-  If you select SOAP you can then select the encoding style you want
-to use. If you select HTTP you can select whether to create an HTTP getter
-or setter.</li>
+options you want to use in the WSDL document. The options are SOAP and HTTP.
+Use the SOAP protocol when you want to exchange structured and typed information.
+Use the HTTP protocol when you want your application client to just request
+or update information.</span>  If you select SOAP you can
+then select the encoding style you want to use.<ul>
+<li><strong>Document literal</strong>. Document style messages, literal encoding. Use
+this style of binding when you want to send SOAP messages that can be validated
+by an XML validator.  All the data types in the SOAP message body are defined
+in a schema, so the WSDL parts must point to schema elements. </li>
+
+<li><strong>RPC literal</strong>. RPC style messages, literal encoding. Use this style
+of binding when you want to specify the operation method names in your SOAP
+messages so a server can dispatch the specified methods.  Data types must
+be defined, so the WSDL parts must point to XSD types.</li>
+
+<li><strong>RPC encoded</strong>. RPC style messages and SOAP encoding. Use this style
+of binding when you want to encode data graphs in your SOAP messages so a
+server can deserialize the object data.  Data types must be defined, so the
+WSDL parts must point to XSD types.</li>
+
+</ul>
+ If you select HTTP you can select whether to create an HTTP getter or
+setter.<ul>
+<li><strong>HTTP GET</strong>. A GET request fetches data from a Web server based on
+an URL value and a set of HTTP headers. Use this method when you want to retrieve
+information specified in the request. </li>
+
+<li><strong>HTTP POST</strong>. A POST request sends additional data to the server,
+specified after the URL and the headers. Use this method when you want to
+send data enclosed in the body of the request.</li>
+
+</ul>
+</li>
 
 </ol>
 
@@ -81,10 +113,12 @@
 </ol>
 
 <div class="section"><p>If you created a WSDL file with a skeleton using SOAP bindings,
-it should look similar to the following:<br /><img src="../images/soapskel.gif" alt="Image of a WSDL skeleton using SOAP bindings" /><br /></p>
+it should look similar to the following:</p>
+<p><br /><img src="../images/soapskel.gif" alt="Image of a WSDL skeleton using SOAP bindings" /><br /></p>
 <p>If you created
 a WSDL file with a skeleton using HTTP bindings, it should look similar to
-the following:<br /><img src="../images/httpskel.gif" alt="Image of a WSDL skeleton using HTTP bindings" /><br /></p>
+the following:</p>
+<p><br /><img src="../images/httpskel.gif" alt="Image of a WSDL skeleton using HTTP bindings" /><br /></p>
 </div>
 
 </div>
@@ -97,7 +131,7 @@
 
 <div class="linklist"><strong>Related tasks</strong><br />
 
-<div><a href="timpwsdl.html" title="">Importing a WSDL file</a></div>
+<div><a href="timpwsdl.html" title="You can import WSDL files into the workbench and open them in the WSDL editor. Opening them in the WSDL editor provides you with an opportunity to have a structured viewing of the WSDL file.">Importing a WSDL file</a></div>
 <div><a href="tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div></div>
 </div>
 
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tedtwsdl.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tedtwsdl.dita
index 0257fb9..310ce51 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tedtwsdl.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tedtwsdl.dita
@@ -1,11 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tedtwsdl" xml:lang="en-us">
 <title>Editing WSDL files</title>
 <shortdesc>Once you have created a WSDL file, you can edit it in the WSDL
 editor. You can also import WSDL files you have created into the workbench
 and edit them in the WSDL editor.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>editing</indexterm></indexterm><indexterm>Web
+services<indexterm>editing WSDL</indexterm></indexterm></keywords>
+</metadata></prolog><?Pub Caret?>
 <taskbody>
 <context><p>To open a WSDL file in the WSDL editor, double-click it in the
 Navigator view or right-click it and click  <b>Open With > WSDL Editor.</b></p></context>
@@ -20,36 +25,43 @@
 <step><cmd>Select the source code you want to edit.</cmd></step>
 </steps>
 <result><p>At any time, you can switch to the Source view to review the source
-for the WSDL file. You can also edit your WSDL file directly in the Source
+code of the WSDL file. You can also edit your WSDL file directly in the Source
 view.</p></result>
 </taskbody>
 </task>
 <task id="editeditview">
-<title>Editing in the Graph view</title>
+<title>Editing in the Design view</title>
 <taskbody>
-<context><p>The Graph view provides a graphical way to browse and edit your
-WSDL file. Each type of top level wsdl object is shown within a group (for
-example service, port type, message). Within each group is a tree view that
-can be used to browse the structure of the object. The service, binding, port
-type and message groups are 'linked'. If for example we select an input in
-the port types, we'll notice that the message that is referenced by this message
-is scrolled into view in the messages group. A line displays to denote a reference
+<context><p>The Design view provides a graphical way to browse and edit your
+WSDL file. Each type of top level wsdl object is shown within a tabular view
+(for example, service, binding, port type). Each tabular view contains one
+or more rows that represent the structure of the object. The service, binding,
+and port type objects are 'linked'. A line displays to denote a reference
 (or association) between these objects.</p><p> <image alt="Image of a WSDL file open in the WSDL editor"
-href="../images/wsdleditor.gif" placement="break"></image> </p></context>
+href="../images/wsdleditor.gif" placement="break"></image></p></context>
 </taskbody>
 </task>
-<task id="showbndgraph">
-<title>Showing Bindings in the Graph view</title>
+<task id="editpropertiesview">
+<title>Editing in the Properties view</title>
 <taskbody>
-<context>By default bindings are shown in the Graph View. Select the show/hide
-binding button at the top left of the Graph View to hide the bindings. With
+<context><p>The Properties view displays a list of attributes and editable
+attribute values of a selected wsdl object.</p><p>The Properties view contains
+the following panes (by clicking and selecting the appropriate pane) to edit:</p><ul>
+<li> <b>General</b> pane, which displays a list of object attributes.</li>
+<li> <b>Documentation</b> pane, which specifies the information you want the
+user to read.</li>
+<li> <b>Extensibility</b> pane, which is used to add extension components.</li>
+</ul><draft-comment> [Legacy Title] Showing Bindings in the Design [Legacy
+Context]By default bindings are shown in the Design View. Select the show/hide
+binding button at the top left of the Design View to hide the bindings. With
 the bindings hidden a service can be browsed from a purely abstract level
 without showing binding information. When the need arises to understand the
 concrete details represented by the binding, select the show/hide binding
-button again to make them visible.</context>
+button again to make them visible. view [Writer comments] Remove topic "Showing
+bindings..." because there is no show/hide binding function in the new GUI</draft-comment></context>
 </taskbody>
 </task>
-<task id="editoutlineview">
+<task id="editoutlineview" xml:lang="en-us">
 <title>Editing in the Outline view</title>
 <taskbody>
 <context><p>The Outline view will show you all the items in your WSDL file
@@ -59,16 +71,15 @@
 <li> <b>Imports</b>&nbsp;statements, which are used to associate a namespace
 with a document location.</li>
 <li> <b>Types</b>, which provide data type definitions used to describe the
-messages exchanged.&nbsp; You cannot edit any types directly using this folder.</li>
+messages exchanged. You cannot edit any types directly using this folder.</li>
+<li> <b>Services</b>, which are used to aggregate a set of related ports.</li>
+<li> <b>Bindings</b>, which specify concrete protocol and data format specifications
+for the operations and messages defined by a particular port type.</li>
+<li> <b>Port Types</b>, which are a set of abstract operations. Each operation
+refers to an input message and output messages. </li>
 <li> <b>Messages</b>, which represent an abstract definition of the data being
 transmitted. A message consists of logical parts, each of which is associated
 with a definition within some type system.</li>
-<li> <b>Port Types</b>, which are a set of abstract operations. Each operation
-refers to an input message and output messages.</li>
-<li> <b>Bindings</b>, which specify concrete protocol and data format specifications
-for the operations and messages defined by a particular port type.</li>
-<li> <b>Services</b>, which are used to aggregate a set of related ports <image
-alt="" href="../images/show-hide-binding.gif"></image> </li>
 </ul></context>
 </taskbody>
 <related-links>
@@ -84,3 +95,4 @@
 </related-links>
 </task>
 </task>
+<?Pub *0000004972?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tedtwsdl.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tedtwsdl.html
index 6270567..8fbece6 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tedtwsdl.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tedtwsdl.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,10 +11,12 @@
 <meta name="DC.Title" content="Editing WSDL files" />
 <meta name="abstract" content="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor." />
 <meta name="description" content="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor." />
+<meta content="WSDL, editing, Web services, editing WSDL" name="DC.subject" />
+<meta content="WSDL, editing, Web services, editing WSDL" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tedtwsdl" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Editing WSDL files</title>
 </head>
 <body id="tedtwsdl"><a name="tedtwsdl"><!-- --></a>
@@ -23,6 +25,7 @@
 <h1 class="topictitle1">Editing WSDL files</h1>
 
 
+
 <div><p>Once you have created a WSDL file, you can edit it in the WSDL
 editor. You can also import WSDL files you have created into the workbench
 and edit them in the WSDL editor.</p>
@@ -49,7 +52,7 @@
 </ol>
 
 <div class="section"><p>At any time, you can switch to the Source view to review the source
-for the WSDL file. You can also edit your WSDL file directly in the Source
+code of the WSDL file. You can also edit your WSDL file directly in the Source
 view.</p>
 </div>
 
@@ -58,40 +61,46 @@
 </div>
 
 <div class="nested1" id="editeditview"><a name="editeditview"><!-- --></a>
-<h2 class="topictitle2">Editing in the Graph view</h2>
+<h2 class="topictitle2">Editing in the Design view</h2>
 
 <div>
-<div class="section"><p>The Graph view provides a graphical way to browse and edit your
-WSDL file. Each type of top level wsdl object is shown within a group (for
-example service, port type, message). Within each group is a tree view that
-can be used to browse the structure of the object. The service, binding, port
-type and message groups are 'linked'. If for example we select an input in
-the port types, we'll notice that the message that is referenced by this message
-is scrolled into view in the messages group. A line displays to denote a reference
+<div class="section"><p>The Design view provides a graphical way to browse and edit your
+WSDL file. Each type of top level wsdl object is shown within a tabular view
+(for example, service, binding, port type). Each tabular view contains one
+or more rows that represent the structure of the object. The service, binding,
+and port type objects are 'linked'. A line displays to denote a reference
 (or association) between these objects.</p>
-<p> <br /><img src="../images/wsdleditor.gif" alt="Image of a WSDL file open in the WSDL editor" /><br /> </p>
+<p> <br /><img src="../images/wsdleditor.gif" alt="Image of a WSDL file open in the WSDL editor" /><br /></p>
 </div>
 
 </div>
 
 </div>
 
-<div class="nested1" id="showbndgraph"><a name="showbndgraph"><!-- --></a>
-<h2 class="topictitle2">Showing Bindings in the Graph view</h2>
+<div class="nested1" id="editpropertiesview"><a name="editpropertiesview"><!-- --></a>
+<h2 class="topictitle2">Editing in the Properties view</h2>
 
 <div>
-<div class="section">By default bindings are shown in the Graph View. Select the show/hide
-binding button at the top left of the Graph View to hide the bindings. With
-the bindings hidden a service can be browsed from a purely abstract level
-without showing binding information. When the need arises to understand the
-concrete details represented by the binding, select the show/hide binding
-button again to make them visible.</div>
+<div class="section"><p>The Properties view displays a list of attributes and editable
+attribute values of a selected wsdl object.</p>
+<p>The Properties view contains
+the following panes (by clicking and selecting the appropriate pane) to edit:</p>
+<ul>
+<li> <strong>General</strong> pane, which displays a list of object attributes.</li>
+
+<li> <strong>Documentation</strong> pane, which specifies the information you want the
+user to read.</li>
+
+<li> <strong>Extensibility</strong> pane, which is used to add extension components.</li>
+
+</ul>
+</div>
 
 </div>
 
 </div>
 
-<div class="nested1" id="editoutlineview"><a name="editoutlineview"><!-- --></a>
+<div class="nested1" xml:lang="en-us" id="editoutlineview"><a name="editoutlineview"><!-- --></a>
 <h2 class="topictitle2">Editing in the Outline view</h2>
 
 <div>
@@ -105,19 +114,19 @@
 with a document location.</li>
 
 <li> <strong>Types</strong>, which provide data type definitions used to describe the
-messages exchanged.  You cannot edit any types directly using this folder.</li>
+messages exchanged. You cannot edit any types directly using this folder.</li>
 
-<li> <strong>Messages</strong>, which represent an abstract definition of the data being
-transmitted. A message consists of logical parts, each of which is associated
-with a definition within some type system.</li>
-
-<li> <strong>Port Types</strong>, which are a set of abstract operations. Each operation
-refers to an input message and output messages.</li>
+<li> <strong>Services</strong>, which are used to aggregate a set of related ports.</li>
 
 <li> <strong>Bindings</strong>, which specify concrete protocol and data format specifications
 for the operations and messages defined by a particular port type.</li>
 
-<li> <strong>Services</strong>, which are used to aggregate a set of related ports <img src="../images/show-hide-binding.gif" alt="" /> </li>
+<li> <strong>Port Types</strong>, which are a set of abstract operations. Each operation
+refers to an input message and output messages. </li>
+
+<li> <strong>Messages</strong>, which represent an abstract definition of the data being
+transmitted. A message consists of logical parts, each of which is associated
+with a definition within some type system.</li>
 
 </ul>
 </div>
@@ -133,7 +142,7 @@
 <div class="linklist"><strong>Related tasks</strong><br />
 
 <div><a href="tcrtwsdl.html" title="You can create a new, empty WSDL file, then edit it using the WSDL editor.">Creating a new WSDL file</a></div>
-<div><a href="timpwsdl.html" title="">Importing a WSDL file</a></div></div>
+<div><a href="timpwsdl.html" title="You can import WSDL files into the workbench and open them in the WSDL editor. Opening them in the WSDL editor provides you with an opportunity to have a structured viewing of the WSDL file.">Importing a WSDL file</a></div></div>
 </div>
 </div>
 
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/timpwsdl.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/timpwsdl.dita
index 40ec690..2510793 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/timpwsdl.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/timpwsdl.dita
@@ -1,29 +1,35 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="timpwsdl" xml:lang="en-us">
 <title>Importing a WSDL file</title>
 <titlealts>
 <searchtitle>Importing WSDL files</searchtitle>
 </titlealts>
+<shortdesc>You can import WSDL files into the workbench and open them in the
+WSDL editor. Opening them in the WSDL editor provides you with an opportunity
+to have a structured viewing of the WSDL file.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>importing</indexterm></indexterm><indexterm>Web
+services<indexterm>importing WSDL</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
 <context><p>The Web Service wizard assists you in creating a new Web service
 from a WSDL file. You must first create or import a WSDL file. A WSDL file
 can be created using the WSDL editor. This is described in:  <xref href="../tasks/tcrtwsdl.dita"
 scope="peer">Creating a new WSDL file</xref>. To import a WSDL file follow
-the instructions below.</p><p>You can import WSDL files into the workbench
-and open them in the WSDL editor. Opening them in the WSDL editor provides
-you with an opportunity to have a structured viewing of the WSDL file.</p><p> <uicontrol>Prerequisite:</uicontrol> Create
+the instructions below.</p><p> <uicontrol>Prerequisite:</uicontrol> Create
 a project. It is recommend that you create a Web project so that the WSDL
 can be easily used to generate additional artifacts and deployed.</p><p>For
 more information on creating a Web project, refer to the Web application development
 documentation.</p><p>To import a WSDL file to your Web project:</p></context>
 <steps>
-<step><cmd>Select your project in the J2EE Navigator pane, and from the  <uicontrol>File</uicontrol> menu,
-select  <uicontrol>Import</uicontrol>.</cmd></step>
-<step><cmd>Select  <uicontrol>File System</uicontrol> and click  <uicontrol>Next</uicontrol>.</cmd>
+<step><cmd>Select your project in the J2EE Navigator pane, and from the <uicontrol>File</uicontrol> menu,
+select <uicontrol>Import</uicontrol>.</cmd></step>
+<step><cmd>Select <uicontrol>File System</uicontrol> and click  <uicontrol>Next</uicontrol>.</cmd>
 </step>
-<step><cmd>Click the  <uicontrol>Browse</uicontrol> button on the next page
+<step><cmd>Click <uicontrol>Browse</uicontrol> <?Pub Caret?>on the next page
 of the wizard to select the directories from which you would like to add the
 WSDL.</cmd></step>
 <step><cmd>In the import selection panes, use the following methods to select
@@ -31,16 +37,16 @@
 <li>Expand the hierarchies in the left pane and select or clear the checkboxes
 that represent the folders in the selected directory. Then in the right pane,
 select or clear checkboxes for individual files.</li>
-<li>Click  <uicontrol>Filter Types</uicontrol> to filter the current selection
+<li>Click <uicontrol>Filter Types</uicontrol> to filter the current selection
 for files of a specific type.</li>
-<li>Click  <uicontrol>Select All</uicontrol> to select all resources in the
+<li>Click <uicontrol>Select All</uicontrol> to select all resources in the
 directory, then go through and deselect the ones that you do not want to add.</li>
-<li>Click  <uicontrol>Deselect All</uicontrol> to deselect all resources in
+<li>Click <uicontrol>Deselect All</uicontrol> to deselect all resources in
 the directory, then go through and choose individual resources to add.</li>
 </ul></info></step>
 <step><cmd>Specify the Workbench project or folder that will be the import
 destination.</cmd></step>
-<step><cmd>When you have finished specifying your import options, click  <uicontrol>Finish.</uicontrol></cmd>
+<step><cmd>When you have finished specifying your import options, click <uicontrol>Finish.</uicontrol></cmd>
 </step>
 </steps>
 <result><p>After you have imported a WSDL file into the workbench and opened
@@ -71,3 +77,4 @@
 </linklist>
 </related-links>
 </task>
+<?Pub *0000004517?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/timpwsdl.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/timpwsdl.html
index 15fe0d9..dcb84bc 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/timpwsdl.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/timpwsdl.html
@@ -2,13 +2,17 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
 <meta content="task" name="DC.Type" />
 <meta name="DC.Title" content="Importing a WSDL file" />
+<meta name="abstract" content="You can import WSDL files into the workbench and open them in the WSDL editor. Opening them in the WSDL editor provides you with an opportunity to have a structured viewing of the WSDL file." />
+<meta name="description" content="You can import WSDL files into the workbench and open them in the WSDL editor. Opening them in the WSDL editor provides you with an opportunity to have a structured viewing of the WSDL file." />
+<meta content="WSDL, importing, Web services, importing WSDL" name="DC.subject" />
+<meta content="WSDL, importing, Web services, importing WSDL" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="../concepts/cwsdled.html" />
 <meta scheme="URI" name="DC.Relation" content="tcrtwsdl.html" />
@@ -16,7 +20,7 @@
 <meta content="XHTML" name="DC.Format" />
 <meta content="timpwsdl" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Importing WSDL files</title>
 </head>
 <body id="timpwsdl"><a name="timpwsdl"><!-- --></a>
@@ -25,14 +29,16 @@
 <h1 class="topictitle1">Importing a WSDL file</h1>
 
 
-<div>
+
+
+<div><p>You can import WSDL files into the workbench and open them in the
+WSDL editor. Opening them in the WSDL editor provides you with an opportunity
+to have a structured viewing of the WSDL file.</p>
+
 <div class="section"><p>The Web Service wizard assists you in creating a new Web service
 from a WSDL file. You must first create or import a WSDL file. A WSDL file
 can be created using the WSDL editor. This is described in:  <a href="../tasks/tcrtwsdl.html">Creating a new WSDL file</a>. To import a WSDL file follow
 the instructions below.</p>
-<p>You can import WSDL files into the workbench
-and open them in the WSDL editor. Opening them in the WSDL editor provides
-you with an opportunity to have a structured viewing of the WSDL file.</p>
 <p> <span class="uicontrol">Prerequisite:</span> Create
 a project. It is recommend that you create a Web project so that the WSDL
 can be easily used to generate additional artifacts and deployed.</p>
@@ -43,13 +49,13 @@
 </div>
 
 <ol>
-<li class="stepexpand"><span>Select your project in the J2EE Navigator pane, and from the  <span class="uicontrol">File</span> menu,
-select  <span class="uicontrol">Import</span>.</span></li>
+<li class="stepexpand"><span>Select your project in the J2EE Navigator pane, and from the <span class="uicontrol">File</span> menu,
+select <span class="uicontrol">Import</span>.</span></li>
 
-<li class="stepexpand"><span>Select  <span class="uicontrol">File System</span> and click  <span class="uicontrol">Next</span>.</span>
+<li class="stepexpand"><span>Select <span class="uicontrol">File System</span> and click  <span class="uicontrol">Next</span>.</span>
 </li>
 
-<li class="stepexpand"><span>Click the  <span class="uicontrol">Browse</span> button on the next page
+<li class="stepexpand"><span>Click <span class="uicontrol">Browse</span> on the next page
 of the wizard to select the directories from which you would like to add the
 WSDL.</span></li>
 
@@ -59,13 +65,13 @@
 that represent the folders in the selected directory. Then in the right pane,
 select or clear checkboxes for individual files.</li>
 
-<li>Click  <span class="uicontrol">Filter Types</span> to filter the current selection
+<li>Click <span class="uicontrol">Filter Types</span> to filter the current selection
 for files of a specific type.</li>
 
-<li>Click  <span class="uicontrol">Select All</span> to select all resources in the
+<li>Click <span class="uicontrol">Select All</span> to select all resources in the
 directory, then go through and deselect the ones that you do not want to add.</li>
 
-<li>Click  <span class="uicontrol">Deselect All</span> to deselect all resources in
+<li>Click <span class="uicontrol">Deselect All</span> to deselect all resources in
 the directory, then go through and choose individual resources to add.</li>
 
 </ul>
@@ -74,7 +80,7 @@
 <li class="stepexpand"><span>Specify the Workbench project or folder that will be the import
 destination.</span></li>
 
-<li class="stepexpand"><span>When you have finished specifying your import options, click  <span class="uicontrol">Finish.</span></span>
+<li class="stepexpand"><span>When you have finished specifying your import options, click <span class="uicontrol">Finish.</span></span>
 </li>
 
 </ol>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetbind.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetbind.dita
index 2b801d3..83581a9 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetbind.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetbind.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tsetbind" xml:lang="en-us">
 <title>Setting a binding</title>
 <shortdesc>A binding is a top level WSDL object that provides a concrete specification
@@ -9,30 +10,33 @@
 closely to that of the port type. The binding contains extensibility elements
 (for example, soap, http, and mime) that specify protocol specific details.
 Each port within a service references exactly one binding.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>setting bindings</indexterm></indexterm>
+<indexterm>Web services<indexterm>setting WSDL bindings</indexterm><indexterm>bindings<indexterm>creating</indexterm></indexterm></indexterm>
+</keywords>
+</metadata></prolog><?Pub Caret?>
 <taskbody>
-<context><p>You can create a new binding, reuse an existing one, or import
-one.</p></context>
+<context><p>You can create a binding by right clicking in any blank space
+in the Design view and selecting <uicontrol>Add Binding</uicontrol>. You can
+create a new binding, reuse an existing one, or import one. </p></context>
 </taskbody>
 <task id="createnewbind">
 <title>Creating a new binding</title>
 <taskbody>
 <context><p>To create a new binding for your port, follow these steps:</p></context>
 <steps>
-<step><cmd>In the Graph view, right-click your port and click  <b>Set Binding</b>.</cmd>
+<step><cmd>In the Design view, right-click your port and click <b>Set Binding
+> New Binding</b>.</cmd></step>
+<step><cmd>In the <b>Name</b> field, type the name of the binding.</cmd><info>The
+name should be unique among all bindings defined within the enclosing WSDL
+document. Click <b>OK.</b> To select the new binding, click the binding object.</info>
 </step>
-<step><cmd>Select the  <b>Create a new binding</b> radio button.</cmd></step>
-<step><cmd>Type the name of the binding in  <uicontrol>Name</uicontrol> field.</cmd>
-<info>The name should be unique among all bindings defined within the enclosing
-WSDL document. Click <b>Finish.</b></info></step>
-<step><cmd>In order to see the binding you need to ensure the hide/show binding
-button <image alt="hide/show binding button" href="../images/show-hide-binding.gif">
-</image> is toggled so that bindings are showing.</cmd></step>
-<step><cmd>A  <b>Port Type</b> is a named set of abstract operations and the
-abstract messages involved.</cmd><info>You can either create a new port type
-for your binding, reuse an existing one, or import one. Refer to the related
-tasks for more details.</info></step>
+<step><cmd>A <b>Port Type</b> is a named set of abstract operations and the
+abstract messages involved. You can either create a new port type for your
+binding, reuse an existing one, or import one. Refer to the related tasks
+for more details.</cmd></step>
 <step><cmd>Type any information about the binding you want the user to read
-in the  <b>Documentation</b> field.</cmd></step>
+in the <b>Documentation</b> pane.</cmd></step>
 </steps>
 <result><p> <b>Tip</b>: You can also create a new binding for your port using
 the Outline view.</p></result>
@@ -43,8 +47,9 @@
 <taskbody>
 <context><p>To reuse a binding for your port, follow these steps:</p></context>
 <steps>
-<step><cmd>In the Graph view, select your port.</cmd></step>
-<step><cmd>From the  <b>Binding</b> drop down list, select the binding you
+<step><cmd>In the Design view, select your port.</cmd></step>
+<step><cmd>In the Properties view, click the <b>General</b> pane.</cmd></step>
+<step><cmd>From the <b>Binding</b> drop down list, select the binding you
 want to use.</cmd></step>
 </steps>
 </taskbody>
@@ -55,10 +60,11 @@
 <context>To regenerate a binding:</context>
 <steps>
 <step><cmd>Right-click the binding you want to regenerate.</cmd></step>
-<step><cmd>Select <uicontrol>Generate Binding Content</uicontrol>.</cmd></step>
+<step><cmd>Select <uicontrol>Generate Binding Content</uicontrol>.<draft-comment>RATLC00975711
+provide more info about SOAP binding options</draft-comment></cmd></step>
 <step><cmd>Specify an required binding information. If you are modifying an
-existing binding, ensure that you select <uicontrol>Overwrite existing binding
-information</uicontrol>.</cmd></step>
+existing binding, ensure that you select the <uicontrol>Overwrite existing
+binding information</uicontrol> check box.</cmd></step>
 </steps>
 </taskbody>
 </task>
@@ -67,16 +73,29 @@
 <taskbody>
 <context>To import an existing binding for your port, follow these steps:</context>
 <steps>
-<step><cmd>In the Graph view, right-click your port and click  <b>Set Binding.</b></cmd>
+<step><cmd>In the Design view, right-click your port and click  <b>Set Binding
+> Existing Binding.</b></cmd></step>
+<step><cmd>In the <b>Name</b> field, type a search string to filter the list
+or leave the field blank to view all.</cmd></step>
+<step><cmd>You can import a binding by selecting one of the following options:</cmd>
+<choices>
+<choice><b>Workspace</b>. Lists the bindings available in your workspace.</choice>
+<choice><b>Enclosing Project</b>. Lists the bindings available in the project
+that contains your file.</choice>
+<choice><b>Working Sets</b>. Lists the bindings available in a specified set
+of files. To specify a working set, click <b>Choose</b>. You can select files
+from an existing working set or create a new working set. Once you have selected
+the files, click <b>OK</b>.</choice>
+</choices>
 </step>
-<step><cmd>Click the  <b>Import binding from a file</b> check box. Click  <b>Browse</b>.</cmd>
-</step>
-<step><cmd>Select the file that contains the binding you want to use. Click
- <b>OK</b>.</cmd></step>
+<step><cmd>The bindings will be listed. Select one and click <b>OK</b>. In
+the Design view, click the binding object.</cmd></step>
+<step><cmd>In the Properties view, type any information about the binding
+you wish the user to read in the <b>Documentation</b> pane.</cmd></step>
 </steps>
 </taskbody>
 <related-links>
-<linklist><title>Related concepts</title><?Pub Caret?>
+<linklist><title>Related concepts</title>
 <link href="../concepts/cwsdled.dita" scope="local"></link>
 </linklist>
 <linklist><title>Related tasks</title>
@@ -86,4 +105,4 @@
 </related-links>
 </task>
 </task>
-<?Pub *0000003826?>
+<?Pub *0000004937?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetbind.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetbind.html
index 8df3388..8118345 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetbind.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetbind.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,10 +11,12 @@
 <meta name="DC.Title" content="Setting a binding" />
 <meta name="abstract" content="A binding is a top level WSDL object that provides a concrete specification regarding the transmission of messages to and from a web service. A binding references exactly one port type. The structure of a binding corresponds very closely to that of the port type. The binding contains extensibility elements (for example, soap, http, and mime) that specify protocol specific details. Each port within a service references exactly one binding." />
 <meta name="description" content="A binding is a top level WSDL object that provides a concrete specification regarding the transmission of messages to and from a web service. A binding references exactly one port type. The structure of a binding corresponds very closely to that of the port type. The binding contains extensibility elements (for example, soap, http, and mime) that specify protocol specific details. Each port within a service references exactly one binding." />
+<meta content="WSDL, setting bindings, Web services, setting WSDL bindings, bindings, creating" name="DC.subject" />
+<meta content="WSDL, setting bindings, Web services, setting WSDL bindings, bindings, creating" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tsetbind" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Setting a binding</title>
 </head>
 <body id="tsetbind"><a name="tsetbind"><!-- --></a>
@@ -23,6 +25,7 @@
 <h1 class="topictitle1">Setting a binding</h1>
 
 
+
 <div><p>A binding is a top level WSDL object that provides a concrete specification
 regarding the transmission of messages to and from a web service. A binding
 references exactly one port type. The structure of a binding corresponds very
@@ -30,8 +33,9 @@
 (for example, soap, http, and mime) that specify protocol specific details.
 Each port within a service references exactly one binding.</p>
 
-<div class="section"><p>You can create a new binding, reuse an existing one, or import
-one.</p>
+<div class="section"><p>You can create a binding by right clicking in any blank space
+in the Design view and selecting <span class="uicontrol">Add Binding</span>. You can
+create a new binding, reuse an existing one, or import one. </p>
 </div>
 
 </div>
@@ -44,25 +48,21 @@
 </div>
 
 <ol>
-<li class="stepexpand"><span>In the Graph view, right-click your port and click  <strong>Set Binding</strong>.</span>
+<li class="stepexpand"><span>In the Design view, right-click your port and click <strong>Set Binding
+&gt; New Binding</strong>.</span></li>
+
+<li class="stepexpand"><span>In the <strong>Name</strong> field, type the name of the binding.</span> The
+name should be unique among all bindings defined within the enclosing WSDL
+document. Click <strong>OK.</strong> To select the new binding, click the binding object.
 </li>
 
-<li class="stepexpand"><span>Select the  <strong>Create a new binding</strong> radio button.</span></li>
-
-<li class="stepexpand"><span>Type the name of the binding in  <span class="uicontrol">Name</span> field.</span>
- The name should be unique among all bindings defined within the enclosing
-WSDL document. Click <strong>Finish.</strong></li>
-
-<li class="stepexpand"><span>In order to see the binding you need to ensure the hide/show binding
-button <img src="../images/show-hide-binding.gif" alt="hide/show binding button" /> is toggled so that bindings are showing.</span></li>
-
-<li class="stepexpand"><span>A  <strong>Port Type</strong> is a named set of abstract operations and the
-abstract messages involved.</span> You can either create a new port type
-for your binding, reuse an existing one, or import one. Refer to the related
-tasks for more details.</li>
+<li class="stepexpand"><span>A <strong>Port Type</strong> is a named set of abstract operations and the
+abstract messages involved. You can either create a new port type for your
+binding, reuse an existing one, or import one. Refer to the related tasks
+for more details.</span></li>
 
 <li class="stepexpand"><span>Type any information about the binding you want the user to read
-in the  <strong>Documentation</strong> field.</span></li>
+in the <strong>Documentation</strong> pane.</span></li>
 
 </ol>
 
@@ -72,11 +72,6 @@
 
 </div>
 
-<div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-</div>
 </div>
 
 <div class="nested1" id="reusebinding"><a name="reusebinding"><!-- --></a>
@@ -87,9 +82,11 @@
 </div>
 
 <ol>
-<li><span>In the Graph view, select your port.</span></li>
+<li><span>In the Design view, select your port.</span></li>
 
-<li><span>From the  <strong>Binding</strong> drop down list, select the binding you
+<li><span>In the Properties view, click the <strong>General</strong> pane.</span></li>
+
+<li><span>From the <strong>Binding</strong> drop down list, select the binding you
 want to use.</span></li>
 
 </ol>
@@ -110,8 +107,8 @@
 <li><span>Select <span class="uicontrol">Generate Binding Content</span>.</span></li>
 
 <li><span>Specify an required binding information. If you are modifying an
-existing binding, ensure that you select <span class="uicontrol">Overwrite existing binding
-information</span>.</span></li>
+existing binding, ensure that you select the <span class="uicontrol">Overwrite existing
+binding information</span> check box.</span></li>
 
 </ol>
 
@@ -126,24 +123,39 @@
 <div class="section">To import an existing binding for your port, follow these steps:</div>
 
 <ol>
-<li><span>In the Graph view, right-click your port and click  <strong>Set Binding.</strong></span>
+<li><span>In the Design view, right-click your port and click  <strong>Set Binding
+&gt; Existing Binding.</strong></span></li>
+
+<li><span>In the <strong>Name</strong> field, type a search string to filter the list
+or leave the field blank to view all.</span></li>
+
+<li><span>You can import a binding by selecting one of the following options:</span>
+<ul>
+<li><strong>Workspace</strong>. Lists the bindings available in your workspace.</li>
+
+<li><strong>Enclosing Project</strong>. Lists the bindings available in the project
+that contains your file.</li>
+
+<li><strong>Working Sets</strong>. Lists the bindings available in a specified set
+of files. To specify a working set, click <strong>Choose</strong>. You can select files
+from an existing working set or create a new working set. Once you have selected
+the files, click <strong>OK</strong>.</li>
+
+</ul>
+
 </li>
 
-<li><span>Click the  <strong>Import binding from a file</strong> check box. Click  <strong>Browse</strong>.</span>
-</li>
+<li><span>The bindings will be listed. Select one and click <strong>OK</strong>. In
+the Design view, click the binding object.</span></li>
 
-<li><span>Select the file that contains the binding you want to use. Click
- <strong>OK</strong>.</span></li>
+<li><span>In the Properties view, type any information about the binding
+you wish the user to read in the <strong>Documentation</strong> pane.</span></li>
 
 </ol>
 
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-
 <div class="linklist"><strong>Related concepts</strong><br />
 
 <div><a href="../concepts/cwsdled.html" title="The WSDL editor allows you to easily and graphically create, modify, view, and validate WSDL files.">Editing WSDL files with the WSDL Editor</a></div></div>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetprtt.dita b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetprtt.dita
index ea94736..6b6513e 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetprtt.dita
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetprtt.dita
@@ -1,37 +1,42 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tsetprtt" xml:lang="en-us">
 <title>Setting a port type</title>
 <shortdesc>A port type is a named set of abstract operations and the abstract
 messages involved. Each operation refers to an input message and output messages.
-A port type is reference by a binding object. Each binding references exactly
+A port type is referenced by a binding object. Each binding references exactly
 one port type. Since each port refers to exactly one binding, each port has
 exactly one port type.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>setting port types</indexterm></indexterm>
+<indexterm>Web services<indexterm>setting port types</indexterm></indexterm>
+</keywords>
+</metadata></prolog><?Pub Caret?>
 <taskbody>
-<context><p>You can create a port type by right clicking on the port types
-group and selecting  <uicontrol>Add Child > portType</uicontrol> . As a convenience
-you can also add a port type via a binding or port object. This allows you
-to create a port type and modify the binding to reference to the new port
-type in one action. You can either create a new port type for your binding,
-re-use an existing one, or import one</p></context>
+<context><p>You can create a port type by right clicking in any blank space
+in the Design view and selecting <uicontrol>Add PortType</uicontrol>. As a
+convenience you can also add a port type via a binding. This allows you to
+create a port type and modify the binding to reference the new port type in
+one action. You can either create a new port type for your binding, re-use
+an existing one, or import one.</p></context>
 </taskbody>
 <task id="createporttype">
-<title>Create a new port type</title>
+<title>Create a new port type for a binding</title>
 <taskbody>
 <context><p>If you want to create a new port type for your binding, follow
 these steps:</p></context>
 <steps>
-<step><cmd>In the Graph view, right-click on a binding or port object (note
-that port must reference a binding) and click  <b>Set Port Type.</b></cmd>
+<step><cmd>In the Design view, right-click on a binding object (note that
+port must reference a binding) and click <b>Set Port Type > New PortType</b>.</cmd>
 </step>
-<step><cmd>Click the  <b>Create a new port type</b> radio button.</cmd></step>
-<step><cmd>Type the name of the port type in the  <b>Name of port type</b> field.</cmd>
+<step><cmd>Type the name of the port type in the <b>Name</b> field.</cmd>
 <info>The name should be unique name among all port types defined within in
-the enclosing WSDL document. Click <b>Finish</b>.</info></step>
-<step><cmd>Click the port type. Type any information about the port type you
-wish the user to read in the  </cmd><info><b>Documentation</b> field.</info>
-</step>
+the enclosing WSDL document. Click <b>OK</b>. To select the new port type,
+click the port type object.</info></step>
+<step><cmd>In the Properties view, type any information about the port type
+you wish the user to read in the <b>Documentation</b> pane.</cmd></step>
 </steps>
 <result><p> <b>Tip</b>: You can also create a new port type for your binding
 using the Outline view.</p><p>Once you have created a port type, you can add
@@ -44,12 +49,26 @@
 <context><p>If you want to reuse a port type for your binding, follow these
 steps:</p></context>
 <steps>
-<step><cmd>In the Graph view, right-click on a binding or port object (note
-that port must reference a binding) and click  <b>Set Port Type.</b></cmd>
+<step><cmd>In the Design view, right-click on a binding object (note that
+port must reference a binding) and click  <b>Set Port Type > Existing PortType</b>.</cmd>
 </step>
-<step><cmd>Click the  <b>Select an existing port type</b> radio button.</cmd>
+<step><cmd>In the <b>Name</b> field, type a search string to filter the list
+or leave the field blank to view all.</cmd></step>
+<step><cmd>You can change the scope of the list by selecting one of the following
+options:</cmd>
+<choices>
+<choice><b>Workspace</b>. Lists the port types available in your workspace.</choice>
+<choice><b>Enclosing Project</b>. Lists the port types available in the project
+that contains your file.</choice>
+<choice><b>Current Resource</b>. Lists the port types available in your current
+file.</choice>
+<choice><b>Working Sets</b>. Lists the port types available in a specified
+set of files. To specify a working set, click <b>Choose</b>. You can select
+files from an existing working set or create a new working set. Once you have
+selected the files, click <b>OK</b>.</choice>
+</choices>
 </step>
-<step><cmd>The existing bindings will be listed. Select one and click  <b>Finish</b>.</cmd>
+<step><cmd>The existing port types will be listed. Select one and click <b>OK</b>.</cmd>
 </step>
 </steps>
 </taskbody>
@@ -57,20 +76,29 @@
 <task id="importporttype">
 <title>Import a port type for a binding</title>
 <taskbody>
-<context><p>.If you want to import an existing port type for your binding,
+<context><p>If you want to import an existing port type for your binding,
 follow these steps:</p></context>
 <steps>
-<step><cmd>In the Graph view, right-click on a binding or port object (note
-that port must reference a binding) and click  <b>Set Port Type.</b></cmd>
+<step><cmd>In the Design view, right-click on a binding object (note that
+port must reference a binding) and click  <b>Set Port Type > Existing PortType.</b></cmd>
 </step>
-<step><cmd>Click the  <b>Import port type from a file</b> radio button. Click
- <b>Browse</b>.</cmd></step>
-<step><cmd>Select the file that contains the port type you want to use. Click
- <b>OK</b>.</cmd></step>
-<step><cmd>The bindings in the file will be listed. Select one and click  <b>Finish</b>.</cmd>
+<step><cmd>In the <b>Name</b> field, type a search string to filter the list
+or leave the field blank to view all.</cmd></step>
+<step><cmd>You can import a port type by selecting one of the following options:</cmd>
+<choices>
+<choice><b>Workspace</b>. Lists the port types available in your workspace.</choice>
+<choice><b>Enclosing Project</b>. Lists the port types available in the project
+that contains your file.</choice>
+<choice><b>Working Sets</b>. Lists the port types available in a specified
+set of files. To specify a working set, click <b>Choose</b>. You can select
+files from an existing working set or create a new working set. Once you have
+selected the files, click <b>OK</b>.</choice>
+</choices>
 </step>
-<step><cmd>Click the port type.&nbsp;Type any information about the port type
-you wish the user to read in the  <b>Documentation</b> field.</cmd></step>
+<step><cmd>The port types will be listed. Select one and click <b>OK</b>.
+In the Design view, click the port type object.</cmd></step>
+<step><cmd>In the Properties view, type any information about the port type
+you wish the user to read in the <b>Documentation</b> pane.</cmd></step>
 </steps>
 </taskbody>
 <related-links>
@@ -84,3 +112,4 @@
 </related-links>
 </task>
 </task>
+<?Pub *0000005308?>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetprtt.html b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetprtt.html
index 0c5a125..d3c0d52 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetprtt.html
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/tasks/tsetprtt.html
@@ -2,19 +2,21 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
 <meta content="task" name="DC.Type" />
 <meta name="DC.Title" content="Setting a port type" />
-<meta name="abstract" content="A port type is a named set of abstract operations and the abstract messages involved. Each operation refers to an input message and output messages. A port type is reference by a binding object. Each binding references exactly one port type. Since each port refers to exactly one binding, each port has exactly one port type." />
-<meta name="description" content="A port type is a named set of abstract operations and the abstract messages involved. Each operation refers to an input message and output messages. A port type is reference by a binding object. Each binding references exactly one port type. Since each port refers to exactly one binding, each port has exactly one port type." />
+<meta name="abstract" content="A port type is a named set of abstract operations and the abstract messages involved. Each operation refers to an input message and output messages. A port type is referenced by a binding object. Each binding references exactly one port type. Since each port refers to exactly one binding, each port has exactly one port type." />
+<meta name="description" content="A port type is a named set of abstract operations and the abstract messages involved. Each operation refers to an input message and output messages. A port type is referenced by a binding object. Each binding references exactly one port type. Since each port refers to exactly one binding, each port has exactly one port type." />
+<meta content="WSDL, setting port types, Web services" name="DC.subject" />
+<meta content="WSDL, setting port types, Web services" name="keywords" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tsetprtt" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Setting a port type</title>
 </head>
 <body id="tsetprtt"><a name="tsetprtt"><!-- --></a>
@@ -23,24 +25,25 @@
 <h1 class="topictitle1">Setting a port type</h1>
 
 
+
 <div><p>A port type is a named set of abstract operations and the abstract
 messages involved. Each operation refers to an input message and output messages.
-A port type is reference by a binding object. Each binding references exactly
+A port type is referenced by a binding object. Each binding references exactly
 one port type. Since each port refers to exactly one binding, each port has
 exactly one port type.</p>
 
-<div class="section"><p>You can create a port type by right clicking on the port types
-group and selecting  <span class="uicontrol">Add Child &gt; portType</span> . As a convenience
-you can also add a port type via a binding or port object. This allows you
-to create a port type and modify the binding to reference to the new port
-type in one action. You can either create a new port type for your binding,
-re-use an existing one, or import one</p>
+<div class="section"><p>You can create a port type by right clicking in any blank space
+in the Design view and selecting <span class="uicontrol">Add PortType</span>. As a
+convenience you can also add a port type via a binding. This allows you to
+create a port type and modify the binding to reference the new port type in
+one action. You can either create a new port type for your binding, re-use
+an existing one, or import one.</p>
 </div>
 
 </div>
 
 <div class="nested1" id="createporttype"><a name="createporttype"><!-- --></a>
-<h2 class="topictitle2">Create a new port type</h2>
+<h2 class="topictitle2">Create a new port type for a binding</h2>
 
 <div>
 <div class="section"><p>If you want to create a new port type for your binding, follow
@@ -48,19 +51,17 @@
 </div>
 
 <ol>
-<li class="stepexpand"><span>In the Graph view, right-click on a binding or port object (note
-that port must reference a binding) and click  <strong>Set Port Type.</strong></span>
+<li class="stepexpand"><span>In the Design view, right-click on a binding object (note that
+port must reference a binding) and click <strong>Set Port Type &gt; New PortType</strong>.</span>
 </li>
 
-<li class="stepexpand"><span>Click the  <strong>Create a new port type</strong> radio button.</span></li>
-
-<li class="stepexpand"><span>Type the name of the port type in the  <strong>Name of port type</strong> field.</span>
+<li class="stepexpand"><span>Type the name of the port type in the <strong>Name</strong> field.</span>
  The name should be unique name among all port types defined within in
-the enclosing WSDL document. Click <strong>Finish</strong>.</li>
+the enclosing WSDL document. Click <strong>OK</strong>. To select the new port type,
+click the port type object.</li>
 
-<li class="stepexpand"><span>Click the port type. Type any information about the port type you
-wish the user to read in the  </span> <strong>Documentation</strong> field.
-</li>
+<li class="stepexpand"><span>In the Properties view, type any information about the port type
+you wish the user to read in the <strong>Documentation</strong> pane.</span></li>
 
 </ol>
 
@@ -72,11 +73,6 @@
 
 </div>
 
-<div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-</div>
 </div>
 
 <div class="nested1" id="reuseporttype"><a name="reuseporttype"><!-- --></a>
@@ -88,14 +84,34 @@
 </div>
 
 <ol>
-<li><span>In the Graph view, right-click on a binding or port object (note
-that port must reference a binding) and click  <strong>Set Port Type.</strong></span>
+<li><span>In the Design view, right-click on a binding object (note that
+port must reference a binding) and click  <strong>Set Port Type &gt; Existing PortType</strong>.</span>
 </li>
 
-<li><span>Click the  <strong>Select an existing port type</strong> radio button.</span>
+<li><span>In the <strong>Name</strong> field, type a search string to filter the list
+or leave the field blank to view all.</span></li>
+
+<li><span>You can change the scope of the list by selecting one of the following
+options:</span>
+<ul>
+<li><strong>Workspace</strong>. Lists the port types available in your workspace.</li>
+
+<li><strong>Enclosing Project</strong>. Lists the port types available in the project
+that contains your file.</li>
+
+<li><strong>Current Resource</strong>. Lists the port types available in your current
+file.</li>
+
+<li><strong>Working Sets</strong>. Lists the port types available in a specified
+set of files. To specify a working set, click <strong>Choose</strong>. You can select
+files from an existing working set or create a new working set. Once you have
+selected the files, click <strong>OK</strong>.</li>
+
+</ul>
+
 </li>
 
-<li><span>The existing bindings will be listed. Select one and click  <strong>Finish</strong>.</span>
+<li><span>The existing port types will be listed. Select one and click <strong>OK</strong>.</span>
 </li>
 
 </ol>
@@ -108,36 +124,45 @@
 <h2 class="topictitle2">Import a port type for a binding</h2>
 
 <div>
-<div class="section"><p>.If you want to import an existing port type for your binding,
+<div class="section"><p>If you want to import an existing port type for your binding,
 follow these steps:</p>
 </div>
 
 <ol>
-<li><span>In the Graph view, right-click on a binding or port object (note
-that port must reference a binding) and click  <strong>Set Port Type.</strong></span>
+<li><span>In the Design view, right-click on a binding object (note that
+port must reference a binding) and click  <strong>Set Port Type &gt; Existing PortType.</strong></span>
 </li>
 
-<li><span>Click the  <strong>Import port type from a file</strong> radio button. Click
- <strong>Browse</strong>.</span></li>
+<li><span>In the <strong>Name</strong> field, type a search string to filter the list
+or leave the field blank to view all.</span></li>
 
-<li><span>Select the file that contains the port type you want to use. Click
- <strong>OK</strong>.</span></li>
+<li><span>You can import a port type by selecting one of the following options:</span>
+<ul>
+<li><strong>Workspace</strong>. Lists the port types available in your workspace.</li>
 
-<li><span>The bindings in the file will be listed. Select one and click  <strong>Finish</strong>.</span>
+<li><strong>Enclosing Project</strong>. Lists the port types available in the project
+that contains your file.</li>
+
+<li><strong>Working Sets</strong>. Lists the port types available in a specified
+set of files. To specify a working set, click <strong>Choose</strong>. You can select
+files from an existing working set or create a new working set. Once you have
+selected the files, click <strong>OK</strong>.</li>
+
+</ul>
+
 </li>
 
-<li><span>Click the port type. Type any information about the port type
-you wish the user to read in the  <strong>Documentation</strong> field.</span></li>
+<li><span>The port types will be listed. Select one and click <strong>OK</strong>.
+In the Design view, click the port type object.</span></li>
+
+<li><span>In the Properties view, type any information about the port type
+you wish the user to read in the <strong>Documentation</strong> pane.</span></li>
 
 </ol>
 
 </div>
 
 <div>
-<div class="familylinks">
-<div class="parentlink"><strong>Parent topic:</strong> <a href="../tasks/tedtwsdl.html" title="Once you have created a WSDL file, you can edit it in the WSDL editor. You can also import WSDL files you have created into the workbench and edit them in the WSDL editor.">Editing WSDL files</a></div>
-</div>
-
 <div class="linklist"><strong>Related concepts</strong><br />
 
 <div><a href="../concepts/cwsdled.html" title="The WSDL editor allows you to easily and graphically create, modify, view, and validate WSDL files.">Editing WSDL files with the WSDL Editor</a></div></div>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/wswsdleditorc_toc.xml b/docs/org.eclipse.wst.wsdl.ui.doc.user/wswsdleditorc_toc.xml
index 6fa5d61..4a826b1 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/wswsdleditorc_toc.xml
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/wswsdleditorc_toc.xml
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8"?>
-<?NLS  TYPE="org.eclipse.help.toc"?>
-<toc label="wswsdleditorc" link_to="../org.eclipse.jst.ws.doc.user/webservice_toc.xml#wswsdleditorc" topic="concepts/cwsdled.html">
-   <topic label="Editing WSDL files with the WSDL Editor" href="concepts/cwsdled.html">
-      <anchor id="wsadie_childof_wsdledit"/>
-   </topic>
-</toc>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc link_to="../org.eclipse.jst.ws.doc.user/webservice_toc.xml#wswsdleditorc" label="wswsdleditorc" topic="concepts/cwsdled.html">
+<topic label="Editing WSDL files with the WSDL Editor" href="concepts/cwsdled.html"/>
+</toc>
diff --git a/docs/org.eclipse.wst.wsdl.ui.doc.user/wswsdleditort_toc.ditamap b/docs/org.eclipse.wst.wsdl.ui.doc.user/wswsdleditort_toc.ditamap
index d966a71..4970a52 100644
--- a/docs/org.eclipse.wst.wsdl.ui.doc.user/wswsdleditort_toc.ditamap
+++ b/docs/org.eclipse.wst.wsdl.ui.doc.user/wswsdleditort_toc.ditamap
@@ -1,27 +1,34 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
+<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN"
+ "map.dtd">
 <map anchorref="../org.eclipse.jst.ws.doc.user/webservice_toc.ditamap#wswsdleditort"
 id="wswsdleditort" title="wswsdleditort">
 <topicref href="tasks/timpwsdl.dita" navtitle="Importing WSDL files"></topicref>
 <topicref href="tasks/tcrtwsdl.dita" navtitle="Creating WSDL files"></topicref>
 <topicref href="concepts/cwsdled.dita" navtitle="Web Services Description Language (WSDL) editor">
 <topicref href="tasks/tedtwsdl.dita" navtitle="Editing WSDL files">
-<topicref href="tasks/taddsrvc.dita" navtitle="Adding a service"></topicref>
-<topicref href="tasks/taddport.dita" navtitle="Adding a port to a service">
+<topicref href="tasks/taddsrvc.dita" linking="none" navtitle="Adding a service">
 </topicref>
-<topicref href="tasks/tsetprtt.dita" navtitle="Setting a port type"></topicref>
-<topicref href="tasks/tsetbind.dita" navtitle="Setting a binding"></topicref>
-<topicref href="tasks/taddoper.dita" navtitle="Adding an operation"></topicref>
-<topicref href="tasks/taddmess.dita" navtitle="Adding a message"></topicref>
-<topicref href="tasks/taddpart.dita" navtitle="Adding a part to a message">
+<topicref href="tasks/taddport.dita" linking="none" navtitle="Adding a port to a service">
 </topicref>
-<topicref href="tasks/tcrtimpt.dita" navtitle="Creating an import statement">
+<topicref href="tasks/tsetprtt.dita" linking="none" navtitle="Setting a port type">
 </topicref>
-<topicref href="tasks/tcrttype.dita" navtitle="Creating a new type for your WSDL file">
+<topicref href="tasks/tsetbind.dita" linking="none" navtitle="Setting a binding">
+</topicref>
+<topicref href="tasks/taddoper.dita" linking="none" navtitle="Adding an operation">
+</topicref>
+<topicref href="tasks/taddmess.dita" linking="none" navtitle="Adding a message">
+</topicref>
+<topicref href="tasks/taddpart.dita" linking="none" navtitle="Adding a part to a message">
+</topicref>
+<topicref href="tasks/tcrtimpt.dita" linking="none" navtitle="Creating an import statement">
+</topicref>
+<topicref href="tasks/tcrttype.dita" linking="none" navtitle="Creating a new type for your WSDL file">
 </topicref>
 </topicref>
 </topicref>
 <topicref href="../org.eclipse.jst.ws.consumption.ui.doc.user/tasks/twsdlexp.dita"
 navtitle="Exploring WSDL using the Web Services Explorer" scope="peer"></topicref>
 </map>
+<?Pub *0000001713?>
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/.settings/org.eclipse.core.resources.prefs b/docs/org.eclipse.wst.wsi.ui.doc.user/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..1737c9a
--- /dev/null
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Sun May 07 23:09:10 EDT 2006
+eclipse.preferences.version=1
+encoding/<project>=ISO-8859-1
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/META-INF/MANIFEST.MF b/docs/org.eclipse.wst.wsi.ui.doc.user/META-INF/MANIFEST.MF
index 0c0d40d..35ac508 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/META-INF/MANIFEST.MF
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/META-INF/MANIFEST.MF
@@ -2,6 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.wsi.ui.doc.user; singleton:=true
-Bundle-Version: 1.0.2.qualifier
+Bundle-Version: 1.0.202.qualifier
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/about.html b/docs/org.eclipse.wst.wsi.ui.doc.user/about.html
index 4c99086..4ec5989 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/about.html
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 <title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/build.properties b/docs/org.eclipse.wst.wsi.ui.doc.user/build.properties
index c11e86f..808105f 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/build.properties
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/build.properties
@@ -3,6 +3,7 @@
                plugin.xml,\
                tasks/,\
                wswsitest_toc.xml,\
+               org.eclipse.wst.wsi.ui.doc.userindex.xml,\
                META-INF/,\
                plugin.properties
 src.includes = build.properties
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/build.xml b/docs/org.eclipse.wst.wsi.ui.doc.user/build.xml
index a0adb1f..36bb7b2 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/build.xml
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/build.xml
@@ -25,7 +25,7 @@
 -->
 <project name="eclipsehelp" default="all">
 
-	<property name="dita.ot.dir" location="C:/DITA-OT1.2.1" />
+	<property name="dita.ot.dir" location="C:/DITA-OT1.2.2" />
 
 	<path id="dost.class.path">
 		<pathelement location="${dita.ot.dir}${file.separator}lib${file.separator}dost.jar" />
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/myplugin.xml b/docs/org.eclipse.wst.wsi.ui.doc.user/myplugin.xml
index 10fcb0d..2ee46e5 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/myplugin.xml
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/myplugin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <?eclipse version="3.0"?>
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
@@ -19,9 +19,9 @@
 
 <extension point="org.eclipse.help.toc">
     <toc file="wswsitest_toc.xml"/>   
-  
-      
 </extension>
 
-
+	<extension point="org.eclipse.help.index">
+      <index file="org.eclipse.wst.wsi.ui.doc.userindex.xml"/>
+</extension>
 </plugin>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/org.eclipse.wst.wsi.ui.doc.userindex.html b/docs/org.eclipse.wst.wsi.ui.doc.user/org.eclipse.wst.wsi.ui.doc.userindex.html
new file mode 100644
index 0000000..c9efd46
--- /dev/null
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/org.eclipse.wst.wsi.ui.doc.userindex.html
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html
+  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html lang="en-us" xml:lang="en-us">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="security" content="public" />
+<meta name="Robots" content="index,follow" />
+<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
+<meta name="DC.Format" content="XHTML" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/ibmdita.css" />
+<link rel="stylesheet" type="text/css" href="../org.eclipse.wst.doc.user/common.css" />
+<title>Index</title>
+</head>
+<body>
+<h1>Index</h1>
+<strong>T</strong>
+<ul class="indexlist">
+<li>TCP/IP Monitor
+<ul class="indexlist">
+<li><a href="tasks/tmonitor.html#tmonitor">testing Web services</a>
+</li>
+</ul>
+</li>
+</ul>
+<strong>W</strong>
+<ul class="indexlist">
+<li>Web services
+<ul class="indexlist">
+<li><a href="tasks/tmonitor.html#tmonitor">monitoring TCP/IP traffic</a>
+</li>
+<li><a href="tasks/tmonitor.html#tmonitor">testing traffic</a>
+</li>
+<li>validating WS-I compliance
+<ul class="indexlist">
+<li><a href="tasks/twsival.html#twsival">interoperability</a>
+</li>
+<li><a href="tasks/twsival.html#twsival">validating</a>
+</li>
+</ul>
+</li>
+<li><a href="tasks/twsdlval.html#twsdlval">validating WSDL</a>
+</li>
+</ul>
+</li>
+<li>WS-I
+<ul class="indexlist">
+<li><a href="tasks/twsival.html#twsival">validating</a>
+</li>
+</ul>
+</li>
+<li>WSDL
+<ul class="indexlist">
+<li><a href="tasks/twsdlval.html#twsdlval">validating</a>
+</li>
+</ul>
+</li>
+</ul>
+</body></html>
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/org.eclipse.wst.wsi.ui.doc.userindex.xml b/docs/org.eclipse.wst.wsi.ui.doc.user/org.eclipse.wst.wsi.ui.doc.userindex.xml
new file mode 100644
index 0000000..54547b4
--- /dev/null
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/org.eclipse.wst.wsi.ui.doc.userindex.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<index>
+  <entry keyword="WSDL">
+    <entry keyword="validating">
+      <topic href="tasks/twsdlval.html#twsdlval" title="Validating WSDL files"/>
+    </entry>
+  </entry>
+  <entry keyword="Web services">
+    <entry keyword="validating WSDL">
+      <topic href="tasks/twsdlval.html#twsdlval" title="Validating WSDL files"/>
+    </entry>
+    <entry keyword="testing traffic">
+      <topic href="tasks/tmonitor.html#tmonitor" title="Using the TCP/IP Monitor to test Web services"/>
+    </entry>
+    <entry keyword="monitoring TCP/IP traffic">
+      <topic href="tasks/tmonitor.html#tmonitor" title="Using the TCP/IP Monitor to test Web services"/>
+    </entry>
+    <entry keyword="validating WS-I compliance">
+      <entry keyword="validating">
+        <topic href="tasks/twsival.html#twsival" title="Validating WS-I Web service traffic compliance"/>
+      </entry>
+      <entry keyword="interoperability">
+        <topic href="tasks/twsival.html#twsival" title="Validating WS-I Web service traffic compliance"/>
+      </entry>
+    </entry>
+  </entry>
+  <entry keyword="TCP/IP Monitor">
+    <entry keyword="testing Web services">
+      <topic href="tasks/tmonitor.html#tmonitor" title="Using the TCP/IP Monitor to test Web services"/>
+    </entry>
+  </entry>
+  <entry keyword="WS-I">
+    <entry keyword="validating">
+      <topic href="tasks/twsival.html#twsival" title="Validating WS-I Web service traffic compliance"/>
+    </entry>
+  </entry>
+</index>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/plugin.xml b/docs/org.eclipse.wst.wsi.ui.doc.user/plugin.xml
index 10fcb0d..2ee46e5 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/plugin.xml
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/plugin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <?eclipse version="3.0"?>
 <!-- /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2006 IBM 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
@@ -19,9 +19,9 @@
 
 <extension point="org.eclipse.help.toc">
     <toc file="wswsitest_toc.xml"/>   
-  
-      
 </extension>
 
-
+	<extension point="org.eclipse.help.index">
+      <index file="org.eclipse.wst.wsi.ui.doc.userindex.xml"/>
+</extension>
 </plugin>
\ No newline at end of file
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.dita b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.dita
index d1f2204..e395b27 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.dita
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="tmonitor" xml:lang="en-us">
 <title>Using the TCP/IP Monitor to test Web services</title>
 <titlealts>
@@ -8,6 +9,11 @@
 </titlealts>
 <shortdesc>Once you have created your Web service and Web service client,
 you can monitor the Web service's SOAP traffic using the TCP/IP Monitor.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>TCP/IP Monitor<indexterm>testing Web services</indexterm></indexterm>
+<indexterm>Web services<indexterm>testing traffic</indexterm><indexterm>monitoring
+TCP/IP traffic</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
 <prereq><p> Prerequisites: </p><ul>
 <li>Generate a Web service</li>
@@ -20,13 +26,13 @@
 <steps>
 <step><cmd>In the sample application, invoke the getEndPoint method. Record
 this endpoint. The default endpoint for a Web service is: http://localhost:&lt;port>/&lt;web
-module context root>/services/&lt;port></cmd></step><?Pub Caret1?>
+module context root>/services/&lt;port></cmd></step>
 <step><cmd>Create a server to act as the TCP/IP Monitor:</cmd>
 <substeps>
 <substep><cmd>From the Window menu, select <uicontrol>Preferences</uicontrol>. </cmd>
 </substep>
-<substep><cmd>In the Preferences window, expand Internet and then select <uicontrol>TCP/IP
-Monitor</uicontrol>. </cmd></substep>
+<substep><cmd>In the Preferences window, expand <uicontrol>Run/Debug</uicontrol>,
+and then select <uicontrol>TCP/IP Monitor</uicontrol>. </cmd></substep>
 <substep><cmd>Select the <uicontrol>Show TCP/IP Monitor View when there is
 activity</uicontrol> check box. </cmd></substep>
 <substep><cmd>Under the TCP/IP Monitors lists, click <uicontrol>Add</uicontrol>.
@@ -85,4 +91,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000004710?>
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html
index 8f5a227..ae8efd2 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/tmonitor.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,13 +11,15 @@
 <meta name="DC.Title" content="Using the TCP/IP Monitor to test Web services" />
 <meta name="abstract" content="Once you have created your Web service and Web service client, you can monitor the Web service's SOAP traffic using the TCP/IP Monitor." />
 <meta name="description" content="Once you have created your Web service and Web service client, you can monitor the Web service's SOAP traffic using the TCP/IP Monitor." />
+<meta content="TCP/IP Monitor, testing Web services, Web services, testing traffic, monitoring TCP/IP traffic" name="DC.subject" />
+<meta content="TCP/IP Monitor, testing Web services, Web services, testing traffic, monitoring TCP/IP traffic" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/csoap.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsiover.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/tasks/twsicomply.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="tmonitor" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Using the TCP/IP or SOAP monitor to test Web services</title>
 </head>
 <body id="tmonitor"><a name="tmonitor"><!-- --></a>
@@ -27,6 +29,7 @@
 
 
 
+
 <div><p>Once you have created your Web service and Web service client,
 you can monitor the Web service's SOAP traffic using the TCP/IP Monitor.</p>
 
@@ -55,8 +58,8 @@
 <li><span>From the Window menu, select <span class="uicontrol">Preferences</span>. </span>
 </li>
 
-<li><span>In the Preferences window, expand Internet and then select <span class="uicontrol">TCP/IP
-Monitor</span>. </span></li>
+<li><span>In the Preferences window, expand <span class="uicontrol">Run/Debug</span>,
+and then select <span class="uicontrol">TCP/IP Monitor</span>. </span></li>
 
 <li><span>Select the <span class="uicontrol">Show TCP/IP Monitor View when there is
 activity</span> check box. </span></li>
@@ -70,27 +73,27 @@
 
 
 <table class="choicetableborder" summary="" cellspacing="0" cellpadding="4" rules="rows" frame="hsides" border="1">
-<thead><tr><th valign="bottom" id="N100BA-option">Option</th>
-<th valign="bottom" id="N100BA-desc">Description</th></tr></thead>
+<thead><tr><th valign="bottom" id="N100E9-option">Option</th>
+<th valign="bottom" id="N100E9-desc">Description</th></tr></thead>
 <tbody>
 
-<tr><td valign="top" headers="N100BA-option" id="N100D3"><strong>Local monitoring port</strong></td>
-<td valign="top" headers="N100BA-desc N100D3">Specify a unique
+<tr><td valign="top" headers="N100E9-option" id="N10102"><strong>Local monitoring port</strong></td>
+<td valign="top" headers="N100E9-desc N10102">Specify a unique
 port number on your local machine.</td>
 </tr>
 
-<tr><td valign="top" headers="N100BA-option" id="N100E2"><strong>Host name</strong></td>
-<td valign="top" headers="N100BA-desc N100E2">Specify the host name or IP address
+<tr><td valign="top" headers="N100E9-option" id="N10111"><strong>Host name</strong></td>
+<td valign="top" headers="N100E9-desc N10111">Specify the host name or IP address
 of the machine where the server is running.</td>
 </tr>
 
-<tr><td valign="top" headers="N100BA-option" id="N100F1"><strong>Port</strong></td>
-<td valign="top" headers="N100BA-desc N100F1">Specify the port number of the remote
+<tr><td valign="top" headers="N100E9-option" id="N10120"><strong>Port</strong></td>
+<td valign="top" headers="N100E9-desc N10120">Specify the port number of the remote
 server.</td>
 </tr>
 
-<tr><td valign="top" headers="N100BA-option" id="N10100"><strong>Type</strong></td>
-<td valign="top" headers="N100BA-desc N10100">Specify whether the request type from
+<tr><td valign="top" headers="N100E9-option" id="N1012F"><strong>Type</strong></td>
+<td valign="top" headers="N100E9-desc N1012F">Specify whether the request type from
 the Web browser are sent by HTTP or TCP/IP. If the HTTP option is selected
 the requests from the Web browser are modified so that the HTTP header points
 to the remote machine and separated if multiple HTTP requests are received
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsdlval.dita b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsdlval.dita
index ae708f1..c39dc7a 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsdlval.dita
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsdlval.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="twsdlval" xml:lang="en-us">
 <title>Validating WSDL files</title>
 <titlealts>
@@ -10,9 +11,13 @@
 the WSDL that is generated should be valid. However, if you have imported
 a WSDL file, or if you are creating a WSDL file, you should validate the WSDL
 to ensure it is valid.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WSDL<indexterm>validating</indexterm></indexterm><indexterm>Web
+services<indexterm>validating WSDL</indexterm></indexterm></keywords>
+</metadata></prolog>
 <taskbody>
-<context><?Pub Caret?><p>If you have selected Require or Suggest WS-I Compliance
-on the WS-I Compliance preference page, the validation also checks WS-I compliance.
+<context><p>If you have selected Require or Suggest WS-I Compliance on the
+WS-I Compliance preference page, the validation also checks WS-I compliance.
 If you have selected Ignore WS-I Compliance the validator will only check
 the validity of the WSDL. For more information on setting WS-I compliance
 levels, refer to:  <xref href="../../org.eclipse.jst.ws.doc.user/tasks/twsicomply.dita"
@@ -25,14 +30,13 @@
 <steps>
 <step><cmd>Select a WSDL file in the  <b>Project Navigator</b> view.</cmd>
 </step>
-<step><cmd>Right-click the WSDL file, and select  <b>Validate WSDL file.</b></cmd>
-</step>
+<step><cmd>Right-click the WSDL file, and select  <b>Validate</b></cmd></step>
 </steps>
 <result>Any problems encountered while validating the file will be shown in
 the  <b>Tasks</b> view.<p>When you rebuild a project or save a resource, the
 WSDL Validator can be set to run automatically. To do this, from the Window
-menu, select  <b>Preferences</b> >  <b>Validation</b>. Ensure that the check
-box beside WSDL Validator is selected.</p></result>
+menu, select  <b>Preferences</b> >  <b>Validation</b>. Ensure that the WSDL
+Validator check box in the Build column is selected.</p></result>
 </taskbody>
 <related-links>
 <linklist><title>Related Concepts</title>
@@ -47,4 +51,3 @@
 </linklist>
 </related-links>
 </task>
-<?Pub *0000002471?>
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsdlval.html b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsdlval.html
index 8eb6d2b..fcd483c 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsdlval.html
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsdlval.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,13 +11,15 @@
 <meta name="DC.Title" content="Validating WSDL files" />
 <meta name="abstract" content="If you have created a WSDL file through the Web services wizard the WSDL that is generated should be valid. However, if you have imported a WSDL file, or if you are creating a WSDL file, you should validate the WSDL to ensure it is valid." />
 <meta name="description" content="If you have created a WSDL file through the Web services wizard the WSDL that is generated should be valid. However, if you have imported a WSDL file, or if you are creating a WSDL file, you should validate the WSDL to ensure it is valid." />
+<meta content="WSDL, validating, Web services, validating WSDL" name="DC.subject" />
+<meta content="WSDL, validating, Web services, validating WSDL" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsdl.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsiover.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/tasks/twsicomply.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="twsdlval" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Validating WSDL files</title>
 </head>
 <body id="twsdlval"><a name="twsdlval"><!-- --></a>
@@ -27,13 +29,14 @@
 
 
 
+
 <div><p>If you have created a WSDL file through the Web services wizard
 the WSDL that is generated should be valid. However, if you have imported
 a WSDL file, or if you are creating a WSDL file, you should validate the WSDL
 to ensure it is valid.</p>
 
-<div class="section"><p>If you have selected Require or Suggest WS-I Compliance
-on the WS-I Compliance preference page, the validation also checks WS-I compliance.
+<div class="section"><p>If you have selected Require or Suggest WS-I Compliance on the
+WS-I Compliance preference page, the validation also checks WS-I compliance.
 If you have selected Ignore WS-I Compliance the validator will only check
 the validity of the WSDL. For more information on setting WS-I compliance
 levels, refer to:  <a href="../../org.eclipse.jst.ws.doc.user/tasks/twsicomply.html">Setting the level of WS-I compliance</a>.</p>
@@ -48,16 +51,15 @@
 <li><span>Select a WSDL file in the  <strong>Project Navigator</strong> view.</span>
 </li>
 
-<li><span>Right-click the WSDL file, and select  <strong>Validate WSDL file.</strong></span>
-</li>
+<li><span>Right-click the WSDL file, and select  <strong>Validate</strong></span></li>
 
 </ol>
 
 <div class="section">Any problems encountered while validating the file will be shown in
 the  <strong>Tasks</strong> view.<p>When you rebuild a project or save a resource, the
 WSDL Validator can be set to run automatically. To do this, from the Window
-menu, select  <strong>Preferences</strong> &gt;  <strong>Validation</strong>. Ensure that the check
-box beside WSDL Validator is selected.</p>
+menu, select  <strong>Preferences</strong> &gt;  <strong>Validation</strong>. Ensure that the WSDL
+Validator check box in the Build column is selected.</p>
 </div>
 
 </div>
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsival.dita b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsival.dita
index 462bbbb..d39b18c 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsival.dita
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsival.dita
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--Arbortext, Inc., 1988-2005, v.4002-->
-<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<!DOCTYPE task PUBLIC "-//OASIS//DTD DITA Task//EN"
+ "task.dtd">
 <task id="twsival" xml:lang="en-us">
 <title>Validating WS-I Web service traffic compliance</title>
 <titlealts>
@@ -9,6 +10,11 @@
 <shortdesc>As well as setting the level of WS-I compliance during Web services
 creation, you can validate WS-I compliance of the SOAP traffic a Web service
 produces through the TCP/IP Monitor.</shortdesc>
+<prolog><metadata>
+<keywords><indexterm>WS-I<indexterm>validating</indexterm></indexterm><indexterm>Web
+services<indexterm>validating WS-I compliance<indexterm>interoperability<indexterm>validating</indexterm></indexterm></indexterm></indexterm>
+</keywords>
+</metadata></prolog>
 <taskbody>
 <prereq> Prerequisites: Before you can use the validation tool to ensure that
 your Web service SOAP traffic is WS-I compliant, you must have completed the
diff --git a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsival.html b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsival.html
index 3896d27..4e71cb2 100644
--- a/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsival.html
+++ b/docs/org.eclipse.wst.wsi.ui.doc.user/tasks/twsival.html
@@ -2,8 +2,8 @@
 <html lang="en-us" xml:lang="en-us">
 <head>
 <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
-<meta name="copyright" content="(C) Copyright 2005" />
-<meta name="DC.rights.owner" content="(C) Copyright 2005" />
+<meta name="copyright" content="Copyright (c) 2000, 2006 IBM 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: IBM Corporation - initial API and implementation" />
+<meta name="DC.rights.owner" content="(C) Copyright 2000, 2006" />
 <meta content="public" name="security" />
 <meta content="index,follow" name="Robots" />
 <meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
@@ -11,12 +11,14 @@
 <meta name="DC.Title" content="Validating WS-I Web service traffic compliance" />
 <meta name="abstract" content="As well as setting the level of WS-I compliance during Web services creation, you can validate WS-I compliance of the SOAP traffic a Web service produces through the TCP/IP Monitor." />
 <meta name="description" content="As well as setting the level of WS-I compliance during Web services creation, you can validate WS-I compliance of the SOAP traffic a Web service produces through the TCP/IP Monitor." />
+<meta content="WS-I, validating, Web services, validating WS-I compliance, interoperability" name="DC.subject" />
+<meta content="WS-I, validating, Web services, validating WS-I compliance, interoperability" name="keywords" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/concepts/cwsiover.html" />
 <meta scheme="URI" name="DC.Relation" content="../../org.eclipse.jst.ws.doc.user/tasks/twsicomply.html" />
 <meta content="XHTML" name="DC.Format" />
 <meta content="twsival" name="DC.Identifier" />
 <meta content="en-us" name="DC.Language" />
-<link href="../../org.eclipse.wst.doc.user/commonltr.css" type="text/css" rel="stylesheet" />
+<link href="../../org.eclipse.wst.doc.user/common.css" type="text/css" rel="stylesheet" />
 <title>Validating WS-I Web service traffic compliance</title>
 </head>
 <body id="twsival"><a name="twsival"><!-- --></a>
@@ -26,6 +28,7 @@
 
 
 
+
 <div><p>As well as setting the level of WS-I compliance during Web services
 creation, you can validate WS-I compliance of the SOAP traffic a Web service
 produces through the TCP/IP Monitor.</p>
diff --git a/features/org.eclipse.wst.ws_core.feature/build.properties b/features/org.eclipse.wst.ws_core.feature/build.properties
index d6a4dce..7f47694 100644
--- a/features/org.eclipse.wst.ws_core.feature/build.properties
+++ b/features/org.eclipse.wst.ws_core.feature/build.properties
@@ -3,8 +3,3 @@
                epl-v10.html,\
                license.html,\
                feature.properties
-src.includes = license.html,\
-               feature.xml,\
-               epl-v10.html,\
-               eclipse_update_120.jpg,\
-               build.properties
diff --git a/features/org.eclipse.wst.ws_core.feature/feature.properties b/features/org.eclipse.wst.ws_core.feature/feature.properties
index 64893f7..4f58c9d 100644
--- a/features/org.eclipse.wst.ws_core.feature/feature.properties
+++ b/features/org.eclipse.wst.ws_core.feature/feature.properties
@@ -15,14 +15,28 @@
 # This file should be translated.
 
 # "featureName" property - name of the feature
+featureName=WST Web Services Core
 
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse.org
 
 # "updateSiteName" property - label for the update site
-updateSiteName=Eclipse.org update site
+updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
+description=WST Web Services core.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2006 IBM Corporation and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    IBM Corporation - initial API and implementation\n
+################ end of copyright property ####################################
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
diff --git a/features/org.eclipse.wst.ws_core.feature/feature.xml b/features/org.eclipse.wst.ws_core.feature/feature.xml
index d016f5c..813cb7e 100644
--- a/features/org.eclipse.wst.ws_core.feature/feature.xml
+++ b/features/org.eclipse.wst.ws_core.feature/feature.xml
@@ -1,19 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.wst.ws_core.feature"
-      label="WST WS Core Feature"
-      version="1.5.0.qualifier"
-      provider-name="Eclipse.org">
+      label="%featureName"
+      version="1.5.3.qualifier"
+      provider-name="%providerName">
 
    <description>
       %description
    </description>
 
-   <license url="license.html">
+   <copyright>
+      %copyright
+   </copyright>
+
+   <license url="%licenseURL">
       %license
    </license>
 
+   <url>
+      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
+   </url>
+
    <requires>
+      <import feature="org.apache.commons_logging.feature" version="1.0.4"/>
+      <import feature="org.apache.jakarta_log4j.feature" version="1.2.8"/>
       <import feature="org.apache.axis.feature" version="1.2.1" match="greaterOrEqual"/>
       <import feature="org.apache.wsil4j.feature" version="1.0.0" match="greaterOrEqual"/>
       <import feature="org.uddi4j.feature" version="2.0.3" match="greaterOrEqual"/>
diff --git a/features/org.eclipse.wst.ws_core.feature/sourceTemplateFeature/feature.properties b/features/org.eclipse.wst.ws_core.feature/sourceTemplateFeature/feature.properties
index bcbf9b0..62c64f4 100644
--- a/features/org.eclipse.wst.ws_core.feature/sourceTemplateFeature/feature.properties
+++ b/features/org.eclipse.wst.ws_core.feature/sourceTemplateFeature/feature.properties
@@ -15,15 +15,28 @@
 # This file should be translated.
 
 # "featureName" property - name of the feature
-featureName=Source for WST WS Core Feature
+featureName=WST WS Core Developer Resources
 
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse.org
 
 # "updateSiteName" property - label for the update site
-updateSiteName=Eclipse.org update site
+updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
+description=Source code zips for WST WS core.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2006 IBM Corporation and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    IBM Corporation - initial API and implementation\n
+################ end of copyright property ####################################
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
diff --git a/features/org.eclipse.wst.ws_core.feature/sourceTemplateFeature/feature.xml b/features/org.eclipse.wst.ws_core.feature/sourceTemplateFeature/feature.xml
index 8990dd9..127cc21 100644
--- a/features/org.eclipse.wst.ws_core.feature/sourceTemplateFeature/feature.xml
+++ b/features/org.eclipse.wst.ws_core.feature/sourceTemplateFeature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.wst.ws_core.feature.source"
       label="%featureName"
-      version="1.5.0.qualifier"
+      version="1.5.3.qualifier"
       provider-name="%providerName">
 
    <description>
@@ -13,16 +13,14 @@
       %copyright
    </copyright>
 
-   <license url="license.html">
+   <license url="%licenseURL">
       %license
    </license>
 
    <url>
-      <update label="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates/"/>
+      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
    </url>
 
-
-
    <plugin
          id="org.eclipse.wst.ws_core.feature.source"
          download-size="0"
diff --git a/features/org.eclipse.wst.ws_sdk.feature/feature.properties b/features/org.eclipse.wst.ws_sdk.feature/feature.properties
index 64893f7..88b08f4 100644
--- a/features/org.eclipse.wst.ws_sdk.feature/feature.properties
+++ b/features/org.eclipse.wst.ws_sdk.feature/feature.properties
@@ -15,14 +15,28 @@
 # This file should be translated.
 
 # "featureName" property - name of the feature
+featureName=WST Web Services Plug-in Developer Resources
 
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse.org
 
 # "updateSiteName" property - label for the update site
-updateSiteName=Eclipse.org update site
+updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
+description=Source code zips for the WST Web services tools
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2000, 2006 IBM Corporation and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    IBM Corporation - initial API and implementation\n
+################ end of copyright property ####################################
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
diff --git a/features/org.eclipse.wst.ws_sdk.feature/feature.xml b/features/org.eclipse.wst.ws_sdk.feature/feature.xml
index a15b757..0c7ffd9 100644
--- a/features/org.eclipse.wst.ws_sdk.feature/feature.xml
+++ b/features/org.eclipse.wst.ws_sdk.feature/feature.xml
@@ -1,20 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.wst.ws_sdk.feature"
-      label="WST WS SDK Feature"
-      version="1.5.0.qualifier"
-      provider-name="Eclipse.org">
+      label="%featureName"
+      version="1.5.3.qualifier"
+      provider-name="%providerName">
 
    <description>
       %description
    </description>
 
-   <license url="license.html">
+   <copyright>
+      %copyright
+   </copyright>
+
+   <license url="%licenseURL">
       %license
    </license>
 
    <url>
-      <update label="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates/"/>
+      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
    </url>
 
    <includes
diff --git a/features/org.eclipse.wst.ws_tests.feature/build.properties b/features/org.eclipse.wst.ws_tests.feature/build.properties
index e731070..bcb33ad 100644
--- a/features/org.eclipse.wst.ws_tests.feature/build.properties
+++ b/features/org.eclipse.wst.ws_tests.feature/build.properties
@@ -1,9 +1,5 @@
 bin.includes = feature.xml,\
                license.html,\
                epl-v10.html,\
-               eclipse_update_120.jpg
-src.includes = eclipse_update_120.jpg,\
-               build.properties,\
-               epl-v10.html,\
-               feature.xml,\
-               license.html
+               eclipse_update_120.jpg,\
+               feature.properties
diff --git a/features/org.eclipse.wst.ws_tests.feature/feature.properties b/features/org.eclipse.wst.ws_tests.feature/feature.properties
new file mode 100644
index 0000000..b48356c
--- /dev/null
+++ b/features/org.eclipse.wst.ws_tests.feature/feature.properties
@@ -0,0 +1,144 @@
+###############################################################################
+# Copyright (c) 2006 IBM 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:
+#     IBM Corporation - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=WST Web Services Tests
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse.org
+
+# "updateSiteName" property - label for the update site
+updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
+
+# "description" property - description of the feature
+description=WST Web services tests
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2006 IBM Corporation and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    IBM Corporation - initial API and implementation\n
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
+March 17, 2005\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
+is provided to you under the terms and conditions of the Eclipse Public\n\
+License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
+Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse.org CVS\n\
+repository ("Repository") in CVS modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+   - Content may be structured and packaged into modules to facilitate delivering,\n\
+     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+     plug-in fragments ("Fragments"), and features ("Features").\n\
+   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
+     in a directory named "plugins".\n\
+   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+Features may also include other Features ("Included Features"). Files named\n\
+"feature.xml" may contain a list of the names and version numbers of\n\
+Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+   - The top-level (root) directory\n\
+   - Plug-in and Fragment directories\n\
+   - Inside Plug-ins and Fragments packaged as JARs\n\
+   - Sub-directories of the directory named "src" of certain Plug-ins\n\
+   - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Eclipse Update Manager, you must agree to a license ("Feature Update\n\
+License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties". Such Abouts,\n\
+Feature Licenses and Feature Update Licenses contain the terms and\n\
+conditions (or references to such terms and conditions) that govern your\n\
+use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
+    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use,\n\
+and re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.ws_tests.feature/feature.xml b/features/org.eclipse.wst.ws_tests.feature/feature.xml
index f35bece..505bd4a 100644
--- a/features/org.eclipse.wst.ws_tests.feature/feature.xml
+++ b/features/org.eclipse.wst.ws_tests.feature/feature.xml
@@ -1,20 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.wst.ws_tests.feature"
-      label="WST WS Feature Tests"
-      version="1.5.0.qualifier"
-      provider-name="Eclipse.org">
+      label="%featureName"
+      version="1.5.3.qualifier"
+      provider-name="%providerName">
 
    <description>
       %description
    </description>
 
+   <copyright>
+      %copyright
+   </copyright>
+
    <license url="license.html">
       %license
    </license>
 
    <url>
-      <update label="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates/"/>
+      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
    </url>
 
    <plugin
diff --git a/features/org.eclipse.wst.ws_ui.feature/build.properties b/features/org.eclipse.wst.ws_ui.feature/build.properties
index d6a4dce..7f47694 100644
--- a/features/org.eclipse.wst.ws_ui.feature/build.properties
+++ b/features/org.eclipse.wst.ws_ui.feature/build.properties
@@ -3,8 +3,3 @@
                epl-v10.html,\
                license.html,\
                feature.properties
-src.includes = license.html,\
-               feature.xml,\
-               epl-v10.html,\
-               eclipse_update_120.jpg,\
-               build.properties
diff --git a/features/org.eclipse.wst.ws_ui.feature/feature.properties b/features/org.eclipse.wst.ws_ui.feature/feature.properties
index 64893f7..9ba7004 100644
--- a/features/org.eclipse.wst.ws_ui.feature/feature.properties
+++ b/features/org.eclipse.wst.ws_ui.feature/feature.properties
@@ -15,14 +15,28 @@
 # This file should be translated.
 
 # "featureName" property - name of the feature
+featureName=WST Web Services UI
 
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse.org
 
 # "updateSiteName" property - label for the update site
-updateSiteName=Eclipse.org update site
+updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
+description=Web Services UI tools.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2006 IBM Corporation and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    IBM Corporation - initial API and implementation\n
+################ end of copyright property ####################################
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
diff --git a/features/org.eclipse.wst.ws_ui.feature/feature.xml b/features/org.eclipse.wst.ws_ui.feature/feature.xml
index a4e1d9e..2a0faa5 100644
--- a/features/org.eclipse.wst.ws_ui.feature/feature.xml
+++ b/features/org.eclipse.wst.ws_ui.feature/feature.xml
@@ -1,26 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.wst.ws_ui.feature"
-      label="WST WS UI Feature"
-      version="1.5.0.qualifier"
-      provider-name="Eclipse.org">
+      label="%featureName"
+      version="1.5.3.qualifier"
+      provider-name="%providerName">
 
    <description>
       %description
    </description>
 
-   <license url="license.html">
+   <copyright>
+      %copyright
+   </copyright>
+
+   <license url="%licenseURL">
       %license
    </license>
 
    <url>
-      <update label="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates/"/>
+      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
    </url>
 
    <includes
          id="org.eclipse.wst.ws_userdoc.feature"
          version="0.0.0"/>
 
+   <includes
+         id="org.eclipse.wst.ws_core.feature"
+         version="0.0.0"/>
+
    <requires>
       <import feature="org.eclipse.gef" version="3.2" match="equivalent"/>
       <import feature="org.eclipse.wst.ws_core.feature" version="1.0.0" match="greaterOrEqual"/>
diff --git a/features/org.eclipse.wst.ws_ui.feature/sourceTemplateFeature/feature.properties b/features/org.eclipse.wst.ws_ui.feature/sourceTemplateFeature/feature.properties
index 01950e3..d5295d8 100644
--- a/features/org.eclipse.wst.ws_ui.feature/sourceTemplateFeature/feature.properties
+++ b/features/org.eclipse.wst.ws_ui.feature/sourceTemplateFeature/feature.properties
@@ -15,16 +15,28 @@
 # This file should be translated.
 
 # "featureName" property - name of the feature
-featureName=Eclipse JDT Plug-in Developer Resources
+featureName=WST WS UI Developer Resources
 
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse.org
 
 # "updateSiteName" property - label for the update site
-updateSiteName=Eclipse.org update site
+updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
-description=API documentation and source code zips for Eclipse Java development tools.
+description=Source code zips for WST WS UI.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2006 IBM Corporation and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    IBM Corporation - initial API and implementation\n
+################ end of copyright property ####################################
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
diff --git a/features/org.eclipse.wst.ws_ui.feature/sourceTemplateFeature/feature.xml b/features/org.eclipse.wst.ws_ui.feature/sourceTemplateFeature/feature.xml
index 350b36b..1793a99 100644
--- a/features/org.eclipse.wst.ws_ui.feature/sourceTemplateFeature/feature.xml
+++ b/features/org.eclipse.wst.ws_ui.feature/sourceTemplateFeature/feature.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.wst.ws_ui.feature.source"
-      label="Source for WST WS UI Feature"
-      version="1.5.0.qualifier"
-      provider-name="Eclipse.org">
+      label="%featureName"
+      version="1.5.3.qualifier"
+      provider-name="%featureProvider">
 
    <description>
       %description
@@ -18,7 +18,7 @@
    </license>
 
    <url>
-      <update label="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates/"/>
+      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
    </url>
 
    <includes
diff --git a/features/org.eclipse.wst.ws_userdoc.feature/build.properties b/features/org.eclipse.wst.ws_userdoc.feature/build.properties
index d6a4dce..7f47694 100644
--- a/features/org.eclipse.wst.ws_userdoc.feature/build.properties
+++ b/features/org.eclipse.wst.ws_userdoc.feature/build.properties
@@ -3,8 +3,3 @@
                epl-v10.html,\
                license.html,\
                feature.properties
-src.includes = license.html,\
-               feature.xml,\
-               epl-v10.html,\
-               eclipse_update_120.jpg,\
-               build.properties
diff --git a/features/org.eclipse.wst.ws_userdoc.feature/feature.properties b/features/org.eclipse.wst.ws_userdoc.feature/feature.properties
index 64893f7..9bdefb3 100644
--- a/features/org.eclipse.wst.ws_userdoc.feature/feature.properties
+++ b/features/org.eclipse.wst.ws_userdoc.feature/feature.properties
@@ -15,14 +15,28 @@
 # This file should be translated.
 
 # "featureName" property - name of the feature
+featureName=WST Web Services User Documentation
 
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse.org
 
 # "updateSiteName" property - label for the update site
-updateSiteName=Eclipse.org update site
+updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
+description=WST Web services user documentation
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2006 IBM Corporation and others.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+Contributors:\n\
+    IBM Corporation - initial API and implementation\n
+################ end of copyright property ####################################
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
diff --git a/features/org.eclipse.wst.ws_userdoc.feature/feature.xml b/features/org.eclipse.wst.ws_userdoc.feature/feature.xml
index 764cce4..1a823bf 100644
--- a/features/org.eclipse.wst.ws_userdoc.feature/feature.xml
+++ b/features/org.eclipse.wst.ws_userdoc.feature/feature.xml
@@ -1,26 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <feature
       id="org.eclipse.wst.ws_userdoc.feature"
-      label="User Documentation for WST WS Feature"
-      version="1.5.0.qualifier"
-      provider-name="Eclipse.org">
+      label="%featureName"
+      version="1.5.3.qualifier"
+      provider-name="%providerName">
 
    <description>
       %description
    </description>
 
+   <copyright>
+      %copyright
+   </copyright>
+
    <license url="license.html">
       %license
    </license>
 
    <url>
-      <update label="Web Tools Platform (WTP) Updates" url="http://download.eclipse.org/webtools/updates/"/>
+      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
    </url>
 
-   <includes
-         id="org.eclipse.wst.xml_userdoc.feature"
-         version="0.0.0"/>
-
    <plugin
          id="org.eclipse.wst.wsdl.ui.doc.user"
          download-size="0"
@@ -35,4 +35,11 @@
          version="0.0.0"
          unpack="false"/>
 
+   <plugin
+         id="org.eclipse.wst.command.env.doc.user"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
 </feature>
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0fd1048
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,57 @@
+#Mon Jan 30 10:29:14 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..5770402
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,12 @@
+#Mon Jan 30 10:41:39 EST 2006
+compilers.p.deprecated=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=1
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/META-INF/MANIFEST.MF
index 40f406b..3069cd0 100644
--- a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/META-INF/MANIFEST.MF
@@ -1,12 +1,14 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Axis Consumption Core Tests Plug-in
+Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.axis.consumption.core.tests
 Bundle-Version: 1.0.0
-Bundle-Vendor: Eclipse.org
+Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
 Require-Bundle: org.junit,
  org.eclipse.core.runtime,
  org.eclipse.core.resources,
  org.eclipse.jdt.core,
- org.eclipse.wst.ws
+ org.eclipse.wst.ws,
+ org.eclipse.jst.ws,
+ org.eclipse.wst.common.uriresolver
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/about.html b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/about.html
new file mode 100644
index 0000000..4ec5989
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/about.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/build.properties b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/build.properties
index eec6f92..ad188ef 100644
--- a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/build.properties
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/build.properties
@@ -1,4 +1,5 @@
 source.. = tests/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               about.html
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/plugin.properties b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/plugin.properties
new file mode 100644
index 0000000..96ef6c4
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/plugin.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2006 IBM 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:
+# IBM Corporation - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20060424   138060 kathy@ca.ibm.com - Kathy Chan
+###############################################################################
+
+#
+# Messages in plugin.xml.
+#
+PLUGIN_NAME=JST Web Services Axis Consumption Core Test
+PLUGIN_PROVIDER=Eclipse.org
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/unittest/LocatorTests.java b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/unittest/LocatorTests.java
index d9c97cd..0c7a60b 100644
--- a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/unittest/LocatorTests.java
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/unittest/LocatorTests.java
@@ -10,6 +10,8 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060317   127456 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060711   147862 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060711   147864 cbrealey@ca.ibm.com - Chris Brealey
  *******************************************************************************/
 
 package org.eclipse.jst.ws.axis.consumption.core.tests.unittest;
@@ -20,10 +22,14 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jst.ws.axis.consumption.core.tests.util.JavaFilter;
 import org.eclipse.jst.ws.axis.consumption.core.tests.util.StdoutProgressMonitor;
 import org.eclipse.jst.ws.axis.consumption.core.tests.util.Util;
+import org.eclipse.jst.ws.internal.wsrt.WebServiceJavaClientInfo;
 import org.eclipse.wst.ws.internal.wsfinder.WebServiceFinder;
 import org.eclipse.wst.ws.internal.wsrt.WebServiceClientInfo;
 
@@ -39,15 +45,20 @@
 		System.out.println("BEGIN test_AxisClientLocator");
 		try
 		{
+			String[] projectNames = new String[] {"Java1","Java2","Java3"};
+			IProject[] projects = new IProject[projectNames.length];
+			for (int x=0; x<projectNames.length; x++)
+			{
+				projects[x] = ResourcesPlugin.getWorkspace().getRoot().getProject(projectNames[x]);
+			}
 			Util.init();
 			try
 			{
-				String[] projects = new String[] {"Java1","Java2","Java3"};
 				for (int i=0; i<projects.length; i++)
 				{
-					IJavaProject javaProject = Util.createJavaProject(projects[i]);
+					IJavaProject javaProject = Util.createJavaProject(projectNames[i]);
 					Util.addRequiredJarsToJavaProject(javaProject);
-					Util.copyExamplesToJavaProject(javaProject);
+					Util.copyExamplesToJavaProject(javaProject,new JavaFilter());
 				}
 			}
 			catch (Throwable t)
@@ -58,7 +69,6 @@
 			WebServiceFinder finder = WebServiceFinder.instance();
 			String[] categoryIds = finder.getWebServiceCategoryIds();
 			int n = -1;
-			int p = 0;
 			IProgressMonitor monitor = new StdoutProgressMonitor();
 			for (int i=0; i<categoryIds.length; i++)
 			{
@@ -67,23 +77,44 @@
 				{
 					n = i;
 					Iterator iter = finder.getWebServiceClientsByCategoryId(categoryIds[i],monitor);
-					while (iter.hasNext())
-					{
-						Object obj = iter.next();
-						assertTrue("Finder returned a "+obj.getClass().getName()+" instead of a WebServiceClientInfo.",obj instanceof WebServiceClientInfo);
-						p++;
-						WebServiceClientInfo wscInfo = (WebServiceClientInfo)obj;
-						String proxyClassURL = wscInfo.getImplURL();
-						System.out.println("Axis client proxy class = ["+proxyClassURL+"]");
-					}
+					assertFoundClients(iter,6);
+					iter = finder.getWebServiceClientsByCategoryId(categoryIds[i],projects,monitor);
+					assertFoundClients(iter,6);
+					iter = finder.getWebServiceClientsByCategoryId(categoryIds[i],new IProject[] {projects[0]},monitor);
+					assertFoundClients(iter,2);
+					iter = finder.getWebServiceClientsByCategoryId(categoryIds[i],new IProject[] {projects[1],projects[2]},monitor);
+					assertFoundClients(iter,4);
+					IProject noSuchProject = ResourcesPlugin.getWorkspace().getRoot().getProject("noSuchProject");
+					iter = finder.getWebServiceClientsByCategoryId(categoryIds[i],new IProject[] {noSuchProject},monitor);
+					assertFoundClients(iter,0);
 				}
 			}
 			assertTrue("Axis locator extension missing.",n >= 0);
-			assertTrue("Did not find the expected six proxies.",p == 6);
 		}
 		finally
 		{
 			System.out.println("ENDED test_AxisClientLocator");
 		}
 	}
+	
+	private void assertFoundClients ( Iterator iter, int x )
+	{
+		int p = 0;
+		while (iter.hasNext())
+		{
+			Object obj = iter.next();
+			assertTrue("Finder returned a "+obj.getClass().getName()+" instead of a WebServiceClientInfo.",obj instanceof WebServiceClientInfo);
+			p++;
+			WebServiceClientInfo wscInfo = (WebServiceClientInfo)obj;
+			String proxyClassURL = wscInfo.getImplURL();
+			System.out.println("Axis client proxy class = ["+proxyClassURL+"]");
+			if (wscInfo instanceof WebServiceJavaClientInfo)
+			{
+				WebServiceJavaClientInfo wscJInfo = (WebServiceJavaClientInfo)wscInfo;
+				assertNotNull("Found an unexpected null IType",wscJInfo.getType());
+				System.out.println("Axis client proxy IType = ["+wscJInfo.getType()+"]");
+			}
+		}
+		assertTrue("Found "+p+" proxies instead of the expected "+x+".",p == x);
+	}
 }
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/Filter.java b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/Filter.java
new file mode 100644
index 0000000..ba6c044
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/Filter.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060711   147862 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060711   147864 cbrealey@ca.ibm.com - Chris Brealey
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.axis.consumption.core.tests.util;
+
+public interface Filter
+{
+	public boolean accept ( Object object );
+}
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/JavaFilter.java b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/JavaFilter.java
new file mode 100644
index 0000000..f76206f
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/JavaFilter.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060711   147862 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060711   147864 cbrealey@ca.ibm.com - Chris Brealey
+ *******************************************************************************/
+
+package org.eclipse.jst.ws.axis.consumption.core.tests.util;
+
+public class JavaFilter implements Filter {
+
+	public boolean accept ( Object object )
+	{
+		return object.toString().endsWith(".java");
+	}
+
+}
diff --git a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/Util.java b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/Util.java
index 92c906a..e790268 100644
--- a/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/Util.java
+++ b/tests/org.eclipse.jst.ws.axis.consumption.core.tests/tests/org/eclipse/jst/ws/axis/consumption/core/tests/util/Util.java
@@ -10,6 +10,9 @@
  * yyyymmdd bug      Email and other contact information
  * -------- -------- -----------------------------------------------------------
  * 20060317   127456 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060711   147862 cbrealey@ca.ibm.com - Chris Brealey
+ * 20060711   147864 cbrealey@ca.ibm.com - Chris Brealey
+ * 20061211   162288 makandre@ca.ibm.com - Andrew Mak, workspace paths with spaces break Java Editor Launch
  *******************************************************************************/
 
 package org.eclipse.jst.ws.axis.consumption.core.tests.util;
@@ -17,6 +20,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -34,6 +38,7 @@
 import org.eclipse.core.resources.IncrementalProjectBuilder;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
@@ -43,6 +48,7 @@
 import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.wst.common.uriresolver.internal.util.URIEncoder;
 import org.osgi.framework.Bundle;
 
 public class Util
@@ -103,17 +109,18 @@
 		
 		// Add the Axis jars to the list.
 		String[] jars = new String[] {
-				"axis.jar",
-				"commons-discovery-0.2.jar",
-				"commons-logging-1.0.4.jar",
-				"jaxrpc.jar",
-				"log4j-1.2.8.jar",
-				"saaj.jar",
-				"wsdl4j-1.5.1.jar"
+				"org.apache.axis","axis.jar",
+				"org.apache.axis","commons-discovery-0.2.jar",
+				"org.apache.commons_logging","commons-logging-1.0.4.jar",
+				"org.apache.axis","jaxrpc.jar",
+				"org.apache.jakarta_log4j","log4j-1.2.8.jar",
+				"org.apache.axis","saaj.jar",
+				"org.apache.axis","wsdl4j-1.5.1.jar"
 		};
-		for (int i=0; i<jars.length; i++)
+		
+		for (int i=0; i<jars.length; i+=2)
 		{
-			IPath jar = getAxisPluginJarPath(jars[i]);
+			IPath jar = getAxisPluginJarPath(jars[i],jars[i+1]);
 			System.out.println("Adding jar ["+jar.toString()+"]");
 			IClasspathEntry jarEntry = JavaCore.newLibraryEntry(jar,null,null);
 			list.add(jarEntry);
@@ -129,21 +136,24 @@
 	 * @return The filesystem path to the named jar in the Axis plugin.
 	 * @throws CoreException If the path could not be computed.
 	 */
-	public static IPath getAxisPluginJarPath ( String jarName )
+	public static IPath getAxisPluginJarPath ( String pluginName, String jarName )
 	throws CoreException
 	{
-		Bundle bundle = Platform.getBundle("org.apache.axis");
+		Bundle bundle = Platform.getBundle(pluginName);
 		if (bundle == null)
 		{
 			throw new CoreException(new Status(IStatus.ERROR,"",0,"Unable to locate plugin org.apache.axis",null));
 		}
-		URL axisURL = Platform.find(bundle,new Path("lib/"+jarName));
+		URL axisURL = FileLocator.find(bundle,new Path("lib/"+jarName),null);
 		try
 		{
-			URL localAxisURL = Platform.asLocalURL(axisURL);
-			File file = new File(new URI(localAxisURL.toString()));
+			URL localAxisURL = FileLocator.toFileURL(axisURL);
+			File file = new File(new URI(URIEncoder.encode(localAxisURL.toString(), "UTF-8")));
 			return new Path(file.toString());
 		}
+		catch (UnsupportedEncodingException uee) {
+			throw new CoreException(new Status(IStatus.ERROR,"",0,"Unable to encode jar path for plugin org.apache.axis",uee));			
+		}
 		catch (IOException ioe)
 		{
 			throw new CoreException(new Status(IStatus.ERROR,"",0,"Unable to locate plugin org.apache.axis",ioe));
@@ -158,13 +168,13 @@
 	 * Copies examples to the given Java project.
 	 * @param javaProject The project to copy the examples to.
 	 */
-	public static void copyExamplesToJavaProject ( IJavaProject javaProject )
+	public static void copyExamplesToJavaProject ( IJavaProject javaProject, Filter filter )
 	throws CoreException
 	{
 		IProject project = javaProject.getProject();
 		String sourcePath = project.getName();
-		copyExample("org.eclipse.jst.ws.axis.consumption.core.tests","data/axisSource1","*.java",sourcePath);
-		copyExample("org.eclipse.jst.ws.axis.consumption.core.tests","data/axisSource2","*.java",sourcePath);
+		copyExample("org.eclipse.jst.ws.axis.consumption.core.tests","data/axisSource1",sourcePath,filter);
+		copyExample("org.eclipse.jst.ws.axis.consumption.core.tests","data/axisSource2",sourcePath,filter);
 		project.build(IncrementalProjectBuilder.FULL_BUILD,null);
 		try
 		{
@@ -183,7 +193,7 @@
 	 * @param sourceRoot The plugin-related path to copy from.
 	 * @param targetWorkspacePath The workspace path to copy to.
 	 */
-	public static void copyExample ( String sourcePlugin, String sourceRoot, String pattern, String targetWorkspacePath )
+	public static void copyExample ( String sourcePlugin, String sourceRoot, String targetWorkspacePath, Filter filter )
 	throws CoreException
 	{
 		Bundle bundle = Platform.getBundle(sourcePlugin);
@@ -195,11 +205,12 @@
 		while (e.hasMoreElements())
 		{
 			String path = e.nextElement().toString();
-			copyExampleFile(bundle,path,new Path(sourceRoot).segmentCount(),targetWorkspacePath);
+			System.out.println("Bundle path = ["+path+"]");
+			copyExampleFile(bundle,path,new Path(sourceRoot).segmentCount(),targetWorkspacePath,filter);
 		}
 	}
 	
-	public static void copyExampleFile ( Bundle bundle, String path, int offset, String targetWorkspacePath )
+	public static void copyExampleFile ( Bundle bundle, String path, int offset, String targetWorkspacePath, Filter filter )
 	throws CoreException
 	{
 		IPath reducedPath = new Path(path).removeFirstSegments(offset);
@@ -216,14 +227,18 @@
 			while (e.hasMoreElements())
 			{
 				String subpath = e.nextElement().toString();
-				copyExampleFile(bundle,subpath,offset,targetWorkspacePath);
+				copyExampleFile(bundle,subpath,offset,targetWorkspacePath,filter);
 			}
 		}
 		else
 		{
 			System.out.println("File = ["+path+"] Target = ["+targetPath+"]");
-			URL url = bundle.getEntry(path);
-			copyFile(url,targetPath);
+			if (filter.accept(path))
+			{
+				System.out.println("Copied ["+path+"]");
+				URL url = bundle.getEntry(path);
+				copyFile(url,targetPath);
+			}
 		}
 	}
 	
diff --git a/tests/org.eclipse.jst.ws.tests.performance/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.ws.tests.performance/META-INF/MANIFEST.MF
index eb22bc5..54ca3a8 100644
--- a/tests/org.eclipse.jst.ws.tests.performance/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.ws.tests.performance/META-INF/MANIFEST.MF
@@ -1,11 +1,11 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Axis Perfmsr Plug-in
+Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.tests.performance
-Bundle-Version: 1.0.0
+Bundle-Version: 1.0.100
 Bundle-ClassPath: axisPerfmsr.jar
 Bundle-Activator: org.eclipse.jst.ws.tests.performance.plugin.PerformancePlugin
-Bundle-Vendor: Eclipse.org
+Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
 Export-Package: org.eclipse.jst.ws.tests.axis.tomcat.v50.perfmsr,
  org.eclipse.jst.ws.tests.performance,
@@ -25,5 +25,7 @@
  org.eclipse.wst.command.env.core,
  org.eclipse.wst.common.environment,
  org.eclipse.wst.common.modulecore, 
- org.eclipse.emf.ecore
-Eclipse-AutoStart: true
+ org.eclipse.emf.ecore,
+ org.eclipse.jst.ws.consumption,
+ org.eclipse.wst.common.frameworks
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.jst.ws.tests.performance/about.html b/tests/org.eclipse.jst.ws.tests.performance/about.html
index 6f6b96c..4ec5989 100644
--- a/tests/org.eclipse.jst.ws.tests.performance/about.html
+++ b/tests/org.eclipse.jst.ws.tests.performance/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.jst.ws.tests.performance/plugin.properties b/tests/org.eclipse.jst.ws.tests.performance/plugin.properties
new file mode 100644
index 0000000..99d89bb
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.tests.performance/plugin.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2006 IBM 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:
+# IBM Corporation - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20060424   138060 kathy@ca.ibm.com - Kathy Chan
+###############################################################################
+
+#
+# Messages in plugin.xml.
+#
+PLUGIN_NAME=JST Web Services Performance Plug-in
+PLUGIN_PROVIDER=Eclipse.org
diff --git a/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrBUJavaAxisTC50.java b/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrBUJavaAxisTC50.java
index dd7179e..2e1340c 100644
--- a/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrBUJavaAxisTC50.java
+++ b/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrBUJavaAxisTC50.java
@@ -9,8 +9,10 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
+import org.eclipse.jst.ws.internal.consumption.command.common.CreateModuleCommand;
 import org.eclipse.jst.ws.tests.axis.tomcat.v50.WSWizardTomcat50Test;
 import org.eclipse.jst.ws.tests.performance.util.PerformanceJUnitUtils;
 import org.eclipse.jst.ws.tests.unittest.WSJUnitConstants;
@@ -40,6 +42,7 @@
 		IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);
         IPath destPath = ResourceUtils.getJavaSourceLocation(webProject);
         IFolder folder = (IFolder)ResourceUtils.findResource(destPath);		
+		JUnitUtils.copyTestData("BUJava/src",folder,env_, null);
 		sourceFile_ = folder.getFile(new Path("foo/Echo.java"));
 		// Ensure that Echo.class is built in:
 		// <Web Project>/WebContent/WEB-INF/classes/foo/Echo.class
@@ -49,6 +52,27 @@
 		
 	}
 	
+    protected void createProjects() throws Exception{
+        IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);
+        if (webProject==null || !webProject.exists()){
+          createWebModule(PROJECT_NAME, PROJECT_NAME,J2EEVersionConstants.J2EE_1_4_ID);
+        }
+      }
+      
+      private void createWebModule(String projectNm, String componentName, int j2eeVersion){
+
+        CreateModuleCommand cmc = new CreateModuleCommand();
+        cmc.setJ2eeLevel(new Integer(j2eeVersion).toString());
+        cmc.setModuleName(componentName);
+        cmc.setModuleType(CreateModuleCommand.WEB);
+        cmc.setProjectName(projectNm);
+        cmc.setServerFactoryId(SERVERTYPEID_TC50);
+        cmc.setServerInstanceId(server_.getId());
+        cmc.execute(null, null );
+        
+        System.out.println("Done creating Web Project, "+projectNm);      
+       
+      }
 	
 	
   /**
@@ -83,14 +107,15 @@
 	    try {
     
 	      performanceMeter.start();
-	      status = PerformanceJUnitUtils.launchCreationWizard(ScenarioConstants.WIZARDID_BOTTOM_UP,ScenarioConstants.OBJECT_CLASS_ID_IFILE,initialSelection_);
+	      PerformanceJUnitUtils.launchCreationWizard(ScenarioConstants.WIZARDID_BOTTOM_UP,ScenarioConstants.OBJECT_CLASS_ID_IFILE,initialSelection_);
 	      performanceMeter.stop();
 
 	      performanceMeter.commit();
 	      perf.assertPerformance(performanceMeter);
 	    }
 	    finally {
-			performanceMeter.dispose();
+	    	if (performanceMeter==null)
+	    		performanceMeter.dispose();
 	 	}
 		
 		if (status.getSeverity() == Status.OK)
diff --git a/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrClientAxisTC50.java b/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrClientAxisTC50.java
index 488263e..c8fae07 100644
--- a/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrClientAxisTC50.java
+++ b/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrClientAxisTC50.java
@@ -9,8 +9,10 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
 import org.eclipse.jst.ws.internal.common.ResourceUtils;
+import org.eclipse.jst.ws.internal.consumption.command.common.CreateModuleCommand;
 import org.eclipse.jst.ws.tests.axis.tomcat.v50.WSWizardTomcat50Test;
 import org.eclipse.jst.ws.tests.performance.util.PerformanceJUnitUtils;
 import org.eclipse.jst.ws.tests.unittest.WSJUnitConstants;
@@ -30,6 +32,26 @@
 	
 	private IFile sourceFile_;
 
+    protected void createProjects() throws Exception{
+        IProject webProject = ProjectUtilities.getProject(CLIENT_PROJECT_NAME);
+        if (!webProject.exists()){
+          createWebModule(CLIENT_PROJECT_NAME, CLIENT_PROJECT_NAME,J2EEVersionConstants.J2EE_1_4_ID);
+        }
+      }
+      
+      private void createWebModule(String projectNm, String componentName, int j2eeVersion){
+
+        CreateModuleCommand cmc = new CreateModuleCommand();
+        cmc.setJ2eeLevel(new Integer(j2eeVersion).toString());
+        cmc.setModuleName(componentName);
+        cmc.setModuleType(CreateModuleCommand.WEB);
+        cmc.setProjectName(projectNm);
+        cmc.setServerFactoryId(SERVERTYPEID_TC50);
+        cmc.setServerInstanceId(server_.getId());
+        cmc.execute(null, null );
+        
+      }
+      
 	/**
    * Sets up the input data;
    * - create project(s),
@@ -39,6 +61,7 @@
 		
 		IProject webProject = ProjectUtilities.getProject(CLIENT_PROJECT_NAME);
         IFolder destFolder = (IFolder)J2EEUtils.getWebContentContainer(webProject);
+        JUnitUtils.copyTestData("TDJava",destFolder,env_, null);
 		sourceFile_ = destFolder.getFile(new Path("Echo.wsdl"));		
 		JUnitUtils.syncBuildProject(webProject,env_, null);
 		
@@ -74,13 +97,14 @@
 	    try {
     
 	      performanceMeter.start();
-	      status = PerformanceJUnitUtils.launchCreationWizard(ScenarioConstants.WIZARDID_CLIENT,ScenarioConstants.OBJECT_CLASS_ID_IFILE,initialSelection_);
+	      PerformanceJUnitUtils.launchCreationWizard(ScenarioConstants.WIZARDID_CLIENT,ScenarioConstants.OBJECT_CLASS_ID_IFILE,initialSelection_);
 	      performanceMeter.stop();
 	      performanceMeter.commit();
 	      perf.assertPerformance(performanceMeter);
 	    }
 	    finally {
-			performanceMeter.dispose();
+	    	if (performanceMeter==null)
+	    		performanceMeter.dispose();
 	 	}
 	    
 		if (status.getSeverity() == Status.OK) {
diff --git a/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrTDJavaAxisTC50.java b/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrTDJavaAxisTC50.java
index b65b3f6..07bf32e 100644
--- a/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrTDJavaAxisTC50.java
+++ b/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/axis/tomcat/v50/perfmsr/PerfmsrTDJavaAxisTC50.java
@@ -8,7 +8,9 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.jst.ws.internal.common.J2EEUtils;
+import org.eclipse.jst.ws.internal.consumption.command.common.CreateModuleCommand;
 import org.eclipse.jst.ws.tests.axis.tomcat.v50.WSWizardTomcat50Test;
 import org.eclipse.jst.ws.tests.performance.util.PerformanceJUnitUtils;
 import org.eclipse.jst.ws.tests.unittest.WSJUnitConstants;
@@ -28,7 +30,28 @@
   
   private IFile sourceFile_;
 	
+  protected void createProjects() throws Exception{
+	    IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);
+	    if (!webProject.exists()){
+	      createWebModule(PROJECT_NAME, PROJECT_NAME,J2EEVersionConstants.J2EE_1_4_ID);
+	    }
+	  }
+	  
+	  private void createWebModule(String projectNm, String componentName, int j2eeVersion){
 
+	    CreateModuleCommand cmc = new CreateModuleCommand();
+	    cmc.setJ2eeLevel(new Integer(j2eeVersion).toString());
+	    cmc.setModuleName(componentName);
+	    cmc.setModuleType(CreateModuleCommand.WEB);
+	    cmc.setProjectName(projectNm);
+	    cmc.setServerFactoryId(SERVERTYPEID_TC50);
+	    cmc.setServerInstanceId(server_.getId());
+	    cmc.execute(null, null );
+	    
+	    System.out.println("Done creating Web Project, "+projectNm);      
+	   
+	  }  
+	  
   /**
    * Sets up the input data;
    * - create project(s),
@@ -38,6 +61,7 @@
 
 		IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);		
 		IFolder destFolder = (IFolder)J2EEUtils.getWebContentContainer(webProject);
+		JUnitUtils.copyTestData("TDJava",destFolder,env_, null);
 		sourceFile_ = destFolder.getFile(new Path("Echo.wsdl"));
 		JUnitUtils.syncBuildProject(webProject,env_, null);
 	}
@@ -70,13 +94,14 @@
 	    try {
     
 	      performanceMeter.start();
-	      status = PerformanceJUnitUtils.launchCreationWizard(ScenarioConstants.WIZARDID_TOP_DOWN,ScenarioConstants.OBJECT_CLASS_ID_IFILE,initialSelection_);
+	      PerformanceJUnitUtils.launchCreationWizard(ScenarioConstants.WIZARDID_TOP_DOWN,ScenarioConstants.OBJECT_CLASS_ID_IFILE,initialSelection_);
 	      performanceMeter.stop();
 	      performanceMeter.commit();
 	      perf.assertPerformance(performanceMeter);
 	    }
 	    finally {
-			performanceMeter.dispose();
+	    	if (performanceMeter==null)
+	    		performanceMeter.dispose();
 	 	}
 		if (status.getSeverity() == Status.OK)
 		  verifyOutput();
diff --git a/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/performance/util/PerformanceJUnitUtils.java b/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/performance/util/PerformanceJUnitUtils.java
index 029a0a1..a896dc7 100644
--- a/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/performance/util/PerformanceJUnitUtils.java
+++ b/tests/org.eclipse.jst.ws.tests.performance/src/org/eclipse/jst/ws/tests/performance/util/PerformanceJUnitUtils.java
@@ -10,54 +10,40 @@
  *******************************************************************************/
 package org.eclipse.jst.ws.tests.performance.util;
 
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jst.ws.tests.util.AccumulateStatusHandler;
 import org.eclipse.jst.ws.tests.util.DynamicPopupJUnitWizard;
-import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.command.internal.env.ui.eclipse.EclipseStatusHandler;
+import org.eclipse.wst.common.environment.IStatusHandler;
 
 
 public class PerformanceJUnitUtils {
   
-	private static IStatus launchWizard(String pluginNS,String wizardId,String objectClassId,IStructuredSelection initialSelection) throws Exception
+	private static void launchWizard(String pluginNS,String wizardId,String objectClassId,IStructuredSelection initialSelection) throws Exception
 	{
-		IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.ui.popupMenus").getExtensions();
-		for (int i=0;i<extensions.length;i++)
-		{
-			if (extensions[i].getNamespace().equals(pluginNS));
-			{
-				IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
-				for (int j=0;j<configElements.length;j++)
-				{
-					if (configElements[j].getAttribute("id").equals(wizardId) && configElements[j].getAttribute("objectClass").equals(objectClassId))
-					{
-						IConfigurationElement actionElement = configElements[j].getChildren()[0];
-						AccumulateStatusHandler statusHandler = new AccumulateStatusHandler();
-                        // Use this to enable per command performance measurements
-                        //DynamicPopupJUnitWizard wizard = new DynamicPopupJUnitWizard(statusHandler, log);
-						DynamicPopupJUnitWizard wizard = new DynamicPopupJUnitWizard(statusHandler);
-						wizard.setInitializationData(actionElement,null,null);
-						wizard.selectionChanged(null,initialSelection);
-						wizard.run(null);
-						return statusHandler.getStatus();
-					}
-				}
-			}
-		}
-		return StatusUtils.errorStatus( "No wizard found for: " );
+		IStatusHandler statusHandler = new EclipseStatusHandler();
+
+        DynamicPopupJUnitWizard wizard = new DynamicPopupJUnitWizard(statusHandler);
+        wizard.setInitialData(wizardId);
+        ProgressMonitorDialog monitor = new ProgressMonitorDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
+        try {
+        wizard.runHeadLess(initialSelection, monitor);
+        } 
+        catch (Exception e){
+        	e.printStackTrace();
+        }
+
 	}
 	
-	public static IStatus launchCreationWizard(String wizardId,String objectClassId,IStructuredSelection initialSelection) throws Exception
+	public static void launchCreationWizard(String wizardId,String objectClassId,IStructuredSelection initialSelection) throws Exception
 	{
-		return launchWizard("org.eclipse.jst.ws.creation.ui",wizardId,objectClassId,initialSelection);
+		launchWizard("org.eclipse.jst.ws.creation.ui",wizardId,objectClassId,initialSelection);
 	}
 	
-	public static IStatus launchConsumptionWizard(String wizardId,String objectClassId,IStructuredSelection initialSelection) throws Exception
+	public static void launchConsumptionWizard(String wizardId,String objectClassId,IStructuredSelection initialSelection) throws Exception
 	{
-		return launchWizard("org.eclipse.jst.ws.internal.consumption.ui",wizardId,objectClassId,initialSelection);
+		launchWizard("org.eclipse.jst.ws.internal.consumption.ui",wizardId,objectClassId,initialSelection);
 	}
 	
 }
diff --git a/tests/org.eclipse.jst.ws.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.jst.ws.tests/META-INF/MANIFEST.MF
index bb3aeed..db7001e 100644
--- a/tests/org.eclipse.jst.ws.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.jst.ws.tests/META-INF/MANIFEST.MF
@@ -1,11 +1,11 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Java Web Services Tools Tests
+Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.jst.ws.tests
-Bundle-Version: 1.0.0
+Bundle-Version: 1.0.100
 Bundle-ClassPath: tests.jar
 Bundle-Activator: org.eclipse.jst.ws.tests.plugin.TestsPlugin
-Bundle-Vendor: Eclipse.org
+Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
 Export-Package: org.eclipse.jst.ws.tests,
  org.eclipse.jst.ws.tests.axis.tomcat.v50,
@@ -33,5 +33,10 @@
  org.eclipse.wst.ws,
  org.eclipse.wst.common.environment,
  org.eclipse.wst.common.tests,
- org.eclipse.emf.ecore
+ org.eclipse.emf.ecore,
+ org.eclipse.jst.server.core,
+ org.eclipse.jdt.launching,
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.jst.server.tomcat.core,
+ org.eclipse.wst.common.project.facet.core
 Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.jst.ws.tests/about.html b/tests/org.eclipse.jst.ws.tests/about.html
index 6f6b96c..4ec5989 100644
--- a/tests/org.eclipse.jst.ws.tests/about.html
+++ b/tests/org.eclipse.jst.ws.tests/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.jst.ws.tests/plugin.properties b/tests/org.eclipse.jst.ws.tests/plugin.properties
new file mode 100644
index 0000000..6f05835
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.tests/plugin.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2006 IBM 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:
+# IBM Corporation - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20060424   138060 kathy@ca.ibm.com - Kathy Chan
+###############################################################################
+
+#
+# Messages in plugin.xml.
+#
+PLUGIN_NAME=Java Web Services Tools Tests
+PLUGIN_PROVIDER=Eclipse.org
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/WSWizardTest.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/WSWizardTest.java
index 6425976..1301383 100644
--- a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/WSWizardTest.java
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/WSWizardTest.java
@@ -6,22 +6,16 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 2007104   114835 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.tests;
 
-import java.io.IOException;
-import java.net.URL;
-
 import junit.framework.TestCase;
 
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.etools.common.test.apitools.ProjectUnzipUtil;
-import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jst.ws.tests.plugin.TestsPlugin;
 import org.eclipse.jst.ws.tests.unittest.WSJUnitConstants;
 import org.eclipse.jst.ws.tests.util.JUnitUtils;
 import org.eclipse.wst.command.internal.env.context.PersistentResourceContext;
@@ -66,7 +60,7 @@
 		installServer();
 		
 		// unzip pre-configured workspace projects
-		if (!ProjectUtilities.getProject(WSJUnitConstants.BU_PROJECT_NAME).exists())
+		//if (!ProjectUtilities.getProject(WSJUnitConstants.BU_PROJECT_NAME).exists())
 			createProjects();		
 		
 		installInputData();
@@ -98,21 +92,27 @@
 	}
 	
 	// Creates projects from the provided ZIP file.
-	public static boolean createProjects() {
-		IPath localZipPath = getLocalPath();
-		ProjectUnzipUtil util = new ProjectUnzipUtil(localZipPath, perf_projectNames);
-		return util.createProjects();
-	}
+//	public static boolean createProjects() {
+//		IPath localZipPath = getLocalPath();
+//		ProjectUnzipUtil util = new ProjectUnzipUtil(localZipPath, perf_projectNames);
+//		return util.createProjects();
+//	}
 	
-	private static IPath getLocalPath() {
-		URL url = TestsPlugin.getDefault().find(perf_zipFilePath);
-		try {
-			url = Platform.asLocalURL(url);
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		return new Path(url.getPath());
-	}	
+//	private static IPath getLocalPath() {
+//		URL url = TestsPlugin.getDefault().find(perf_zipFilePath);
+//		try {
+//			url = Platform.asLocalURL(url);
+//		} catch (IOException e) {
+//			e.printStackTrace();
+//		}
+//		return new Path(url.getPath());
+//	}	
+	
+    /**
+     * Create the necessary projects for the tests.  This could be Web, Java, or other J2EE projects.
+     * @throws Exception
+     */
+    protected abstract void createProjects() throws Exception;
 	
 	/**
 	 * Install the input data for the test. This may include projects, source files etc.
@@ -149,7 +149,7 @@
 	protected void tearDown() throws Exception
 	{
 		stopServer();
-//		deleteServer();
+		deleteServer();
 //      deleteInputData();
 //		deleteServerRuntime();
 	}
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/AllWSJUnitTests.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/AllWSJUnitTests.java
index edd8b1c..4b56ef3 100644
--- a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/AllWSJUnitTests.java
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/AllWSJUnitTests.java
@@ -1,3 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 2007104   114835 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
 package org.eclipse.jst.ws.tests.unittest;
 
 import junit.framework.Test;
@@ -64,10 +77,13 @@
     String s = System.getProperty("org.eclipse.jst.server.tomcat.50");
     if (s != null && s.length() > 0) {
       testSuite.addTest( ServerCreationTests.suite());
+      //testSuite.addTest( BUJavaAxisTC50.suite() );
+      testSuite.addTest( TDJavaAxisTC50.suite() );
+      testSuite.addTest( ClientAxisTC50.suite() );
+
     }
     testSuite.addTest( ResourceUtilsTests.suite() );
 
-
     return testSuite;
   }
 
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/BUJavaAxisTC50.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/BUJavaAxisTC50.java
new file mode 100644
index 0000000..fd746d0
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/BUJavaAxisTC50.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070104   114835 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20070202   172615 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
+package org.eclipse.jst.ws.tests.unittest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.ws.internal.common.J2EEUtils;
+import org.eclipse.jst.ws.internal.common.ResourceUtils;
+import org.eclipse.jst.ws.internal.consumption.command.common.CreateModuleCommand;
+import org.eclipse.jst.ws.tests.axis.tomcat.v50.WSWizardTomcat50Test;
+import org.eclipse.jst.ws.tests.util.JUnitUtils;
+import org.eclipse.jst.ws.tests.util.ScenarioConstants;
+
+/**
+ * Bottom up performance scenario with Axis and Tomcat v5.0
+ */
+public final class BUJavaAxisTC50 extends WSWizardTomcat50Test {
+	// Constants
+    private final String WS_RUNTIMEID_AXIS =  WSJUnitConstants.WS_RUNTIMEID_AXIS; 
+	private String PROJECT_NAME = WSJUnitConstants.BU_PROJECT_NAME;
+    
+	private IFile sourceFile_;
+	
+	
+	public static Test suite(){
+		return new TestSuite(BUJavaAxisTC50.class);
+	}
+	
+  /**
+   * Sets up the input data;
+   * - create project(s),
+   * - copy resources to workspace 
+   */
+	protected void installInputData() throws Exception
+	{
+		
+		IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);
+        IPath destPath = ResourceUtils.getJavaSourceLocation(webProject);
+        IFolder folder = (IFolder)ResourceUtils.findResource(destPath);		
+		JUnitUtils.copyTestData("BUJava/src",folder,env_, null);
+		sourceFile_ = folder.getFile(new Path("foo/Echo.java"));
+		// Ensure that Echo.class is built in:
+		// <Web Project>/WebContent/WEB-INF/classes/foo/Echo.class
+		JUnitUtils.syncBuildProject(webProject,env_, null);
+		//assertTrue(JUnitUtils.getClassesFolderForWebProject(WEB_PROJECT_NAME).getFile(new Path("foo/Echo.class")).exists());
+		
+		
+	}
+	
+    protected void createProjects() throws Exception{
+        IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);
+        if (webProject==null || !webProject.exists()){
+          createWebModule(PROJECT_NAME, PROJECT_NAME,J2EEVersionConstants.J2EE_1_4_ID);
+        }
+      }
+      
+      private void createWebModule(String projectNm, String componentName, int j2eeVersion){
+
+        CreateModuleCommand cmc = new CreateModuleCommand();
+        cmc.setJ2eeLevel(new Integer(j2eeVersion).toString());
+        cmc.setModuleName(componentName);
+        cmc.setModuleType(CreateModuleCommand.WEB);
+        cmc.setProjectName(projectNm);
+        cmc.setServerFactoryId(SERVERTYPEID_TC50);
+        cmc.setServerInstanceId(server_.getId());
+        cmc.execute(null, null );
+        
+        System.out.println("Done creating Web Project, "+projectNm);      
+       
+      }
+	
+	
+  /**
+   * Set the persistent server runtime context preferences
+   */  
+	protected void initJ2EEWSRuntimeServerDefaults() throws Exception
+	{
+		// Set default preferences for Axis and Tomcat 5.0
+		JUnitUtils.setWSRuntimeServer(WS_RUNTIMEID_AXIS, SERVERTYPEID_TC50);		
+	}
+	
+  /**
+   * Set the initial selection
+   */
+	protected void initInitialSelection() throws Exception
+	{
+		initialSelection_ = new StructuredSelection(sourceFile_);
+	}
+	
+  /**
+   * Launches the pop-up command to initiate the scenario
+   * @throws Exception
+   */  
+	public void testBUJavaAxisTC50() throws Exception
+	{
+	  	IStatus status = Status.OK_STATUS;
+	    IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);
+	    JUnitUtils.disableWSIDialog(webProject);
+	    JUnitUtils.setBUScenarioDefaults();
+
+	    status = JUnitUtils.launchCreationWizard(ScenarioConstants.WIZARDID_BOTTOM_UP,ScenarioConstants.OBJECT_CLASS_ID_IFILE,initialSelection_);
+
+		if (status.getSeverity() == Status.OK)
+		  verifyOutput();
+		else
+		  throw new Exception(status.getException());
+		
+	}
+	
+  /**
+   * Verify the scenario completed successfully
+   * @throws Exception
+   */
+	private final void verifyOutput() throws Exception
+	{
+        IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);    
+		IFolder webContentFolder = (IFolder)J2EEUtils.getWebContentContainer(webProject);
+    
+        IFolder wsdlFolder = webContentFolder.getFolder("wsdl");
+		assertTrue(wsdlFolder.exists());
+		assertTrue(wsdlFolder.members().length > 0);
+		assertTrue(webContentFolder.getFolder("wsdl").members().length > 0);
+    
+        //TODO Check if wsdd contains new Web service
+        //TODO Check if Web serivce can be invoked by a client
+	}
+	
+  /**
+   * Clear workspace if necessary
+   */
+	protected void deleteInputData() throws Exception
+	{
+		// Remove the EAR from the server.
+		IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);
+		//JUnitUtils.removeModuleFromServer(server_,webProject,env_);
+		
+		// Delete the Web project.
+		webProject.delete(true,true, null);
+        assertFalse(webProject.exists());
+		
+	}
+}
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ClientAxisTC50.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ClientAxisTC50.java
new file mode 100644
index 0000000..b5862cd
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ClientAxisTC50.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 2007104   114835 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
+package org.eclipse.jst.ws.tests.unittest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.ws.internal.common.J2EEUtils;
+import org.eclipse.jst.ws.internal.common.ResourceUtils;
+import org.eclipse.jst.ws.internal.consumption.command.common.CreateModuleCommand;
+import org.eclipse.jst.ws.tests.axis.tomcat.v50.WSWizardTomcat50Test;
+import org.eclipse.jst.ws.tests.util.JUnitUtils;
+import org.eclipse.jst.ws.tests.util.ScenarioConstants;
+
+/**
+ * Client performance scenario with Axis and Tomcat v5.0
+ */
+public class ClientAxisTC50 extends WSWizardTomcat50Test {
+
+	private final String WS_RUNTIMEID_AXIS = WSJUnitConstants.WS_RUNTIMEID_AXIS;
+  
+	private String CLIENT_PROJECT_NAME = WSJUnitConstants.CLIENT_PROJECT_NAME;
+	
+	private IFile sourceFile_;
+
+	
+	public static Test suite(){
+		return new TestSuite(ClientAxisTC50.class);
+	}
+	
+    protected void createProjects() throws Exception{
+        IProject webProject = ProjectUtilities.getProject(CLIENT_PROJECT_NAME);
+        if (!webProject.exists()){
+          createWebModule(CLIENT_PROJECT_NAME, CLIENT_PROJECT_NAME,J2EEVersionConstants.J2EE_1_4_ID);
+        }
+      }
+      
+      private void createWebModule(String projectNm, String componentName, int j2eeVersion){
+
+        CreateModuleCommand cmc = new CreateModuleCommand();
+        cmc.setJ2eeLevel(new Integer(j2eeVersion).toString());
+        cmc.setModuleName(componentName);
+        cmc.setModuleType(CreateModuleCommand.WEB);
+        cmc.setProjectName(projectNm);
+        cmc.setServerFactoryId(SERVERTYPEID_TC50);
+        cmc.setServerInstanceId(server_.getId());
+        cmc.execute(null, null );
+        
+      }
+      
+	/**
+   * Sets up the input data;
+   * - create project(s),
+   * - copy resources to workspace 
+	 */
+	protected void installInputData() throws Exception {
+		
+		IProject webProject = ProjectUtilities.getProject(CLIENT_PROJECT_NAME);
+        IFolder destFolder = (IFolder)J2EEUtils.getWebContentContainer(webProject);
+        JUnitUtils.copyTestData("TDJava",destFolder,env_, null);
+		sourceFile_ = destFolder.getFile(new Path("Echo.wsdl"));		
+		JUnitUtils.syncBuildProject(webProject,env_, null);
+		
+	}
+
+  /**
+   * Set the persistent server runtime context preferences
+   */
+	protected void initJ2EEWSRuntimeServerDefaults() throws Exception {
+        // Set default preferences for Axis and Tomcat 5.0    
+		JUnitUtils.setWSRuntimeServer(WS_RUNTIMEID_AXIS, SERVERTYPEID_TC50);
+	}
+
+  /**
+   * Set the initial selection
+   */
+	protected void initInitialSelection() throws Exception {
+		initialSelection_ = new StructuredSelection(sourceFile_);
+	}
+
+  /**
+   * Launches the pop-up command to initiate the scenario
+   * @throws Exception
+   */
+	public void testClientAxisTC50() throws Exception
+	{	
+	  	IStatus status = Status.OK_STATUS;
+	  	
+		JUnitUtils.enableProxyGeneration(true);
+		JUnitUtils.enableOverwrite(true);
+        
+		status = JUnitUtils.launchCreationWizard(ScenarioConstants.WIZARDID_CLIENT,ScenarioConstants.OBJECT_CLASS_ID_IFILE,initialSelection_);
+
+	    
+		if (status.getSeverity() == Status.OK) {
+		  verifyOutput();
+		} else {
+		  throw new Exception(status.getException());
+		}
+
+	}
+	
+  /**
+   * Verify the scenario completed succesfully
+   * @throws Exception
+   */
+	private final void verifyOutput() throws Exception {
+        IProject webProject = ProjectUtilities.getProject(CLIENT_PROJECT_NAME);
+    
+        IPath destPath = ResourceUtils.getJavaSourceLocation(webProject);
+        IFolder srcFolder = (IFolder)ResourceUtils.findResource(destPath);
+    
+		//IFolder srcFolder = JUnitUtils.getSourceFolderForWebProject(CLIENT_PROJECT_NAME);
+		IFolder folder = srcFolder.getFolder("foo");
+		assertTrue(folder.exists());
+		assertTrue(folder.members().length > 0);
+		
+		//TODO Check that the client runs    
+
+	}
+	
+  /**
+   * Remove workspace if necessary
+   */
+	protected void deleteInputData() throws Exception {
+
+		// Delete the Web project.
+		IProject webProject = ProjectUtilities.getProject(CLIENT_PROJECT_NAME);
+		webProject.delete(true,true, null);
+		
+	}
+
+}
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ComponentCreationTests.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ComponentCreationTests.java
index f4780b1..bf0331b 100644
--- a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ComponentCreationTests.java
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ComponentCreationTests.java
@@ -1,6 +1,16 @@
-/**
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 2007104   114835 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
 package org.eclipse.jst.ws.tests.unittest;
 
 import java.io.IOException;
@@ -20,8 +30,6 @@
 import org.eclipse.jst.ws.internal.consumption.command.common.CreateModuleCommand;
 import org.eclipse.jst.ws.tests.plugin.TestsPlugin;
 import org.eclipse.jst.ws.tests.util.JUnitUtils;
-import org.eclipse.wst.common.componentcore.ComponentCore;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 
 /**
  * Tests the various Component creation commands
@@ -35,7 +43,8 @@
 	public void testWebComponentCreation(){
 
         createServerRuntime();
-        createProjects();
+        createDynamicWebModule(projectNames);
+        //createProjects();
         //createWebModule(projectName, projectName, J2EEVersionConstants.J2EE_1_4_ID);
         //createWebModule(project2Name, project2Name, J2EEVersionConstants.J2EE_1_3_ID);
 
@@ -48,6 +57,7 @@
 		return util.createProjects();
 	}
 	
+
 	private static IPath getLocalPath() {
 		URL url = TestsPlugin.getDefault().find(zipFilePath);
 		try {
@@ -68,11 +78,27 @@
       }      
       
     }
+    
+    public void createDynamicWebModule(String[] projectNames){
+    	
+      for (int i=0;i<projectNames.length;i++) {
+    	  CreateModuleCommand command = new CreateModuleCommand();
+	  	  command.setProjectName(projectNames[i]);
+	  	  command.setModuleName(projectNames[i]);			
+	  	  command.setModuleType(CreateModuleCommand.WEB);
+	  	  command.setServerFactoryId(SERVERTYPEID_TC50);
+	  	  command.setJ2eeLevel(new Integer(J2EEVersionConstants.J2EE_1_4_ID).toString());
+	  	  command.execute( null, null ) ;
+
+	      IProject p = ResourceUtils.getWorkspaceRoot().getProject(projectNames[i]);
+	      assertTrue(p.exists());
+      }
+    }
   
     public void dtestCreateEJBModule(){
      
       CreateModuleCommand cmc = new CreateModuleCommand();
-      cmc.setJ2eeLevel(new Integer(J2EEVersionConstants.J2EE_1_3_ID).toString());
+      cmc.setJ2eeLevel(new Integer(J2EEVersionConstants.J2EE_1_4_ID).toString());
       cmc.setModuleName(ejbComponentName);
       cmc.setModuleType(CreateModuleCommand.EJB);
       cmc.setProjectName(ejbProjectName);
@@ -81,13 +107,12 @@
       
       System.out.println("Done creating EJB component.");
       IProject p = ResourceUtils.getWorkspaceRoot().getProject(ejbProjectName);
-      IVirtualComponent vc = ComponentCore.createComponent(p);
-      assertTrue(vc.exists());      
+      assertTrue(p.exists());      
     }
     
     public void dtestCreateAppClientModule(){
       CreateModuleCommand cmc = new CreateModuleCommand();
-      cmc.setJ2eeLevel(new Integer(J2EEVersionConstants.J2EE_1_3_ID).toString());
+      cmc.setJ2eeLevel(new Integer(J2EEVersionConstants.J2EE_1_4_ID).toString());
       cmc.setModuleName(appClientCompName);
       cmc.setModuleType(CreateModuleCommand.APPCLIENT);
       cmc.setProjectName(appClientProjectName);
@@ -96,13 +121,12 @@
       
       System.out.println("Done creating App client component.");
       IProject p = ResourceUtils.getWorkspaceRoot().getProject(appClientProjectName);
-      IVirtualComponent vc = ComponentCore.createComponent(p);
-      assertTrue(vc.exists());       
+      assertTrue(p.exists());       
     }
 
     public void dtestCreateEARModule(){
       CreateModuleCommand cmc = new CreateModuleCommand();
-      cmc.setJ2eeLevel(new Integer(J2EEVersionConstants.J2EE_1_3_ID).toString());
+      cmc.setJ2eeLevel(new Integer(J2EEVersionConstants.J2EE_1_4_ID).toString());
       cmc.setModuleName(earCompName);
       cmc.setModuleType(CreateModuleCommand.EAR);
       cmc.setProjectName(projectName);
@@ -111,7 +135,6 @@
       
       System.out.println("Done creating EAR component.");
       IProject p = ResourceUtils.getWorkspaceRoot().getProject(projectName);
-      IVirtualComponent vc = ComponentCore.createComponent(p);
-      assertTrue(vc.exists());       
+      assertTrue(p.exists());       
     }
 }
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/J2EEUtilsTests.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/J2EEUtilsTests.java
index 18a1354..6fa77a3 100644
--- a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/J2EEUtilsTests.java
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/J2EEUtilsTests.java
@@ -1,6 +1,16 @@
-/**
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 2007104   114835 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
 package org.eclipse.jst.ws.tests.unittest;
 
 import junit.framework.Test;
@@ -108,7 +118,7 @@
 		  IVirtualComponent vc2 = J2EEUtils.getVirtualComponent(project2);
 		  int j2 = J2EEUtils.getJ2EEVersion(vc2);
 		  System.out.println("J2EEVersions p1: "+j2);		  
-		  assertEquals(J2EEVersionConstants.SERVLET_2_3, j2);
+		  assertEquals(J2EEVersionConstants.SERVLET_2_4, j2);
 		  
 		  System.out.println("< END: testJ2EEVersionMethods ...");
 	  }
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ServerCreationTests.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ServerCreationTests.java
index 12041b6..046d04a 100644
--- a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ServerCreationTests.java
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/ServerCreationTests.java
@@ -1,12 +1,24 @@
-/**
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 2007104   114835 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
 package org.eclipse.jst.ws.tests.unittest;
 
+import junit.framework.AssertionFailedError;
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jst.ws.internal.consumption.command.common.CreateServerCommand;
 import org.eclipse.jst.ws.tests.util.JUnitUtils;
 import org.eclipse.wst.server.core.IServer;
@@ -45,6 +57,13 @@
 		}
 		assertNotNull(server);
 		
+		try {
+			server.delete();
+		}
+		catch (CoreException ce){
+			new AssertionFailedError();
+		}
+		
 		System.out.println("Done creating Tomcat v5 server.");
 	}
 	
@@ -61,6 +80,14 @@
 		}
 		assertNotNull(server);
 		
+		try {
+			server.delete();
+		}
+		catch (CoreException ce){
+			new AssertionFailedError();
+		}
+		
 		System.out.println("Done attempting 2nd Tomcat v5 server creation.");		
 	}
+	
 }
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/TDJavaAxisTC50.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/TDJavaAxisTC50.java
new file mode 100644
index 0000000..f8bbe91
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/TDJavaAxisTC50.java
@@ -0,0 +1,150 @@
+/*******************************************************************************
+ * Copyright (c) 2004 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070104   114835 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20070202   172615 sengpl@ca.ibm.com - Seng Phung-Lu
+ *******************************************************************************/
+package org.eclipse.jst.ws.tests.unittest;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.ws.internal.common.J2EEUtils;
+import org.eclipse.jst.ws.internal.consumption.command.common.CreateModuleCommand;
+import org.eclipse.jst.ws.tests.axis.tomcat.v50.WSWizardTomcat50Test;
+import org.eclipse.jst.ws.tests.util.JUnitUtils;
+import org.eclipse.jst.ws.tests.util.ScenarioConstants;
+
+/**
+ * Top down performance scenario with Axis and Tomcat v5.0
+ */
+public class TDJavaAxisTC50 extends WSWizardTomcat50Test {
+
+  private final String WS_RUNTIMEID_AXIS = WSJUnitConstants.WS_RUNTIMEID_AXIS;
+  
+  private String PROJECT_NAME = WSJUnitConstants.TD_PROJECT_NAME;
+  
+  private IFile sourceFile_;
+	
+	
+  public static Test suite(){
+		return new TestSuite(TDJavaAxisTC50.class);
+  }
+  
+  protected void createProjects() throws Exception{
+	    IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);
+	    if (!webProject.exists()){
+	      createWebModule(PROJECT_NAME, PROJECT_NAME,J2EEVersionConstants.J2EE_1_4_ID);
+	    }
+	  }
+	  
+	  private void createWebModule(String projectNm, String componentName, int j2eeVersion){
+
+	    CreateModuleCommand cmc = new CreateModuleCommand();
+	    cmc.setJ2eeLevel(new Integer(j2eeVersion).toString());
+	    cmc.setModuleName(componentName);
+	    cmc.setModuleType(CreateModuleCommand.WEB);
+	    cmc.setProjectName(projectNm);
+	    cmc.setServerFactoryId(SERVERTYPEID_TC50);
+	    cmc.setServerInstanceId(server_.getId());
+	    cmc.execute(null, null );
+	    
+	    System.out.println("Done creating Web Project, "+projectNm);      
+	   
+	  }  
+	  
+  /**
+   * Sets up the input data;
+   * - create project(s),
+   * - copy resources to workspace 
+   */  
+	protected void installInputData() throws Exception {
+
+		IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);		
+		IFolder destFolder = (IFolder)J2EEUtils.getWebContentContainer(webProject);
+		JUnitUtils.copyTestData("TDJava",destFolder,env_, null);
+		sourceFile_ = destFolder.getFile(new Path("Echo.wsdl"));
+		JUnitUtils.syncBuildProject(webProject,env_, null);
+	}
+
+  /**
+   * Set the persistent server runtime context preferences
+   */  
+	protected void initJ2EEWSRuntimeServerDefaults() throws Exception {
+		// Set default preferences for Axis and Tomcat v5.0 server
+		JUnitUtils.setWSRuntimeServer(WS_RUNTIMEID_AXIS, SERVERTYPEID_TC50);		
+	}
+
+  /**
+   * Set the initial selection
+   */  
+	protected void initInitialSelection() throws Exception {
+		initialSelection_ = new StructuredSelection(sourceFile_);
+
+	}
+
+  /**
+   * Launches the pop-up command to initiate the scenario
+   * @throws Exception
+   */  
+	public void testTDJavaAxisTC50() throws Exception {
+	  
+	  IStatus status = Status.OK_STATUS;
+	  JUnitUtils.setTDScenarioDefaults();
+
+	  status = JUnitUtils.launchCreationWizard(ScenarioConstants.WIZARDID_TOP_DOWN,ScenarioConstants.OBJECT_CLASS_ID_IFILE,initialSelection_);
+	  
+		if (status.getSeverity() == Status.OK)
+		  verifyOutput();
+		else {
+			System.err.println(status.getMessage());
+		  throw new Exception(status.getException());
+		}
+	}
+
+  /**
+   * Verify the scenario completed successfully
+   * @throws Exception
+   */
+	private final void verifyOutput() throws Exception
+	{
+        IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);    
+        IFolder webContentFolder = (IFolder)J2EEUtils.getWebContentContainer(webProject);    
+    
+		
+		IFolder wsdlFolder = webContentFolder.getFolder("wsdl");
+		assertTrue(wsdlFolder.exists());
+		assertTrue(wsdlFolder.members().length > 0);
+
+        //TODO Verify that wsdd contains this Web service
+        //TODO Verify that the service can be invoked by a client
+	}
+	
+  /**
+   * Clear workspace if required
+   */
+	protected void deleteInputData() throws Exception {
+		// Delete the Web project.
+		IProject webProject = ProjectUtilities.getProject(PROJECT_NAME);
+		webProject.delete(true,true,null);
+		
+	}
+
+}
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/WebServiceRuntimeTests.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/WebServiceRuntimeTests.java
new file mode 100644
index 0000000..43ac04f
--- /dev/null
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/unittest/WebServiceRuntimeTests.java
@@ -0,0 +1,529 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060518   127189 rsinha@ca.ibm.com - Rupam Kuehner
+ *******************************************************************************/
+package org.eclipse.jst.ws.tests.unittest;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.internal.debug.ui.jres.JREsUpdater;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.IVMInstall2;
+import org.eclipse.jdt.launching.IVMInstallType;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.jdt.launching.VMStandin;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.j2ee.internal.plugin.IJ2EEModuleConstants;
+import org.eclipse.jst.server.core.FacetUtil;
+import org.eclipse.jst.server.tomcat.core.internal.ITomcatRuntimeWorkingCopy;
+import org.eclipse.jst.ws.internal.consumption.command.common.CreateFacetedProjectCommand;
+import org.eclipse.jst.ws.internal.consumption.common.FacetUtils;
+import org.eclipse.jst.ws.internal.consumption.common.RequiredFacetVersion;
+import org.eclipse.jst.ws.internal.consumption.datamodel.validate.ValidationManager;
+import org.eclipse.jst.ws.internal.consumption.ui.wsrt.FacetMatchCache;
+import org.eclipse.jst.ws.internal.consumption.ui.wsrt.WebServiceRuntimeExtensionUtils2;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectTemplate;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.IRuntimeType;
+import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
+import org.eclipse.wst.server.core.ServerCore;
+import org.eclipse.wst.ws.internal.wsrt.WebServiceScenario;
+
+/**
+ * WebServiceRuntimeTests contains the JUnit tests which cover project
+ * creation, project filtering, and project type filtering for the Axis
+ * Web service runtime. In order for the test to run successfully:
+ * <ol>
+ * <li>The Eclipse test environment must be launched with JDK1.4.2</li>
+ * <li>The following VM arguments must be specified:
+ * <ul>
+ *   <li>org.eclipse.jst.server.tomcat.55: the install location of a Tomcat 5.5 server,<br> 
+ *   for example, use -Dorg.eclipse.jst.server.tomcat.55=d:\jakarta-tomcat-5.5.9
+ *   <li>org.eclipse.jst.server.tomcat.50: the install location of a Tomcat 5.0 server,<br>
+ *   for example, use -Dorg.eclipse.jst.server.tomcat.50=d:\jakarta-tomcat-5.0.28   
+ *   <li>org.eclipse.jst.server.tomcat.41: the install location of a Tomcat 4.1 server,<br>
+ *   for example, use -Dorg.eclipse.jst.server.tomcat.41=d:\jakarta-tomcat-4.1.29
+ *   <li>java.15.install.path: the install location of a Java 1.5 JDK,<br>
+ *   for example, use -Djava.15.install.path=d:\jdk1.5.0_02
+ * </ul></li>
+ * </ol>
+ * 
+ * 
+ */
+public class WebServiceRuntimeTests extends TestCase
+{
+  
+  //Server install paths
+  private final String SERVER_INSTALL_PATH_TC55 = System.getProperty("org.eclipse.jst.server.tomcat.55");  
+  private final String SERVER_INSTALL_PATH_TC50 = System.getProperty("org.eclipse.jst.server.tomcat.50");  
+  private final String SERVER_INSTALL_PATH_TC41 = System.getProperty("org.eclipse.jst.server.tomcat.41");
+  
+  //JDK 1.5 install info
+  private final String JAVA15_VM_INSTALL_PATH = System.getProperty("java.15.install.path");
+  private final String JAVA15_VM_INSTALL_TYPE = "org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType";
+  private final String JAVA15_VM_INSTALL_NAME = "Java15";
+  private final String JAVA15_VM_INSTALL_JAVADOC = "http://java.sun.com/j2se/1.5.0/docs/api/";
+  
+  //Runtime type ids ans server type ids
+  private final String RUNTIMETYPEID_TC55 = "org.eclipse.jst.server.tomcat.runtime.55";
+  private final String SERVERTYPEID_TC55 = "org.eclipse.jst.server.tomcat.55";
+  private final String RUNTIMETYPEID_TC50 = "org.eclipse.jst.server.tomcat.runtime.50";
+  private final String SERVERTYPEID_TC50 = "org.eclipse.jst.server.tomcat.50";
+  private final String RUNTIMETYPEID_TC41 = "org.eclipse.jst.server.tomcat.runtime.41";
+  private final String SERVERTYPEID_TC41 = "org.eclipse.jst.server.tomcat.41";  
+  
+  //Runtime ids for runtimes that will be created
+  private final String RUNTIMEID_TC55 = "Tomcat55Runtime";
+  private final String RUNTIMEID_TC50 = "Tomcat50Runtime";
+  private final String RUNTIMEID_TC41 = "Tomcat41Runtime";
+  
+  //Web service runtime extension ids for Axis
+  private final String AXIS_RUNTIME = "org.eclipse.jst.ws.axis.creation.axisWebServiceRT";
+  private final String SERVICE_IMPL_JAVA = "org.eclipse.jst.ws.wsImpl.java";
+  private final String AXIS_SERVICE_RUNTIME = "org.eclipse.jst.ws.axis.creation.java";
+  private final String CLIENT_IMPL_JAVA = "org.eclipse.jst.ws.client.type.java";
+  private final String AXIS_CLIENT_RUNTIME_WEB = "org.eclipse.jst.ws.axis.consumption.web";
+  private final String AXIS_CLIENT_RUNTIME_JAVA = "org.eclipse.jst.ws.axis.consumption.java";
+  
+  //Various constants used by the test case for identifying service/client side and 
+  //for setting names on created projects.
+  private final String SERVICE_SIDE = "s";
+  private final String CLIENT_SIDE = "c";  
+  private final String PROJECT_NAME_PREFIX = "tc";
+  private final String PROJECT_NAME_SUFFIX = "project";
+  
+  //IProjectFacetVersions used in the expected results
+  private final IProjectFacetVersion WEB23 = ProjectFacetsManager.getProjectFacet(IJ2EEModuleConstants.JST_WEB_MODULE).getVersion(J2EEVersionConstants.VERSION_2_3_TEXT);
+  private final IProjectFacetVersion WEB24 = ProjectFacetsManager.getProjectFacet(IJ2EEModuleConstants.JST_WEB_MODULE).getVersion(J2EEVersionConstants.VERSION_2_4_TEXT);
+  private final IProjectFacetVersion JAVA14 = ProjectFacetsManager.getProjectFacet(IJ2EEModuleConstants.JST_JAVA).getVersion(J2EEVersionConstants.VERSION_1_4_TEXT);
+  private final IProjectFacetVersion JAVA50 = ProjectFacetsManager.getProjectFacet(IJ2EEModuleConstants.JST_JAVA).getVersion("5.0");
+  private final IProjectFacetVersion UTILITY10 = ProjectFacetsManager.getProjectFacet(IJ2EEModuleConstants.JST_UTILITY_MODULE).getVersion(J2EEVersionConstants.VERSION_1_0_TEXT);  
+  
+  private final IFacetedProjectTemplate TEMPLATE_WEB = ProjectFacetsManager.getTemplate(IJ2EEModuleConstants.JST_WEB_TEMPLATE);
+  private final IFacetedProjectTemplate TEMPLATE_UTILITY = ProjectFacetsManager.getTemplate(IJ2EEModuleConstants.JST_UTILITY_TEMPLATE);
+  
+  private int multiplesForProjectCreation;
+  
+  public static Test suite()
+  {
+    return new TestSuite(WebServiceRuntimeTests.class);
+  }
+  
+  private void init()
+  {
+    try
+    {
+      assertNotNull(SERVER_INSTALL_PATH_TC55);
+      assertNotNull(SERVER_INSTALL_PATH_TC50);
+      assertNotNull(SERVER_INSTALL_PATH_TC41);
+      assertNotNull(JAVA15_VM_INSTALL_PATH);
+      
+      //Create a server runtime: Tomcat 4.1 with JDK 1.4.2
+      createTomcatServerRuntime(RUNTIMEID_TC41, RUNTIMETYPEID_TC41, SERVER_INSTALL_PATH_TC41);
+      
+      //Create a server runtime: Tomcat 5.0 with JDK 1.4.2
+      createTomcatServerRuntime(RUNTIMEID_TC50, RUNTIMETYPEID_TC50, SERVER_INSTALL_PATH_TC50);
+      
+      //Create a server runtime: Tomcat 5.5 with JDK 1.5
+      createTomcatServerRuntime(RUNTIMEID_TC55, RUNTIMETYPEID_TC55, SERVER_INSTALL_PATH_TC55);
+      
+      
+      
+      String multiples = System.getProperty("multiples"); //this is an optional propery - defaulted to 1
+      if (multiples != null && (Integer.parseInt(multiples) > 0))
+      {
+        multiplesForProjectCreation = Integer.parseInt(multiples);
+      }
+      else
+      {
+        multiplesForProjectCreation = 1;
+      }
+      
+    } catch (Exception e)
+    {
+      e.printStackTrace();
+      fail();
+    }
+  }  
+  
+  private IRuntime createTomcatServerRuntime(String runtimeId, String runtimeTypeId, String serverInstallPath) throws Exception
+  {
+    IRuntimeType rt = ServerCore.findRuntimeType(runtimeTypeId);
+    IRuntimeWorkingCopy wc = rt.createRuntime(runtimeId, null);
+    wc.setLocation(new Path(serverInstallPath));
+    IRuntime runtime = wc.save(true, null);
+    
+    if (runtimeTypeId.equals(RUNTIMETYPEID_TC55))
+    {
+      //Create a new IVMInstall
+      IVMInstallType type = JavaRuntime.getVMInstallType(JAVA15_VM_INSTALL_TYPE);
+      IVMInstall newVM = new VMStandin(type, createUniqueId(type)); 
+      newVM.setInstallLocation(new File(JAVA15_VM_INSTALL_PATH).getAbsoluteFile());
+      newVM.setName(JAVA15_VM_INSTALL_NAME);
+      newVM.setJavadocLocation(new URL(JAVA15_VM_INSTALL_JAVADOC));
+      if (newVM instanceof IVMInstall2)
+      {
+        IVMInstall2 newVM2 = (IVMInstall2) newVM;
+        newVM2.setVMArgs(null);
+      }
+      newVM.setLibraryLocations(null);      
+
+      //Add the new IVMInstall to the master list.
+      IVMInstall[] vms = new IVMInstall[]{newVM};
+      //TODO Replace use of the internal class org.eclipse.jdt.internal.debug.ui.jres.JREsUpdater
+      //with something public. Not sure if something public is available at this time. Need to check.
+      JREsUpdater updater = new JREsUpdater();
+      IVMInstall defaultVM = JavaRuntime.getDefaultVMInstall();
+      updater.updateJRESettings(vms, defaultVM);
+      
+      //Get the new IVMInstall
+      IVMInstallType vmType = JavaRuntime.getVMInstallType(JAVA15_VM_INSTALL_TYPE);
+      IVMInstall java15VM = vmType.findVMInstallByName(JAVA15_VM_INSTALL_NAME);
+    
+      //Set the tomcat runtime to use the new Java 15 JDK.
+      IRuntimeWorkingCopy wc2 = runtime.createWorkingCopy();
+      //TODO Replace use of the internal class 
+      //org.eclipse.jst.server.tomcat.core.internal.ITomcatRuntimeWorkingCopy
+      //with something public. Enhancement 127884 has been opened to request API
+      //for this.
+      ITomcatRuntimeWorkingCopy tcwc = (ITomcatRuntimeWorkingCopy)wc2.loadAdapter(ITomcatRuntimeWorkingCopy.class, new NullProgressMonitor());
+      tcwc.setVMInstall(java15VM);
+      wc2.save(true, null);      
+    }
+    
+    return ServerCore.findRuntime(runtimeId);
+  }  
+  
+  private String createUniqueId(IVMInstallType vmType)
+  {
+    String id = null;
+    do
+    {
+      id = String.valueOf(System.currentTimeMillis());
+    } while (vmType.findVMInstall(id) != null);
+    return id;
+  }
+  
+  /**
+   * Tests project creation and filtering for the Axis Web service
+   * runtime. Tests cover all valid combinations of ServiceRuntimes, 
+   * Tomcat servers, and J2EE project types and well as all valid  
+   * combinations of ClientRuntimes, Tomcat servers, and J2EE project types.
+   */  
+  public void testProjectCreationAndFiltering()
+  {
+    init();
+    
+    String[] templateIds = new String[]{IJ2EEModuleConstants.JST_WEB_TEMPLATE,
+        IJ2EEModuleConstants.JST_WEB_TEMPLATE,
+        IJ2EEModuleConstants.JST_WEB_TEMPLATE,
+        IJ2EEModuleConstants.JST_WEB_TEMPLATE,
+        IJ2EEModuleConstants.JST_WEB_TEMPLATE,
+        IJ2EEModuleConstants.JST_WEB_TEMPLATE,
+        IJ2EEModuleConstants.JST_UTILITY_TEMPLATE,
+        IJ2EEModuleConstants.JST_UTILITY_TEMPLATE,
+        IJ2EEModuleConstants.JST_UTILITY_TEMPLATE};
+    String[] scenarios = new String[]{SERVICE_SIDE,
+        SERVICE_SIDE,
+        SERVICE_SIDE,
+        CLIENT_SIDE,
+        CLIENT_SIDE,
+        CLIENT_SIDE,
+        CLIENT_SIDE,
+        CLIENT_SIDE,
+        CLIENT_SIDE};
+    String[] serviceClientRuntimeIds = new String[]{AXIS_SERVICE_RUNTIME,
+        AXIS_SERVICE_RUNTIME,
+        AXIS_SERVICE_RUNTIME,
+        AXIS_CLIENT_RUNTIME_WEB,
+        AXIS_CLIENT_RUNTIME_WEB,
+        AXIS_CLIENT_RUNTIME_WEB,
+        AXIS_CLIENT_RUNTIME_JAVA,
+        AXIS_CLIENT_RUNTIME_JAVA,
+        AXIS_CLIENT_RUNTIME_JAVA};
+    String[] serverTypes = new String[]{SERVERTYPEID_TC41,
+        SERVERTYPEID_TC50,
+        SERVERTYPEID_TC55,
+        SERVERTYPEID_TC41,
+        SERVERTYPEID_TC50,
+        SERVERTYPEID_TC55,
+        SERVERTYPEID_TC41,
+        SERVERTYPEID_TC50,
+        SERVERTYPEID_TC55};
+    
+    
+    //Expected Results:
+    
+    IProjectFacetVersion[][] expectedFacets = new IProjectFacetVersion[][]{ new IProjectFacetVersion[]{WEB23, JAVA14},
+        new IProjectFacetVersion[]{WEB24, JAVA14},
+        new IProjectFacetVersion[]{WEB24, JAVA50},
+        new IProjectFacetVersion[]{WEB23, JAVA14},
+        new IProjectFacetVersion[]{WEB24, JAVA14},
+        new IProjectFacetVersion[]{WEB24, JAVA50},
+        new IProjectFacetVersion[]{UTILITY10, JAVA14},
+        new IProjectFacetVersion[]{UTILITY10, JAVA14},
+        new IProjectFacetVersion[]{UTILITY10, JAVA50},
+    };
+    
+    String[] expectedRuntimes = new String[] {RUNTIMEID_TC41,
+        RUNTIMEID_TC50,
+        RUNTIMEID_TC55,
+        RUNTIMEID_TC41,
+        RUNTIMEID_TC50,
+        RUNTIMEID_TC55,
+        RUNTIMEID_TC41,
+        RUNTIMEID_TC50,
+        RUNTIMEID_TC55        
+    };
+    
+    String bigPrefix = PROJECT_NAME_PREFIX+"0"+PROJECT_NAME_SUFFIX;
+    String[] expectedProjectsForAxisService = new String[] { bigPrefix+"0", 
+        bigPrefix+"1",
+        bigPrefix+"2",
+        bigPrefix+"3",
+        bigPrefix+"4",
+        bigPrefix+"5"        
+    };
+    
+    String[] expectedProjectsForAxisClient = new String[] { bigPrefix+"0", 
+        bigPrefix+"1",
+        bigPrefix+"2",
+        bigPrefix+"3",
+        bigPrefix+"4",
+        bigPrefix+"5",
+        bigPrefix+"6",
+        bigPrefix+"7",
+        bigPrefix+"8",
+    };
+    
+    boolean[] expectedBooleansForAxisService = new boolean[] {true, true, true, true, true, true, false, false, false};
+    boolean[] expectedBooleansForAxisClientWeb = new boolean[] {true, true, true, true, true, true, false, false, false};
+    boolean[] expectedBooleansForAxisClientJava = new boolean[] {false, false, false, false, false, false, true, true, true};
+    
+    
+    //Turn auto-build off
+    ValidationManager manager = new ValidationManager();
+    manager.disableAutoBuild();
+    
+    //Create the projects
+    for (int i=0; i<multiplesForProjectCreation; i++)
+    {
+      createProjects(templateIds, scenarios, serviceClientRuntimeIds, serverTypes, PROJECT_NAME_PREFIX+i);
+    }  
+    
+    //Restore auto-build
+    manager.restoreAutoBuild();
+    
+    //Check Expected Results:
+    
+    //Check facets and runtime on the first "0"th set of created projects. Ignore higher multiples since they
+    //are duplicates.    
+    for (int j=0; j<expectedFacets.length; j++)
+    {
+      String projectName = bigPrefix+j;
+      IProject project = ProjectUtilities.getProject(projectName);
+      assertNotNull(project);
+      assertTrue(project.exists());
+      try
+      {
+        IFacetedProject fProject = ProjectFacetsManager.create(project);
+        assertNotNull(fProject);
+
+        //Check facets
+        //begin debug
+        Iterator pfacets = fProject.getProjectFacets().iterator();
+        while (pfacets.hasNext())
+        {
+        	IProjectFacetVersion pfv = (IProjectFacetVersion)pfacets.next();
+        	System.out.println("facet="+pfv.getProjectFacet().getId()+", version="+pfv.getVersionString());
+        }
+        
+        for (int k=0; k<expectedFacets[j].length; k++)
+        {
+          assertTrue(fProject.hasProjectFacet(expectedFacets[j][k]));
+          
+        }
+        
+        //Check runtime
+        org.eclipse.wst.common.project.facet.core.runtime.IRuntime fRuntime = fProject.getRuntime();
+        assertNotNull(fRuntime);
+        IRuntime sRuntime = FacetUtil.getRuntime(fRuntime);
+        assertNotNull(sRuntime);
+        assertTrue(sRuntime.getId().equals(expectedRuntimes[j]));
+        
+      } catch (CoreException ce)
+      {
+        fail();
+      }
+      
+    }
+    
+    //Check that WebServiceRuntimeExtensionUtils2.getProjectsForServiceTypeAndRuntime(..) returns
+    //the right set of projects
+    String serviceType = String.valueOf(WebServiceScenario.BOTTOMUP) + "/" + SERVICE_IMPL_JAVA;
+    String[] projectsForAxisService = WebServiceRuntimeExtensionUtils2.getProjectsForServiceTypeAndRuntime(serviceType, AXIS_RUNTIME);
+    assertEquals(expectedProjectsForAxisService.length, projectsForAxisService.length);
+    List projectsForAxisServiceList = new ArrayList();
+    for (int i=0; i<projectsForAxisService.length; i++)
+    {
+      projectsForAxisServiceList.add(projectsForAxisService[i]);      
+    }
+    for (int i=0; i<expectedProjectsForAxisService.length; i++)
+    {
+      assertTrue(projectsForAxisServiceList.contains(expectedProjectsForAxisService[i]));
+    }
+    
+    //Check that WebServiceRuntimeExtensionUtils2.getProjectsForClientTypeAndRuntime(..) returns
+    //the right set of projects    
+    String[] projectsForAxisClient = WebServiceRuntimeExtensionUtils2.getProjectsForClientTypeAndRuntime(CLIENT_IMPL_JAVA, AXIS_RUNTIME);
+    assertEquals(expectedProjectsForAxisClient.length, projectsForAxisClient.length);
+    List projectsForAxisClientList = new ArrayList();
+    for (int i=0; i<projectsForAxisClient.length; i++)
+    {
+      projectsForAxisClientList.add(projectsForAxisClient[i]);      
+    }
+    for (int i=0; i<expectedProjectsForAxisClient.length; i++)
+    {
+      assertTrue(projectsForAxisClientList.contains(expectedProjectsForAxisClient[i]));
+    }    
+    
+    //Check that the Axis service and client runtimes' project compatibility checking is working
+    for (int i=0; i<expectedBooleansForAxisService.length; i++)
+    {
+      String projectName = bigPrefix+i;      
+      assertEquals(expectedBooleansForAxisService[i], WebServiceRuntimeExtensionUtils2.doesServiceRuntimeSupportProject(AXIS_SERVICE_RUNTIME, projectName));    
+      assertEquals(expectedBooleansForAxisClientWeb[i], WebServiceRuntimeExtensionUtils2.doesClientRuntimeSupportProject(AXIS_CLIENT_RUNTIME_WEB, projectName));
+      assertEquals(expectedBooleansForAxisClientJava[i], WebServiceRuntimeExtensionUtils2.doesClientRuntimeSupportProject(AXIS_CLIENT_RUNTIME_JAVA, projectName));
+    } 
+    
+    //Turn auto-build off
+    manager.disableAutoBuild();
+        
+    //Delete the projects
+    for (int i=0; i<multiplesForProjectCreation; i++)
+    {
+      deleteProjects(templateIds.length, PROJECT_NAME_PREFIX+i);
+    }      
+
+    //Restore auto-build
+    manager.restoreAutoBuild();    
+  }  
+  
+  private void deleteProjects(int n, String namePrefix)
+  {
+    for (int i=0; i<n; i++)
+    {
+      String name = namePrefix + PROJECT_NAME_SUFFIX + i;
+      IProject project = ProjectUtilities.getProject(name);
+      try
+      {
+        project.delete(true, null);
+      }
+      catch (CoreException ce)
+      {
+        //Don't fail the test case if project deletion fails.
+      }
+    }
+  }  
+  
+  private void createProjects(String[] templateIds, String[] scenarios, String[] serviceClientRuntimeIds, String[] serverTypes, String namePrefix )
+  {
+    int n = templateIds.length;
+    for (int i=0; i<n; i++)
+    {
+      String name = namePrefix + PROJECT_NAME_SUFFIX + i;
+      RequiredFacetVersion[] rfvs = null;
+      if (scenarios[i].equals(CLIENT_SIDE))
+      {
+
+          rfvs = WebServiceRuntimeExtensionUtils2.getClientRuntimeDescriptorById(serviceClientRuntimeIds[i]).getRequiredFacetVersions();
+        
+      }
+      else
+      {
+        if (scenarios[i].equals(SERVICE_SIDE))
+        {
+          rfvs = WebServiceRuntimeExtensionUtils2.getServiceRuntimeDescriptorById(serviceClientRuntimeIds[i]).getRequiredFacetVersions();
+        }
+        else
+        {
+          rfvs = new RequiredFacetVersion[0];
+        }
+      }
+      
+      CreateFacetedProjectCommand command = new CreateFacetedProjectCommand();
+      command.setProjectName(name);
+      command.setTemplateId(templateIds[i]);                    
+      command.setRequiredFacetVersions(rfvs);           
+      command.setServerFactoryId(serverTypes[i]);
+      IStatus status = command.execute( new NullProgressMonitor(), null );    
+      if (status.getSeverity() == Status.ERROR)
+      {
+        fail();
+      }
+      
+      IProject project = ProjectUtilities.getProject(name);
+      FacetUtils.addRequiredFacetsToProject(project, rfvs, new NullProgressMonitor());
+    }    
+  }  
+  
+  /**
+   * Tests project type filtering for the Axis Web service runtime.
+   * Tests cover all ServiceRuntimes and ClientRuntimes.
+   */
+  public void testProjectTypeFiltering()
+  {  
+    IFacetedProjectTemplate[] expectedTemplatesForAxisService = new IFacetedProjectTemplate[] {TEMPLATE_WEB};
+    IFacetedProjectTemplate[] expectedTemplatesForAxisClientWeb = new IFacetedProjectTemplate[] {TEMPLATE_WEB};
+    IFacetedProjectTemplate[] expectedTemplatesForAxisClientJava = new IFacetedProjectTemplate[] {TEMPLATE_UTILITY};
+    
+    Set templatesForAxisService = FacetMatchCache.getInstance().getTemplatesForServiceRuntime(AXIS_SERVICE_RUNTIME);
+    assertEquals(expectedTemplatesForAxisService.length,templatesForAxisService.size());
+    for (int i=0; i<expectedTemplatesForAxisService.length; i++)
+    {
+      assertTrue(templatesForAxisService.contains(expectedTemplatesForAxisService[i]));
+    }
+    Set templatesForAxisClientWeb = FacetMatchCache.getInstance().getTemplatesForClientRuntime(AXIS_CLIENT_RUNTIME_WEB);
+    assertEquals(expectedTemplatesForAxisClientWeb.length, templatesForAxisClientWeb.size());
+    for (int i=0; i<expectedTemplatesForAxisClientWeb.length; i++)
+    {
+      assertTrue(templatesForAxisClientWeb.contains(expectedTemplatesForAxisClientWeb[i]));
+    }    
+    Set templatesForAxisClientJava = FacetMatchCache.getInstance().getTemplatesForClientRuntime(AXIS_CLIENT_RUNTIME_JAVA);
+    assertEquals(expectedTemplatesForAxisClientJava.length, templatesForAxisClientJava.size());
+    for (int i=0; i<expectedTemplatesForAxisClientJava.length; i++)
+    {
+      assertTrue(templatesForAxisClientJava.contains(expectedTemplatesForAxisClientJava[i]));
+    }
+    
+    
+  }  
+}
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/util/JUnitUtils.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/util/JUnitUtils.java
index 1ec8b4a..318c5a5 100644
--- a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/util/JUnitUtils.java
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/util/JUnitUtils.java
@@ -6,7 +6,11 @@
  * http://www.eclipse.org/legal/epl-v10.html
  * 
  * Contributors:
- *     IBM Corporation - initial API and implementation
+ * IBM Corporation - initial API and implementation
+ * yyyymmdd bug      Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20070104   114835 sengpl@ca.ibm.com - Seng Phung-Lu
+ * 20070202   172615 sengpl@ca.ibm.com - Seng Phung-Lu
  *******************************************************************************/
 package org.eclipse.jst.ws.tests.util;
 
@@ -17,15 +21,13 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IncrementalProjectBuilder;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtension;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jst.ws.internal.common.ServerUtils;
@@ -42,8 +44,10 @@
 import org.eclipse.wst.command.internal.env.core.common.StatusUtils;
 import org.eclipse.wst.command.internal.env.core.context.ResourceContext;
 import org.eclipse.wst.command.internal.env.preferences.ActionDialogPreferenceType;
+import org.eclipse.wst.command.internal.env.ui.eclipse.EclipseStatusHandler;
 import org.eclipse.wst.command.internal.env.ui.eclipse.EnvironmentUtils;
 import org.eclipse.wst.common.environment.IEnvironment;
+import org.eclipse.wst.common.environment.IStatusHandler;
 import org.eclipse.wst.server.core.IModule;
 import org.eclipse.wst.server.core.IRuntime;
 import org.eclipse.wst.server.core.IRuntimeType;
@@ -299,30 +303,23 @@
 		serverRuntimeCtx.setServerFactoryId(serverTypeId);		
 	}
 	
+
 	private static IStatus launchWizard(String pluginNS,String wizardId,String objectClassId,IStructuredSelection initialSelection) throws Exception
 	{
-		IExtension[] extensions = Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.ui.popupMenus").getExtensions();
-		for (int i=0;i<extensions.length;i++)
-		{
-			if (extensions[i].getNamespace().equals(pluginNS));
-			{
-				IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
-				for (int j=0;j<configElements.length;j++)
-				{
-					if (configElements[j].getAttribute("id").equals(wizardId) && configElements[j].getAttribute("objectClass").equals(objectClassId))
-					{
-						IConfigurationElement actionElement = configElements[j].getChildren()[0];
-						AccumulateStatusHandler statusHandler = new AccumulateStatusHandler();
-						DynamicPopupJUnitWizard wizard = new DynamicPopupJUnitWizard(statusHandler);
-						wizard.setInitializationData(actionElement,null,null);
-						wizard.selectionChanged(null,initialSelection);
-						wizard.run(null);
-						return statusHandler.getStatus();
-					}
-				}
-			}
-		}
-		return StatusUtils.errorStatus( "No wizard found for: " );
+		IStatusHandler statusHandler = new EclipseStatusHandler();
+
+        DynamicPopupJUnitWizard wizard = new DynamicPopupJUnitWizard(statusHandler);
+        wizard.setInitialData(wizardId);
+        ProgressMonitorDialog monitor = new ProgressMonitorDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
+        try {
+        	wizard.runHeadLess(initialSelection, monitor);
+        } 
+        catch (Exception e){
+        	e.printStackTrace();
+        	return StatusUtils.errorStatus(e);
+        }
+        return Status.OK_STATUS;
+
 	}
 	
 	public static IStatus launchCreationWizard(String wizardId,String objectClassId,IStructuredSelection initialSelection) throws Exception
@@ -355,4 +352,24 @@
 	  
 	}
 	
+	public static void setBUScenarioDefaults(){
+		ScenarioContext context = WebServicePlugin.getInstance().getScenarioContext();
+		context.setGenerateWebService(ScenarioContext.WS_ASSEMBLE);
+		
+		context.setGenerateProxy(false);
+		context.setInstallWebService(false);
+		context.setStartWebService(false);
+		context.setTestWebService(false);
+		
+	}
+	
+	public static void setTDScenarioDefaults(){
+		ScenarioContext context = WebServicePlugin.getInstance().getScenarioContext();
+		context.setGenerateWebService(ScenarioContext.WS_ASSEMBLE);
+		
+		context.setGenerateProxy(false);
+		context.setInstallWebService(false);
+		context.setStartWebService(false);
+		context.setTestWebService(false);
+	}
 }
\ No newline at end of file
diff --git a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/util/ScenarioConstants.java b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/util/ScenarioConstants.java
index 4217d82..015fa39 100644
--- a/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/util/ScenarioConstants.java
+++ b/tests/org.eclipse.jst.ws.tests/tests/org/eclipse/jst/ws/tests/util/ScenarioConstants.java
@@ -12,10 +12,10 @@
 
 public class ScenarioConstants {
 	// Bottom up Java or EJB to Web Service wizard ID.
-	public static final String WIZARDID_BOTTOM_UP = "org.eclipse.jst.ws.creation.ui.wizard.serverwizard.java";
+	public static final String WIZARDID_BOTTOM_UP = "org.eclipse.jst.ws.creation.ui.wizard.serverwizard";
 	
 	// Top down WSDL to Skeleton Web Service wizard ID.
-	public static final String WIZARDID_TOP_DOWN = "org.eclipse.jst.ws.creation.ui.wizard.serverwizard.skeleton";
+	public static final String WIZARDID_TOP_DOWN = "org.eclipse.jst.ws.creation.ui.wizard.serverwizard";
 	
 	// Web Service client wizard ID.
 	public static final String WIZARDID_CLIENT = "org.eclipse.jst.ws.internal.consumption.ui.wizard.client.clientwizard";	
diff --git a/tests/org.eclipse.wst.ws.tests/.settings/org.eclipse.jdt.core.prefs b/tests/org.eclipse.wst.ws.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0fd1048
--- /dev/null
+++ b/tests/org.eclipse.wst.ws.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,57 @@
+#Mon Jan 30 10:29:14 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.deprecation=ignore
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/tests/org.eclipse.wst.ws.tests/.settings/org.eclipse.pde.prefs b/tests/org.eclipse.wst.ws.tests/.settings/org.eclipse.pde.prefs
new file mode 100644
index 0000000..9e87a8a
--- /dev/null
+++ b/tests/org.eclipse.wst.ws.tests/.settings/org.eclipse.pde.prefs
@@ -0,0 +1,13 @@
+#Mon Apr 24 10:27:54 EDT 2006
+compilers.p.build=1
+compilers.p.deprecated=1
+compilers.p.no-required-att=0
+compilers.p.not-externalized-att=1
+compilers.p.unknown-attribute=0
+compilers.p.unknown-class=0
+compilers.p.unknown-element=1
+compilers.p.unknown-resource=0
+compilers.p.unresolved-ex-points=0
+compilers.p.unresolved-import=0
+compilers.use-project=true
+eclipse.preferences.version=1
diff --git a/tests/org.eclipse.wst.ws.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.ws.tests/META-INF/MANIFEST.MF
index 2dcd0f4..b415c40 100644
--- a/tests/org.eclipse.wst.ws.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.wst.ws.tests/META-INF/MANIFEST.MF
@@ -1,9 +1,10 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Tests Plug-in
+Bundle-Name: %PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.ws.tests
-Bundle-Version: 1.0.0
+Bundle-Version: 1.0.100
 Bundle-Activator: org.eclipse.wst.ws.tests.plugin.TestsPlugin
+Bundle-Vendor: %PLUGIN_PROVIDER
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.wst.ws,
  org.eclipse.core.runtime,
diff --git a/tests/org.eclipse.wst.ws.tests/about.html b/tests/org.eclipse.wst.ws.tests/about.html
index 6f6b96c..4ec5989 100644
--- a/tests/org.eclipse.wst.ws.tests/about.html
+++ b/tests/org.eclipse.wst.ws.tests/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.ws.tests/plugin.properties b/tests/org.eclipse.wst.ws.tests/plugin.properties
new file mode 100644
index 0000000..2933ec1
--- /dev/null
+++ b/tests/org.eclipse.wst.ws.tests/plugin.properties
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2006 IBM 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:
+# IBM Corporation - initial API and implementation
+# yyyymmdd bug      Email and other contact information
+# -------- -------- -----------------------------------------------------------
+# 20060424   138060 kathy@ca.ibm.com - Kathy Chan
+###############################################################################
+
+#
+# Messages in plugin.xml.
+#
+PLUGIN_NAME=WST Web Services Test
+PLUGIN_PROVIDER=Eclipse.org
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.wsdl.tests.performance/META-INF/MANIFEST.MF
index 03a090a..fb07e00 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.emf.ecore,
  org.eclipse.ui,
  org.eclipse.ui.ide,
- org.eclipse.test.performance,
+ org.eclipse.test,
  org.eclipse.wst.validation,
  org.eclipse.wst.common.frameworks,
  org.eclipse.wst.wsdl,
@@ -24,5 +24,7 @@
  org.eclipse.wst.ws,
  org.eclipse.wst.command.env,
  org.eclipse.wst.command.env.core,
- org.eclipse.wst.common.tests.performance
-Eclipse-AutoStart: true
+ org.eclipse.wst.common.tests.performance,
+ org.eclipse.test,
+ org.eclipse.test.performance
+Eclipse-LazyStart: true
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/about.html b/tests/org.eclipse.wst.wsdl.tests.performance/about.html
index 6f6b96c..4ec5989 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/about.html
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/build.properties b/tests/org.eclipse.wst.wsdl.tests.performance/build.properties
index bd4921a..0a4c861 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/build.properties
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/build.properties
@@ -1,9 +1,7 @@
 source.performance.jar = performance/
 output.performance.jar = bin/
-bin.includes = plugin.xml,\
-               performance.jar,\
+bin.includes = performance.jar,\
                test.xml,\
                data/,\
                about.html,\
                META-INF/
-src.includes = build.properties
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenEditorOAGISWSDLTestcase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenEditorOAGISWSDLTestcase.java
index 351fd3c..c0b1165 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenEditorOAGISWSDLTestcase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenEditorOAGISWSDLTestcase.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance;
 
 import java.io.File;
@@ -7,8 +18,11 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+
 import javax.wsdl.WSDLException;
+
 import junit.framework.Assert;
+
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IFolder;
@@ -30,8 +44,6 @@
 
 public class OpenEditorOAGISWSDLTestcase extends PerformanceTestCase
 {
-  private final String ID_WSDL_EDITOR = "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-
   public void testReadWSDL() throws MalformedURLException, WSDLException, CoreException, FileNotFoundException
   {
     String oagis80Dir = System.getProperty("oagis80Dir");
@@ -123,7 +135,7 @@
   private void openWSDL(IFile file) throws PartInitException
   {
     IWorkbenchWindow workbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-    IEditorPart editor = workbenchWindow.getActivePage().openEditor(new FileEditorInput(file), ID_WSDL_EDITOR, true);
+    IEditorPart editor = workbenchWindow.getActivePage().openEditor(new FileEditorInput(file), PerformancePlugin.WSDL_EDITOR_ID, true);
     workbenchWindow.getActivePage().closeEditor(editor, false);
   }
 }
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenStockQuoteWSDLSetup.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenStockQuoteWSDLSetup.java
index 5d5c4ce..305ab61 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenStockQuoteWSDLSetup.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenStockQuoteWSDLSetup.java
@@ -1,20 +1,22 @@
-/**********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 IBM 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/cpl-v10.html
- *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
  * Contributors:
- *    IBM - Initial API and implementation
- **********************************************************************/
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
 
 package org.eclipse.wst.wsdl.tests.performance;
 
 import java.io.IOException;
+
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenStockQuoteWSDLTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenStockQuoteWSDLTestCase.java
index 5a77575..53be5b4 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenStockQuoteWSDLTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/OpenStockQuoteWSDLTestCase.java
@@ -1,18 +1,19 @@
-/**********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 IBM 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/cpl-v10.html
- *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
  * Contributors:
- *    IBM - Initial API and implementation
- **********************************************************************/
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
 
 package org.eclipse.wst.wsdl.tests.performance;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -28,8 +29,6 @@
 
 public class OpenStockQuoteWSDLTestCase extends PerformanceTestCase
 {
-  private final String EDITOR_ID = "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-
   public static Test suite()
   {
     return new TestSuite(OpenStockQuoteWSDLTestCase.class, "OpenStockQuoteWSDLTestCase");
@@ -79,7 +78,7 @@
     IProject project = getProject(OpenStockQuoteWSDLSetup.PROJECT_NAME);
     IEditorInput editorInput = new FileEditorInput((IFile)project.findMember("StockQuote.wsdl"));
     startMeasuring();
-    IEditorPart editorPart = openEditor(editorInput, EDITOR_ID);
+    IEditorPart editorPart = openEditor(editorInput, PerformancePlugin.WSDL_EDITOR_ID);
     stopMeasuring();
     commitMeasurements();
     assertPerformance();
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/PerformancePlugin.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/PerformancePlugin.java
index 478f4ab..2e68d5d 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/PerformancePlugin.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/PerformancePlugin.java
@@ -1,19 +1,21 @@
-/**********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 IBM 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/cpl-v10.html
- *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
  * Contributors:
- *    IBM - Initial API and implementation
- **********************************************************************/
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
 
 package org.eclipse.wst.wsdl.tests.performance;
 
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
 import org.eclipse.core.runtime.Plugin;
 import org.osgi.framework.BundleContext;
-import java.util.*;
 
 /**
  * The main plugin class to be used in the desktop.
@@ -23,8 +25,15 @@
 	private static PerformancePlugin plugin;
 	//Resource bundle.
 	private ResourceBundle resourceBundle;
+
+  // TODO: These two constants should really be pulled from the plugin which declares it.
+  // This will avoid "magic string" dependencies which can be easily broken.
+  public static final String WSDL_EDITOR_ID = "org.eclipse.wst.wsdl.ui.internal.WSDLEditor"; //$NON-NLS-1$
+  public static final String WSDL_VALIDATOR_ID = "org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator"; //$NON-NLS-1$
+  
+  public static final String BUNDLE_ID = "org.eclipse.wst.wsdl.tests.performance";	//$NON-NLS-1$
 	
-	/**
+  /**
 	 * The constructor.
 	 */
 	public PerformancePlugin() {
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadOAGISWSDLTestcase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadOAGISWSDLTestcase.java
index 13d566e..0c69682 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadOAGISWSDLTestcase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadOAGISWSDLTestcase.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance;
 
 import java.io.File;
@@ -5,8 +16,11 @@
 import java.net.MalformedURLException;
 import java.util.ArrayList;
 import java.util.List;
+
 import javax.wsdl.WSDLException;
+
 import junit.framework.Assert;
+
 import org.eclipse.test.performance.Dimension;
 import org.eclipse.test.performance.PerformanceTestCase;
 import org.eclipse.wst.wsdl.internal.impl.wsdl4j.WSDLReaderImpl;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadStockQuoteWSDLEMFTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadStockQuoteWSDLEMFTestCase.java
index 5f7b53d..7067c70 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadStockQuoteWSDLEMFTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadStockQuoteWSDLEMFTestCase.java
@@ -1,13 +1,13 @@
-/**********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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/cpl-v10.html
- *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
  * Contributors:
- *    IBM - Initial API and implementation
- **********************************************************************/
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
 
 package org.eclipse.wst.wsdl.tests.performance;
 
@@ -15,6 +15,7 @@
 import java.util.Hashtable;
 
 import javax.wsdl.Definition;
+
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadStockQuoteWSDLTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadStockQuoteWSDLTestCase.java
index a78fc6b..532caaf 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadStockQuoteWSDLTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ReadStockQuoteWSDLTestCase.java
@@ -1,21 +1,24 @@
-/**********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 IBM 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/cpl-v10.html
- *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
  * Contributors:
- *    IBM - Initial API and implementation
- **********************************************************************/
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
 
 package org.eclipse.wst.wsdl.tests.performance;
 
 import java.net.URL;
+
 import javax.wsdl.Definition;
 import javax.wsdl.xml.WSDLReader;
+
 import junit.framework.Test;
 import junit.framework.TestSuite;
+
 import org.eclipse.test.performance.PerformanceTestCase;
 import org.eclipse.wst.wsdl.internal.impl.wsdl4j.WSDLFactoryImpl;
 import org.xml.sax.InputSource;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateOAGISWSDLTestcase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateOAGISWSDLTestcase.java
index a4adbb9..b8d2e2f 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateOAGISWSDLTestcase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateOAGISWSDLTestcase.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance;
 
 import java.io.File;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateOAGISWSITestcase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateOAGISWSITestcase.java
index c6a379d..1c5dbf8 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateOAGISWSITestcase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateOAGISWSITestcase.java
@@ -1,3 +1,14 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance;
 
 import java.io.File;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateStockQuoteWSDLTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateStockQuoteWSDLTestCase.java
index e14f845..76e34a8 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateStockQuoteWSDLTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateStockQuoteWSDLTestCase.java
@@ -1,13 +1,13 @@
-/**********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
+/*******************************************************************************
+ * Copyright (c) 2005 2006 IBM 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/cpl-v10.html
- *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
  * Contributors:
- *    IBM - Initial API and implementation
- **********************************************************************/
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
 
 package org.eclipse.wst.wsdl.tests.performance;
 
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateStockQuoteWSITestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateStockQuoteWSITestCase.java
index 01fed9c..01cc307 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateStockQuoteWSITestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateStockQuoteWSITestCase.java
@@ -1,13 +1,13 @@
-/**********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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/cpl-v10.html
- *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
  * Contributors:
- *    IBM - Initial API and implementation
- **********************************************************************/
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
 
 package org.eclipse.wst.wsdl.tests.performance;
 
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateWSDLProjectTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateWSDLProjectTestCase.java
index be5e660..3fd25a2 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateWSDLProjectTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/ValidateWSDLProjectTestCase.java
@@ -1,13 +1,14 @@
-/**********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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/cpl-v10.html
- *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
  * Contributors:
- *    IBM - Initial API and implementation
- **********************************************************************/
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance;
 
 import java.io.File;
@@ -42,7 +43,7 @@
  */
 public class ValidateWSDLProjectTestCase extends PerformanceTestCase {
 	
-	public static Test suite() {
+  public static Test suite() {
 		return new TestSuite(ValidateWSDLProjectTestCase.class, "Test");
 	}
 
@@ -74,7 +75,7 @@
 
 			IWorkspaceRunnable myRunnable = new OneValidatorOperation(
 					project,
-					"org.eclipse.wst.wsdl.ui.internal.validation.Validator",
+          PerformancePlugin.WSDL_VALIDATOR_ID,
 					true, 
 					false);
 			IWorkspace workspace = ResourcesPlugin.getWorkspace();
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open100KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open100KBFileTestCase.java
index cfa35de..e6baf2c 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open100KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open100KBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.OpenEditorTestCase;
-
-public class Open100KBFileTestCase extends OpenEditorTestCase
+public class Open100KBFileTestCase extends OpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/100KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open10KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open10KBFileTestCase.java
index 623d8c0..26a0f7d 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open10KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open10KBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.OpenEditorTestCase;
-
-public class Open10KBFileTestCase extends OpenEditorTestCase
+public class Open10KBFileTestCase extends OpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/10KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open1KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open1KBFileTestCase.java
index 1f5a00b..fdd8ec6 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open1KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open1KBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.OpenEditorTestCase;
-
-public class Open1KBFileTestCase extends OpenEditorTestCase
+public class Open1KBFileTestCase extends OpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/1KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open1MBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open1MBFileTestCase.java
index 20ac5cc..338b5a8 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open1MBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open1MBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.OpenEditorTestCase;
-
-public class Open1MBFileTestCase extends OpenEditorTestCase
+public class Open1MBFileTestCase extends OpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/1MB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open200KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open200KBFileTestCase.java
index c55b244..1f004e2 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open200KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open200KBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.OpenEditorTestCase;
-
-public class Open200KBFileTestCase extends OpenEditorTestCase
+public class Open200KBFileTestCase extends OpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/200KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open500KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open500KBFileTestCase.java
index 288a2aa..a9f64f0 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open500KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Open500KBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.OpenEditorTestCase;
-
-public class Open500KBFileTestCase extends OpenEditorTestCase
+public class Open500KBFileTestCase extends OpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/500KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/OpenWSDLEditorTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/OpenWSDLEditorTestCase.java
new file mode 100644
index 0000000..5d413d6
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/OpenWSDLEditorTestCase.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.wsdl.tests.performance.scalability;
+
+import org.eclipse.wst.common.tests.performance.internal.scalability.OpenEditorTestCase;
+import org.eclipse.wst.wsdl.tests.performance.PerformancePlugin;
+
+public abstract class OpenWSDLEditorTestCase extends OpenEditorTestCase
+{
+  protected String getEditorId()
+  {
+    return PerformancePlugin.WSDL_EDITOR_ID;
+  }
+
+  protected String getBundleId()
+  {
+    return PerformancePlugin.BUNDLE_ID;
+  }
+}
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx100TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx100TestCase.java
index 193a9a9..2ac9964 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx100TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx100TestCase.java
@@ -1,24 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatOpenEditorTestCase;
-
-public class RepeatOpenEditorx100TestCase extends RepeatOpenEditorTestCase
+public class RepeatOpenEditorx100TestCase extends RepeatOpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   protected int getRepeatCount()
   {
     return 100;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx10TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx10TestCase.java
index ec4f3d0..e2d27a5 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx10TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx10TestCase.java
@@ -1,24 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatOpenEditorTestCase;
-
-public class RepeatOpenEditorx10TestCase extends RepeatOpenEditorTestCase
+public class RepeatOpenEditorx10TestCase extends RepeatOpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   protected int getRepeatCount()
   {
     return 10;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx1TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx1TestCase.java
index d597270..dac33d7 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx1TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx1TestCase.java
@@ -1,24 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatOpenEditorTestCase;
-
-public class RepeatOpenEditorx1TestCase extends RepeatOpenEditorTestCase
+public class RepeatOpenEditorx1TestCase extends RepeatOpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   protected int getRepeatCount()
   {
     return 1;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx25TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx25TestCase.java
index 52db3be..fb10251 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx25TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx25TestCase.java
@@ -1,24 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatOpenEditorTestCase;
-
-public class RepeatOpenEditorx25TestCase extends RepeatOpenEditorTestCase
+public class RepeatOpenEditorx25TestCase extends RepeatOpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   protected int getRepeatCount()
   {
     return 25;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx50TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx50TestCase.java
index 58a0aa3..4a041d4 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx50TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx50TestCase.java
@@ -1,24 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatOpenEditorTestCase;
-
-public class RepeatOpenEditorx50TestCase extends RepeatOpenEditorTestCase
+public class RepeatOpenEditorx50TestCase extends RepeatOpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   protected int getRepeatCount()
   {
     return 50;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx75TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx75TestCase.java
index 730ff4c..8eb4800 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx75TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenEditorx75TestCase.java
@@ -1,24 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatOpenEditorTestCase;
-
-public class RepeatOpenEditorx75TestCase extends RepeatOpenEditorTestCase
+public class RepeatOpenEditorx75TestCase extends RepeatOpenWSDLEditorTestCase
 {
-  protected String getEditorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.WSDLEditor";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   protected int getRepeatCount()
   {
     return 75;
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenWSDLEditorTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenWSDLEditorTestCase.java
new file mode 100644
index 0000000..795263d
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatOpenWSDLEditorTestCase.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.wsdl.tests.performance.scalability;
+
+import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatOpenEditorTestCase;
+import org.eclipse.wst.wsdl.tests.performance.PerformancePlugin;
+
+public abstract class RepeatOpenWSDLEditorTestCase extends RepeatOpenEditorTestCase
+{
+  protected String getEditorId()
+  {
+    return PerformancePlugin.WSDL_EDITOR_ID;
+  }
+
+  protected String getBundleId()
+  {
+    return PerformancePlugin.BUNDLE_ID;
+  }
+
+  protected String getFilePath()
+  {
+    return "data/100KB.wsdl";
+  }
+}
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatRunWSDLValidatorTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatRunWSDLValidatorTestCase.java
new file mode 100644
index 0000000..1fc54d8
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatRunWSDLValidatorTestCase.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+* Copyright (c) 2006 IBM 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:
+* IBM Corporation - initial API and implementation
+*******************************************************************************/ 
+
+package org.eclipse.wst.wsdl.tests.performance.scalability;
+
+import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatRunValidatorTestCase;
+import org.eclipse.wst.wsdl.tests.performance.PerformancePlugin;
+
+public abstract class RepeatRunWSDLValidatorTestCase extends RepeatRunValidatorTestCase
+{
+  protected String getValidatorId()
+  {
+    return PerformancePlugin.WSDL_VALIDATOR_ID;
+  }
+
+  protected String getBundleId()
+  {
+    return PerformancePlugin.BUNDLE_ID;
+  }
+
+  protected String getFilePath()
+  {
+    return "data/100KB.wsdl";
+  }
+
+}
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex100TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex100TestCase.java
index 215de77..5d40275 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex100TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex100TestCase.java
@@ -1,29 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatRunValidatorTestCase;
-
-public class RepeatValidatex100TestCase extends RepeatRunValidatorTestCase
+public class RepeatValidatex100TestCase extends RepeatRunWSDLValidatorTestCase
 {
   protected int getRepeatCount()
   {
     return 100;
   }
 
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   public void testValidatex100()
   {
     try
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex10TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex10TestCase.java
index 33278ba..3efaadf 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex10TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex10TestCase.java
@@ -1,29 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatRunValidatorTestCase;
-
-public class RepeatValidatex10TestCase extends RepeatRunValidatorTestCase
+public class RepeatValidatex10TestCase extends RepeatRunWSDLValidatorTestCase
 {
   protected int getRepeatCount()
   {
     return 10;
   }
 
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   public void testValidatex10()
   {
     try
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex1TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex1TestCase.java
index 9128369..143d103 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex1TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex1TestCase.java
@@ -1,29 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatRunValidatorTestCase;
-
-public class RepeatValidatex1TestCase extends RepeatRunValidatorTestCase
+public class RepeatValidatex1TestCase extends RepeatRunWSDLValidatorTestCase
 {
   protected int getRepeatCount()
   {
     return 1;
   }
 
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   public void testValidatex1()
   {
     try
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex25TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex25TestCase.java
index 85e2eb9..68e464d 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex25TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex25TestCase.java
@@ -1,29 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatRunValidatorTestCase;
-
-public class RepeatValidatex25TestCase extends RepeatRunValidatorTestCase
+public class RepeatValidatex25TestCase extends RepeatRunWSDLValidatorTestCase
 {
   protected int getRepeatCount()
   {
     return 25;
   }
 
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   public void testValidatex25()
   {
     try
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex50TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex50TestCase.java
index bb47cc1..771326b 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex50TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex50TestCase.java
@@ -1,29 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatRunValidatorTestCase;
-
-public class RepeatValidatex50TestCase extends RepeatRunValidatorTestCase
+public class RepeatValidatex50TestCase extends RepeatRunWSDLValidatorTestCase
 {
   protected int getRepeatCount()
   {
     return 50;
   }
 
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   public void testValidatex50()
   {
     try
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex75TestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex75TestCase.java
index 8170c5b..ce69bd9 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex75TestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RepeatValidatex75TestCase.java
@@ -1,29 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RepeatRunValidatorTestCase;
-
-public class RepeatValidatex75TestCase extends RepeatRunValidatorTestCase
+public class RepeatValidatex75TestCase extends RepeatRunWSDLValidatorTestCase
 {
   protected int getRepeatCount()
   {
     return 75;
   }
 
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
-  protected String getFilePath()
-  {
-    return "data/100KB.wsdl";
-  }
-
   public void testValidatex75()
   {
     try
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RunWSDLValidatorTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RunWSDLValidatorTestCase.java
new file mode 100644
index 0000000..2b74db3
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/RunWSDLValidatorTestCase.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+* Copyright (c) 2006 IBM 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:
+* IBM Corporation - initial API and implementation
+*******************************************************************************/ 
+
+package org.eclipse.wst.wsdl.tests.performance.scalability;
+
+import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
+import org.eclipse.wst.wsdl.tests.performance.PerformancePlugin;
+
+public abstract class RunWSDLValidatorTestCase extends RunValidatorTestCase
+{
+
+  protected String getValidatorId()
+  {
+      return PerformancePlugin.WSDL_VALIDATOR_ID;
+  }
+
+  protected String getBundleId()
+  {
+      return PerformancePlugin.BUNDLE_ID;
+  }
+
+}
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsCrossDependsTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsCrossDependsTestCase.java
index 2f920a7..63a9414 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsCrossDependsTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsCrossDependsTestCase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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
@@ -12,22 +12,11 @@
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 
-public class Validate1000WSDLsCrossDependsTestCase extends RunValidatorTestCase
+public class Validate1000WSDLsCrossDependsTestCase extends RunWSDLValidatorTestCase
 {
-	protected String getValidatorId()
-	{
-	    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-	}
-
-	protected String getBundleId()
-	{
-	    return "org.eclipse.wst.wsdl.tests.performance";
-	}
-	
 	protected void setUp() throws Exception
 	{
 		WSPlugin.getDefault().getWSIAPContext().updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
@@ -43,7 +32,7 @@
 
 	protected String getFilePath()
 	{
-	    return "data/1000WSDLsCrossDepends/sample0.xsd";
+	    return "data/1000WSDLsCrossDepends/sample0.wsdl";
 	}
 	
 	public void testValidate1000WSDLsCrossDepends()
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsNoDependsTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsNoDependsTestCase.java
index 9315110..4fb7027 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsNoDependsTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsNoDependsTestCase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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
@@ -12,22 +12,11 @@
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 
-public class Validate1000WSDLsNoDependsTestCase extends RunValidatorTestCase
+public class Validate1000WSDLsNoDependsTestCase extends RunWSDLValidatorTestCase
 {
-	protected String getValidatorId()
-	{
-	    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-	}
-
-	protected String getBundleId()
-	{
-	    return "org.eclipse.wst.wsdl.tests.performance";
-	}
-	
 	protected void setUp() throws Exception
 	{
 		WSPlugin.getDefault().getWSIAPContext().updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
@@ -43,7 +32,7 @@
 
 	protected String getFilePath()
 	{
-	    return "data/1000WSDLsNoDepends/sample0.xsd";
+	    return "data/1000WSDLsNoDepends/sample0.wsdl";
 	}
 	
 	public void testValidate1000WSDLsNoDepends()
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsXSDDependsTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsXSDDependsTestCase.java
index 148c2d1..6577094 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsXSDDependsTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1000WSDLsXSDDependsTestCase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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
@@ -12,22 +12,11 @@
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 
-public class Validate1000WSDLsXSDDependsTestCase extends RunValidatorTestCase
+public class Validate1000WSDLsXSDDependsTestCase extends RunWSDLValidatorTestCase
 {
-	protected String getValidatorId()
-	{
-	    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-	}
-
-	protected String getBundleId()
-	{
-	    return "org.eclipse.wst.wsdl.tests.performance";
-	}
-	
 	protected void setUp() throws Exception
 	{
 		WSPlugin.getDefault().getWSIAPContext().updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
@@ -43,7 +32,7 @@
 
 	protected String getFilePath()
 	{
-	    return "data/1000WSDLsXSDDepends/sample0.xsd";
+	    return "data/1000WSDLsXSDDepends/sample0.wsdl";
 	}
 	
 	public void testValidate1000WSDLsXSDDepends()
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100KBFileTestCase.java
index 7bfc579..5d178e1 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100KBFileTestCase.java
@@ -1,19 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 
-public class Validate100KBFileTestCase extends RunValidatorTestCase
+public class Validate100KBFileTestCase extends RunWSDLValidatorTestCase
 {
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/100KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsCrossDependsTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsCrossDependsTestCase.java
index 9499c90..b4cb17e 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsCrossDependsTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsCrossDependsTestCase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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
@@ -12,22 +12,11 @@
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 
-public class Validate100WSDLsCrossDependsTestCase extends RunValidatorTestCase
+public class Validate100WSDLsCrossDependsTestCase extends RunWSDLValidatorTestCase
 {
-	protected String getValidatorId()
-	{
-	    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-	}
-
-	protected String getBundleId()
-	{
-	    return "org.eclipse.wst.wsdl.tests.performance";
-	}
-	
 	protected void setUp() throws Exception
 	{
 		WSPlugin.getDefault().getWSIAPContext().updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
@@ -43,7 +32,7 @@
 
 	protected String getFilePath()
 	{
-	    return "data/100WSDLsCrossDepends/sample0.xsd";
+	    return "data/100WSDLsCrossDepends/sample0.wsdl";
 	}
 	
 	public void testValidate100WSDLsCrossDepends()
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsNoDependsTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsNoDependsTestCase.java
index e870300..161a02d 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsNoDependsTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsNoDependsTestCase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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
@@ -12,22 +12,11 @@
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 
-public class Validate100WSDLsNoDependsTestCase extends RunValidatorTestCase
+public class Validate100WSDLsNoDependsTestCase extends RunWSDLValidatorTestCase
 {
-	protected String getValidatorId()
-	{
-	    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-	}
-
-	protected String getBundleId()
-	{
-	    return "org.eclipse.wst.wsdl.tests.performance";
-	}
-	
 	protected void setUp() throws Exception
 	{
 		WSPlugin.getDefault().getWSIAPContext().updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
@@ -43,7 +32,7 @@
 
 	protected String getFilePath()
 	{
-	    return "data/100WSDLsNoDepends/sample0.xsd";
+	    return "data/100WSDLsNoDepends/sample0.wsdl";
 	}
 	
 	public void testValidate100WSDLsNoDepends()
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsXSDDependsTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsXSDDependsTestCase.java
index 774e8d6..59d2f5d 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsXSDDependsTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate100WSDLsXSDDependsTestCase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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
@@ -12,22 +12,11 @@
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 
-public class Validate100WSDLsXSDDependsTestCase extends RunValidatorTestCase
+public class Validate100WSDLsXSDDependsTestCase extends RunWSDLValidatorTestCase
 {
-	protected String getValidatorId()
-	{
-	    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-	}
-
-	protected String getBundleId()
-	{
-	    return "org.eclipse.wst.wsdl.tests.performance";
-	}
-	
 	protected void setUp() throws Exception
 	{
 		WSPlugin.getDefault().getWSIAPContext().updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10KBFileTestCase.java
index 9c9fa8c..ff2d260 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10KBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
-
-public class Validate10KBFileTestCase extends RunValidatorTestCase
+public class Validate10KBFileTestCase extends RunWSDLValidatorTestCase
 {
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/10KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsCrossDependsTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsCrossDependsTestCase.java
index 2de6161..7b1d0d1 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsCrossDependsTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsCrossDependsTestCase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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
@@ -12,22 +12,11 @@
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 
-public class Validate10WSDLsCrossDependsTestCase extends RunValidatorTestCase
+public class Validate10WSDLsCrossDependsTestCase extends RunWSDLValidatorTestCase
 {
-	protected String getValidatorId()
-	{
-	    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-	}
-
-	protected String getBundleId()
-	{
-	    return "org.eclipse.wst.wsdl.tests.performance";
-	}
-	
 	protected void setUp() throws Exception
 	{
 		WSPlugin.getDefault().getWSIAPContext().updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
@@ -43,7 +32,7 @@
 
 	protected String getFilePath()
 	{
-	    return "data/10WSDLsCrossDepends/sample0.xsd";
+	    return "data/10WSDLsCrossDepends/sample0.wsdl";
 	}
 	
 	public void testValidate10WSDLsCrossDepends()
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsNoDependsTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsNoDependsTestCase.java
index aa59979..ba247d5 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsNoDependsTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsNoDependsTestCase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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
@@ -12,22 +12,11 @@
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 
-public class Validate10WSDLsNoDependsTestCase extends RunValidatorTestCase
+public class Validate10WSDLsNoDependsTestCase extends RunWSDLValidatorTestCase
 {
-	protected String getValidatorId()
-	{
-	    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-	}
-
-	protected String getBundleId()
-	{
-	    return "org.eclipse.wst.wsdl.tests.performance";
-	}
-	
 	protected void setUp() throws Exception
 	{
 		WSPlugin.getDefault().getWSIAPContext().updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
@@ -43,7 +32,7 @@
 
 	protected String getFilePath()
 	{
-	    return "data/10WSDLsNoDepends/sample0.xsd";
+	    return "data/10WSDLsNoDepends/sample0.wsdl";
 	}
 	
 	public void testValidate10WSDLsNoDepends()
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsXSDDependsTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsXSDDependsTestCase.java
index 1f754dd..6096b94 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsXSDDependsTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate10WSDLsXSDDependsTestCase.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM 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
@@ -12,22 +12,11 @@
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
 import org.eclipse.core.resources.IProject;
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
 
-public class Validate10WSDLsXSDDependsTestCase extends RunValidatorTestCase
+public class Validate10WSDLsXSDDependsTestCase extends RunWSDLValidatorTestCase
 {
-	protected String getValidatorId()
-	{
-	    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-	}
-
-	protected String getBundleId()
-	{
-	    return "org.eclipse.wst.wsdl.tests.performance";
-	}
-	
 	protected void setUp() throws Exception
 	{
 		WSPlugin.getDefault().getWSIAPContext().updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1KBFileTestCase.java
index 510cc93..faa80ae 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1KBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
-
-public class Validate1KBFileTestCase extends RunValidatorTestCase
+public class Validate1KBFileTestCase extends RunWSDLValidatorTestCase
 {
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/1KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1MBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1MBFileTestCase.java
index f9f0e0e..aa44c08 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1MBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate1MBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
-
-public class Validate1MBFileTestCase extends RunValidatorTestCase
+public class Validate1MBFileTestCase extends RunWSDLValidatorTestCase
 {
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/1MB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate200KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate200KBFileTestCase.java
index 3f9f840..96f4337 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate200KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate200KBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
-
-public class Validate200KBFileTestCase extends RunValidatorTestCase
+public class Validate200KBFileTestCase extends RunWSDLValidatorTestCase
 {
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/200KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate500KBFileTestCase.java b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate500KBFileTestCase.java
index fb28c9b..bb55ba0 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate500KBFileTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/performance/org/eclipse/wst/wsdl/tests/performance/scalability/Validate500KBFileTestCase.java
@@ -1,19 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.wsdl.tests.performance.scalability;
 
-import org.eclipse.wst.common.tests.performance.internal.scalability.RunValidatorTestCase;
-
-public class Validate500KBFileTestCase extends RunValidatorTestCase
+public class Validate500KBFileTestCase extends RunWSDLValidatorTestCase
 {
-  protected String getValidatorId()
-  {
-    return "org.eclipse.wst.wsdl.ui.internal.validation.Validator";
-  }
-
-  protected String getBundleId()
-  {
-    return "org.eclipse.wst.wsdl.tests.performance";
-  }
-
   protected String getFilePath()
   {
     return "data/500KB.wsdl";
diff --git a/tests/org.eclipse.wst.wsdl.tests.performance/test.xml b/tests/org.eclipse.wst.wsdl.tests.performance/test.xml
index 8c1af9a..c125820 100644
--- a/tests/org.eclipse.wst.wsdl.tests.performance/test.xml
+++ b/tests/org.eclipse.wst.wsdl.tests.performance/test.xml
@@ -1,17 +1,13 @@
 <?xml version="1.0"?>
 
 <project name="testsuite" default="performance" basedir=".">
-  <!-- The property ${eclipse-home} should be passed into this script -->
-  <!-- Set a meaningful default value for when it is not. -->
-  <property name="eclipse-home" value="${basedir}\..\.."/>
-
   <!-- sets the properties eclipse-home, and library-file -->
   <property name="plugin-name" value="org.eclipse.wst.wsdl.tests.performance"/>
   <property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test_3.1.0/library.xml"/>
   <property name="perf-tests-file" value="${testDir}/performance-tests.xml"/>
   <property name="extraVMargs" value="-Doagis80Dir=${testDir} -DprojectDir=${testDir}/OAGIS8.0 -Xmx512M"/>
-
   <property name="workspace" value="${eclipse-home}/workspace_wsdl_performance"/>
+  <property name="data-dir" value="${eclipse-home}/workspace_wsdl_performance"/>
 
   <!-- This target holds all initialization code that needs to be done for -->
   <!-- all tests that are to be run. Initialization for individual tests -->
@@ -29,92 +25,42 @@
     <antcall target="readOAGISWSDLTestcase"/>
     <antcall target="readOAGISWSDLTestcase"/>
     <antcall target="readOAGISWSDLTestcase"/>
-    <antcall target="readOAGISWSDLTestcase"/>
-    <antcall target="readOAGISWSDLTestcase"/>
-    <antcall target="readOAGISWSDLTestcase"/>
-    <antcall target="readOAGISWSDLTestcase"/>
-    <antcall target="readOAGISWSDLTestcase"/>
 
   	<antcall target="ValidateOAGISWSDLTestcase"/>
   	<antcall target="ValidateOAGISWSDLTestcase"/>
 	<antcall target="ValidateOAGISWSDLTestcase"/>
-  	<antcall target="ValidateOAGISWSDLTestcase"/>
-  	<antcall target="ValidateOAGISWSDLTestcase"/>
-  	<antcall target="ValidateOAGISWSDLTestcase"/>
-  	<antcall target="ValidateOAGISWSDLTestcase"/>
-  	<antcall target="ValidateOAGISWSDLTestcase"/>
 
   	<antcall target="ValidateOAGISWSITestcase"/>
   	<antcall target="ValidateOAGISWSITestcase"/>
   	<antcall target="ValidateOAGISWSITestcase"/>
-  	<antcall target="ValidateOAGISWSITestcase"/>
-  	<antcall target="ValidateOAGISWSITestcase"/>
-  	<antcall target="ValidateOAGISWSITestcase"/>
-  	<antcall target="ValidateOAGISWSITestcase"/>
-  	<antcall target="ValidateOAGISWSITestcase"/>
 
   	<antcall target="ValidateWSDLProjectTestCase"/>
   	<antcall target="ValidateWSDLProjectTestCase"/>
 	<antcall target="ValidateWSDLProjectTestCase"/>
-  	<antcall target="ValidateWSDLProjectTestCase"/>
-  	<antcall target="ValidateWSDLProjectTestCase"/>
-  	<antcall target="ValidateWSDLProjectTestCase"/>
-  	<antcall target="ValidateWSDLProjectTestCase"/>
-  	<antcall target="ValidateWSDLProjectTestCase"/>
   	
     <antcall target="openEditorOAGISWSDLTestcase"/>
     <antcall target="openEditorOAGISWSDLTestcase"/>
     <antcall target="openEditorOAGISWSDLTestcase"/>
-    <antcall target="openEditorOAGISWSDLTestcase"/>
-    <antcall target="openEditorOAGISWSDLTestcase"/>
-    <antcall target="openEditorOAGISWSDLTestcase"/>
-    <antcall target="openEditorOAGISWSDLTestcase"/>
-    <antcall target="openEditorOAGISWSDLTestcase"/>
 
     <antcall target="ReadStockQuoteWSDLTestCase"/>
     <antcall target="ReadStockQuoteWSDLTestCase"/>
     <antcall target="ReadStockQuoteWSDLTestCase"/>
-    <antcall target="ReadStockQuoteWSDLTestCase"/>
-    <antcall target="ReadStockQuoteWSDLTestCase"/>
-    <antcall target="ReadStockQuoteWSDLTestCase"/>
-    <antcall target="ReadStockQuoteWSDLTestCase"/>
-    <antcall target="ReadStockQuoteWSDLTestCase"/>
 
   	<antcall target="ReadStockQuoteWSDLEMFTestCase"/>
   	<antcall target="ReadStockQuoteWSDLEMFTestCase"/>
   	<antcall target="ReadStockQuoteWSDLEMFTestCase"/>
-  	<antcall target="ReadStockQuoteWSDLEMFTestCase"/>
-  	<antcall target="ReadStockQuoteWSDLEMFTestCase"/>
-  	<antcall target="ReadStockQuoteWSDLEMFTestCase"/>
-  	<antcall target="ReadStockQuoteWSDLEMFTestCase"/>
-    <antcall target="ReadStockQuoteWSDLEMFTestCase"/>
 
   	<antcall target="ValidateStockQuoteWSDLTestCase"/>
   	<antcall target="ValidateStockQuoteWSDLTestCase"/>
   	<antcall target="ValidateStockQuoteWSDLTestCase"/>
-  	<antcall target="ValidateStockQuoteWSDLTestCase"/>
-  	<antcall target="ValidateStockQuoteWSDLTestCase"/>
-  	<antcall target="ValidateStockQuoteWSDLTestCase"/>
-  	<antcall target="ValidateStockQuoteWSDLTestCase"/>
-  	<antcall target="ValidateStockQuoteWSDLTestCase"/>
 
   	<antcall target="ValidateStockQuoteWSITestCase"/>
   	<antcall target="ValidateStockQuoteWSITestCase"/>
   	<antcall target="ValidateStockQuoteWSITestCase"/>
-  	<antcall target="ValidateStockQuoteWSITestCase"/>
-  	<antcall target="ValidateStockQuoteWSITestCase"/>
-  	<antcall target="ValidateStockQuoteWSITestCase"/>
-  	<antcall target="ValidateStockQuoteWSITestCase"/>
-  	<antcall target="ValidateStockQuoteWSITestCase"/>
 
   	<antcall target="OpenStockQuoteWSDLSetup"/>
   	<antcall target="OpenStockQuoteWSDLSetup"/>
   	<antcall target="OpenStockQuoteWSDLSetup"/>
-  	<antcall target="OpenStockQuoteWSDLSetup"/>
-  	<antcall target="OpenStockQuoteWSDLSetup"/>
-  	<antcall target="OpenStockQuoteWSDLSetup"/>
-    <antcall target="OpenStockQuoteWSDLSetup"/>
-  	<antcall target="OpenStockQuoteWSDLSetup"/>
 
   	<antcall target="Open1KBFileTestCase"/>
   	<antcall target="Open1KBFileTestCase"/>
@@ -250,7 +196,6 @@
   	<antcall target="Validate10WSDLsNoDependsTestCase"/>
   	<antcall target="Validate10WSDLsNoDependsTestCase"/>
   	
-  	
   </target>
 
   <target name="readOAGISWSDLTestcase">
diff --git a/tests/org.eclipse.wst.wsdl.tests.ui/.project b/tests/org.eclipse.wst.wsdl.tests.ui/.project
index b4c5d49..7ffb78d 100644
--- a/tests/org.eclipse.wst.wsdl.tests.ui/.project
+++ b/tests/org.eclipse.wst.wsdl.tests.ui/.project
@@ -3,8 +3,6 @@
 	<name>org.eclipse.wst.wsdl.tests.ui</name>
 	<comment></comment>
 	<projects>
-		<project>com.ibm.etools.wsdl</project>
-		<project>org.eclipse.xsd</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/tests/org.eclipse.wst.wsdl.tests.ui/about.html b/tests/org.eclipse.wst.wsdl.tests.ui/about.html
index 6f6b96c..4ec5989 100644
--- a/tests/org.eclipse.wst.wsdl.tests.ui/about.html
+++ b/tests/org.eclipse.wst.wsdl.tests.ui/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.wsdl.tests.ui/build.properties b/tests/org.eclipse.wst.wsdl.tests.ui/build.properties
index 64a567b..e8f906f 100644
--- a/tests/org.eclipse.wst.wsdl.tests.ui/build.properties
+++ b/tests/org.eclipse.wst.wsdl.tests.ui/build.properties
@@ -1,9 +1,4 @@
 source.wsdl.tests.ui.jar = src/
 bin.includes = plugin.xml,\
-               *.jar,\
-               wsdl.tests.ui.jar,\
-               TemperatureService.wsdl,\
-               jars/,\
-               about.html
-src.includes = TemperatureService.wsdl,\
-               jars/
+               about.html,\
+               wsdl.tests.ui.jar
diff --git a/tests/org.eclipse.wst.wsdl.tests/.project b/tests/org.eclipse.wst.wsdl.tests/.project
index 07bfa84..9813a74 100644
--- a/tests/org.eclipse.wst.wsdl.tests/.project
+++ b/tests/org.eclipse.wst.wsdl.tests/.project
@@ -3,15 +3,6 @@
 	<name>org.eclipse.wst.wsdl.tests</name>
 	<comment></comment>
 	<projects>
-		<project>com.ibm.etools.wsdl</project>
-		<project>com.ibm.wsdl</project>
-		<project>org.apache.xerces</project>
-		<project>org.eclipse.core.resources</project>
-		<project>org.eclipse.core.runtime.compatibility</project>
-		<project>org.eclipse.emf.ecore</project>
-		<project>org.eclipse.ui</project>
-		<project>org.eclipse.xsd</project>
-		<project>org.junit</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/tests/org.eclipse.wst.wsdl.tests/about.html b/tests/org.eclipse.wst.wsdl.tests/about.html
index 6f6b96c..4ec5989 100644
--- a/tests/org.eclipse.wst.wsdl.tests/about.html
+++ b/tests/org.eclipse.wst.wsdl.tests/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.wsdl.tests/build.properties b/tests/org.eclipse.wst.wsdl.tests/build.properties
index 6a439a1..32ee244 100644
--- a/tests/org.eclipse.wst.wsdl.tests/build.properties
+++ b/tests/org.eclipse.wst.wsdl.tests/build.properties
@@ -1,19 +1,7 @@
 bin.includes = plugin.xml,\
                test.xml,\
-               .options,\
-               testResources/,\
-               runtests.bat,\
-               JUNIT.XSL,\
-               runtime/,\
                wsdl.tests.jar,\
                samples/,\
                about.html
 source.wsdl.tests.jar = src/
-src.includes = build.xml,\
-               .options,\
-               JUNIT.XSL,\
-               runtests.bat,\
-               testResources/,\
-               runtime/,\
-               PTATimeDistribution.wsdl,\
-               TDDataSet.xsd
+javacWarnings.wsdl.tests.jar=-discouraged
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.wsdl.tests/plugin.xml b/tests/org.eclipse.wst.wsdl.tests/plugin.xml
index da2a26f..b1d9ed6 100644
--- a/tests/org.eclipse.wst.wsdl.tests/plugin.xml
+++ b/tests/org.eclipse.wst.wsdl.tests/plugin.xml
@@ -3,7 +3,7 @@
 <plugin
    id="org.eclipse.wst.wsdl.tests"
    name="WSDL JUnit Test"
-   version="1.0.0"
+   version="1.0.1"
    class="org.eclipse.wst.wsdl.tests.WSDLTestsPlugin">
 
    <runtime>
@@ -23,4 +23,4 @@
       <import plugin="org.eclipse.wst.common.uriresolver"/>
    </requires>
 
-</plugin>
\ No newline at end of file
+</plugin>
diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/BindingFaultReconciliation/BindingFaultSample.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/BindingFaultReconciliation/BindingFaultSample.wsdl
new file mode 100644
index 0000000..55fca01
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/BindingFaultReconciliation/BindingFaultSample.wsdl
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

+	xmlns:tns="http://www.example.org/BindingFaultSample/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+	name="BindingFaultSample" targetNamespace="http://www.example.org/BindingFaultSample/">

+	<wsdl:types>

+		<xsd:schema targetNamespace="http://www.example.org/BindingFaultSample/"

+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">

+			<xsd:element name="Operation1">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="in" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			<xsd:element name="Operation1Response">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="out" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			<xsd:element name="Operation1Fault">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="fault" type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			<xsd:element name="Operation2">

+				<xsd:complexType>

+					<xsd:sequence>

+

+						<xsd:element name="in" type="xsd:string"></xsd:element>

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			<xsd:element name="Operation2Response">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="out" type="xsd:string"></xsd:element>

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			<xsd:element name="Operation2Fault1">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="Operation2Fault1" type="xsd:string"></xsd:element>

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+			<xsd:element name="Operation2Fault2">

+				<xsd:complexType>

+					<xsd:sequence>

+						<xsd:element name="Operation2Fault2" type="xsd:string"></xsd:element>

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+		</xsd:schema>

+	</wsdl:types>

+	<wsdl:message name="Operation1Request">

+		<wsdl:part element="tns:Operation1" name="parameters" />

+	</wsdl:message>

+	<wsdl:message name="Operation1Response">

+		<wsdl:part element="tns:Operation1Response" name="parameters" />

+	</wsdl:message>

+	<wsdl:message name="Operation1Fault">

+		<wsdl:part name="Fault" element="tns:Operation1Fault" />

+	</wsdl:message>

+	<wsdl:message name="Operation2Request">

+		<wsdl:part name="parameters" element="tns:Operation2"></wsdl:part>

+	</wsdl:message>

+	<wsdl:message name="Operation2Response">

+		<wsdl:part name="parameters" element="tns:Operation2Response"></wsdl:part>

+	</wsdl:message>

+	<wsdl:message name="Operation2Fault1">

+		<wsdl:part name="parameters" element="tns:Operation2Fault1"></wsdl:part>

+	</wsdl:message>

+	<wsdl:message name="Operation2Fault2">

+		<wsdl:part name="parameters" element="tns:Operation2Fault2"></wsdl:part>

+	</wsdl:message>

+	<wsdl:portType name="SamplePort">

+		<wsdl:operation name="Operation1">

+			<wsdl:input message="tns:Operation1Request" />

+			<wsdl:output message="tns:Operation1Response" />

+		</wsdl:operation>

+		<wsdl:operation name="Operation2">

+			<wsdl:input message="tns:Operation2Request" />

+			<wsdl:output message="tns:Operation2Response" />

+			<wsdl:fault name="Operation2Fault1" message="tns:Operation2Fault1" />

+			<wsdl:fault name="Operation2Fault2" message="tns:Operation2Fault2" />

+		</wsdl:operation>

+	</wsdl:portType>

+	<wsdl:binding name="SamplePortSOAPBinding" type="tns:SamplePort">

+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

+		<wsdl:operation name="Operation1">

+			<soap:operation soapAction="http://www.example.org/BindingFaultSample/Operation1" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+			<wsdl:fault name="Operation1Fault">

+				<soap:fault name="Operation1Fault" />

+			</wsdl:fault>

+		</wsdl:operation>

+		<wsdl:operation name="Operation2">

+			<soap:operation soapAction="http://www.example.org/BindingFaultSample/Operation2" />

+			<wsdl:input>

+				<soap:body use="literal" />

+			</wsdl:input>

+			<wsdl:output>

+				<soap:body use="literal" />

+			</wsdl:output>

+			<wsdl:fault name="Operation2Fault1">

+				<soap:fault use="literal" name="Operation2Fault1" />

+			</wsdl:fault>

+			<wsdl:fault name="Operation2Fault2">

+				<soap:fault use="literal" name="Operation2Fault2" />

+			</wsdl:fault>

+		</wsdl:operation>

+	</wsdl:binding>

+	<wsdl:service name="SampleService">

+		<wsdl:port binding="tns:SamplePortSOAPBinding" name="SamplePort">

+			<soap:address location="http://www.example.org/" />

+		</wsdl:port>

+	</wsdl:service>

+</wsdl:definitions>

diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/BindingOperationReconciliation/BindingOperationReconciliation.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/BindingOperationReconciliation/BindingOperationReconciliation.wsdl
new file mode 100644
index 0000000..8f3026d
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/BindingOperationReconciliation/BindingOperationReconciliation.wsdl
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="http://www.example.org/BindingOperationReconciliation/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	name="BindingOperationReconciliation"
+	targetNamespace="http://www.example.org/BindingOperationReconciliation/">
+	<wsdl:types>
+		<xsd:schema
+			targetNamespace="http://www.example.org/BindingOperationReconciliation/"
+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+			<xsd:element name="NewOperation">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="in" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			<xsd:element name="NewOperationResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="out" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+		</xsd:schema>
+	</wsdl:types>
+
+	<wsdl:message name="NewOperationRequest">
+		<wsdl:part element="tns:NewOperation" name="parameters" />
+	</wsdl:message>
+
+	<wsdl:message name="NewOperationResponse">
+		<wsdl:part element="tns:NewOperationResponse" name="parameters" />
+	</wsdl:message>
+
+	<wsdl:message name="NewOperationRequest2">
+		<wsdl:part element="tns:NewOperation" name="parameters" />
+	</wsdl:message>
+
+	<wsdl:message name="NewOperationResponse2">
+		<wsdl:part element="tns:NewOperationResponse" name="parameters" />
+	</wsdl:message>
+
+	<wsdl:message name="NewOperationRequest3">
+		<wsdl:part element="tns:NewOperation" name="parameters" />
+	</wsdl:message>
+
+	<wsdl:message name="NewOperationResponse3">
+		<wsdl:part element="tns:NewOperationResponse" name="parameters" />
+	</wsdl:message>
+
+	<wsdl:portType name="BindingOperationReconciliation">
+		<wsdl:operation name="NewOperation">
+			<wsdl:input message="tns:NewOperationRequest" />
+			<wsdl:output message="tns:NewOperationResponse" />
+		</wsdl:operation>
+		<wsdl:operation name="NewOperation2">
+			<wsdl:input message="tns:NewOperationRequest2" />
+			<wsdl:output message="tns:NewOperationResponse2" />
+		</wsdl:operation>
+		<wsdl:operation name="NewOperation3">
+			<wsdl:input name="Input3" message="tns:NewOperationRequest3" />
+			<wsdl:output name="Output3" message="tns:NewOperationResponse3" />
+		</wsdl:operation>
+	</wsdl:portType>
+
+	<wsdl:binding name="BindingOperationReconciliationSOAP"
+		type="tns:BindingOperationReconciliation">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+		<wsdl:operation name="NewOperation">
+			<soap:operation
+				soapAction="http://www.example.org/BindingOperationReconciliation/NewOperation" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="NewOperation2">
+			<soap:operation
+				soapAction="http://www.example.org/BindingOperationReconciliation/NewOperation2" />
+			<wsdl:input name="Input2">
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output name="Output2">
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+		<wsdl:operation name="NewOperation3">
+			<soap:operation
+				soapAction="http://www.example.org/BindingOperationReconciliation/NewOperation3" />
+			<wsdl:input name="Input3">
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output name="Output3">
+				<soap:body use="literal" />
+			</wsdl:output>
+		</wsdl:operation>
+	</wsdl:binding>
+	<wsdl:service name="BindingOperationReconciliation">
+		<wsdl:port binding="tns:BindingOperationReconciliationSOAP"
+			name="BindingOperationReconciliationSOAP">
+			<soap:address location="http://www.example.org/" />
+		</wsdl:port>
+	</wsdl:service>
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/DuplicateSAXException/SAXException.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/DuplicateSAXException/SAXException.wsdl
new file mode 100644
index 0000000..13f431f
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/DuplicateSAXException/SAXException.wsdl
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions
+	xmlns:tns="http://www.example.org/NamespacePrefixNotBound/"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	name="NamespacePrefixNotBound"
+	targetNamespace="http://www.example.org/NamespacePrefixNotBound/">
+	<undefined:test />
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/LoadsNamelessDefinition/MissingName.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/LoadsNamelessDefinition/MissingName.wsdl
new file mode 100644
index 0000000..8e8c996
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/LoadsNamelessDefinition/MissingName.wsdl
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

+</wsdl:definitions>

diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/LoadsNamelessDefinition/WithName.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/LoadsNamelessDefinition/WithName.wsdl
new file mode 100644
index 0000000..c909b51
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/LoadsNamelessDefinition/WithName.wsdl
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="WSDLFile">

+</wsdl:definitions>

diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/LocalNamespace/LocalNamespace.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/LocalNamespace/LocalNamespace.wsdl
new file mode 100644
index 0000000..a829b27
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/LocalNamespace/LocalNamespace.wsdl
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>

+<wsdl:definitions xmlns:tns="http://tempuri.org/Simple/"

+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Simple"

+	targetNamespace="http://tempuri.org/Simple/">

+

+	<wsdl:types>

+

+		<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+			elementFormDefault="qualified"

+			targetNamespace="http://tempuri.org/Simple/">

+

+			<xsd:element name="OperationInput">

+

+				<xsd:complexType>

+

+					<xsd:sequence>

+						<xsd:element name="attribute1"

+							type="xsd:string" />

+						<xsd:element name="attribute2"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+

+			<xsd:element name="OperationOutput">

+

+				<xsd:complexType>

+

+					<xsd:sequence>

+						<xsd:element name="attribute1"

+							type="xsd:string" />

+						<xsd:element name="attribute2"

+							type="xsd:string" />

+					</xsd:sequence>

+				</xsd:complexType>

+			</xsd:element>

+		</xsd:schema>

+	</wsdl:types>

+

+	<wsdl:message name="myOperationResponse">

+		<wsdl:part name="myOperationResponse"

+			element="tns:OperationOutput" />

+	</wsdl:message>

+

+	<wsdl:message name="myOperationRequest">

+		<wsdl:part xmlns:parttns="http://tempuri.org/Simple/"

+			name="myOperationRequest" element="parttns:OperationInput" />

+	</wsdl:message>

+

+	<wsdl:portType name="MyPortType">

+

+		<wsdl:operation name="myOperation">

+			<wsdl:input message="tns:myOperationRequest" />

+			<wsdl:output message="tns:myOperationResponse" />

+		</wsdl:operation>

+	</wsdl:portType>

+	

+</wsdl:definitions>

diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/OperationStyle/OperationStyleTest.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/OperationStyle/OperationStyleTest.wsdl
new file mode 100644
index 0000000..506aec6
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/OperationStyle/OperationStyleTest.wsdl
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://example.org"

+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="OperationStyleTest" targetNamespace="http://example.org">

+

+	<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">

+		<jaxws:enableWrapperStyle>true</jaxws:enableWrapperStyle>

+		<jaxws:enableAsyncMapping>false</jaxws:enableAsyncMapping>

+	</jaxws:bindings>

+

+	<types>

+		<xsd:schema targetNamespace="http://example.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

+			elementFormDefault="qualified" xmlns:tns="http://example.org">

+

+			<xsd:element name="quoteRequest" type="tns:quoteRequestType" />

+

+			<xsd:complexType name="quoteRequestType">

+				<xsd:sequence>

+					<xsd:element name="stockSymbol" type="xsd:int" />

+					<xsd:element name="transactionDate" type="xsd:date" />

+				</xsd:sequence>

+			</xsd:complexType>

+

+			<xsd:element name="quoteResponse" type="tns:quoteResponseType" />

+

+			<xsd:complexType name="quoteResponseType">

+				<xsd:sequence>

+					<xsd:element name="value" type="xsd:double" />

+				</xsd:sequence>

+			</xsd:complexType>

+

+			<xsd:element name="quoteError" type="xsd:string" />

+

+		</xsd:schema>

+	</types>

+

+	<message name="Quote">

+		<part name="params" element="tns:quoteRequest" />

+	</message>

+

+	<message name="QuoteResponse">

+		<part name="result" element="tns:quoteResponse" />

+	</message>

+

+	<message name="QuoteError">

+		<part name="error" element="tns:quoteError" />

+	</message>

+

+	<portType name="QuotePortType">

+

+		<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">

+			<jaxws:class name="QuoteProviderImpl" />

+			<jaxws:enableWrapperStyle>true</jaxws:enableWrapperStyle>

+			<jaxws:enableAsyncMapping>false</jaxws:enableAsyncMapping>

+		</jaxws:bindings>

+

+		<operation name="GetQuote">

+

+			<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"

+				xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

+				<jaxws:method name="getQuote" />

+				<jaxws:parameter part="wsdl:definitions/wsdl:message[@name='Quote']/wsdl:part[@name='params']"

+					childElementName="tns:stockSymbol" name="symbol" />

+				<jaxws:parameter part="wsdl:definitions/wsdl:message[@name='Quote']/wsdl:part[@name='params']"

+					childElementName="tns:transactionDate" name="date" />

+				<jaxws:enableWrapperStyle>true</jaxws:enableWrapperStyle>

+				<jaxws:enableAsyncMapping>false</jaxws:enableAsyncMapping>

+			</jaxws:bindings>

+

+			<input message="tns:Quote" />

+

+			<output message="tns:QuoteResponse" />

+

+			<fault name="QuoteError" message="tns:QuoteError">

+

+				<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">

+					<jaxws:class name="QuoteException" />

+				</jaxws:bindings>

+

+			</fault>

+		</operation>

+	</portType>

+

+	<binding name="QuoteBinding" type="tns:QuotePortType">

+

+		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />

+

+		<operation name="GetQuote">

+			<soap:operation soapAction="" />

+			<input>

+				<soap:body use="literal" />

+			</input>

+			<output>

+				<soap:body use="literal" />

+			</output>

+			<fault name="QuoteError">

+				<soap:fault name="QuoteError" use="literal" />

+			</fault>

+		</operation>

+

+	</binding>

+

+	<service name="QuoteService">

+

+		<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">

+			<jaxws:class name="QuotationService" />

+		</jaxws:bindings>

+

+		<port name="QuotePort" binding="tns:QuoteBinding">

+

+			<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">

+				<jaxws:method name="getQuotationService" />

+			</jaxws:bindings>

+

+			<soap:address location="http://localhost:8080/quote" />

+

+		</port>

+

+	</service>

+

+</definitions>

diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/WSDLElementResolution/firstlevel.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/WSDLElementResolution/firstlevel.wsdl
new file mode 100644
index 0000000..fcb8dc1
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/WSDLElementResolution/firstlevel.wsdl
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.example.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com">

+    <import location="secondlevel.wsdl" namespace="http://www.example.com"/>

+	<message name="testINPUTmessage">

+		<part name="testINpart" type="xsd:string"/>

+	</message>

+</definitions>

diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/WSDLElementResolution/main.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/WSDLElementResolution/main.wsdl
new file mode 100644
index 0000000..b0a42a7
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/WSDLElementResolution/main.wsdl
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" 

+	xmlns:tns="http://www.example.com" 

+	targetNamespace="http://www.example.com">

+    

+    <import location="firstlevel.wsdl" namespace="http://www.example.com"/>

+    

+    <portType name="TestPortType">

+

+    	<operation name="TestOperation">

+

+    		<!-- This is located in the first level import -->

+

+    		<input message="tns:testINPUTmessage"/>

+

+    		<!-- This is located in the second level import -->

+

+    		<output message="tns:testOUTPUTmessage"/>

+

+    	</operation>

+

+    </portType>

+    

+</definitions>

diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/WSDLElementResolution/secondlevel.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/WSDLElementResolution/secondlevel.wsdl
new file mode 100644
index 0000000..6e2efd9
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/BugFixes/WSDLElementResolution/secondlevel.wsdl
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" 

+	xmlns:tns="http://www.example.com" 

+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

+	targetNamespace="http://www.example.com">

+

+	<!-- Here to force a cyclic import to make sure the code does not go into an infinite recursion. -->

+	

+    <import location="main.wsdl" namespace="http://www.example.com"/>

+

+	<message name="testOUTPUTmessage">

+		<part name="testOUTpart" type="xsd:string"/>

+	</message>

+

+	<!-- Duplicated here to allow testing the imports tree traversal order.

+	This message will be "masked" by the one declared in the firstlevel.wsdl -->

+

+	<message name="testINPUTmessage">

+		<part name="testINpart" type="xsd:int"/>

+	</message>

+

+</definitions>

diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/LoadStoreCompare/.cvsignore b/tests/org.eclipse.wst.wsdl.tests/samples/LoadStoreCompare/.cvsignore
new file mode 100644
index 0000000..d192e8e
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.tests/samples/LoadStoreCompare/.cvsignore
@@ -0,0 +1 @@
+*.wsdl.out
diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/Imported.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/LoadStoreCompare/Imported.wsdl
similarity index 100%
rename from tests/org.eclipse.wst.wsdl.tests/samples/Imported.wsdl
rename to tests/org.eclipse.wst.wsdl.tests/samples/LoadStoreCompare/Imported.wsdl
diff --git a/tests/org.eclipse.wst.wsdl.tests/samples/LoadAndPrintTest.wsdl b/tests/org.eclipse.wst.wsdl.tests/samples/LoadStoreCompare/LoadAndPrintTest.wsdl
similarity index 100%
rename from tests/org.eclipse.wst.wsdl.tests/samples/LoadAndPrintTest.wsdl
rename to tests/org.eclipse.wst.wsdl.tests/samples/LoadStoreCompare/LoadAndPrintTest.wsdl
diff --git a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/BugFixesTest.java b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/BugFixesTest.java
index 3dac6e8..f0b3027 100644
--- a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/BugFixesTest.java
+++ b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/BugFixesTest.java
@@ -11,8 +11,12 @@
 
 package org.eclipse.wst.wsdl.tests;
 
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 
+import javax.wsdl.OperationType;
 import javax.xml.namespace.QName;
 
 import junit.framework.Assert;
@@ -20,10 +24,23 @@
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.wst.wsdl.Binding;
+import org.eclipse.wst.wsdl.BindingFault;
+import org.eclipse.wst.wsdl.BindingInput;
+import org.eclipse.wst.wsdl.BindingOperation;
 import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.Fault;
+import org.eclipse.wst.wsdl.Import;
+import org.eclipse.wst.wsdl.Input;
 import org.eclipse.wst.wsdl.Message;
+import org.eclipse.wst.wsdl.Operation;
 import org.eclipse.wst.wsdl.Part;
+import org.eclipse.wst.wsdl.PortType;
+import org.eclipse.wst.wsdl.Service;
+import org.eclipse.wst.wsdl.Types;
+import org.eclipse.wst.wsdl.WSDLFactory;
 import org.eclipse.wst.wsdl.WSDLPackage;
 import org.eclipse.wst.wsdl.binding.mime.MIMEContent;
 import org.eclipse.wst.wsdl.binding.mime.MIMEFactory;
@@ -32,14 +49,24 @@
 import org.eclipse.wst.wsdl.binding.mime.MIMEPackage;
 import org.eclipse.wst.wsdl.binding.mime.MIMEPart;
 import org.eclipse.wst.wsdl.binding.mime.internal.util.MIMEConstants;
+import org.eclipse.wst.wsdl.binding.soap.SOAPBody;
+import org.eclipse.wst.wsdl.binding.soap.SOAPFactory;
+import org.eclipse.wst.wsdl.binding.soap.SOAPPackage;
+import org.eclipse.wst.wsdl.binding.soap.internal.util.SOAPConstants;
 import org.eclipse.wst.wsdl.internal.util.WSDLResourceFactoryImpl;
 import org.eclipse.wst.wsdl.tests.util.DefinitionLoader;
+import org.eclipse.wst.wsdl.util.WSDLConstants;
 import org.eclipse.xsd.XSDElementDeclaration;
 import org.eclipse.xsd.XSDImport;
 import org.eclipse.xsd.XSDPackage;
 import org.eclipse.xsd.XSDSchema;
 import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.util.XSDConstants;
 import org.eclipse.xsd.util.XSDResourceFactoryImpl;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 /**
  * Contains unit tests for reported bugs.
@@ -62,19 +89,91 @@
   {
     TestSuite suite = new TestSuite();
 
-    suite.addTest(new BugFixesTest("TypeAndElementResolution")
+    suite.addTest(new BugFixesTest("TypeAndElementResolution") //$NON-NLS-1$
+        {
+          protected void runTest()
+          {
+            testTypeAndElementResolution();
+          }
+        });
+
+    suite.addTest(new BugFixesTest("MIMEGetTypeName") //$NON-NLS-1$
+        {
+          protected void runTest()
+          {
+            testReturnsProperQNameForMIMEExtensibilityElements();
+          }
+        });
+
+    suite.addTest(new BugFixesTest("ImportsElementOrder") //$NON-NLS-1$
     {
       protected void runTest()
       {
-        testTypeAndElementResolution();
+        testPlacesImportsAfterTheDefinitionElement();
       }
     });
 
-    suite.addTest(new BugFixesTest("MIMEGetTypeName")
+    suite.addTest(new BugFixesTest("ResolveWSDLElement") //$NON-NLS-1$
     {
       protected void runTest()
       {
-        testReturnsProperQNameForMIMEExtensibilityElements();
+        testResolvesElementInImports();
+      }
+    });
+
+    suite.addTest(new BugFixesTest("PartsSerialization") //$NON-NLS-1$
+    {
+      protected void runTest()
+      {
+        testSerializesPartsInSOAPBody();
+      }
+    });
+
+    suite.addTest(new BugFixesTest("ImportsSerialization") //$NON-NLS-1$
+    {
+      protected void runTest()
+      {
+        testSerializesImportsBeforeTypes();
+      }
+    });
+
+    suite.addTest(new BugFixesTest("LocalNamespacePrefixes") //$NON-NLS-1$
+    {
+      protected void runTest()
+      {
+        testSupportsLocalNamespacePrefixes();
+      }
+    });
+
+    suite.addTest(new BugFixesTest("OperationExtensionElements") //$NON-NLS-1$
+    {
+      protected void runTest()
+      {
+        testTolleratesExtensionElementsForOperation();
+      }
+    });
+
+    suite.addTest(new BugFixesTest("ReconcilesBindingFaults") //$NON-NLS-1$
+    {
+      protected void runTest()
+      {
+        testReconcilesBindingFaults();
+      }
+    });
+
+    suite.addTest(new BugFixesTest("DuplicateSAXErrorDiagnostics") //$NON-NLS-1$
+    {
+      protected void runTest()
+      {
+        testAvoidDuplicateSAXExceptionDiagnostics();
+      }
+    });
+
+    suite.addTest(new BugFixesTest("BindingOperationReconciliation") //$NON-NLS-1$
+    {
+      protected void runTest()
+      {
+        testBindingOperationReconciliation();
       }
     });
 
@@ -85,12 +184,16 @@
   {
     super.setUp();
 
-    Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("wsdl", new WSDLResourceFactoryImpl());
+    Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("wsdl", new WSDLResourceFactoryImpl()); //$NON-NLS-1$
     WSDLPackage pkg = WSDLPackage.eINSTANCE;
+    // Silences unused variable warning.
+    pkg.eClass();
 
     // We need this for XSD <import>.
-    Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl());
+    Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xsd", new XSDResourceFactoryImpl()); //$NON-NLS-1$
     XSDPackage xsdpkg = XSDPackage.eINSTANCE;
+    // Silences unused variable warning.
+    xsdpkg.eClass();
   }
 
   protected void tearDown() throws Exception
@@ -157,7 +260,7 @@
     }
     catch (Exception e)
     {
-      Assert.fail("Test failed due to an exception: " + e.getLocalizedMessage());
+      Assert.fail("Test failed due to an exception: " + e.getLocalizedMessage()); //$NON-NLS-1$
     }
   }
 
@@ -188,4 +291,466 @@
     assertEquals(MIMEConstants.MIME_NAMESPACE_URI, partElementType.getNamespaceURI());
     assertEquals(MIMEConstants.PART_ELEMENT_TAG, partElementType.getLocalPart());
   }
-}
+
+  /**
+   * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=137040
+   */
+  public void testPlacesImportsAfterTheDefinitionElement()
+  {
+    WSDLFactory factory = WSDLPackage.eINSTANCE.getWSDLFactory();
+
+    String namespace = "testNamespace"; //$NON-NLS-1$
+
+    Definition definition = factory.createDefinition();
+    definition.setQName(new QName(namespace, "testDefinition")); //$NON-NLS-1$  
+    definition.updateElement();
+
+    Service service = factory.createService();
+    service.setQName(new QName(namespace, "testService")); //$NON-NLS-1$
+    definition.addService(service);
+
+    Import wsdlImport = factory.createImport();
+    definition.addImport(wsdlImport);
+
+    Element definitionElement = definition.getElement();
+    Element serviceElement = service.getElement();
+    Element importElement = wsdlImport.getElement();
+
+    NodeList definitionElementChildren = definitionElement.getChildNodes();
+
+    Node firstChild = definitionElementChildren.item(0);
+
+    assertSame(importElement, firstChild);
+
+    Node secondChild = definitionElementChildren.item(1);
+
+    assertSame(serviceElement, secondChild);
+  }
+
+  /**
+   * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=137866
+   */
+  public void testResolvesElementInImports()
+  {
+    try
+    {
+      Definition definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/BugFixes/WSDLElementResolution/main.wsdl"); //$NON-NLS-1$
+
+      String targetNamespace = "http://www.example.com"; //$NON-NLS-1$
+
+      // This test attempts to locate a message located in the first level
+      // import.
+
+      QName firstLevelMessageQName = new QName(targetNamespace, "testINPUTmessage"); //$NON-NLS-1$
+      javax.wsdl.Message firstLevelMessage = definition.getMessage(firstLevelMessageQName);
+
+      assertNotNull(firstLevelMessage);
+
+      // This test attempts to locate a message located in the second level
+      // import.
+
+      QName secondLevelMessageQName = new QName(targetNamespace, "testOUTPUTmessage"); //$NON-NLS-1$
+      javax.wsdl.Message secondLevelMessage = definition.getMessage(secondLevelMessageQName);
+
+      assertNotNull(secondLevelMessage);
+
+      // This test ensures that we do a breadth first traversal to keep things
+      // working approximatively as the old implementation which used to check
+      // only the definition and its first level imports. The first message is
+      // defined in firstlevel.wsdl as well as secondlevel.wsdl but the
+      // algorithm should find the one in firstlevel.wsdl.
+
+      Import firstLevelImport = (Import) definition.getImports(targetNamespace).get(0);
+      Definition firstLevelDefinition = firstLevelImport.getEDefinition();
+
+      assertEquals(firstLevelDefinition, ((Message) firstLevelMessage).getEnclosingDefinition());
+    }
+    catch (Exception e)
+    {
+      Assert.fail("Test failed due to an exception: " + e.getLocalizedMessage()); //$NON-NLS-1$
+    }
+  }
+
+  /**
+   * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=137990
+   */
+  public void testSerializesPartsInSOAPBody()
+  {
+    // Build an in-memory WSDL definition.
+
+    WSDLFactory factory = WSDLPackage.eINSTANCE.getWSDLFactory();
+
+    String targetNamespace = "testNamespace"; //$NON-NLS-1$
+
+    Definition definition = factory.createDefinition();
+    definition.setTargetNamespace(targetNamespace);
+    definition.setQName(new QName(targetNamespace, "testDefinition")); //$NON-NLS-1$
+    definition.addNamespace("tns", targetNamespace); //$NON-NLS-1$
+    definition.addNamespace("xsd", XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001); //$NON-NLS-1$
+    definition.addNamespace("soap", SOAPConstants.SOAP_NAMESPACE_URI); //$NON-NLS-1$
+
+    Message message = factory.createMessage();
+    QName messageQName = new QName(targetNamespace, "testMessage");
+    message.setQName(messageQName);
+    definition.addMessage(message);
+
+    Part part1 = factory.createPart();
+    String part1Name = "part1"; //$NON-NLS-1$ 
+    part1.setName(part1Name);
+    part1.setTypeName(new QName(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "string")); //$NON-NLS-1$
+    message.addPart(part1);
+
+    Part part2 = factory.createPart();
+    String part2Name = "part2"; //$NON-NLS-1$ 
+    part2.setName(part2Name);
+    part2.setTypeName(new QName(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, "string")); //$NON-NLS-1$
+    message.addPart(part2);
+
+    PortType portType = factory.createPortType();
+    QName portQName = new QName(targetNamespace, "testPort"); //$NON-NLS-1$
+    portType.setQName(portQName);
+    definition.addPortType(portType);
+
+    Operation operation = factory.createOperation();
+    String operationName = "testOperation"; //$NON-NLS-1$ 
+    operation.setName(operationName);
+    portType.addOperation(operation);
+
+    Input input = factory.createInput();
+    input.setMessage(message);
+    operation.setInput(input);
+
+    Binding binding = factory.createBinding();
+    QName bindingQName = new QName(targetNamespace, "testBinding"); //$NON-NLS-1$
+    binding.setQName(bindingQName);
+    binding.setPortType(portType);
+    definition.addBinding(binding);
+
+    BindingOperation bindingOperation = factory.createBindingOperation();
+    bindingOperation.setOperation(operation);
+    binding.addBindingOperation(bindingOperation);
+
+    BindingInput bindingInput = factory.createBindingInput();
+    bindingOperation.setBindingInput(bindingInput);
+
+    SOAPFactory soapFactory = SOAPPackage.eINSTANCE.getSOAPFactory();
+    SOAPBody soapBody = soapFactory.createSOAPBody();
+    bindingInput.addExtensibilityElement(soapBody);
+
+    definition.updateElement();
+
+    // Test the "no parts" scenario. In this case the parts attribute should not
+    // be present.
+
+    Element soapBodyElement = soapBody.getElement();
+    Attr partsAttributeNode = soapBodyElement.getAttributeNode(SOAPConstants.PARTS_ATTRIBUTE);
+    assertNull(partsAttributeNode);
+
+    // Test the scenario when the body specifies one part. In this case the
+    // parts attribute
+    // should be present and look like this parts="part1"
+
+    List parts = new ArrayList();
+    parts.add(part1);
+    soapBody.setParts(parts);
+
+    soapBody.updateElement();
+
+    soapBodyElement = soapBody.getElement();
+    String partsAttributeValue = soapBodyElement.getAttribute(SOAPConstants.PARTS_ATTRIBUTE);
+    assertEquals(part1Name, partsAttributeValue);
+
+    // Test the scenario when the body specifies two parts. In this case the
+    // parts attribute
+    // should be present and look like this parts="part1 part2"
+
+    parts.add(part2);
+    soapBody.setParts(parts);
+
+    soapBody.updateElement();
+
+    soapBodyElement = soapBody.getElement();
+    partsAttributeValue = soapBodyElement.getAttribute(SOAPConstants.PARTS_ATTRIBUTE);
+    assertEquals(part1Name + " " + part2Name, partsAttributeValue); //$NON-NLS-1$
+  }
+
+  /**
+   * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=138033
+   */
+  public void testSerializesImportsBeforeTypes()
+  {
+    WSDLFactory factory = WSDLPackage.eINSTANCE.getWSDLFactory();
+
+    String namespace = "testNamespace"; //$NON-NLS-1$
+
+    Definition definition = factory.createDefinition();
+    definition.setQName(new QName(namespace, "testDefinition")); //$NON-NLS-1$  
+    definition.updateElement();
+
+    Types types = factory.createTypes();
+    definition.setTypes(types);
+
+    Import wsdlImport = factory.createImport();
+    definition.addImport(wsdlImport);
+
+    Element definitionElement = definition.getElement();
+    Element typesElement = types.getElement();
+    Element importElement = wsdlImport.getElement();
+
+    NodeList definitionElementChildren = definitionElement.getChildNodes();
+
+    Node firstChild = definitionElementChildren.item(0);
+
+    assertSame(importElement, firstChild);
+
+    Node secondChild = definitionElementChildren.item(1);
+
+    assertSame(typesElement, secondChild);
+
+    // Blow away the backing DOM.
+
+    definition.setElement(null);
+    definition.updateElement();
+
+    definitionElement = definition.getElement();
+    typesElement = types.getElement();
+    importElement = wsdlImport.getElement();
+
+    definitionElementChildren = definitionElement.getChildNodes();
+
+    firstChild = definitionElementChildren.item(0);
+
+    assertSame(importElement, firstChild);
+
+    secondChild = definitionElementChildren.item(1);
+
+    assertSame(typesElement, secondChild);
+  }
+  
+  /**
+   * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=150553
+   */
+  public void testSupportsLocalNamespacePrefixes()
+  {
+    Definition definition = null;
+
+    try
+    {
+      definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/BugFixes/LocalNamespace/LocalNamespace.wsdl"); //$NON-NLS-1$
+    }
+    catch (IOException e)
+    {
+      fail(e.getMessage());
+    }
+
+    String targetNamespace = "http://tempuri.org/Simple/"; //$NON-NLS-1$
+    
+    // Check that the response message's part element is resolved OK.
+
+    QName responseMessageQName = new QName(targetNamespace, "myOperationResponse"); ////$NON-NLS-1$
+    javax.wsdl.Message responseMessage = definition.getMessage(responseMessageQName);
+
+    Part responsePart = (Part) responseMessage.getPart("myOperationResponse"); ////$NON-NLS-1$
+
+    XSDElementDeclaration responseElementDeclaration = responsePart.getElementDeclaration();
+
+    assertNotNull(responseElementDeclaration);
+    assertNotNull(responseElementDeclaration.getContainer());
+
+    // Check that the request message's part element is resolved OK.
+    // This part defines a local namespace prefix
+
+    QName requestMessageQName = new QName(targetNamespace, "myOperationRequest"); ////$NON-NLS-1$
+    javax.wsdl.Message requestMessage = definition.getMessage(requestMessageQName);
+
+    Part requestPart = (Part) requestMessage.getPart("myOperationRequest"); ////$NON-NLS-1$
+
+    XSDElementDeclaration requestElementDeclaration = requestPart.getElementDeclaration();
+
+    assertNotNull(requestElementDeclaration);
+    
+    // Now to make sure the DOM is reconciled properly and uses the local namespace prefix, 
+    // let's try to change the part's element declaration. We'll use the response part element
+    // just because it is convenient.
+    
+    requestPart.setElementDeclaration(responseElementDeclaration);
+    
+    Element partElement = requestPart.getElement();
+    String elementAttributeValue = partElement.getAttribute(WSDLConstants.ELEMENT_ATTRIBUTE);
+    
+    assertEquals(elementAttributeValue, "parttns:" + responseElementDeclaration.getName());
+  }
+  
+  /**
+   * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=157107
+   */
+  public void testTolleratesExtensionElementsForOperation()
+  {
+    Definition definition = null;
+
+    try
+    {
+      definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/BugFixes/OperationStyle/OperationStyleTest.wsdl"); //$NON-NLS-1$
+    }
+    catch (IOException e)
+    {
+      fail(e.getMessage());
+    }
+    
+    PortType portType = (PortType) definition.getEPortTypes().get(0);
+    EList operations = portType.getEOperations();
+    
+    Operation operation = (Operation) operations.get(0);
+    OperationType operationType = operation.getStyle();
+    
+    assertEquals(OperationType.REQUEST_RESPONSE, operationType);
+  }
+  
+  /**
+   * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=164565
+   */
+  public void testReconcilesBindingFaults()
+  {
+    Definition definition = null;
+
+    try
+    {
+      definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/BugFixes/BindingFaultReconciliation/BindingFaultSample.wsdl"); //$NON-NLS-1$
+    }
+    catch (IOException e)
+    {
+      fail(e.getMessage());
+    }
+
+    // Test the abnormal case when the binding operation tries to bind a fault
+    // but the fault is missing in the corresponding operation. In this case the
+    // fault obtained from the binding operation's fault should be null.
+
+    List bindings = definition.getEBindings();
+    Binding binding = (Binding) bindings.get(0);
+    List bindingOperations = binding.getBindingOperations();
+    BindingOperation bindingOperation = (BindingOperation) bindingOperations.get(0);
+    BindingFault bindingFault = (BindingFault) bindingOperation.getBindingFault("Operation1Fault"); //$NON-NLS-1$
+    Fault fault = bindingFault.getEFault();
+    assertNull(fault);
+
+    // Test the normal case when the operation and binding operation are in
+    // synch. In this case the fault defined in the operation should match
+    // the one obtained from the binding operation's fault.
+
+    List portTypes = definition.getEPortTypes();
+    PortType portType = (PortType) portTypes.get(0);
+    EList operations = portType.getEOperations();
+
+    Operation operation = (Operation) operations.get(1);
+    javax.wsdl.Fault expectedFault1 = operation.getFault("Operation2Fault1"); //$NON-NLS-1$
+    javax.wsdl.Fault expectedFault2 = operation.getFault("Operation2Fault2"); //$NON-NLS-1$
+
+    BindingOperation bindingOperation2 = (BindingOperation) bindingOperations.get(1);
+
+    // Make sure the fault obtained from the binding fault is not null and
+    // matches the one in the corresponding operation.
+    
+    BindingFault bindingFault1 = (BindingFault) bindingOperation2.getBindingFault("Operation2Fault1"); //$NON-NLS-1$
+    javax.wsdl.Fault actualFault1 = bindingFault1.getEFault();
+    assertNotNull(actualFault1);
+    assertEquals(expectedFault1, actualFault1);
+
+    // Make sure the fault obtained from the binding fault is not null and
+    // matches the one in the corresponding operation.
+
+    BindingFault bindingFault2 = (BindingFault) bindingOperation2.getBindingFault("Operation2Fault2"); //$NON-NLS-1$
+    javax.wsdl.Fault actualFault2 = bindingFault2.getEFault();
+    assertNotNull(actualFault2);
+    assertEquals(expectedFault2, actualFault2);
+  }
+
+  /**
+   * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=161059
+   */
+  public void testAvoidDuplicateSAXExceptionDiagnostics()
+  {
+    Definition definition = null;
+
+    try
+    {
+      // Make sure we track location to allow the WSDLParser to kick in.
+
+      definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/BugFixes/DuplicateSAXException/SAXException.wsdl", true, true); //$NON-NLS-1$
+    }
+    catch (IOException e)
+    {
+      fail(e.getMessage());
+    }
+    
+    Resource resource = definition.eResource();
+    EList errors = resource.getErrors();
+    int expectedSize = 1;
+    int actualSize = errors.size();
+    assertEquals(expectedSize, actualSize);
+  }
+
+  /**
+   * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=172576
+   */
+  public void testBindingOperationReconciliation()
+  {
+    Definition definition = null;
+
+    try
+    {
+      definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/BugFixes/BindingOperationReconciliation/BindingOperationReconciliation.wsdl", true); //$NON-NLS-1$
+    }
+    catch (IOException e)
+    {
+      fail(e.getMessage());
+    }
+
+    String targetNamespace = "http://www.example.org/BindingOperationReconciliation/"; //$NON-NLS-1$
+    QName portTypeQName = new QName(targetNamespace, "BindingOperationReconciliation"); //$NON-NLS-1$
+    javax.wsdl.PortType portType = definition.getPortType(portTypeQName);
+
+    String input3Name = "Input3"; //$NON-NLS-1$
+    String output3Name = "Output3"; //$NON-NLS-1$
+
+    // Check that the first operation - which has no named input/output is being
+    // found.
+
+    String operationName = "NewOperation"; //$NON-NLS-1$
+    javax.wsdl.Operation operation1 = portType.getOperation(operationName, null, null);
+
+    QName bindingQName = new QName(targetNamespace, "BindingOperationReconciliationSOAP"); //$NON-NLS-1$
+    javax.wsdl.Binding binding = definition.getBinding(bindingQName);
+
+    javax.wsdl.BindingOperation bindingOperation1 = binding.getBindingOperation(operationName, null, null);
+    javax.wsdl.Operation actualOperation1 = bindingOperation1.getOperation();
+
+    assertEquals(operation1, actualOperation1);
+
+    // The second operation - which has no named input/output is being found
+    // should not be reconciled because the binding specifies the input and
+    // output.
+
+    String input2Name = "Input2"; //$NON-NLS-1$
+    String output2Name = "Output2"; //$NON-NLS-1$
+
+    String operation2Name = "NewOperation2"; //$NON-NLS-1$
+
+    javax.wsdl.BindingOperation bindingOperation2 = binding.getBindingOperation(operation2Name, input2Name, output2Name);
+    javax.wsdl.Operation actualOperation2 = bindingOperation2.getOperation();
+
+    assertEquals(null, actualOperation2);
+
+    // The third operation specifies an input and output name, and the binding
+    // operation will reconcile fine because the it also specifies the proper
+    // input and output name.
+
+    String operation3Name = "NewOperation3"; //$NON-NLS-1$
+    javax.wsdl.Operation operation3 = portType.getOperation(operation3Name, input3Name, output3Name);
+
+    javax.wsdl.BindingOperation bindingOperation3 = binding.getBindingOperation(operation3Name, input3Name, output3Name);
+    javax.wsdl.Operation actualOperation3 = bindingOperation3.getOperation();
+
+    assertEquals(operation3, actualOperation3);
+  }
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/InlineSchemaTest.java b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/InlineSchemaTest.java
index 587facf..b1d2db5 100644
--- a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/InlineSchemaTest.java
+++ b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/InlineSchemaTest.java
@@ -110,7 +110,7 @@
   {
     try
     {
-      Definition definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH +"samples/LoadAndPrintTest.wsdl");
+      Definition definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH +"samples/LoadStoreCompare/LoadAndPrintTest.wsdl");
       traverseDefinition(definition);
     }
     catch (Exception e)
@@ -123,7 +123,7 @@
   {
     try
     {
-      Definition definition = loadDefinitionForWSDL4J("./samples/LoadAndPrintTest.wsdl");
+      Definition definition = loadDefinitionForWSDL4J("./samples/LoadStoreCompare/LoadAndPrintTest.wsdl");
       traverseDefinition(definition);
     }
     catch (Exception e)
diff --git a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/LoadAndSerializationTest.java b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/LoadAndSerializationTest.java
index c329743..a7ba14e 100644
--- a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/LoadAndSerializationTest.java
+++ b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/LoadAndSerializationTest.java
@@ -103,7 +103,7 @@
 		dir = new File(TEST_DATA_DIR);
 	else	
 		// KB: if you are here, fix text.xml
-        dir = new File(PLUGIN_ABSOLUTE_PATH + "samples"); // fallback
+        dir = new File(PLUGIN_ABSOLUTE_PATH + "samples/LoadStoreCompare"); // fallback
 	
     if (dir.exists() && dir.isDirectory())
     {
diff --git a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/LocationTrackingTest.java b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/LocationTrackingTest.java
index 9c861a3..fe94ed0 100644
--- a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/LocationTrackingTest.java
+++ b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/LocationTrackingTest.java
@@ -61,7 +61,7 @@
   {
     try
     {
-      String fileName = WSDLTestsPlugin.getInstallURL() + "/samples/LoadAndPrintTest.wsdl"; //$NON-NLS-1$
+      String fileName = WSDLTestsPlugin.getInstallURL() + "/samples/LoadStoreCompare/LoadAndPrintTest.wsdl"; //$NON-NLS-1$
       Definition definition = DefinitionLoader.load(fileName, true, true);
       Assert.assertNotNull(definition);
       Assert.assertTrue(definition.eResource() instanceof WSDLResourceImpl);
diff --git a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/SemanticTest.java b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/SemanticTest.java
index 4119daf..d4852a9 100644
--- a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/SemanticTest.java
+++ b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/SemanticTest.java
@@ -496,7 +496,7 @@
   {
     try
     {
-      Definition def = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/LoadAndPrintTest.wsdl",true);
+      Definition def = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/LoadStoreCompare/LoadAndPrintTest.wsdl",true);
       SemanticTest test = new SemanticTest(def);
       test.visit();
     }
diff --git a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/UtilTest.java b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/UtilTest.java
index 922a78a..407618b 100644
--- a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/UtilTest.java
+++ b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/UtilTest.java
@@ -130,11 +130,10 @@
 	  {
         try
 		{
-		  WSDLConstants wsdlConstants = new WSDLConstants();
 		  int type = WSDLConstants.nodeType(WSDLConstants.PORT_ELEMENT_TAG);
 		  Assert.assertTrue("Node type is not that of port", type == 10);
 		  
-	      definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/LoadAndPrintTest.wsdl");
+	      definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/LoadStoreCompare/LoadAndPrintTest.wsdl");
 	      Assert.assertTrue(definition.eResource() instanceof WSDLResourceImpl);
 
 		  int definitionNodeType = WSDLConstants.nodeType(definition.getElement());
@@ -176,19 +175,19 @@
 		  WSDLResourceImpl resourceImpl = new WSDLResourceImpl(URI.createFileURI("./samples/createResourceTest.wsdl"));
           Assert.assertTrue("Resource is not of type WSDLResourceImpl", resourceImpl instanceof WSDLResourceImpl);
 		  
-	      definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/LoadAndPrintTest.wsdl");
+	      definition = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH + "samples/LoadStoreCompare/LoadAndPrintTest.wsdl");
 	      Assert.assertTrue(definition.eResource() instanceof WSDLResourceImpl);
 		  Element element = definition.getElement();
 		  Document document = definition.getDocument();
 
 	      if (element != null)
 	      {
-	        resourceImpl.serialize(System.out, element, null);
+          WSDLResourceImpl.serialize(System.out, element, null);
 	      }
 		  
 		  if (document != null)
 		  {
-			resourceImpl.serialize(System.out, document, null);
+        WSDLResourceImpl.serialize(System.out, document, null);
 		  }
 		  
 		  try
diff --git a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/WSDL4JAPITest.java b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/WSDL4JAPITest.java
index f13b19d..88da8fc 100644
--- a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/WSDL4JAPITest.java
+++ b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/WSDL4JAPITest.java
@@ -412,7 +412,7 @@
   {
     try
     {
-      Definition def = loadDefinitionForWSDL4J("./samples/LoadAndPrintTest.wsdl");
+      Definition def = loadDefinitionForWSDL4J("./samples/LoadStoreCompare/LoadAndPrintTest.wsdl");
       WSDL4JAPITest test = new WSDL4JAPITest(def);
       test.visit();
       serialize(test.newDefinition,"./samples/ClonedLoadAndPrintTest.wsdl");
diff --git a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/WSDLEMFAPITest.java b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/WSDLEMFAPITest.java
index ed994b2..671466a 100644
--- a/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/WSDLEMFAPITest.java
+++ b/tests/org.eclipse.wst.wsdl.tests/src/org/eclipse/wst/wsdl/tests/WSDLEMFAPITest.java
@@ -576,7 +576,7 @@
   {
     try
     {
-      Definition def = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH +"samples/LoadAndPrintTest.wsdl",true);
+      Definition def = DefinitionLoader.load(PLUGIN_ABSOLUTE_PATH +"samples/LoadStoreCompare/LoadAndPrintTest.wsdl",true);
       WSDLEMFAPITest test = new WSDLEMFAPITest(def);
       test.visit();      
       serialize(test.newDefinition);
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.wsdl.validation.tests/META-INF/MANIFEST.MF
index 0431963..a482f0d 100644
--- a/tests/org.eclipse.wst.wsdl.validation.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %_PLUGIN_NAME
 Bundle-SymbolicName: org.eclipse.wst.wsdl.validation.tests
-Bundle-Version: 1.0.201
+Bundle-Version: 1.0.203
 Bundle-ClassPath: wsdlvalidatetests.jar
 Bundle-Activator: org.eclipse.wst.wsdl.validation.tests.internal.WSDLValidatorTestsPlugin
 Bundle-Vendor: %_PROVIDER_NAME
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/about.html b/tests/org.eclipse.wst.wsdl.validation.tests/about.html
index 6f6b96c..4ec5989 100644
--- a/tests/org.eclipse.wst.wsdl.validation.tests/about.html
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/AntLoggerTest.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/AntLoggerTest.java
new file mode 100644
index 0000000..4bbc753
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/AntLoggerTest.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.ui.ant;
+
+import junit.framework.TestCase;
+
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+
+/**
+ * Tests for the AntLogger.
+ */
+public class AntLoggerTest extends TestCase 
+{
+  AntLoggerTestTask task = null;
+	
+  /* (non-Javadoc)
+   * @see junit.framework.TestCase#setUp()
+   */
+  protected void setUp() throws Exception 
+  {
+	task = new AntLoggerTestTask();
+  }
+
+  /* (non-Javadoc)
+   * @see junit.framework.TestCase#tearDown()
+   */
+  protected void tearDown() throws Exception 
+  {
+	task = null;
+  }
+
+  /**
+   * Test that the log method:
+   * 1. logs errors correctly.
+   * 2. records the message correctly.
+   * 3. records the throwable correctly.
+   */
+  public void testLogErrorWithThrowable()
+  {
+	AntLogger logger = new AntLogger(task);
+	logger.log("MESSAGE", ILogger.SEV_ERROR, new Throwable("THROWABLE"));
+	
+	assertTrue("Warnings were reported when only errors should have been reported.", task.getWarnings().isEmpty());
+	assertTrue("Infos were reported when only errors should have been reported.", task.getInfos().isEmpty());
+	assertTrue("Verboses were reported when only errors should have been reported.", task.getVerboses().isEmpty());
+	assertEquals("2 errors were not reported.", 2, task.getErrors().size());
+	assertEquals("The message was not MESSAGE.", "MESSAGE", task.getErrors().get(0));
+	assertEquals("The throwable was not THROWABLE.", "java.lang.Throwable: THROWABLE", task.getErrors().get(1));
+  }
+  
+  /**
+   * Test that the log method:
+   * 1. logs warnings correctly.
+   * 2. records the message correctly.
+   * 3. records the throwable correctly.
+   */
+  public void testLogWarningWithThrowable()
+  {
+	AntLogger logger = new AntLogger(task);
+	logger.log("MESSAGE", ILogger.SEV_WARNING, new Throwable("THROWABLE"));
+	
+	assertTrue("Errors were reported when only warnings should have been reported.", task.getErrors().isEmpty());
+	assertTrue("Infos were reported when only warnings should have been reported.", task.getInfos().isEmpty());
+	assertTrue("Verboses were reported when only errors should have been reported.", task.getVerboses().isEmpty());
+	assertEquals("2 warnings were not reported.", 2, task.getWarnings().size());
+	assertEquals("The message was not MESSAGE.", "MESSAGE", task.getWarnings().get(0));
+	assertEquals("The throwable was not THROWABLE.", "java.lang.Throwable: THROWABLE", task.getWarnings().get(1));
+  }
+  
+  /**
+   * Test that the log method:
+   * 1. logs infos correctly.
+   * 2. records the message correctly.
+   * 3. records the throwable correctly.
+   */
+  public void testLogInfoWithThrowable()
+  {
+	AntLogger logger = new AntLogger(task);
+	logger.log("MESSAGE", ILogger.SEV_INFO, new Throwable("THROWABLE"));
+	
+	assertTrue("Warnings were reported when only infos should have been reported.", task.getWarnings().isEmpty());
+	assertTrue("Errors were reported when only infos should have been reported.", task.getErrors().isEmpty());
+	assertTrue("Verboses were reported when only errors should have been reported.", task.getVerboses().isEmpty());
+	assertEquals("2 infos were not reported.", 2, task.getInfos().size());
+	assertEquals("The message was not MESSAGE.", "MESSAGE", task.getInfos().get(0));
+	assertEquals("The throwable was not THROWABLE.", "java.lang.Throwable: THROWABLE", task.getInfos().get(1));
+  }
+  
+  /**
+   * Test that the log method:
+   * 1. logs verboses correctly.
+   * 2. records the message correctly.
+   * 3. records the throwable correctly.
+   */
+  public void testLogVerboseWithThrowable()
+  {
+	AntLogger logger = new AntLogger(task);
+	logger.log("MESSAGE", ILogger.SEV_VERBOSE, new Throwable("THROWABLE"));
+	
+	assertTrue("Warnings were reported when only verboses should have been reported.", task.getWarnings().isEmpty());
+	assertTrue("Errors were reported when only verboses should have been reported.", task.getErrors().isEmpty());
+	assertTrue("Infos were reported when only verboses should have been reported.", task.getInfos().isEmpty());
+	assertEquals("2 verboses were not reported.", 2, task.getVerboses().size());
+	assertEquals("The message was not MESSAGE.", "MESSAGE", task.getVerboses().get(0));
+	assertEquals("The throwable was not THROWABLE.", "java.lang.Throwable: THROWABLE", task.getVerboses().get(1));
+  }
+  
+  /**
+   * Test that the log method:
+   * 1. logs errors correctly.
+   * 2. records the message correctly.
+   * 3. records the throwable correctly.
+   */
+  public void testLogErrorWithoutThrowable()
+  {
+	AntLogger logger = new AntLogger(task);
+	logger.log("MESSAGE", ILogger.SEV_ERROR);
+	
+	assertTrue("Warnings were reported when only errors should have been reported.", task.getWarnings().isEmpty());
+	assertTrue("Infos were reported when only errors should have been reported.", task.getInfos().isEmpty());
+	assertTrue("Verboses were reported when only errors should have been reported.", task.getVerboses().isEmpty());
+	assertEquals("1 error was not reported.", 1, task.getErrors().size());
+	assertEquals("The message was not MESSAGE.", "MESSAGE", task.getErrors().get(0));
+  }
+  
+  /**
+   * Test that the log method:
+   * 1. logs warnings correctly.
+   * 2. records the message correctly.
+   * 3. records the throwable correctly.
+   */
+  public void testLogWarningWithoutThrowable()
+  {
+	AntLogger logger = new AntLogger(task);
+	logger.log("MESSAGE", ILogger.SEV_WARNING);
+	
+	assertTrue("Errors were reported when only warnings should have been reported.", task.getErrors().isEmpty());
+	assertTrue("Infos were reported when only warnings should have been reported.", task.getInfos().isEmpty());
+	assertTrue("Verboses were reported when only errors should have been reported.", task.getVerboses().isEmpty());
+	assertEquals("1 error was not reported.", 1, task.getWarnings().size());
+	assertEquals("The message was not MESSAGE.", "MESSAGE", task.getWarnings().get(0));
+  }
+  
+  /**
+   * Test that the log method:
+   * 1. logs infos correctly.
+   * 2. records the message correctly.
+   * 3. records the throwable correctly.
+   */
+  public void testLogInfoWithoutThrowable()
+  {
+	AntLogger logger = new AntLogger(task);
+	logger.log("MESSAGE", ILogger.SEV_INFO);
+	
+	assertTrue("Warnings were reported when only infos should have been reported.", task.getWarnings().isEmpty());
+	assertTrue("Errors were reported when only infos should have been reported.", task.getErrors().isEmpty());
+	assertTrue("Verboses were reported when only errors should have been reported.", task.getVerboses().isEmpty());
+	assertEquals("1 info was not reported.", 1, task.getInfos().size());
+	assertEquals("The message was not MESSAGE.", "MESSAGE", task.getInfos().get(0));
+  }
+  
+  /**
+   * Test that the log method:
+   * 1. logs verboses correctly.
+   * 2. records the message correctly.
+   * 3. records the throwable correctly.
+   */
+  public void testLogVerboseWithoutThrowable()
+  {
+	AntLogger logger = new AntLogger(task);
+	logger.log("MESSAGE", ILogger.SEV_VERBOSE);
+	
+	assertTrue("Warnings were reported when only verboses should have been reported.", task.getWarnings().isEmpty());
+	assertTrue("Errors were reported when only verboses should have been reported.", task.getErrors().isEmpty());
+	assertTrue("Infos were reported when only verboses should have been reported.", task.getInfos().isEmpty());
+	assertEquals("1 verbose was not reported.", 1, task.getVerboses().size());
+	assertEquals("The message was not MESSAGE.", "MESSAGE", task.getVerboses().get(0));
+  }
+}
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/AntLoggerTestTask.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/AntLoggerTestTask.java
new file mode 100644
index 0000000..7c2247a
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/AntLoggerTestTask.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.ui.ant;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+/**
+ * A dummy task that will allow testing of the and logger.
+ */
+public class AntLoggerTestTask extends Task 
+{
+  protected List errors = new ArrayList();
+  protected List warnings = new ArrayList();
+  protected List infos = new ArrayList();
+  protected List verboses = new ArrayList();
+  
+  /* (non-Javadoc)
+   * @see org.apache.tools.ant.Task#log(java.lang.String, int)
+   */
+  public void log(String msg, int msgLevel) 
+  {
+	if(msgLevel == Project.MSG_ERR)
+	{
+	  errors.add(msg);
+	}
+	else if(msgLevel == Project.MSG_WARN)
+	{
+	  warnings.add(msg);
+	}
+	else if(msgLevel == Project.MSG_INFO)
+	{
+	  infos.add(msg);
+	}
+	else if(msgLevel == Project.MSG_VERBOSE)
+	{
+	  verboses.add(msg);
+	}
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.tools.ant.Task#log(java.lang.String)
+   */
+  public void log(String msg) 
+  {
+	log(msg, Project.MSG_INFO);
+  }
+  
+  /**
+   * Get the errors that were logged.
+   * 
+   * @return
+   * 		The errors that were logged.
+   */
+  public List getErrors()
+  {
+	return errors;
+  }
+  
+  /**
+   * Get the warnings that were logged.
+   * 
+   * @return
+   * 		The warnings that were logged.
+   */
+  public List getWarnings()
+  {
+	return warnings;
+  }
+  
+  /**
+   * Get the infos that were logged.
+   * 
+   * @return
+   * 		The infos that were logged.
+   */
+  public List getInfos()
+  {
+	return infos;
+  }
+  
+  /**
+   * Get the verboses that were logged.
+   * 
+   * @return
+   * 		The verboses that were logged.
+   */
+  public List getVerboses()
+  {
+	return verboses;
+  }
+}
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/WSDLValidateTest.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/WSDLValidateTest.java
index 92ca201..8b31f2d 100644
--- a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/WSDLValidateTest.java
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/ant/WSDLValidateTest.java
@@ -42,7 +42,7 @@
   /* (non-Javadoc)
    * @see junit.framework.TestCase#setUp()
    */
-  protected void setUp()
+  protected void setUp() throws Exception
   {
     super.setUp();
     try
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateTest.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateTest.java
new file mode 100644
index 0000000..b6458f2
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateTest.java
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.ui.text;
+
+import java.text.MessageFormat;
+import java.util.List;
+
+import org.eclipse.wst.wsdl.validation.internal.IValidationMessage;
+import org.eclipse.wst.wsdl.validation.internal.IValidationReport;
+import org.eclipse.wst.wsdl.validation.internal.ValidationMessageImpl;
+import org.eclipse.wst.wsdl.validation.internal.ValidatorRegistry;
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+import org.eclipse.wst.wsdl.validation.internal.logging.LoggerFactory;
+import org.eclipse.wst.wsdl.validation.internal.logging.StandardLogger;
+import org.eclipse.wst.wsdl.validation.tests.internal.BaseTestCase;
+
+public class WSDLValidateTest extends BaseTestCase
+{	
+	WSDLValidateWrapper validate = null;
+	
+	/* (non-Javadoc)
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception 
+	{
+		super.setUp();
+		validate = new WSDLValidateWrapper();
+	}
+
+	/* (non-Javadoc)
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception 
+	{
+		validate = null;
+		super.tearDown();
+	}
+	
+	/**
+	 * Test the validateFile method.
+	 * 1. A valid file should report back that it's valid.
+	 * 2. An invalid file should report back that it's invalid.
+	 * 3. A file that can't be found should succeed and report that it's invalid.
+	 */
+	public void testValidateFile()
+	{
+		String validFile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + "Paths/AngleHat^InPath/AngleHatInPathValid.wsdl";
+		if(PLUGIN_ABSOLUTE_PATH.startsWith("/"))
+		{
+			validFile = "file://" + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + "Paths/AngleHat^InPath/AngleHatInPathValid.wsdl";
+		}
+		String invalidFile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + "Paths/AngleHat^InPath/AngleHatInPathInvalid.wsdl";
+		if(PLUGIN_ABSOLUTE_PATH.startsWith("/"))
+		{
+			invalidFile = "file://" + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + "Paths/AngleHat^InPath/AngleHatInPathInvalid.wsdl";
+		}
+		String nonexistantFile = "nonexistantfile.wsdl";
+		// 1. A valid file should report back that it's valid.
+		IValidationReport report = validate.validateFile(validFile);
+		assertFalse("Errors were reported for a valid file.", report.hasErrors());
+		
+		// 2. An invalid file should report back that it's invalid.
+		IValidationReport report2 = validate.validateFile(invalidFile);
+		assertTrue("Errors were not reported for an invalid file.", report2.hasErrors());
+		
+		// 3. A file that can't be found should succeed and report that it's invalid.
+		IValidationReport report3 = validate.validateFile(nonexistantFile);
+		assertTrue("Errors were not reported for a nonexistant file.", report3.hasErrors());
+	}
+	
+	/**
+	 * Test the validate method.
+	 * 1. The method should succeed with one file specified.
+	 * 2. The method should succeed and validate 2 files when 2 are specified.
+	 * 3. The method should output verbose information for valid files when verbose is enabled.
+	 */
+	public void testValidate()
+	{
+		String validFile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + "Paths/AngleHat^InPath/AngleHatInPathValid.wsdl";
+		if(PLUGIN_ABSOLUTE_PATH.startsWith("/"))
+		{
+			validFile = "file://" + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + "Paths/AngleHat^InPath/AngleHatInPathValid.wsdl";
+		}
+		String validFile2 = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + "Paths/AngleHatInFilename/AngleHat^InFilenameValid.wsdl";
+		if(PLUGIN_ABSOLUTE_PATH.startsWith("/"))
+		{
+			validFile2 = "file://" + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + "Paths/AngleHatInFilename/AngleHat^InFilenameValid.wsdl";
+		}
+		ILogger currentLogger = LoggerFactory.getInstance().getLogger();
+		WSDLValidateTestLogger logger = new WSDLValidateTestLogger();
+		LoggerFactory.getInstance().setLogger(logger);
+	  
+		// 1. The method should succeed with one file specified.
+		validate.getWSDLFiles().add(validFile);
+		validate.validate();
+		assertEquals("Validating a single valid file failed.", MessageFormat.format(WSDLValidateTextUIMessages._UI_VALIDATION_SUMMARY, new Object[]{new Integer(1), new Integer(0)}), logger.getInfos().get(0));
+		validate.getWSDLFiles().clear();
+		logger.getInfos().clear();
+	  
+	  	// 2. The method should succeed and validate 2 files when 2 are specified.
+	  	validate.getWSDLFiles().add(validFile);
+	  	validate.getWSDLFiles().add(validFile2);
+	  	validate.validate();
+	  	assertEquals("Validating two valid files failed.", MessageFormat.format(WSDLValidateTextUIMessages._UI_VALIDATION_SUMMARY, new Object[]{new Integer(2), new Integer(0)}), logger.getInfos().get(0));
+	  	validate.getWSDLFiles().clear();
+	  	logger.getInfos().clear();
+	  
+	  	// 3. The method should output verbose information for valid files when verbose is enabled.
+	  	validate.setVerbose(true);
+	  	validate.getWSDLFiles().add(validFile);
+	  	validate.validate();
+	  	assertEquals("Validating a single valid file failed.", MessageFormat.format(WSDLValidateTextUIMessages._UI_FILE_VALID, new Object[]{validFile}), logger.getVerboses().get(0));
+	  	assertEquals("Validating a single valid file failed.", MessageFormat.format(WSDLValidateTextUIMessages._UI_VALIDATION_SUMMARY, new Object[]{new Integer(1), new Integer(0)}), logger.getInfos().get(0));
+	  	validate.getWSDLFiles().clear();
+	  	validate.setVerbose(false);
+	  	logger.getInfos().clear();
+	  	logger.getVerboses().clear();
+	  
+	  	LoggerFactory.getInstance().setLogger(currentLogger);
+	}
+	
+	/**
+	 * Test the getMessages method.
+	 * 1. The method should return a properly formatted string for a single error.
+	 * 2. The method should return a properly formatted string for a single warning.
+	 * 3. The method should return a properly fomatted string for 2 messages.
+	 */
+	public void testGetMessages()
+	{	
+		IValidationMessage errorMessage = new ValidationMessageImpl("MESSAGE", 1, 2, IValidationMessage.SEV_ERROR, "URI");
+		IValidationMessage warningMessage = new ValidationMessageImpl("MESSAGE", 1, 2, IValidationMessage.SEV_WARNING, "URI");
+		// 1. The method should return a properly formatted string for a single error.
+		IValidationMessage[] errorMessages = new IValidationMessage[]{errorMessage};
+		String message = validate.getMessages(errorMessages);
+		assertEquals("The error message was not correct.", WSDLValidateTextUIMessages._UI_ERROR_MARKER + " 1:2 MESSAGE", message);
+		
+		// 2. The method should return a properly formatted string for a single warning.
+		IValidationMessage[] warningMessages = new IValidationMessage[]{warningMessage};
+		String message2 = validate.getMessages(warningMessages);
+		assertEquals("The warning message was not correct.", WSDLValidateTextUIMessages._UI_WARNING_MARKER + " 1:2 MESSAGE", message2);
+		
+		// 3. The method should return a properly fomatted string for 2 messages.
+		IValidationMessage[] twoMessages = new IValidationMessage[]{errorMessage, warningMessage};
+		String message3 = validate.getMessages(twoMessages);
+		assertEquals("Two messages was not correct.", WSDLValidateTextUIMessages._UI_ERROR_MARKER + " 1:2 MESSAGE\n" + WSDLValidateTextUIMessages._UI_WARNING_MARKER + " 1:2 MESSAGE", message3);
+	}
+	
+	/**
+	 * Test the parseArguments method.
+	 * 1. -wsdl11v parsing succeeds and registers the validator with the WSDL validator.
+	 * 2. -extv parsing succeeds and registers the validator with the WSDL validator.
+	 * 3. Extension validator parsing where a param is omitted succeeds.
+	 * 4. -logger parsing succeeds and sets the correct logger.
+	 * 5. -D (property) parsing succeeds sets the property on the configuration.
+	 * 6. -v, -verbose parsing succeeds and sets verbose correctly.
+	 * 7. The specified WSDL files are read properly.
+	 * 
+	 * Not currently tested:
+	 * 		-schema
+	 * 		-schemaDir
+	 * 		-uriresolver
+	 */
+	public void testParseArguments()
+	{
+		// 1. -wsdl11v parsing succeeds and registers the validator with the WSDL validator.
+		String[] args1 = new String[]{WSDLValidateWrapper.PARAM_WSDL11VAL, "http://wsdl11validator", "org.eclipse.wst.wsdl.validation.internal.wsdl11.http.HTTPValidator"};
+		validate.parseArguments(args1);
+		assertTrue("The WSDL 1.1 validator was not registered.", org.eclipse.wst.wsdl.validation.internal.wsdl11.ValidatorRegistry.getInstance().hasRegisteredValidator("http://wsdl11validator"));
+		
+		// 2. -extv parsing succeeds and registers the validator with the WSDL validator.
+		String[] args2 = new String[]{WSDLValidateWrapper.PARAM_EXTVAL, "http://extvalidator", "validatorclass"};
+		validate.parseArguments(args2);
+		assertTrue("The WSDL extension validator was not registered.", ValidatorRegistry.getInstance().hasRegisteredValidator("http://extvalidator", ValidatorRegistry.EXT_VALIDATOR));
+		
+		// 3. Extension validator parsing where a param is omitted succeeds.
+		String[] args3 = new String[]{WSDLValidateWrapper.PARAM_EXTVAL, "http://extvalidator2", "-dummyparam"};
+		validate.parseArguments(args3);
+		assertFalse("The WSDL extension validator was registered without enough information.", ValidatorRegistry.getInstance().hasRegisteredValidator("http://extvalidator2", ValidatorRegistry.EXT_VALIDATOR));
+		
+		// 4. -logger parsing succeeds and sets the correct logger.
+		ILogger currentLogger = LoggerFactory.getInstance().getLogger();
+		String[] args4 = new String[]{WSDLValidateWrapper.PARAM_LOGGER, "org.eclipse.wst.wsdl.validation.internal.logging.StandardLogger"};
+		validate.parseArguments(args4);
+		assertTrue("The registered logger is not a StandardLogger", LoggerFactory.getInstance().getLogger() instanceof StandardLogger);
+		assertFalse("The registered logger is the same as originally registered.", currentLogger.equals(LoggerFactory.getInstance().getLogger()));
+		LoggerFactory.getInstance().setLogger(currentLogger);
+		
+		// 5. -D (property) parsing succeeds sets the property on the configuration.
+		String[] args5 = new String[]{WSDLValidateWrapper.PARAM_PROPERTY + "SAMPLENAME=SAMPLEVALUE"};
+		validate.parseArguments(args5);
+		assertEquals("The parameter was not set correctly.", "SAMPLEVALUE", validate.getConfiguration().getProperty("SAMPLENAME"));
+		
+		// 6. -v, -verbose parsing succeeds and sets verbose correctly.
+		String[] args6 = new String[]{WSDLValidateWrapper.PARAM_VERBOSE};
+		validate.setVerbose(false);
+		validate.parseArguments(args6);
+		assertTrue("Verbose is not set to true.", validate.isVerbose());
+		
+		String[] args6a = new String[]{WSDLValidateWrapper.PARAM_VERBOSE_SHORT};
+		validate.setVerbose(false);
+		validate.parseArguments(args6a);
+		assertTrue("Verbose is not set to true.", validate.isVerbose());
+		
+		// 7. The specified WSDL files are read properly.
+		String[] args7 = new String[]{"filename1.wsdl", "folder/filename2.wsdl", "folder\filename3.wsdl"};
+		validate.parseArguments(args7);
+		List wsdlFiles = validate.getWSDLFiles();
+		assertEquals("There were not 3 WSDL files listed to validate.", 3, wsdlFiles.size());
+		assertTrue("The WSDL file list did not include filename1.wsdl", wsdlFiles.contains("filename1.wsdl"));
+		assertTrue("The WSDL file list did not include folder/filename2.wsdl", wsdlFiles.contains("folder/filename2.wsdl"));
+		assertTrue("The WSDL file list did not include folder\filename3.wsdl", wsdlFiles.contains("folder\filename3.wsdl"));
+	}
+}
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateTestLogger.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateTestLogger.java
new file mode 100644
index 0000000..1352a4b
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateTestLogger.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.ui.text;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.wst.wsdl.validation.internal.logging.ILogger;
+
+/**
+ * A helper class for testing that allows access to the messages logged.
+ */
+public class WSDLValidateTestLogger implements ILogger {
+
+	protected List errors = new ArrayList();
+	protected List warnings = new ArrayList();
+	protected List infos = new ArrayList();
+	protected List verboses = new ArrayList();
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int)
+	 */
+	public void log(String message, int severity) 
+	{
+		if(severity == ILogger.SEV_ERROR)
+		{
+			errors.add(message);
+		}
+		else if(severity == ILogger.SEV_WARNING)
+		{
+			warnings.add(message);
+		}
+		else if(severity == ILogger.SEV_INFO)
+		{
+			infos.add(message);
+		}
+		else if(severity == ILogger.SEV_VERBOSE)
+		{
+			verboses.add(message);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.wsdl.validation.internal.logging.ILogger#log(java.lang.String, int, java.lang.Throwable)
+	 */
+	public void log(String message, int severity, Throwable throwable) 
+	{
+		log(message, severity);
+		log(throwable.toString(), severity);
+	}
+	
+	/**
+	 * Get the error list.
+	 * 
+	 * @return
+	 * 		The error list.
+	 */
+	public List getErrors()
+	{
+		return errors;
+	}
+	
+	/**
+	 * Get the warning list.
+	 * 
+	 * @return
+	 * 		The warning list.
+	 */
+	public List getWarnings()
+	{
+		return warnings;
+	}
+	
+	/**
+	 * Get the info list.
+	 * 
+	 * @return
+	 * 		The info list.
+	 */
+	public List getInfos()
+	{
+		return infos;
+	}
+
+	/**
+	 * Get the verbose list.
+	 * 
+	 * @return
+	 * 		The verbose list.
+	 */
+	public List getVerboses()
+	{
+		return verboses;
+	}
+}
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateWrapper.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateWrapper.java
new file mode 100644
index 0000000..80407bd
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/ui/text/WSDLValidateWrapper.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsdl.validation.internal.ui.text;
+
+import java.util.List;
+
+import org.eclipse.wst.wsdl.validation.internal.IValidationMessage;
+import org.eclipse.wst.wsdl.validation.internal.IValidationReport;
+import org.eclipse.wst.wsdl.validation.internal.WSDLValidationConfiguration;
+import org.eclipse.wst.wsdl.validation.internal.WSDLValidator;
+
+/**
+ * A wrapper class of WSDLValidate that exposes internals for testing.
+ */
+public class WSDLValidateWrapper extends WSDLValidate 
+{
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.wsdl.validation.internal.ui.text.WSDLValidate#getMessages(org.eclipse.wst.wsdl.validation.internal.IValidationMessage[])
+	 */
+	public String getMessages(IValidationMessage[] messages) 
+	{
+		return super.getMessages(messages);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.wsdl.validation.internal.ui.text.WSDLValidate#parseArguments(java.lang.String[])
+	 */
+	public void parseArguments(String[] args) 
+	{
+		super.parseArguments(args);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.wsdl.validation.internal.ui.text.WSDLValidate#validate()
+	 */
+	public void validate() 
+	{
+		super.validate();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.wst.wsdl.validation.internal.ui.text.WSDLValidate#validateFile(java.lang.String)
+	 */
+	public IValidationReport validateFile(String filename) 
+	{
+		return super.validateFile(filename);
+	}
+	
+	/**
+	 * Get the internal WSDL validator.
+	 * 
+	 * @return
+	 * 		The internal WSDL validator.
+	 */
+	public WSDLValidator getWSDLValidator()
+	{
+		return wsdlValidator;
+	}
+	
+	/**
+	 * Get the WSDL validation configuration.
+	 * 
+	 * @return
+	 * 		The WSDL validation configuration.
+	 */
+	public WSDLValidationConfiguration getConfiguration()
+	{
+		return configuration;
+	}
+	
+	/**
+	 * Get the list of WSDL files to validate.
+	 * 
+	 * @return
+	 * 		The list of WSDL files to validate.
+	 */
+	public List getWSDLFiles()
+	{
+		return wsdlFiles;
+	}
+	
+	/**
+	 * Returns true if verbose is on, false otherwise.
+	 * 
+	 * @return
+	 * 		True if verbose is on, false otherwise.
+	 */
+	public boolean isVerbose()
+	{
+		return verbose;
+	}
+	
+	/**
+	 * Set whether reporting should be done in a verbose way.
+	 * 
+	 * @param verbose
+	 * 		If true reporting will be done in a verbose way, otherwise it will not.
+	 */
+	public void setVerbose(boolean verbose)
+	{
+		this.verbose = verbose;
+	}
+
+}
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/xml/XMLCatalogTest.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/xml/XMLCatalogTest.java
index 941135e..2e7a262 100644
--- a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/xml/XMLCatalogTest.java
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/internal/xml/XMLCatalogTest.java
@@ -25,7 +25,7 @@
   /* (non-Javadoc)
    * @see junit.framework.TestCase#setUp()
    */
-  protected void setUp() 
+  protected void setUp() throws Exception
   {
 	super.setUp();
 	XMLCatalog.reset();
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/AllWSDLTests.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/AllWSDLTests.java
index 1b821dc..f5350f8 100644
--- a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/AllWSDLTests.java
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/AllWSDLTests.java
@@ -13,6 +13,7 @@
 
 import org.eclipse.wst.wsdl.validation.internal.eclipse.ValidatorTest;
 import org.eclipse.wst.wsdl.validation.internal.resolver.URIResolverTest;
+import org.eclipse.wst.wsdl.validation.internal.ui.ant.AntLoggerTest;
 import org.eclipse.wst.wsdl.validation.internal.ui.ant.WSDLValidateTest;
 import org.eclipse.wst.wsdl.validation.internal.wsdl11.xsd.InlineSchemaGeneratorTest;
 import org.eclipse.wst.wsdl.validation.internal.xml.XMLCatalogTest;
@@ -47,5 +48,7 @@
     addTest(XMLCatalogTest.suite());
     addTest(InlineSchemaGeneratorTest.suite());
     addTestSuite(LineNumberAdjustmentsTest.class);
+    addTestSuite(AntLoggerTest.class);
+    addTestSuite(org.eclipse.wst.wsdl.validation.internal.ui.text.WSDLValidateTest.class);
   }
 }
\ No newline at end of file
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/BaseTestCase.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/BaseTestCase.java
index b9b87ce..b1cd2f9 100644
--- a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/BaseTestCase.java
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/BaseTestCase.java
@@ -13,6 +13,7 @@
 import java.io.BufferedReader;
 import java.io.DataOutputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FileReader;
@@ -23,10 +24,21 @@
 
 import junit.framework.TestCase;
 
+import org.apache.xerces.util.XMLGrammarPoolImpl;
+import org.apache.xerces.xni.grammars.XMLGrammarPool;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.wst.ws.internal.plugin.WSPlugin;
 import org.eclipse.wst.ws.internal.preferences.PersistentWSIContext;
+import org.eclipse.wst.wsdl.validation.internal.Constants;
 import org.eclipse.wst.wsdl.validation.internal.IValidationMessage;
 import org.eclipse.wst.wsdl.validation.internal.IValidationReport;
+import org.eclipse.wst.wsdl.validation.internal.WSDLValidationConfiguration;
+import org.eclipse.wst.wsdl.validation.internal.eclipse.InlineSchemaModelGrammarPoolImpl;
 import org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLValidator;
 
 /**
@@ -47,16 +59,16 @@
   protected static final String PLUGIN_NAME = "org.eclipse.wst.wsdl.validation.tests";
   private WSDLValidator validator = WSDLValidator.getInstance();
   
+  WSDLValidationConfiguration configuration = null;
+  
   /* (non-Javadoc)
    * @see junit.framework.TestCase#setUp()
    */
-  protected void setUp()
+  protected void setUp() throws Exception
   {
+	super.setUp();
+	
     PLUGIN_ABSOLUTE_PATH = WSDLValidatorTestsPlugin.getInstallURL();//getPluginLocation();
-    if(PLUGIN_ABSOLUTE_PATH.startsWith("/"))
-    {
-      PLUGIN_ABSOLUTE_PATH = PLUGIN_ABSOLUTE_PATH.substring(1);
-    }
     
     // Set the WS-I preference to ignore so only WSDL errors will be tested.
     WSPlugin wsui = WSPlugin.getInstance();
@@ -64,9 +76,25 @@
     wsicontext.updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
     wsicontext = wsui.getWSIAPContext();
     wsicontext.updateWSICompliances(PersistentWSIContext.IGNORE_NON_WSI);
+    
+    configuration = new WSDLValidationConfiguration();
+	XMLGrammarPool xsdGrammarPool = new InlineSchemaModelGrammarPoolImpl();
+	XMLGrammarPool xmlGrammarPool = new XMLGrammarPoolImpl();
+	configuration.setProperty(Constants.XMLSCHEMA_CACHE_ATTRIBUTE, xsdGrammarPool);
+    configuration.setProperty(Constants.XML_CACHE_ATTRIBUTE, xmlGrammarPool);
   }
   
-  /**
+  /* (non-Javadoc)
+   * @see junit.framework.TestCase#tearDown()
+   */
+  protected void tearDown() throws Exception 
+  {
+	configuration = null;
+	
+	super.tearDown();
+  }
+
+/**
    * Run a validator test. The test will run the validator, log the results and compare the results
    * with the ideal results. The test will only pass if the two log files are the same.
    * 
@@ -76,7 +104,7 @@
    */
   public void runTest(String testfile, String loglocation, String idealloglocation)
   {
-    IValidationReport valreport = validator.validate(testfile);
+    IValidationReport valreport = validator.validate(testfile, null, configuration);
     try
     {
       createLog(loglocation, valreport);
@@ -258,4 +286,84 @@
       return "";
     }
   }
+  
+  /**
+   * Create a project in the workspace with the given name and
+   * add the specified files to the project.
+   * 
+   * @param projectName The name for the project.
+   * @param files An array of file names in the file system that
+   *              will be copied into the project.
+   * @return The created project.
+   */
+  protected IProject createSimpleProject(String projectName, String[] files)
+  {
+    final IWorkspace workspace = ResourcesPlugin.getWorkspace();
+    final IProject project = workspace.getRoot().getProject(projectName);
+    if(!project.exists())
+    {
+      try
+	  {
+        project.create(null);
+      }
+      catch(CoreException e)
+	  {
+        fail("Could not create project " + projectName + e);
+      } 
+    }
+    if(!project.isOpen())
+    {
+      try
+	  {
+        project.open(null);
+	  }
+      catch(CoreException e)
+      {
+        fail("Could not open project " + projectName + e);
+	  }
+    }
+    try
+    {
+      IProjectDescription projectDescription = project.getDescription(); 
+      projectDescription.setName(projectName);
+      project.setDescription(projectDescription, null);
+    }
+    catch(Exception e)
+    {
+      fail("Unable to set project properties for project " + projectName + ". " + e);
+    }
+
+    if(files != null)
+    {
+      int numfiles = files.length;
+      for(int i = 0; i < numfiles; i++)
+      {
+        try
+		{
+          String filename = files[i];
+          filename = filename.replace('\\','/');
+          
+          File file = new File(filename);
+          FileInputStream in = new FileInputStream(file);
+          IFile iFile = project.getFile(file.getName());
+          if(!iFile.exists())
+          {
+            iFile.create(in, true, null);
+            in.close();
+          }
+		}
+        catch(Exception e)
+		{
+		  fail("Unable to locate file " + files[i]);
+		} 
+      }
+    }
+    try
+    {
+      project.refreshLocal(-1, null);
+    }
+    catch(Exception e)
+    {}
+    return project;
+  }
 }
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/PathsTest.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/PathsTest.java
index fe01032..e4380e5 100644
--- a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/PathsTest.java
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/PathsTest.java
@@ -33,7 +33,7 @@
   /* (non-Javadoc)
    * @see junit.framework.TestCase#setUp()
    */
-  protected void setUp()
+  protected void setUp() throws Exception
   {
     super.setUp();
   }
@@ -566,4 +566,20 @@
     
     runTest(testfile, loglocation, idealloglocation);
   }
+  
+  /**
+   * Test /Paths/PlatformURL/one.wsdl
+   */
+  public void testPlatformURL()
+  {
+	String testname = "one";
+	String testfile = PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "PlatformURL/" + testname + ".wsdl";
+	String testfile2 = PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + PATHS_DIR + "PlatformURL/two.wsdl";
+	String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + PATHS_DIR + "PlatformURL/" + testname + ".wsdl-log";
+	String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + PATHS_DIR + "PlatformURL/" + testname + ".wsdl-log";
+	 
+	createSimpleProject("test", new String[]{testfile,testfile2});
+	
+	runTest(FILE_PROTOCOL + testfile, loglocation, idealloglocation);
+  }
 }
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/WSDLTest.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/WSDLTest.java
index 485a1b9..13ac876 100644
--- a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/WSDLTest.java
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/WSDLTest.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2004 IBM Corporation and others.
+ * Copyright (c) 2001, 2006 IBM 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
@@ -33,7 +33,7 @@
   /* (non-Javadoc)
    * @see junit.framework.TestCase#setUp()
    */
-  protected void setUp()
+  protected void setUp() throws Exception
   {
     super.setUp();
   }
@@ -312,6 +312,19 @@
   }
   
   /**
+   * Test /WSDL/Import/NoSchemeSchemaNamespaceImport/NoSchemeSchemaNamespaceImport.wsdl
+   */
+  public void testNoSchemeSchemaNamespaceImport()
+  {
+    String testname = "NoSchemeSchemaNamespaceImport";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + WSDL_DIR + "Import/NoSchemeSchemaNamespaceImport/" + testname + ".wsdl";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + WSDL_DIR + "Import/NoSchemeSchemaNamespaceImport/" + testname + ".wsdl-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + WSDL_DIR + "Import/NoSchemeSchemaNamespaceImport/" + testname + ".wsdl-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
    * CYCLIC TESTS
    */
   
@@ -555,7 +568,13 @@
   public void testSimplefileSelfImport()
   {
     String testname = "SelfImport";
-    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + WSDL_DIR + "SelfImport/SimpleFile/" + testname + ".wsdl";
+    String fileprefix = FILE_PROTOCOL;
+    // Need to ensure the URL of the test file is as expected.
+    if(PLUGIN_ABSOLUTE_PATH.startsWith("/"))
+    {
+      fileprefix = fileprefix.substring(0, fileprefix.length()-1);
+    }
+    String testfile = fileprefix + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + WSDL_DIR + "SelfImport/SimpleFile/" + testname + ".wsdl";
     String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + WSDL_DIR + "SelfImport/SimpleFile/" + testname + ".wsdl-log";
     String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + WSDL_DIR + "SelfImport/SimpleFile/" + testname + ".wsdl-log";
     
@@ -581,10 +600,29 @@
   public void testSimpleFileInvalidSelfImport()
   {
     String testname = "SelfImport";
-    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + WSDL_DIR + "SelfImport/SimpleFileInvalid/" + testname + ".wsdl";
+    String fileprefix = FILE_PROTOCOL;
+    // Need to ensure the URL of the test file is as expected.
+    if(PLUGIN_ABSOLUTE_PATH.startsWith("/"))
+    {
+      fileprefix = fileprefix.substring(0, fileprefix.length()-1);
+    }
+    String testfile = fileprefix + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + WSDL_DIR + "SelfImport/SimpleFileInvalid/" + testname + ".wsdl";
     String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + WSDL_DIR + "SelfImport/SimpleFileInvalid/" + testname + ".wsdl-log";
     String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + WSDL_DIR + "SelfImport/SimpleFileInvalid/" + testname + ".wsdl-log";
     
     runTest(testfile, loglocation, idealloglocation);
   }
+  
+  /**
+   * Test /WSDL/InvalidSchemaWithPartReferences/InvalidSchemaWithPartReferences.wsdl
+   */
+  public void testInvalidSchemaWithPartReferences()
+  {
+    String testname = "InvalidSchemaWithPartReferences";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + WSDL_DIR + "InvalidSchemaWithPartReferences/" + testname + ".wsdl";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + WSDL_DIR + "InvalidSchemaWithPartReferences/" + testname + ".wsdl-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + WSDL_DIR + "InvalidSchemaWithPartReferences/" + testname + ".wsdl-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
 }
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/XSDTest.java b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/XSDTest.java
index a3fbd97..54c8d58 100644
--- a/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/XSDTest.java
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/src/org/eclipse/wst/wsdl/validation/tests/internal/XSDTest.java
@@ -33,7 +33,7 @@
   /* (non-Javadoc)
    * @see junit.framework.TestCase#setUp()
    */
-  protected void setUp()
+  protected void setUp() throws Exception
   {
     super.setUp();
   }
@@ -182,6 +182,19 @@
   }
   
   /**
+   * Test /XSD/ImportNoNSSchemAndSecondSchemaWithNS/ImportNoNSSchemaAndSecondSchemaWithNS.wsdl
+   */
+  public void testImportNoNSSchemaAndSecondSchemaWithNS()
+  {
+    String testname = "ImportNoNSSchemaAndSecondSchemaWithNS";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + XSD_DIR + "ImportNoNSSchemaAndSecondSchemaWithNS/" + testname + ".wsdl";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + XSD_DIR + "ImportNoNSSchemaAndSecondSchemaWithNS/" + testname + ".wsdl-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + XSD_DIR + "ImportNoNSSchemaAndSecondSchemaWithNS/" + testname + ".wsdl-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
+  
+  /**
    * Test /XSD/NoNSElementReference/NoNSElementReference.wsdl
    */
   public void testNoNSElementReference()
@@ -193,4 +206,17 @@
     
     runTest(testfile, loglocation, idealloglocation);
   }
+  
+  /**
+   * Test /XSD/InlineSchemaNoNamespace/InlineSchemaNoNamespace.wsdl
+   */
+  public void testInlineSchemaNoNamespace()
+  {
+    String testname = "InlineSchemaNoNamespace";
+    String testfile = FILE_PROTOCOL + PLUGIN_ABSOLUTE_PATH + SAMPLES_DIR + XSD_DIR + "InlineSchemaNoNamespace/" + testname + ".wsdl";
+    String loglocation = PLUGIN_ABSOLUTE_PATH + GENERATED_RESULTS_DIR + XSD_DIR + "InlineSchemaNoNamespace/" + testname + ".wsdl-log";
+    String idealloglocation = PLUGIN_ABSOLUTE_PATH + IDEAL_RESULTS_DIR + XSD_DIR + "InlineSchemaNoNamespace/" + testname + ".wsdl-log";
+    
+    runTest(testfile, loglocation, idealloglocation);
+  }
 }
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/Paths/PlatformURL/one.wsdl-log b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/Paths/PlatformURL/one.wsdl-log
new file mode 100644
index 0000000..aa2b361
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/Paths/PlatformURL/one.wsdl-log
@@ -0,0 +1,8 @@
+number of errors      : 0
+number of warnings    : 0
+
+------------error list-------------------------------------------
+(none)
+------------warning list-----------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/WSDL/Import/NoSchemeSchemaNamespaceImport/NoSchemeSchemaNamespaceImport.wsdl-log b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/WSDL/Import/NoSchemeSchemaNamespaceImport/NoSchemeSchemaNamespaceImport.wsdl-log
new file mode 100644
index 0000000..aa2b361
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/WSDL/Import/NoSchemeSchemaNamespaceImport/NoSchemeSchemaNamespaceImport.wsdl-log
@@ -0,0 +1,8 @@
+number of errors      : 0
+number of warnings    : 0
+
+------------error list-------------------------------------------
+(none)
+------------warning list-----------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/WSDL/InvalidSchemaWithPartReferences/InvalidSchemaWithPartReferences.wsdl-log b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/WSDL/InvalidSchemaWithPartReferences/InvalidSchemaWithPartReferences.wsdl-log
new file mode 100644
index 0000000..bef9908
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/WSDL/InvalidSchemaWithPartReferences/InvalidSchemaWithPartReferences.wsdl-log
@@ -0,0 +1,8 @@
+number of errors      : 1
+number of warnings    : 0
+
+------------error list-------------------------------------------
+src-resolve.4.2: Error resolving component 'xsd:strin'. It was detected that 'xsd:strin' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'testresources/samples/WSDL/InvalidSchemaWithPartReferences/InvalidSchemaWithPartReferences.wsdl'. If this is the incorrect namespace, perhaps the prefix of 'xsd:strin' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'testresources/samples/WSDL/InvalidSchemaWithPartReferences/InvalidSchemaWithPartReferences.wsdl'. [16, 47]
+------------warning list-----------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/XSD/ImportNoNSSchemaAndSecondSchemaWithNS/ImportNoNSSchemaAndSecondSchemaWithNS.wsdl-log b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/XSD/ImportNoNSSchemaAndSecondSchemaWithNS/ImportNoNSSchemaAndSecondSchemaWithNS.wsdl-log
new file mode 100644
index 0000000..aa2b361
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/XSD/ImportNoNSSchemaAndSecondSchemaWithNS/ImportNoNSSchemaAndSecondSchemaWithNS.wsdl-log
@@ -0,0 +1,8 @@
+number of errors      : 0
+number of warnings    : 0
+
+------------error list-------------------------------------------
+(none)
+------------warning list-----------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/XSD/InlineSchemaNoNamespace/InlineSchemaNoNamespace.wsdl-log b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/XSD/InlineSchemaNoNamespace/InlineSchemaNoNamespace.wsdl-log
new file mode 100644
index 0000000..aa2b361
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/idealResults/XSD/InlineSchemaNoNamespace/InlineSchemaNoNamespace.wsdl-log
@@ -0,0 +1,8 @@
+number of errors      : 0
+number of warnings    : 0
+
+------------error list-------------------------------------------
+(none)
+------------warning list-----------------------------------------
+(none)
+-----------------------------------------------------------------
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/Paths/PlatformURL/one.wsdl b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/Paths/PlatformURL/one.wsdl
new file mode 100644
index 0000000..20275a5
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/Paths/PlatformURL/one.wsdl
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/one/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="one" targetNamespace="http://www.example.org/one/">
+<wsdl:import
+  namespace="http://www.example.org/two/"
+  location="platform:/resource/test/two.wsdl"/>
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/Paths/PlatformURL/two.wsdl b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/Paths/PlatformURL/two.wsdl
new file mode 100644
index 0000000..f530db0
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/Paths/PlatformURL/two.wsdl
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/two/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="two" targetNamespace="http://www.example.org/two/">
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/WSDL/Import/NoSchemeSchemaNamespaceImport/NoSchemeSchemaNamespaceImport.wsdl b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/WSDL/Import/NoSchemeSchemaNamespaceImport/NoSchemeSchemaNamespaceImport.wsdl
new file mode 100644
index 0000000..78b165e
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/WSDL/Import/NoSchemeSchemaNamespaceImport/NoSchemeSchemaNamespaceImport.wsdl
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="www.example.org/NoSchemaSchemaNamespaceImport/"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	name="NoSchemaSchemaNamespaceImport"
+	targetNamespace="www.example.org/NoSchemaSchemaNamespaceImport/"
+	xmlns:elms="common.elements">
+	<wsdl:types>
+		<schema
+			targetNamespace="common.elements"
+			xmlns="http://www.w3.org/2001/XMLSchema">
+			<complexType name="MyType">
+				<sequence>
+					<element name="MyElement" type="xsd:string" />
+				</sequence>
+			</complexType>
+		</schema>
+		<schema
+			targetNamespace="www.example.org/NoSchemaSchemaNamespaceImport/"
+			xmlns="http://www.w3.org/2001/XMLSchema">
+			<xsd:import namespace="common.elements"/>
+			<element name="NewOperationResponse" type="elms:MyType" />
+			<element name="NewOperationRequest" type="xsd:string" />
+		</schema>
+	</wsdl:types>
+	<wsdl:message name="NewOperationResponse">
+		<wsdl:part element="tns:NewOperationResponse"
+			name="NewOperationResponse" />
+	</wsdl:message>
+	<wsdl:message name="NewOperationRequest">
+		<wsdl:part element="tns:NewOperationRequest"
+			name="NewOperationRequest" />
+	</wsdl:message>
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/WSDL/InvalidSchemaWithPartReferences/InvalidSchemaWithPartReferences.wsdl b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/WSDL/InvalidSchemaWithPartReferences/InvalidSchemaWithPartReferences.wsdl
new file mode 100644
index 0000000..aadc154
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/WSDL/InvalidSchemaWithPartReferences/InvalidSchemaWithPartReferences.wsdl
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="Foo"
+	targetNamespace="http://www.example.org/Foo/"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="http://www.example.org/Foo/"
+	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+	<wsdl:types>
+		<xsd:schema targetNamespace="http://www.example.org/Foo/"
+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+			<xsd:element name="a" type="xsd:string" />
+			<xsd:element name="b" type="xsd:string" />
+			<xsd:element name="junk">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="y" type="xsd:strin"/>
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+		</xsd:schema>
+	</wsdl:types>
+	<wsdl:message name="foo">
+		<wsdl:part element="tns:a" name="foo" />
+	</wsdl:message>
+	<wsdl:message name="bar">
+		<wsdl:part element="tns:b" name="bar" />
+	</wsdl:message>
+	<wsdl:portType name="Foo">
+		<wsdl:operation name="getFoo">
+			<wsdl:input message="tns:bar" />
+			<wsdl:output message="tns:foo" />
+		</wsdl:operation>
+	</wsdl:portType>
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/XSD/ImportNoNSSchemaAndSecondSchemaWithNS/ImportNoNSSchemaAndSecondSchemaWithNS.wsdl b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/XSD/ImportNoNSSchemaAndSecondSchemaWithNS/ImportNoNSSchemaAndSecondSchemaWithNS.wsdl
new file mode 100644
index 0000000..71d7948
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/XSD/ImportNoNSSchemaAndSecondSchemaWithNS/ImportNoNSSchemaAndSecondSchemaWithNS.wsdl
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/ImportSchemaNoNamespace/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ImportSchemaNoNamespace" targetNamespace="http://www.example.org/ImportSchemaNoNamespace/">
+<wsdl:types>
+<xsd:schema targetNamespace="http://www.example.org/ImportSchemaNoNamespace/">
+	<xsd:import schemaLocation="noTNS.xsd"/>
+</xsd:schema>
+<xsd:schema targetNamespace="http://www.example.org/ImportSchemaNoNamespace/">
+<xsd:element name="NewOperationResponse" type="xsd:string"/>
+<xsd:element name="NewOperationRequest" type="xsd:string"/>
+</xsd:schema>
+</wsdl:types>
+<wsdl:message name="NewOperationResponse">
+<wsdl:part element="tns:NewOperationResponse" name="NewOperationResponse"/>
+</wsdl:message>
+<wsdl:message name="NewOperationRequest">
+<wsdl:part element="tns:NewOperationRequest" name="NewOperationRequest"/>
+</wsdl:message>
+<wsdl:portType name="ImportSchemaNoNamespace">
+<wsdl:operation name="NewOperation">
+<wsdl:input message="tns:NewOperationRequest"/>
+<wsdl:output message="tns:NewOperationResponse"/>
+</wsdl:operation>
+</wsdl:portType>
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/XSD/ImportNoNSSchemaAndSecondSchemaWithNS/noTNS.xsd b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/XSD/ImportNoNSSchemaAndSecondSchemaWithNS/noTNS.xsd
new file mode 100644
index 0000000..c7080ba
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/XSD/ImportNoNSSchemaAndSecondSchemaWithNS/noTNS.xsd
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+</xsd:schema>
diff --git a/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/XSD/InlineSchemaNoNamespace/InlineSchemaNoNamespace.wsdl b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/XSD/InlineSchemaNoNamespace/InlineSchemaNoNamespace.wsdl
new file mode 100644
index 0000000..2413760
--- /dev/null
+++ b/tests/org.eclipse.wst.wsdl.validation.tests/testresources/samples/XSD/InlineSchemaNoNamespace/InlineSchemaNoNamespace.wsdl
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.example.org/InlineSchemaNoNamespace/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="InlineSchemaNoNamespace" targetNamespace="http://www.example.org/InlineSchemaNoNamespace/">
+<wsdl:types>
+<xsd:schema>
+	
+</xsd:schema>
+<xsd:schema targetNamespace="http://www.example.org/InlineSchemaNoNamespace/">
+<xsd:element name="NewOperationResponse" type="xsd:string"/>
+<xsd:element name="NewOperationRequest" type="xsd:string"/>
+</xsd:schema>
+</wsdl:types>
+<wsdl:message name="NewOperationResponse">
+<wsdl:part element="tns:NewOperationResponse" name="NewOperationResponse"/>
+</wsdl:message>
+<wsdl:message name="NewOperationRequest">
+<wsdl:part element="tns:NewOperationRequest" name="NewOperationRequest"/>
+</wsdl:message>
+<wsdl:portType name="InlineSchemaNoNamespace">
+<wsdl:operation name="NewOperation">
+<wsdl:input message="tns:NewOperationRequest"/>
+<wsdl:output message="tns:NewOperationResponse"/>
+</wsdl:operation>
+</wsdl:portType>
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsi.tests/.project b/tests/org.eclipse.wst.wsi.tests/.project
index 3d94a04..695d187 100644
--- a/tests/org.eclipse.wst.wsi.tests/.project
+++ b/tests/org.eclipse.wst.wsi.tests/.project
@@ -3,15 +3,6 @@
 	<name>org.eclipse.wst.wsi.tests</name>
 	<comment></comment>
 	<projects>
-		<project>com.ibm.etools.wsdl</project>
-		<project>com.ibm.wsdl</project>
-		<project>org.apache.xerces</project>
-		<project>org.eclipse.core.resources</project>
-		<project>org.eclipse.core.runtime.compatibility</project>
-		<project>org.eclipse.emf.ecore</project>
-		<project>org.eclipse.ui</project>
-		<project>org.eclipse.xsd</project>
-		<project>org.junit</project>
 	</projects>
 	<buildSpec>
 		<buildCommand>
diff --git a/tests/org.eclipse.wst.wsi.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.wst.wsi.tests/META-INF/MANIFEST.MF
index 267ff27..99997d5 100644
--- a/tests/org.eclipse.wst.wsi.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.wst.wsi.tests/META-INF/MANIFEST.MF
@@ -16,4 +16,4 @@
  org.eclipse.wst.command.env,
  org.eclipse.wst.command.env.core
 Eclipse-AutoStart: true
-Export-Package: org.eclipse.wst.wsi.tests.internal;x-internal:=true
+Export-Package: org.eclipse.wst.wsi.tests.internal
diff --git a/tests/org.eclipse.wst.wsi.tests/about.html b/tests/org.eclipse.wst.wsi.tests/about.html
index 6f6b96c..4ec5989 100644
--- a/tests/org.eclipse.wst.wsi.tests/about.html
+++ b/tests/org.eclipse.wst.wsi.tests/about.html
@@ -1,22 +1,34 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
+<HTML>
+
 <head>
 <title>About</title>
 <meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
 </head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>February 24, 2005</p>	
-<h3>License</h3>
 
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+<BODY lang="EN-US">
 
-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
-apply to your use of any object code in the Content.  Check the Redistributor's license that was provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
-indicated below, the terms and conditions of the EPL still apply to any source code in the Content.</p>
+<H3>About This Content</H3>
 
-</body>
-</html>
\ No newline at end of file
+<P>May 2, 2006</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor’s license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff --git a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreConformanceTest.java b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreConformanceTest.java
new file mode 100644
index 0000000..eed9bac
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreConformanceTest.java
@@ -0,0 +1,104 @@
+package org.eclipse.wst.wsi.tests.internal;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.eclipse.wst.wsi.internal.WSITestToolsProperties;
+import org.eclipse.wst.wsi.internal.report.AssertionError;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import junit.framework.TestCase;
+
+public class CoreConformanceTest extends TestCase {
+
+    public static final String TEST_CASE_FILE = "testcase.xml";
+    public static final String TAD_ID_AP = "AP10";
+    public static final String TAD_ID_SSBP = "SSBP10";
+
+    protected String pluginURI = null;
+    protected String tadID = TAD_ID_AP;
+
+    public CoreConformanceTest(String name) {
+        super(name);
+        pluginURI = WSITestsPlugin.getInstallURL();
+    }
+
+    protected void setup()
+    {
+    }
+
+    /**
+     * Retrieve the expected assertion failures.
+     * @param filename - the location of the testcase.xml file.
+     * @return the expected assertion failures.
+     */
+    protected List getExpectedAssertionFailures(String filename) {
+        List assertionFailures = new ArrayList();
+        try {
+            DocumentBuilder builder = DocumentBuilderFactory.newInstance().
+                    newDocumentBuilder();
+            Document doc = builder.parse(filename);
+            NodeList list = doc.getElementsByTagName("assertion");
+            if (list != null)
+                for (int i=0; i<list.getLength(); i++) {
+                    Element element = (Element)list.item(i);
+                    String tad = element.getAttribute("tadID");
+                    if ((tad != null) && tad.equals(this.tadID))
+                        assertionFailures.add(element.getAttribute("id"));
+                }
+        } catch (Exception e) {
+            assertionFailures = null;
+        }
+        return assertionFailures;
+    }
+
+    /**
+     * Compare the actual errors with the expected errors.
+     * @param errors the actual assertion failures
+     * @param expectedErrors the expected assertion failures
+     */
+    protected void analyzeResults(List errors, List expectedErrors) {
+        List actualErrors = new ArrayList();
+        if ((errors != null) && (expectedErrors != null)) {
+            Iterator i = errors.iterator();
+            while (i.hasNext()) {
+                AssertionError e = (AssertionError)i.next();
+                String assertionId = e.getAssertionID();
+                actualErrors.add(assertionId);
+
+                if (!expectedErrors.contains(assertionId)) {
+                    fail("Unexpected assertion failure: " + assertionId); 
+                }
+            }
+
+            i = expectedErrors.iterator();
+            while (i.hasNext()) {
+                String assertionId = (String)i.next();
+
+                if (!actualErrors.contains(assertionId)) {
+                    fail("Expected assertion failure: " + assertionId); 
+                }
+            }
+            assertEquals(expectedErrors.size(), errors.size());
+        }
+    }
+
+    /**
+     * Return the location of the given tad.
+     * @param tid the tad id.
+     * @return the location of the tad.
+     */
+    protected String getTADURI(String tid)
+    {
+        if (tid.equals(TAD_ID_AP))
+            return WSITestToolsProperties.AP_ASSERTION_FILE;
+        else
+            return WSITestToolsProperties.SSBP_ASSERTION_FILE;
+    }
+}
diff --git a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreMessageLogConformanceTest.java b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreMessageLogConformanceTest.java
new file mode 100644
index 0000000..25d5f73
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreMessageLogConformanceTest.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2002-2005 IBM 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:
+ *   IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsi.tests.internal;
+
+import java.util.List;
+
+import org.eclipse.wst.wsi.internal.WSIPreferences;
+import org.eclipse.wst.wsi.internal.WSITestToolsProperties;
+import org.eclipse.wst.wsi.internal.analyzer.MessageAnalyzer;
+
+public class CoreMessageLogConformanceTest extends CoreConformanceTest 
+{
+  public static final String MESSAGE_LOG_BASE_DIRECTORY =
+      "testResources/samples/messageLogs";
+  public static final String MESSAGE_LOG_EXTENSION = ".wsimsg";
+  public static final String WSDL_BASE_DIRECTORY = "testResources/samples/wsdl";
+  public static final String WSDL_EXTENSION = ".wsdl";
+
+  public CoreMessageLogConformanceTest(String name) 
+  {
+      super(name);
+  }
+
+  /**
+   * JUnit test: validate the message log against the specified WS-I Profile.
+   * @param tad he WS-I Test Assertion Document
+   * @param testName the name of the test containing the wsdl document
+   */
+  protected void runTest(String category, String testName, String tadID) {	
+      this.tadID = tadID;
+
+      assertNotNull("Problems determining base url", pluginURI);
+      String testDirectory  = pluginURI + MESSAGE_LOG_BASE_DIRECTORY + "/" +
+              category + "/" + testName;
+      String messageLogFile = "file://" + testDirectory + "/" + testName +
+              MESSAGE_LOG_EXTENSION;
+      String testcaseFile = testDirectory +  "/" + TEST_CASE_FILE;
+
+      // validate the message log document
+      MessageAnalyzer analyzer = validateConformance(messageLogFile, tadID);
+      assertNotNull("Unknown problems during validation", analyzer);
+
+      // retrieve the expected assertion failures
+      List expectedErrors = getExpectedAssertionFailures(testcaseFile);
+      assertNotNull("Problems retrieving expected failures", expectedErrors);
+
+      // compare the actual errors with the expected errors
+      analyzeResults(analyzer.getAssertionErrors(), expectedErrors);
+  }
+
+  /**
+   * Validate the wsdl document against the specified WS-I Profile.
+   * @param tad  the WS-I Test Assertion Document
+   * @param filename the wsdl document
+   * @return the WSDLAnalyzer object containing the validation results
+   */  
+  protected MessageAnalyzer validateConformance(String filename, String tadID) {
+      MessageAnalyzer analyzer = null;
+      try {
+          WSIPreferences preferences = new WSIPreferences();
+          preferences.setComplianceLevel( WSITestToolsProperties.STOP_NON_WSI);
+          preferences.setTADFile(getTADURI(tadID));
+
+          analyzer = new MessageAnalyzer(filename, preferences);
+
+          // run the conformance check and add errors and warnings as needed
+          analyzer.validateConformance();
+      } catch (Exception e) {
+          return null;
+      }	
+      return analyzer;
+  }
+
+  
+  
+  /**
+   * JUnit test: validate the message log with a WSDL file
+   * @param wsdlFile URI of the WSDL file
+   * @param WSData String array containing: elementname, namespace, parentname, type
+   * @param filename the name of the log and wsdl file (they should be located in the log and wsdl paths respectively)
+   */
+  
+  protected void runTestWithWSDL(String category, String testName, String[] WSData) {	
+
+      assertNotNull("Problems determining base url", pluginURI);
+      String testDirectory  = pluginURI + MESSAGE_LOG_BASE_DIRECTORY + "/" +
+              category + "/" + testName;
+      String messageLogFile = "file://" + testDirectory + "/" + testName +
+              MESSAGE_LOG_EXTENSION;
+      String testcaseFile = testDirectory +  "/" + TEST_CASE_FILE;
+      String wsdlFile = "file://" + pluginURI + WSDL_BASE_DIRECTORY + "/" + category + "/" + testName + WSDL_EXTENSION;
+      
+      // validate the message log document
+      MessageAnalyzer analyzer = validateConformanceWithWSDL(messageLogFile, wsdlFile, WSData);
+      assertNotNull("Unknown problems during validation", analyzer);
+
+      // retrieve the expected assertion failures
+      List expectedErrors = getExpectedAssertionFailures(testcaseFile);
+      assertNotNull("Problems retrieving expected failures", expectedErrors);
+
+      // compare the actual errors with the expected errors
+      analyzeResults(analyzer.getAssertionErrors(), expectedErrors);
+  }
+
+
+  /**
+   * Validate log with a WSDL file
+   * @param wsdlFile URI of the WSDL file
+   * @param WSData String array containing: elementname, namespace, parentname, type
+   * @param filename the name of the log and wsdl file (they should be located in the log and wsdl paths respectively)
+   * @return the WSDLAnalyzer object containing the validation results
+   */  
+
+	protected MessageAnalyzer validateConformanceWithWSDL(String filename, String wsdlFile, String[] WSData) {
+	    MessageAnalyzer analyzer = null;
+	    try {
+	        WSIPreferences preferences = new WSIPreferences();
+	        preferences.setComplianceLevel( WSITestToolsProperties.STOP_NON_WSI);
+	        preferences.setTADFile(getTADURI(tadID));
+	
+	        analyzer = new MessageAnalyzer(filename, wsdlFile, WSData[0],  WSData[1], WSData[2], WSData[3], preferences);
+	
+	        // run the conformance check and add errors and warnings as needed
+	        analyzer.validateConformance();
+	    } catch (Exception e) {
+	        return null;
+	    }	
+	    return analyzer;
+	}
+
+}
diff --git a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreWSDLConformanceTest.java b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreWSDLConformanceTest.java
index a97e9df..383384c 100644
--- a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreWSDLConformanceTest.java
+++ b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/CoreWSDLConformanceTest.java
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.wst.wsi.tests.internal;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
@@ -22,44 +21,24 @@
 import javax.wsdl.PortType;
 import javax.wsdl.Service;
 import javax.wsdl.xml.WSDLReader;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import junit.framework.TestCase;
 
 import org.eclipse.wst.wsi.internal.WSIPreferences;
 import org.eclipse.wst.wsi.internal.WSITestToolsProperties;
 import org.eclipse.wst.wsi.internal.analyzer.WSDLAnalyzer;
 import org.eclipse.wst.wsi.internal.core.wsdl.WSDLReaderImpl;
 import org.eclipse.wst.wsi.internal.core.xml.XMLUtils;
-import org.eclipse.wst.wsi.internal.report.AssertionError;
 import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
 
-public class CoreWSDLConformanceTest extends TestCase 
+public class CoreWSDLConformanceTest extends CoreConformanceTest 
 {
   public static final String WSDL_BASE_DIRECTORY = "testResources/samples/wsdl";
-  public static final String TEST_CASE_FILE = "testcase.xml";
   public static final String WSDL_EXTENSION = ".wsdl";
-  
-  public static final String TAD_ID_AP = "AP10";
-  public static final String TAD_ID_SSBP = "SSBP10";
-  
-  protected String pluginURI = null;
-  protected String tadID = TAD_ID_AP;
-  
+
   public CoreWSDLConformanceTest(String name) 
   {
       super(name);
-	  pluginURI = WSITestsPlugin.getInstallURL();
   }
 
-  protected void setup()
-  {
-	  
-  }
-  
   /**
    * JUnit test: validate the wsdl document against the specified WS-I Profile.
    * @param tad he WS-I Test Assertion Document
@@ -115,72 +94,6 @@
   }
   
   /**
-   * Retrieve the expected assertion failures.
-   * @param filename - the location of the testcase.xml file.
-   * @return the expected assertion failures.
-   */
-  protected List getExpectedAssertionFailures(String filename)
-  {
-	List assertionFailures = new ArrayList();
-    try
-	{
-	  DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-	  Document doc = builder.parse(filename);
-	  NodeList list = doc.getElementsByTagName("assertion");
-	  if (list != null)
-	  for (int i=0; i<list.getLength(); i++)
-	  {
-		Element element = (Element)list.item(i);
-		String tad = element.getAttribute("tadID");
-		if ((tad != null) && tad.equals(this.tadID))
-		   assertionFailures.add(element.getAttribute("id"));
-	  }
-	}
-	catch (Exception e)
-	{
-	  assertionFailures = null;
-	}
-	  return assertionFailures;
-  }
-  
-  /**
-   * Compare the actual errors with the expected errors.
-   * @param errors the actual assertion failures
-   * @param expectedErrors the expected assertion failures
-   */
-  protected void analyzeResults(List errors, List expectedErrors)
-  {
-	 List actualErrors = new ArrayList();
-	 if ((errors != null) && (expectedErrors != null))
-	 {
-       Iterator i = errors.iterator();
-       while (i.hasNext())
-	   {
-		 AssertionError e = (AssertionError)i.next();
-		 String assertionId = e.getAssertionID();
-		 actualErrors.add(assertionId);
-		 
-		 if (!expectedErrors.contains(assertionId))
-		 {
-			fail("Unexpected assertion failure: " + assertionId); 
-		 }
-	   }
-	   
-	   i = expectedErrors.iterator();
-       while (i.hasNext())
-	   {
-		 String assertionId = (String)i.next();
-		 
-		 if (!actualErrors.contains(assertionId))
-		 {
-			fail("Expected assertion failure: " + assertionId); 
-		 }
-	   }
-	   assertEquals(expectedErrors.size(), errors.size());
-	 }
-  }
-
-  /**
    * Gather configuration information from the WSDL file.
    * @param fileName the wsdl location.
    * @param a WSDLAnalyzer object containg configuration info.
@@ -273,17 +186,4 @@
       fail("Unexpected problems setting configurations");
 	}
   }
-  
-  /**
-   * Return the location of the given tad.
-   * @param tid the tad id.
-   * @return the location of the tad.
-   */
-  protected String getTADURI(String tid)
-  {
-	  if (tid.equals(TAD_ID_AP))
-	     return WSITestToolsProperties.AP_ASSERTION_FILE;
-	  else
-		 return WSITestToolsProperties.SSBP_ASSERTION_FILE;
-  }
 }
diff --git a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/MessageLogConformanceAPTest.java b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/MessageLogConformanceAPTest.java
new file mode 100644
index 0000000..a18d38a
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/MessageLogConformanceAPTest.java
@@ -0,0 +1,15 @@
+package org.eclipse.wst.wsi.tests.internal;
+
+/**
+ * JUnit tests that test message logs against the WS-I Attachments profile.
+ */
+public class MessageLogConformanceAPTest extends CoreMessageLogConformanceTest {
+
+    public MessageLogConformanceAPTest(String name) {
+        super(name);
+    }
+
+    public void test_1309_1() { runTest("bp", "1309-1", TAD_ID_AP); } 
+    public void test_1309_2() { runTest("bp", "1309-2", TAD_ID_AP); } 
+    public void test_1600_1() { runTest("bp", "1600-1", TAD_ID_AP); }
+}
diff --git a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/MessageLogConformanceSSBPTest.java b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/MessageLogConformanceSSBPTest.java
new file mode 100644
index 0000000..3e3927e
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/MessageLogConformanceSSBPTest.java
@@ -0,0 +1,17 @@
+package org.eclipse.wst.wsi.tests.internal;
+
+/**
+ * JUnit tests that test message logs against the WS-I Simple Soap Binding
+ * profile.
+ */
+public class MessageLogConformanceSSBPTest extends
+        CoreMessageLogConformanceTest {
+
+    public MessageLogConformanceSSBPTest(String name) {
+        super(name);
+    }
+    
+    public void test_1309_1() { runTest("bp", "1309-1", TAD_ID_SSBP); } 
+    public void test_1309_2() { runTest("bp", "1309-2", TAD_ID_SSBP); } 
+    public void test_1600_1() { runTest("bp", "1600-1", TAD_ID_SSBP); }
+}
diff --git a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/MessageLogConformanceSecureWSTest.java b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/MessageLogConformanceSecureWSTest.java
new file mode 100644
index 0000000..c523eca
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/MessageLogConformanceSecureWSTest.java
@@ -0,0 +1,29 @@
+package org.eclipse.wst.wsi.tests.internal;
+
+import org.eclipse.wst.wsi.internal.analyzer.MessageAnalyzer;
+
+
+
+/**
+ * JUnit tests that test message logs against the WS-I Attachments profile.
+ */
+public class MessageLogConformanceSecureWSTest extends CoreMessageLogConformanceTest {
+
+	public static final String DEFAULT_LOG_FILENAME = "log.wsimsg";
+	
+    public MessageLogConformanceSecureWSTest(String name) {
+        super(name);
+    }
+
+    public void test_SecureWS_NoSecuriy() { runTestWithWSDL("SecureWS", "NoSecurity", new String[] {"WebService", "http://main", "WebServiceService", "port"}); } 
+
+    public void test_SecureWS_Signature() { runTestWithWSDL("SecureWS", "Signature", new String[] {"WebService", "http://main", "WebServiceService", "port"}); } 
+    
+    public void test_SecureWS_Encryption() { runTestWithWSDL("SecureWS", "Encryption", new String[] {"WebService", "http://main", "WebServiceService", "port"}); }
+       
+    public void test_SecureWS_SignatureAndEncryption() { runTestWithWSDL("SecureWS", "SignatureAndEncryption", new String[] {"WebService", "http://main", "WebServiceService", "port"}); } 
+    
+
+
+
+}
diff --git a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/RegressionBucket.java b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/RegressionBucket.java
index 6192f9b..d01da9a 100644
--- a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/RegressionBucket.java
+++ b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/RegressionBucket.java
@@ -28,10 +28,15 @@
 	  public static Test suite() 
 	  {
 	    TestSuite suite= new TestSuite("Regression Bucket");
-	    if (tadIsAvailable(WSITestToolsProperties.SSBP_ASSERTION_FILE))
-	      suite.addTest(new TestSuite(WSDLConformanceSSBPTest.class));
-	    if (tadIsAvailable(WSITestToolsProperties.AP_ASSERTION_FILE))
-	      suite.addTest(new TestSuite(WSDLConformanceAPTest.class));
+	    if (tadIsAvailable(WSITestToolsProperties.SSBP_ASSERTION_FILE)) {
+              suite.addTest(new TestSuite(WSDLConformanceSSBPTest.class));
+              suite.addTest(new TestSuite(MessageLogConformanceSSBPTest.class));
+              suite.addTest(new TestSuite(MessageLogConformanceSecureWSTest.class));
+        }
+	    if (tadIsAvailable(WSITestToolsProperties.AP_ASSERTION_FILE)) {
+              suite.addTest(new TestSuite(WSDLConformanceAPTest.class));
+              suite.addTest(new TestSuite(MessageLogConformanceAPTest.class));
+        }
 	    
 	    return suite;
 	  }
diff --git a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/WSDLConformanceAPTest.java b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/WSDLConformanceAPTest.java
index 4bd4481..91f470a 100644
--- a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/WSDLConformanceAPTest.java
+++ b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/WSDLConformanceAPTest.java
@@ -23,7 +23,7 @@
 //ws-i wsdls
   public void test_addressBook() { runTest("wsi", "addressBook", TAD_ID_AP); }
   public void test_addressBook_rpc() { runTest("wsi", "addressBook-rpc", TAD_ID_AP); }
-  public void test_sampleAppCatalog() { runTest("wsi", "sampleAppCatalog", TAD_ID_AP); }  
+ // public void test_sampleAppCatalog() { runTest("wsi", "sampleAppCatalog", TAD_ID_AP); }  
   public void test_sampleAppManufacturer() { runTest("wsi", "sampleAppManufacturer", TAD_ID_AP); }  
   public void test_sampleAppWarehouse() { runTest("wsi", "sampleAppWarehouse", TAD_ID_AP); } 
 
@@ -52,6 +52,9 @@
   public void test_2117_3() { runTest("bp", "2117-3", TAD_ID_AP); }
   public void test_2406_1() { runTest("bp", "2406-1", TAD_ID_AP); }
 
+  // ap tests
+  public void test_2941_1() { runTest("ap", "2941-1", TAD_ID_AP); } 
+
   // redundant tests -- assertions failures caught by base wsdl validator.
   public void test_2010_1() { runTest("redundant", "2010-1", TAD_ID_AP); }
   public void test_2011_1() { runTest("redundant", "2011-1", TAD_ID_AP); } 
diff --git a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/WSDLConformanceSSBPTest.java b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/WSDLConformanceSSBPTest.java
index 9db221c..c20d540 100644
--- a/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/WSDLConformanceSSBPTest.java
+++ b/tests/org.eclipse.wst.wsi.tests/src/org/eclipse/wst/wsi/tests/internal/WSDLConformanceSSBPTest.java
@@ -23,7 +23,7 @@
   // ws-i wsdls
   public void test_addressBook() { runTest("wsi", "addressBook", TAD_ID_SSBP); }
   public void test_addressBook_rpc() { runTest("wsi", "addressBook-rpc", TAD_ID_SSBP); }
-  public void test_sampleAppCatalog() { runTest("wsi", "sampleAppCatalog", TAD_ID_SSBP); }  
+  //public void test_sampleAppCatalog() { runTest("wsi", "sampleAppCatalog", TAD_ID_SSBP); }  
   public void test_sampleAppManufacturer() { runTest("wsi", "sampleAppManufacturer", TAD_ID_SSBP); }  
   public void test_sampleAppWarehouse() { runTest("wsi", "sampleAppWarehouse", TAD_ID_SSBP); } 
 
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Encryption/Encryption.wsimsg b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Encryption/Encryption.wsimsg
new file mode 100644
index 0000000..4986058
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Encryption/Encryption.wsimsg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<log timestamp="2007-01-16T12:15:58.325"
+    xmlns="http://www.ws-i.org/testing/2004/07/log/"
+    xmlns:wsi-monConfig="http://www.ws-i.org/testing/2004/07/monitorConfig/"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <monitor version="1.0" releaseDate="2003-03-20">
+    <implementer name="IBM" location=""/>
+    <environment>
+      <runtime name="Java(TM) 2 Runtime Environment, Standard Edition" version="pwi32dev-20061002a (SR3)"/>
+      <operatingSystem name="Windows XP" version="5.1 build 2600 Service Pack 2"/>
+      <xmlParser name="Apache Xerces" version="XML4J 4.4.6"/>
+    </environment>
+    <wsi-monConfig:configuration>
+    <wsi-monConfig:comment>Comment</wsi-monConfig:comment>
+      <wsi-monConfig:logFile replace="true" location="URL">
+      <wsi-monConfig:addStyleSheet href="null" type="null" />
+    </wsi-monConfig:logFile>
+      <wsi-monConfig:logDuration>600</wsi-monConfig:logDuration>
+      <wsi-monConfig:cleanupTimeoutSeconds>3</wsi-monConfig:cleanupTimeoutSeconds>
+      <wsi-monConfig:manInTheMiddle>
+      </wsi-monConfig:manInTheMiddle>
+    </wsi-monConfig:configuration>
+  </monitor>
+
+<messageEntry xsi:type="httpMessageEntry" ID="1" conversationID="1" type="request" timestamp="2007-01-16T10:47:30.653Z">
+<messageContent>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;&lt;soapenv:Header&gt;&lt;wsse:Security soapenv:mustUnderstand=&quot;1&quot; xmlns:wsse=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&quot;&gt;&lt;EncryptedKey xmlns=&quot;http://www.w3.org/2001/04/xmlenc#&quot;&gt;&lt;EncryptionMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#rsa-1_5&quot;/&gt;&lt;ds:KeyInfo xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;&lt;wsse:SecurityTokenReference&gt;&lt;wsse:KeyIdentifier ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier&quot;&gt;/62wXObED7z6c1yX7QkvN1thQdY=&lt;/wsse:KeyIdentifier&gt;&lt;/wsse:SecurityTokenReference&gt;&lt;/ds:KeyInfo&gt;&lt;CipherData&gt;&lt;CipherValue&gt;jqdoeKEKKqXgQnvWzDO/WyHPb35UYWRzzwyXAvSHFYThg3O8YM7HbfYF5JUAv89bii8HuT/52oEXRvLOdAFIPUlYE0nRSH+JCb/tin+3XDlqm0HSb/pjzxKG074llcHftvRzhsJ2R+CSzXi9pCoxGVTbLR9MhcsWx1i/VvDPLZE=&lt;/CipherValue&gt;&lt;/CipherData&gt;&lt;ReferenceList&gt;&lt;DataReference URI=&quot;#wssecurity_encryption_id_0&quot;/&gt;&lt;/ReferenceList&gt;&lt;/EncryptedKey&gt;&lt;/wsse:Security&gt;&lt;wsa:To&gt;http://localhost:9082/WebProjectWithEncription/services/WebService&lt;/wsa:To&gt;&lt;wsa:Action&gt;increment&lt;/wsa:Action&gt;&lt;wsa:MessageID&gt;uuid:2B9757CC-0110-4000-E000-035C091A9DD9&lt;/wsa:MessageID&gt;&lt;/soapenv:Header&gt;&lt;soapenv:Body&gt;&lt;EncryptedData Id=&quot;wssecurity_encryption_id_0&quot; Type=&quot;http://www.w3.org/2001/04/xmlenc#Content&quot; xmlns=&quot;http://www.w3.org/2001/04/xmlenc#&quot;&gt;&lt;EncryptionMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#tripledes-cbc&quot;/&gt;&lt;CipherData&gt;&lt;CipherValue&gt;vdU42sOo6/Wv1V3roMIVpbJuvgsIEx6mOwlNWDrr8jgkKv65VBCv2WIMASwHZVLZZAqJ4zgiEV9rpCXs7Qj+8GMfmVR9VZYvKK5j5HEv1xbzB0HPOsa5BA==&lt;/CipherValue&gt;&lt;/CipherData&gt;&lt;/EncryptedData&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:9082</senderHostAndPort>
+<receiverHostAndPort>localhost:9080</receiverHostAndPort>
+<httpHeaders>POST /WebProjectWithEncription/services/WebService HTTP/1.1&#xd;
+Host: localhost:9080&#xd;
+Accept: application/soap+xml,multipart/related,text/*&#xd;
+User-Agent: IBM WebServices/1.0&#xd;
+Cache-Control: no-cache&#xd;
+Pragma: no-cache&#xd;
+SOAPAction: &quot;increment&quot;&#xd;
+Connection: Keep-Alive&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Content-Length: 1871&#xd;
+Date: Tue, 16 Jan 2007 15:47:30 GMT&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+<messageEntry xsi:type="httpMessageEntry" ID="2" conversationID="1" type="response" timestamp="2007-01-16T10:47:31.074Z">
+<messageContent>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;&lt;soapenv:Header&gt;&lt;wsse:Security soapenv:mustUnderstand=&quot;1&quot; xmlns:wsse=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&quot;&gt;&lt;EncryptedKey xmlns=&quot;http://www.w3.org/2001/04/xmlenc#&quot;&gt;&lt;EncryptionMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#rsa-1_5&quot;/&gt;&lt;ds:KeyInfo xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;&lt;wsse:SecurityTokenReference&gt;&lt;wsse:KeyIdentifier ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier&quot;&gt;tyBU3qQufYZ71tJAU7gVIqgROuQ=&lt;/wsse:KeyIdentifier&gt;&lt;/wsse:SecurityTokenReference&gt;&lt;/ds:KeyInfo&gt;&lt;CipherData&gt;&lt;CipherValue&gt;PVUO0afdAuOYFP1nMvezP6UqY4rIo83xPGJ4rW+s7NkPOHdErD/tmbtbG8uXAyeT4iLXM/K2+fSylni8GFiJZkxoz08kMEd19/6aeafbA0izU9DVAUKRM/ehCg2KCYi2wXhQajYfkQuFMGumA9VKVgrY7Ndu7f/Yc/pmIWtQ/so=&lt;/CipherValue&gt;&lt;/CipherData&gt;&lt;ReferenceList&gt;&lt;DataReference URI=&quot;#wssecurity_encryption_id_1&quot;/&gt;&lt;/ReferenceList&gt;&lt;/EncryptedKey&gt;&lt;/wsse:Security&gt;&lt;wsa:To&gt;http://www.w3.org/2005/08/addressing/anonymous&lt;/wsa:To&gt;&lt;wsa:Action&gt;http://main/WebService/incrementResponse&lt;/wsa:Action&gt;&lt;wsa:MessageID&gt;uuid:2B977678-0110-4000-E000-035C091A9DD9&lt;/wsa:MessageID&gt;&lt;wsa:RelatesTo&gt;uuid:2B9757CC-0110-4000-E000-035C091A9DD9&lt;/wsa:RelatesTo&gt;&lt;/soapenv:Header&gt;&lt;soapenv:Body&gt;&lt;EncryptedData Id=&quot;wssecurity_encryption_id_1&quot; Type=&quot;http://www.w3.org/2001/04/xmlenc#Content&quot; xmlns=&quot;http://www.w3.org/2001/04/xmlenc#&quot;&gt;&lt;EncryptionMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#tripledes-cbc&quot;/&gt;&lt;CipherData&gt;&lt;CipherValue&gt;RDSS9LpkpIu5lWOZr+hfsEzNouljD6/NRIfsYPH0XCtwpom4an/gZS1vl5u9r5DZUuq+WpSJOpe8Ns9mqZljCFJvVmMLGb+kC3ig7jEJCvbqc78qDIQCmgLPOrcl1Q0ZSlh25Ax73de4HWWOPJQjKPHZYopcU8MK&lt;/CipherValue&gt;&lt;/CipherData&gt;&lt;/EncryptedData&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:9080</senderHostAndPort>
+<receiverHostAndPort>localhost:9082</receiverHostAndPort>
+<httpHeaders>HTTP/1.1 200 OK&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Content-Language: en-US&#xd;
+Content-Length: 1994&#xd;
+Date: Tue, 16 Jan 2007 15:47:30 GMT&#xd;
+Server: WebSphere Application Server/6.1&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+</log>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Encryption/testcase.xml b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Encryption/testcase.xml
new file mode 100644
index 0000000..2995808
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Encryption/testcase.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testcase name="Encryption">
+  <description>
+    This is an example of a message log file that contains a message with encryption.
+  </description>
+  <expectedFailures/>
+</testcase>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/NoSecurity/NoSecurity.wsimsg b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/NoSecurity/NoSecurity.wsimsg
new file mode 100644
index 0000000..20c92a9
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/NoSecurity/NoSecurity.wsimsg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<log timestamp="2007-01-16T18:14:06.005"
+    xmlns="http://www.ws-i.org/testing/2004/07/log/"
+    xmlns:wsi-monConfig="http://www.ws-i.org/testing/2004/07/monitorConfig/"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <monitor version="1.0" releaseDate="2003-03-20">
+    <implementer name="IBM" location=""/>
+    <environment>
+      <runtime name="Java(TM) 2 Runtime Environment, Standard Edition" version="pwi32dev-20061002a (SR3)"/>
+      <operatingSystem name="Windows XP" version="5.1 build 2600 Service Pack 2"/>
+      <xmlParser name="Apache Xerces" version="XML4J 4.4.6"/>
+    </environment>
+    <wsi-monConfig:configuration>
+    <wsi-monConfig:comment>Comment</wsi-monConfig:comment>
+      <wsi-monConfig:logFile replace="true" location="URL">
+      <wsi-monConfig:addStyleSheet href="null" type="null" />
+    </wsi-monConfig:logFile>
+      <wsi-monConfig:logDuration>600</wsi-monConfig:logDuration>
+      <wsi-monConfig:cleanupTimeoutSeconds>3</wsi-monConfig:cleanupTimeoutSeconds>
+      <wsi-monConfig:manInTheMiddle>
+      </wsi-monConfig:manInTheMiddle>
+    </wsi-monConfig:configuration>
+  </monitor>
+
+<messageEntry xsi:type="httpMessageEntry" ID="1" conversationID="1" type="request" timestamp="2007-01-16T18:13:52.836Z">
+<messageContent>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;&lt;soapenv:Header&gt;&lt;wsa:To&gt;http://localhost:9082/WebProjectNoSecurity/services/WebService&lt;/wsa:To&gt;&lt;wsa:Action&gt;increment&lt;/wsa:Action&gt;&lt;wsa:MessageID&gt;uuid:2D301EA6-0110-4000-E000-035C091A9DD9&lt;/wsa:MessageID&gt;&lt;/soapenv:Header&gt;&lt;soapenv:Body&gt;&lt;p619:increment xmlns:p619=&quot;http://main&quot;&gt;&lt;value&gt;1&lt;/value&gt;&lt;/p619:increment&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:9082</senderHostAndPort>
+<receiverHostAndPort>localhost:9080</receiverHostAndPort>
+<httpHeaders>POST /WebProjectNoSecurity/services/WebService HTTP/1.1&#xd;
+Host: localhost:9080&#xd;
+Accept: application/soap+xml,multipart/related,text/*&#xd;
+User-Agent: IBM WebServices/1.0&#xd;
+Cache-Control: no-cache&#xd;
+Pragma: no-cache&#xd;
+SOAPAction: &quot;increment&quot;&#xd;
+Connection: Keep-Alive&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Content-Length: 622&#xd;
+Date: Tue, 16 Jan 2007 23:13:52 GMT&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+<messageEntry xsi:type="httpMessageEntry" ID="2" conversationID="1" type="response" timestamp="2007-01-16T18:13:52.976Z">
+<messageContent>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;&lt;soapenv:Header&gt;&lt;wsa:To&gt;http://www.w3.org/2005/08/addressing/anonymous&lt;/wsa:To&gt;&lt;wsa:Action&gt;http://main/WebService/incrementResponse&lt;/wsa:Action&gt;&lt;wsa:MessageID&gt;uuid:2D301F50-0110-4000-E000-035C091A9DD9&lt;/wsa:MessageID&gt;&lt;wsa:RelatesTo&gt;uuid:2D301EA6-0110-4000-E000-035C091A9DD9&lt;/wsa:RelatesTo&gt;&lt;/soapenv:Header&gt;&lt;soapenv:Body&gt;&lt;p619:incrementResponse xmlns:p619=&quot;http://main&quot;&gt;&lt;incrementReturn&gt;2&lt;/incrementReturn&gt;&lt;/p619:incrementResponse&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:9080</senderHostAndPort>
+<receiverHostAndPort>localhost:9082</receiverHostAndPort>
+<httpHeaders>HTTP/1.1 200 OK&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Content-Language: en-US&#xd;
+Content-Length: 745&#xd;
+Date: Tue, 16 Jan 2007 23:13:52 GMT&#xd;
+Server: WebSphere Application Server/6.1&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+</log>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/NoSecurity/testcase.xml b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/NoSecurity/testcase.xml
new file mode 100644
index 0000000..5befda8
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/NoSecurity/testcase.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testcase name="Encryption">
+  <description>
+    This is an example of a message log file that contains a message with no security.
+  </description>
+  <expectedFailures/>
+</testcase>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Signature/Signature.wsimsg b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Signature/Signature.wsimsg
new file mode 100644
index 0000000..6cd05ed
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Signature/Signature.wsimsg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<log timestamp="2007-01-16T18:08:38.524"
+    xmlns="http://www.ws-i.org/testing/2004/07/log/"
+    xmlns:wsi-monConfig="http://www.ws-i.org/testing/2004/07/monitorConfig/"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <monitor version="1.0" releaseDate="2003-03-20">
+    <implementer name="IBM" location=""/>
+    <environment>
+      <runtime name="Java(TM) 2 Runtime Environment, Standard Edition" version="pwi32dev-20061002a (SR3)"/>
+      <operatingSystem name="Windows XP" version="5.1 build 2600 Service Pack 2"/>
+      <xmlParser name="Apache Xerces" version="XML4J 4.4.6"/>
+    </environment>
+    <wsi-monConfig:configuration>
+    <wsi-monConfig:comment>Comment</wsi-monConfig:comment>
+      <wsi-monConfig:logFile replace="true" location="URL">
+      <wsi-monConfig:addStyleSheet href="null" type="null" />
+    </wsi-monConfig:logFile>
+      <wsi-monConfig:logDuration>600</wsi-monConfig:logDuration>
+      <wsi-monConfig:cleanupTimeoutSeconds>3</wsi-monConfig:cleanupTimeoutSeconds>
+      <wsi-monConfig:manInTheMiddle>
+      </wsi-monConfig:manInTheMiddle>
+    </wsi-monConfig:configuration>
+  </monitor>
+
+<messageEntry xsi:type="httpMessageEntry" ID="1" conversationID="1" type="request" timestamp="2007-01-16T18:08:26.006Z">
+<messageContent>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;&lt;soapenv:Header&gt;&lt;wsse:Security soapenv:mustUnderstand=&quot;1&quot; xmlns:wsse=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&quot;&gt;&lt;wsse:BinarySecurityToken EncodingType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary&quot; ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509&quot; wsu:Id=&quot;x509bst_16&quot; xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot;&gt;MIIDQTCCAqqgAwIBAgICAQQwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCSlAxETAPBgNVBAgTCEthbmFnYXdhMQwwCgYDVQQKEwNJQk0xDDAKBgNVBAsTA1RSTDEQMA4GA1UEAxMHSW50IENBMjAeFw0wMTEwMDEwOTU0MDZaFw0xMTEwMDEwOTU0MDZaMFQxCzAJBgNVBAYTAkpQMREwDwYDVQQIEwhLYW5hZ2F3YTEMMAoGA1UEChMDSUJNMQwwCgYDVQQLEwNUUkwxFjAUBgNVBAMTDVNPQVBSZXF1ZXN0ZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMy3PfZ1mPhrEsBvYiOuIlPV3Uis5Yy6hmxo2YwYC2nNDBPzKslWUi/Q+fK+DNdY6KEHmuDrcVcEma48J9X1a5avRlksQfKptKoVn4eBys2i/wkwyzQhDaFji79/MvnTRW8EVy99FNKw4PFnhOoe1tlDcNBuIH/fIuGOz9ElTV+fAgMBAAGjggEmMIIBIjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFIW3FD1cXie4j4zw1gAp4cuOAZ4lMIG6BgNVHSMEgbIwga+AFL35INU4+WRy09vaf9zOsP7QvO9voYGSpIGPMIGMMQswCQYDVQQGEwJKUDERMA8GA1UECBMIS2FuYWdhd2ExDzANBgNVBAcTBllhbWF0bzEMMAoGA1UEChMDSUJNMQwwCgYDVQQLEwNUUkwxGTAXBgNVBAMTEFNPQVAgMi4xIFRlc3QgQ0ExIjAgBgkqhkiG9w0BCQEWE21hcnV5YW1hQGpwLmlibS5jb22CAgEBMA0GCSqGSIb3DQEBBQUAA4GBAHkthdGDgCvdIL9/vXUo74xpfOQd/rr1owBmMdb1TWdOyzwbOHC7lkUlnKrkI7SofwSLSDUP571iiMXUx3tRdmAVCoDMMFuDXh9V7212luXccx0s1S5KN0D3xW97LLNegQC0/b+aFD8XKw2U5ZtwbnFTRgs097dmz09RosDKkLlM&lt;/wsse:BinarySecurityToken&gt;&lt;ds:Signature xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;&lt;ds:SignedInfo&gt;&lt;ds:CanonicalizationMethod Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;&gt;&lt;ec:InclusiveNamespaces PrefixList=&quot;xsi xsd wsa soapenv soapenc wsse ds &quot; xmlns:ec=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&gt;&lt;/ds:CanonicalizationMethod&gt;&lt;ds:SignatureMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&quot;/&gt;&lt;ds:Reference URI=&quot;#wssecurity_signature_id_15&quot;&gt;&lt;ds:Transforms&gt;&lt;ds:Transform Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;&gt;&lt;ec:InclusiveNamespaces PrefixList=&quot;xsi xsd wsa soapenv soapenc wsu p619 &quot; xmlns:ec=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&gt;&lt;/ds:Transform&gt;&lt;/ds:Transforms&gt;&lt;ds:DigestMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#sha1&quot;/&gt;&lt;ds:DigestValue&gt;dHNCiEcqxXYSDrbBk3ahCatzwKg=&lt;/ds:DigestValue&gt;&lt;/ds:Reference&gt;&lt;/ds:SignedInfo&gt;&lt;ds:SignatureValue&gt;O6miQ9l6amWnaWi5VWxogwy6GJKMSudmhs417/qGO9yZvAtcGxpAHIrEOWzE/Mt/pFMH3lUKlRW13KvGlmRUuMqMrdkpEhD5tgCQZArT0XWEaUZek+MmmfMhCnB8aAlEpTIaRcWp/0RnNdJXozkyjboT7ouUSIJN/KtmBhMWlkg=&lt;/ds:SignatureValue&gt;&lt;ds:KeyInfo&gt;&lt;wsse:SecurityTokenReference&gt;&lt;wsse:Reference URI=&quot;#x509bst_16&quot; ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509&quot;/&gt;&lt;/wsse:SecurityTokenReference&gt;&lt;/ds:KeyInfo&gt;&lt;/ds:Signature&gt;&lt;/wsse:Security&gt;&lt;wsa:To&gt;http://localhost:9082/WebProjectWithSignature/services/WebService&lt;/wsa:To&gt;&lt;wsa:Action&gt;increment&lt;/wsa:Action&gt;&lt;wsa:MessageID&gt;uuid:2D2B21BC-0110-4000-E000-035C091A9DD9&lt;/wsa:MessageID&gt;&lt;/soapenv:Header&gt;&lt;soapenv:Body wsu:Id=&quot;wssecurity_signature_id_15&quot; xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot;&gt;&lt;p619:increment xmlns:p619=&quot;http://main&quot;&gt;&lt;value&gt;1&lt;/value&gt;&lt;/p619:increment&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:9082</senderHostAndPort>
+<receiverHostAndPort>localhost:9080</receiverHostAndPort>
+<httpHeaders>POST /WebProjectWithSignature/services/WebService HTTP/1.1&#xd;
+Host: localhost:9080&#xd;
+Accept: application/soap+xml,multipart/related,text/*&#xd;
+User-Agent: IBM WebServices/1.0&#xd;
+Cache-Control: no-cache&#xd;
+Pragma: no-cache&#xd;
+SOAPAction: &quot;increment&quot;&#xd;
+Connection: Keep-Alive&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Content-Length: 3672&#xd;
+Date: Tue, 16 Jan 2007 23:08:25 GMT&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+<messageEntry xsi:type="httpMessageEntry" ID="2" conversationID="1" type="response" timestamp="2007-01-16T18:08:26.126Z">
+<messageContent>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;&lt;soapenv:Header&gt;&lt;wsse:Security soapenv:mustUnderstand=&quot;1&quot; xmlns:wsse=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&quot;&gt;&lt;wsse:BinarySecurityToken EncodingType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary&quot; ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509&quot; wsu:Id=&quot;x509bst_18&quot; xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot;&gt;MIIDQDCCAqmgAwIBAgICAQUwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCSlAxETAPBgNVBAgTCEthbmFnYXdhMQwwCgYDVQQKEwNJQk0xDDAKBgNVBAsTA1RSTDEQMA4GA1UEAxMHSW50IENBMjAeFw0wMTEwMDExMDAwMzlaFw0xMTEwMDExMDAwMzlaMFMxCzAJBgNVBAYTAkpQMREwDwYDVQQIEwhLYW5hZ2F3YTEMMAoGA1UEChMDSUJNMQwwCgYDVQQLEwNUUkwxFTATBgNVBAMTDFNPQVBQcm92aWRlcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAraakNJ1JzkPUuvPdXRvPOOCl12nBwmqvt65dk/x+QzxxarDNwH+eWRbLyyKcrAyd0XGV+Zbvj6V3O9DSVCZUCJttw6bbqqeYhwAP3V8s24sID77tk3gOhUTEGYxsljX2orL26SLqFJMrvnvk2FRS2mrdkZEBUG97mD4QWcln4d0CAwEAAaOCASYwggEiMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUlXSsrVRfZOLGdJdjEIwTbuSTe4UwgboGA1UdIwSBsjCBr4AUvfkg1Tj5ZHLT29p/3M6w/tC872+hgZKkgY8wgYwxCzAJBgNVBAYTAkpQMREwDwYDVQQIEwhLYW5hZ2F3YTEPMA0GA1UEBxMGWWFtYXRvMQwwCgYDVQQKEwNJQk0xDDAKBgNVBAsTA1RSTDEZMBcGA1UEAxMQU09BUCAyLjEgVGVzdCBDQTEiMCAGCSqGSIb3DQEJARYTbWFydXlhbWFAanAuaWJtLmNvbYICAQEwDQYJKoZIhvcNAQEFBQADgYEAXE7mE1RPb3lYAYJFzBb3VAHvkCWa/HQtCOZdyniCHp3MJ9EbNTq+QpOHV60YE8u0+5SejCzFSOHOpyBgLPjWoz8JXQnjV7VcAbTglw+ZoOSYy64rfhRdr9giSs47F4D6woPsAd2ubg/YhMaXLTSyGxPdV3VqQsutuSgDUDoqWCA=&lt;/wsse:BinarySecurityToken&gt;&lt;ds:Signature xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;&lt;ds:SignedInfo&gt;&lt;ds:CanonicalizationMethod Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;&gt;&lt;ec:InclusiveNamespaces PrefixList=&quot;xsi xsd wsa soapenv soapenc wsse ds &quot; xmlns:ec=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&gt;&lt;/ds:CanonicalizationMethod&gt;&lt;ds:SignatureMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&quot;/&gt;&lt;ds:Reference URI=&quot;#wssecurity_signature_id_17&quot;&gt;&lt;ds:Transforms&gt;&lt;ds:Transform Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;&gt;&lt;ec:InclusiveNamespaces PrefixList=&quot;xsi xsd wsa soapenv soapenc wsu p619 &quot; xmlns:ec=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&gt;&lt;/ds:Transform&gt;&lt;/ds:Transforms&gt;&lt;ds:DigestMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#sha1&quot;/&gt;&lt;ds:DigestValue&gt;toHD25ng+LU4/TJVnXSw4qqYfOg=&lt;/ds:DigestValue&gt;&lt;/ds:Reference&gt;&lt;/ds:SignedInfo&gt;&lt;ds:SignatureValue&gt;k6V0J3rVaIN5zkrklNNlzAslLdbI4pIIbBXh4L8oh477URpIW9k1Qp3ccaaGEoJazeogyq8YqWGliJD0f5qfZz7oBq6BRi2JxB63Ez1IxfXm0uBZRNRGx9IVpdA0y4iVyFiAgUR5e7cJTy/Xun7tLqmN3XrGH0dvdqFTOKzi/Ws=&lt;/ds:SignatureValue&gt;&lt;ds:KeyInfo&gt;&lt;wsse:SecurityTokenReference&gt;&lt;wsse:Reference URI=&quot;#x509bst_18&quot; ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509&quot;/&gt;&lt;/wsse:SecurityTokenReference&gt;&lt;/ds:KeyInfo&gt;&lt;/ds:Signature&gt;&lt;/wsse:Security&gt;&lt;wsa:To&gt;http://www.w3.org/2005/08/addressing/anonymous&lt;/wsa:To&gt;&lt;wsa:Action&gt;http://main/WebService/incrementResponse&lt;/wsa:Action&gt;&lt;wsa:MessageID&gt;uuid:2D2B227A-0110-4000-E000-035C091A9DD9&lt;/wsa:MessageID&gt;&lt;wsa:RelatesTo&gt;uuid:2D2B21BC-0110-4000-E000-035C091A9DD9&lt;/wsa:RelatesTo&gt;&lt;/soapenv:Header&gt;&lt;soapenv:Body wsu:Id=&quot;wssecurity_signature_id_17&quot; xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot;&gt;&lt;p619:incrementResponse xmlns:p619=&quot;http://main&quot;&gt;&lt;incrementReturn&gt;2&lt;/incrementReturn&gt;&lt;/p619:incrementResponse&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:9080</senderHostAndPort>
+<receiverHostAndPort>localhost:9082</receiverHostAndPort>
+<httpHeaders>HTTP/1.1 200 OK&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Content-Language: en-US&#xd;
+Content-Length: 3792&#xd;
+Date: Tue, 16 Jan 2007 23:08:25 GMT&#xd;
+Server: WebSphere Application Server/6.1&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+</log>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Signature/testcase.xml b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Signature/testcase.xml
new file mode 100644
index 0000000..708b88a
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/Signature/testcase.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testcase name="Encryption">
+  <description>
+    This is an example of a message log file that contains a message with signature.
+  </description>
+  <expectedFailures/>
+</testcase>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/SignatureAndEncryption/SignatureAndEncryption.wsimsg b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/SignatureAndEncryption/SignatureAndEncryption.wsimsg
new file mode 100644
index 0000000..58e6310
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/SignatureAndEncryption/SignatureAndEncryption.wsimsg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<log timestamp="2007-01-16T18:20:09.878"
+    xmlns="http://www.ws-i.org/testing/2004/07/log/"
+    xmlns:wsi-monConfig="http://www.ws-i.org/testing/2004/07/monitorConfig/"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <monitor version="1.0" releaseDate="2003-03-20">
+    <implementer name="IBM" location=""/>
+    <environment>
+      <runtime name="Java(TM) 2 Runtime Environment, Standard Edition" version="pwi32dev-20061002a (SR3)"/>
+      <operatingSystem name="Windows XP" version="5.1 build 2600 Service Pack 2"/>
+      <xmlParser name="Apache Xerces" version="XML4J 4.4.6"/>
+    </environment>
+    <wsi-monConfig:configuration>
+    <wsi-monConfig:comment>Comment</wsi-monConfig:comment>
+      <wsi-monConfig:logFile replace="true" location="URL">
+      <wsi-monConfig:addStyleSheet href="null" type="null" />
+    </wsi-monConfig:logFile>
+      <wsi-monConfig:logDuration>600</wsi-monConfig:logDuration>
+      <wsi-monConfig:cleanupTimeoutSeconds>3</wsi-monConfig:cleanupTimeoutSeconds>
+      <wsi-monConfig:manInTheMiddle>
+      </wsi-monConfig:manInTheMiddle>
+    </wsi-monConfig:configuration>
+  </monitor>
+
+<messageEntry xsi:type="httpMessageEntry" ID="1" conversationID="1" type="request" timestamp="2007-01-16T18:19:58.061Z">
+<messageContent>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;&lt;soapenv:Header&gt;&lt;wsse:Security soapenv:mustUnderstand=&quot;1&quot; xmlns:wsse=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&quot;&gt;&lt;wsse:BinarySecurityToken EncodingType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary&quot; ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509&quot; wsu:Id=&quot;x509bst_20&quot; xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot;&gt;MIIDQTCCAqqgAwIBAgICAQQwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCSlAxETAPBgNVBAgTCEthbmFnYXdhMQwwCgYDVQQKEwNJQk0xDDAKBgNVBAsTA1RSTDEQMA4GA1UEAxMHSW50IENBMjAeFw0wMTEwMDEwOTU0MDZaFw0xMTEwMDEwOTU0MDZaMFQxCzAJBgNVBAYTAkpQMREwDwYDVQQIEwhLYW5hZ2F3YTEMMAoGA1UEChMDSUJNMQwwCgYDVQQLEwNUUkwxFjAUBgNVBAMTDVNPQVBSZXF1ZXN0ZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMy3PfZ1mPhrEsBvYiOuIlPV3Uis5Yy6hmxo2YwYC2nNDBPzKslWUi/Q+fK+DNdY6KEHmuDrcVcEma48J9X1a5avRlksQfKptKoVn4eBys2i/wkwyzQhDaFji79/MvnTRW8EVy99FNKw4PFnhOoe1tlDcNBuIH/fIuGOz9ElTV+fAgMBAAGjggEmMIIBIjAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFIW3FD1cXie4j4zw1gAp4cuOAZ4lMIG6BgNVHSMEgbIwga+AFL35INU4+WRy09vaf9zOsP7QvO9voYGSpIGPMIGMMQswCQYDVQQGEwJKUDERMA8GA1UECBMIS2FuYWdhd2ExDzANBgNVBAcTBllhbWF0bzEMMAoGA1UEChMDSUJNMQwwCgYDVQQLEwNUUkwxGTAXBgNVBAMTEFNPQVAgMi4xIFRlc3QgQ0ExIjAgBgkqhkiG9w0BCQEWE21hcnV5YW1hQGpwLmlibS5jb22CAgEBMA0GCSqGSIb3DQEBBQUAA4GBAHkthdGDgCvdIL9/vXUo74xpfOQd/rr1owBmMdb1TWdOyzwbOHC7lkUlnKrkI7SofwSLSDUP571iiMXUx3tRdmAVCoDMMFuDXh9V7212luXccx0s1S5KN0D3xW97LLNegQC0/b+aFD8XKw2U5ZtwbnFTRgs097dmz09RosDKkLlM&lt;/wsse:BinarySecurityToken&gt;&lt;EncryptedKey xmlns=&quot;http://www.w3.org/2001/04/xmlenc#&quot;&gt;&lt;EncryptionMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#rsa-1_5&quot;/&gt;&lt;ds:KeyInfo xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;&lt;wsse:SecurityTokenReference&gt;&lt;wsse:KeyIdentifier ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier&quot;&gt;/62wXObED7z6c1yX7QkvN1thQdY=&lt;/wsse:KeyIdentifier&gt;&lt;/wsse:SecurityTokenReference&gt;&lt;/ds:KeyInfo&gt;&lt;CipherData&gt;&lt;CipherValue&gt;guuArIgK20ZQklsNkcj1XzaCmStg+0rx59teuD2pEAXeRvKbCTzkfglRvX8Cn/DiTBYNexbNhvOljX/sue5UKJA5JsmhSCjssGfswJjYXZnRcncAwCTxfottIqawWQF165Baz87uOR0yY7aGimOHipE7SNkR5ll/8AhmwV5gGWk=&lt;/CipherValue&gt;&lt;/CipherData&gt;&lt;ReferenceList&gt;&lt;DataReference URI=&quot;#wssecurity_encryption_id_21&quot;/&gt;&lt;/ReferenceList&gt;&lt;/EncryptedKey&gt;&lt;ds:Signature xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;&lt;ds:SignedInfo&gt;&lt;ds:CanonicalizationMethod Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;&gt;&lt;ec:InclusiveNamespaces PrefixList=&quot;xsi xsd wsa soapenv soapenc wsse ds &quot; xmlns:ec=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&gt;&lt;/ds:CanonicalizationMethod&gt;&lt;ds:SignatureMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&quot;/&gt;&lt;ds:Reference URI=&quot;#wssecurity_signature_id_19&quot;&gt;&lt;ds:Transforms&gt;&lt;ds:Transform Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;&gt;&lt;ec:InclusiveNamespaces PrefixList=&quot;xsi xsd wsa soapenv soapenc wsu p619 &quot; xmlns:ec=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&gt;&lt;/ds:Transform&gt;&lt;/ds:Transforms&gt;&lt;ds:DigestMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#sha1&quot;/&gt;&lt;ds:DigestValue&gt;Oz4zg1AS9dypLRkyllY9IXNtOAU=&lt;/ds:DigestValue&gt;&lt;/ds:Reference&gt;&lt;/ds:SignedInfo&gt;&lt;ds:SignatureValue&gt;GoRB2eClHj7kn4VsyBQYWveMFlxQFk5aoXE/PWFsBCVmTGzyRw+IsZmDxyMPP1Evt5mzIIVsapt5fjFXzq5lkKJEQp+t8TvdRWSIK+UB/jXxuUtkmt+ZSeKWjcecRtTZtdGoLy0A/06xj+bAWV4iG6ffLuP26YhG8Ys+qJB4ZGU=&lt;/ds:SignatureValue&gt;&lt;ds:KeyInfo&gt;&lt;wsse:SecurityTokenReference&gt;&lt;wsse:Reference URI=&quot;#x509bst_20&quot; ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509&quot;/&gt;&lt;/wsse:SecurityTokenReference&gt;&lt;/ds:KeyInfo&gt;&lt;/ds:Signature&gt;&lt;/wsse:Security&gt;&lt;wsa:To&gt;http://localhost:9082/WebProjectWithSignatureAndEncryption/services/WebService&lt;/wsa:To&gt;&lt;wsa:Action&gt;increment&lt;/wsa:Action&gt;&lt;wsa:MessageID&gt;uuid:2D35B109-0110-4000-E000-035C091A9DD9&lt;/wsa:MessageID&gt;&lt;/soapenv:Header&gt;&lt;soapenv:Body wsu:Id=&quot;wssecurity_signature_id_19&quot; xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot;&gt;&lt;EncryptedData Id=&quot;wssecurity_encryption_id_21&quot; Type=&quot;http://www.w3.org/2001/04/xmlenc#Content&quot; xmlns=&quot;http://www.w3.org/2001/04/xmlenc#&quot;&gt;&lt;EncryptionMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#tripledes-cbc&quot;/&gt;&lt;CipherData&gt;&lt;CipherValue&gt;ddAkxtyaufLLc13ePe1tDSiCQz+h5HL2QN0gV6hc6R3i3WqKo5gQBzwU8JsZWbp9vQ1VMrQYme2TYHjszKncCZzxIvSbjLZ7nMOuWFF7Ad8p67cWm/mPJw==&lt;/CipherValue&gt;&lt;/CipherData&gt;&lt;/EncryptedData&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:9082</senderHostAndPort>
+<receiverHostAndPort>localhost:9080</receiverHostAndPort>
+<httpHeaders>POST /WebProjectWithSignatureAndEncryption/services/WebService HTTP/1.1&#xd;
+Host: localhost:9080&#xd;
+Accept: application/soap+xml,multipart/related,text/*&#xd;
+User-Agent: IBM WebServices/1.0&#xd;
+Cache-Control: no-cache&#xd;
+Pragma: no-cache&#xd;
+SOAPAction: &quot;increment&quot;&#xd;
+Connection: Keep-Alive&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Content-Length: 4779&#xd;
+Date: Tue, 16 Jan 2007 23:19:57 GMT&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+<messageEntry xsi:type="httpMessageEntry" ID="2" conversationID="1" type="response" timestamp="2007-01-16T18:19:58.291Z">
+<messageContent>&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:soapenc=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;&lt;soapenv:Header&gt;&lt;wsse:Security soapenv:mustUnderstand=&quot;1&quot; xmlns:wsse=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&quot;&gt;&lt;wsse:BinarySecurityToken EncodingType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary&quot; ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509&quot; wsu:Id=&quot;x509bst_23&quot; xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot;&gt;MIIDQDCCAqmgAwIBAgICAQUwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCSlAxETAPBgNVBAgTCEthbmFnYXdhMQwwCgYDVQQKEwNJQk0xDDAKBgNVBAsTA1RSTDEQMA4GA1UEAxMHSW50IENBMjAeFw0wMTEwMDExMDAwMzlaFw0xMTEwMDExMDAwMzlaMFMxCzAJBgNVBAYTAkpQMREwDwYDVQQIEwhLYW5hZ2F3YTEMMAoGA1UEChMDSUJNMQwwCgYDVQQLEwNUUkwxFTATBgNVBAMTDFNPQVBQcm92aWRlcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAraakNJ1JzkPUuvPdXRvPOOCl12nBwmqvt65dk/x+QzxxarDNwH+eWRbLyyKcrAyd0XGV+Zbvj6V3O9DSVCZUCJttw6bbqqeYhwAP3V8s24sID77tk3gOhUTEGYxsljX2orL26SLqFJMrvnvk2FRS2mrdkZEBUG97mD4QWcln4d0CAwEAAaOCASYwggEiMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUlXSsrVRfZOLGdJdjEIwTbuSTe4UwgboGA1UdIwSBsjCBr4AUvfkg1Tj5ZHLT29p/3M6w/tC872+hgZKkgY8wgYwxCzAJBgNVBAYTAkpQMREwDwYDVQQIEwhLYW5hZ2F3YTEPMA0GA1UEBxMGWWFtYXRvMQwwCgYDVQQKEwNJQk0xDDAKBgNVBAsTA1RSTDEZMBcGA1UEAxMQU09BUCAyLjEgVGVzdCBDQTEiMCAGCSqGSIb3DQEJARYTbWFydXlhbWFAanAuaWJtLmNvbYICAQEwDQYJKoZIhvcNAQEFBQADgYEAXE7mE1RPb3lYAYJFzBb3VAHvkCWa/HQtCOZdyniCHp3MJ9EbNTq+QpOHV60YE8u0+5SejCzFSOHOpyBgLPjWoz8JXQnjV7VcAbTglw+ZoOSYy64rfhRdr9giSs47F4D6woPsAd2ubg/YhMaXLTSyGxPdV3VqQsutuSgDUDoqWCA=&lt;/wsse:BinarySecurityToken&gt;&lt;EncryptedKey xmlns=&quot;http://www.w3.org/2001/04/xmlenc#&quot;&gt;&lt;EncryptionMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#rsa-1_5&quot;/&gt;&lt;ds:KeyInfo xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;&lt;wsse:SecurityTokenReference&gt;&lt;wsse:KeyIdentifier ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier&quot;&gt;tyBU3qQufYZ71tJAU7gVIqgROuQ=&lt;/wsse:KeyIdentifier&gt;&lt;/wsse:SecurityTokenReference&gt;&lt;/ds:KeyInfo&gt;&lt;CipherData&gt;&lt;CipherValue&gt;Y1nJ/cSHzoQRnFQ8xy0oYwMAZe+W2jbkmWFMrqGS/98FQxponuK9TKVQRb7NU1bMwSoNYMmpNjbn3OFmwQgVXxsxgFuJHSw7UYXf2cSWcdq9ALXMR7O4MOK32KOV38GgmQ4FRGhwjpXTpPjmRJ/OK5fKoNbRtwH2j9eiarkYwMU=&lt;/CipherValue&gt;&lt;/CipherData&gt;&lt;ReferenceList&gt;&lt;DataReference URI=&quot;#wssecurity_encryption_id_24&quot;/&gt;&lt;/ReferenceList&gt;&lt;/EncryptedKey&gt;&lt;ds:Signature xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot;&gt;&lt;ds:SignedInfo&gt;&lt;ds:CanonicalizationMethod Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;&gt;&lt;ec:InclusiveNamespaces PrefixList=&quot;xsi xsd wsa soapenv soapenc wsse ds &quot; xmlns:ec=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&gt;&lt;/ds:CanonicalizationMethod&gt;&lt;ds:SignatureMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#rsa-sha1&quot;/&gt;&lt;ds:Reference URI=&quot;#wssecurity_signature_id_22&quot;&gt;&lt;ds:Transforms&gt;&lt;ds:Transform Algorithm=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;&gt;&lt;ec:InclusiveNamespaces PrefixList=&quot;xsi xsd wsa soapenv soapenc wsu p619 &quot; xmlns:ec=&quot;http://www.w3.org/2001/10/xml-exc-c14n#&quot;/&gt;&lt;/ds:Transform&gt;&lt;/ds:Transforms&gt;&lt;ds:DigestMethod Algorithm=&quot;http://www.w3.org/2000/09/xmldsig#sha1&quot;/&gt;&lt;ds:DigestValue&gt;SrvVwlKUw7h9gwQVgZtwzHBde3Y=&lt;/ds:DigestValue&gt;&lt;/ds:Reference&gt;&lt;/ds:SignedInfo&gt;&lt;ds:SignatureValue&gt;rRzWsKDh+FDyG7xoyed7gUBXairWG/nNdvLER4w5/YfYQAcLFVGMNc24fl1IsVzEpZfErZlu4kwZyHjptGEDVR4Nh4cr+ZOJXVmpVOtxOvbJNl4pjLU1/N3wlQyYIG0qBrEmFILs3RLWk1+XeE2NlKVWAlJCDGYmNdErrrZh0kE=&lt;/ds:SignatureValue&gt;&lt;ds:KeyInfo&gt;&lt;wsse:SecurityTokenReference&gt;&lt;wsse:Reference URI=&quot;#x509bst_23&quot; ValueType=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509&quot;/&gt;&lt;/wsse:SecurityTokenReference&gt;&lt;/ds:KeyInfo&gt;&lt;/ds:Signature&gt;&lt;/wsse:Security&gt;&lt;wsa:To&gt;http://www.w3.org/2005/08/addressing/anonymous&lt;/wsa:To&gt;&lt;wsa:Action&gt;http://main/WebService/incrementResponse&lt;/wsa:Action&gt;&lt;wsa:MessageID&gt;uuid:2D35B23F-0110-4000-E000-035C091A9DD9&lt;/wsa:MessageID&gt;&lt;wsa:RelatesTo&gt;uuid:2D35B109-0110-4000-E000-035C091A9DD9&lt;/wsa:RelatesTo&gt;&lt;/soapenv:Header&gt;&lt;soapenv:Body wsu:Id=&quot;wssecurity_signature_id_22&quot; xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot;&gt;&lt;EncryptedData Id=&quot;wssecurity_encryption_id_24&quot; Type=&quot;http://www.w3.org/2001/04/xmlenc#Content&quot; xmlns=&quot;http://www.w3.org/2001/04/xmlenc#&quot;&gt;&lt;EncryptionMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#tripledes-cbc&quot;/&gt;&lt;CipherData&gt;&lt;CipherValue&gt;7YeEI9CMtj0DjpFLypjBMpxRAgdmnnq3d8320kBvMhrQub/AHyPw6k1Wajb8IQ5nGBfNIrC4m0FehtZXUESXyjPfbSGF7scOjr1wxzN4VARz/tWnuXSyZQx6LmJ7KopMeqvymdP03hihsiEZFK8SLBIaGcmlmAHi&lt;/CipherValue&gt;&lt;/CipherData&gt;&lt;/EncryptedData&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:9080</senderHostAndPort>
+<receiverHostAndPort>localhost:9082</receiverHostAndPort>
+<httpHeaders>HTTP/1.1 200 OK&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Content-Language: en-US&#xd;
+Content-Length: 4890&#xd;
+Date: Tue, 16 Jan 2007 23:19:57 GMT&#xd;
+Server: WebSphere Application Server/6.1&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+</log>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/SignatureAndEncryption/testcase.xml b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/SignatureAndEncryption/testcase.xml
new file mode 100644
index 0000000..0450ced
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/SecureWS/SignatureAndEncryption/testcase.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testcase name="Encryption">
+  <description>
+    This is an example of a message log file that contains a message with signature and encryption.
+  </description>
+  <expectedFailures/>
+</testcase>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-1/1309-1.wsimsg b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-1/1309-1.wsimsg
new file mode 100644
index 0000000..7593603
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-1/1309-1.wsimsg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<log timestamp="2006-04-13T18:52:32.488"
+    xmlns="http://www.ws-i.org/testing/2004/07/log/"
+    xmlns:wsi-monConfig="http://www.ws-i.org/testing/2004/07/monitorConfig/"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <monitor version="1.0" releaseDate="2003-03-20">
+    <implementer name="IBM" location=""/>
+    <environment>
+      <runtime name="Java(TM) 2 Runtime Environment, Standard Edition" version="1.4.2"/>
+      <operatingSystem name="Linux" version="2.6.15.1"/>
+      <xmlParser name="Apache Xerces" version="XML4J 4.3.6"/>
+    </environment>
+    <wsi-monConfig:configuration>
+    <wsi-monConfig:comment>Comment</wsi-monConfig:comment>
+      <wsi-monConfig:logFile replace="true" location="URL">
+      <wsi-monConfig:addStyleSheet href="null" type="null" />
+    </wsi-monConfig:logFile>
+      <wsi-monConfig:logDuration>600</wsi-monConfig:logDuration>
+      <wsi-monConfig:cleanupTimeoutSeconds>3</wsi-monConfig:cleanupTimeoutSeconds>
+      <wsi-monConfig:manInTheMiddle>
+      </wsi-monConfig:manInTheMiddle>
+    </wsi-monConfig:configuration>
+  </monitor>
+
+<messageEntry xsi:type="httpMessageEntry" ID="1" conversationID="1" type="request" timestamp="2006-04-13T18:51:30.193Z">
+<messageContent>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;&lt;soapenv:Body&gt;&lt;celsiusToFarenheit xmlns=&quot;http://wtp&quot;&gt;&lt;celsius&gt;37.0&lt;/celsius&gt;&lt;/celsiusToFarenheit&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:8185</senderHostAndPort>
+<receiverHostAndPort>localhost:8080</receiverHostAndPort>
+<httpHeaders>POST /ConverterProj/services/Converter HTTP/1.0&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Accept: application/soap+xml, application/dime, multipart/related, text/*&#xd;
+User-Agent: Axis/1.2.1&#xd;
+Host: localhost:8080&#xd;
+Cache-Control: no-cache&#xd;
+Pragma: no-cache&#xd;
+SOAPAction: &quot;&quot;&#xd;
+Content-Length: 344&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+<messageEntry xsi:type="httpMessageEntry" ID="2" conversationID="1" type="response" timestamp="2006-04-13T18:51:30.960Z">
+<messageContent>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;&lt;soapenv:Body&gt;&lt;celsiusToFarenheitResponse xmlns=&quot;http://wtp&quot;&gt;&lt;celsiusToFarenheitReturn&gt;98.6&lt;/celsiusToFarenheitReturn&gt;&lt;/celsiusToFarenheitResponse&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:8080</senderHostAndPort>
+<receiverHostAndPort>localhost:8185</receiverHostAndPort>
+<httpHeaders>HTTP/1.1 200 OK&#xd;
+Content-Type: text/xml;charset=utf-8&#xd;
+Date: Thu, 13 Apr 2006 18:51:30 GMT&#xd;
+Server: Apache-Coyote/1.1&#xd;
+Connection: close&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+</log>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-1/testcase.xml b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-1/testcase.xml
new file mode 100644
index 0000000..aef615a
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-1/testcase.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testcase name="1309-1">
+  <description>
+    This is an example of a message log file that is conformant to requirement
+    1011.
+  </description>
+  <expectedFailures/>
+</testcase>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-2/1309-2.wsimsg b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-2/1309-2.wsimsg
new file mode 100644
index 0000000..cf820be
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-2/1309-2.wsimsg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<log timestamp="2006-04-13T18:52:32.488"
+    xmlns="http://www.ws-i.org/testing/2004/07/log/"
+    xmlns:wsi-monConfig="http://www.ws-i.org/testing/2004/07/monitorConfig/"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <monitor version="1.0" releaseDate="2003-03-20">
+    <implementer name="IBM" location=""/>
+    <environment>
+      <runtime name="Java(TM) 2 Runtime Environment, Standard Edition" version="1.4.2"/>
+      <operatingSystem name="Linux" version="2.6.15.1"/>
+      <xmlParser name="Apache Xerces" version="XML4J 4.3.6"/>
+    </environment>
+    <wsi-monConfig:configuration>
+    <wsi-monConfig:comment>Comment</wsi-monConfig:comment>
+      <wsi-monConfig:logFile replace="true" location="URL">
+      <wsi-monConfig:addStyleSheet href="null" type="null" />
+    </wsi-monConfig:logFile>
+      <wsi-monConfig:logDuration>600</wsi-monConfig:logDuration>
+      <wsi-monConfig:cleanupTimeoutSeconds>3</wsi-monConfig:cleanupTimeoutSeconds>
+      <wsi-monConfig:manInTheMiddle>
+      </wsi-monConfig:manInTheMiddle>
+    </wsi-monConfig:configuration>
+  </monitor>
+
+<messageEntry xsi:type="httpMessageEntry" ID="1" conversationID="1" type="request" timestamp="2006-04-13T18:51:30.193Z">
+<messageContent>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;&lt;soapenv:Body&gt;&lt;celsiusToFarenheit xmlns=&quot;http://wtp&quot;&gt;&lt;celsius&gt;37.0&lt;/celsius&gt;&lt;/celsiusToFarenheit&gt;&lt;/soapenv:Body&gt;&lt;soapenv:badChild/&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:8185</senderHostAndPort>
+<receiverHostAndPort>localhost:8080</receiverHostAndPort>
+<httpHeaders>POST /ConverterProj/services/Converter HTTP/1.0&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Accept: application/soap+xml, application/dime, multipart/related, text/*&#xd;
+User-Agent: Axis/1.2.1&#xd;
+Host: localhost:8080&#xd;
+Cache-Control: no-cache&#xd;
+Pragma: no-cache&#xd;
+SOAPAction: &quot;&quot;&#xd;
+Content-Length: 344&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+<messageEntry xsi:type="httpMessageEntry" ID="2" conversationID="1" type="response" timestamp="2006-04-13T18:51:30.960Z">
+<messageContent>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;&lt;soapenv:Body&gt;&lt;celsiusToFarenheitResponse xmlns=&quot;http://wtp&quot;&gt;&lt;celsiusToFarenheitReturn&gt;98.6&lt;/celsiusToFarenheitReturn&gt;&lt;/celsiusToFarenheitResponse&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:8080</senderHostAndPort>
+<receiverHostAndPort>localhost:8185</receiverHostAndPort>
+<httpHeaders>HTTP/1.1 200 OK&#xd;
+Content-Type: text/xml;charset=utf-8&#xd;
+Date: Thu, 13 Apr 2006 18:51:30 GMT&#xd;
+Server: Apache-Coyote/1.1&#xd;
+Connection: close&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+</log>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-2/testcase.xml b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-2/testcase.xml
new file mode 100644
index 0000000..82f9c77
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1309-2/testcase.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testcase name="1309-2">
+  <description>
+    This is an example of a message log file with children following the
+    soap:Body element, thus breaking requirement 1011.
+  </description>
+  <expectedFailures>
+	<assertion id="BP1309" tadID="SSBP10"/>
+	<assertion id="BP1309" tadID="AP10"/>
+  </expectedFailures>
+</testcase>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1600-1/1600-1.wsimsg b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1600-1/1600-1.wsimsg
new file mode 100644
index 0000000..07af68d
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1600-1/1600-1.wsimsg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<log timestamp="2006-04-13T18:52:32.488"
+    xmlns="http://www.ws-i.org/testing/2004/07/log/"
+    xmlns:wsi-monConfig="http://www.ws-i.org/testing/2004/07/monitorConfig/"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <monitor version="1.0" releaseDate="2003-03-20">
+    <implementer name="IBM" location=""/>
+    <environment>
+      <runtime name="Java(TM) 2 Runtime Environment, Standard Edition" version="1.4.2"/>
+      <operatingSystem name="Linux" version="2.6.15.1"/>
+      <xmlParser name="Apache Xerces" version="XML4J 4.3.6"/>
+    </environment>
+    <wsi-monConfig:configuration>
+    <wsi-monConfig:comment>Comment</wsi-monConfig:comment>
+      <wsi-monConfig:logFile replace="true" location="URL">
+      <wsi-monConfig:addStyleSheet href="null" type="null" />
+    </wsi-monConfig:logFile>
+      <wsi-monConfig:logDuration>600</wsi-monConfig:logDuration>
+      <wsi-monConfig:cleanupTimeoutSeconds>3</wsi-monConfig:cleanupTimeoutSeconds>
+      <wsi-monConfig:manInTheMiddle>
+      </wsi-monConfig:manInTheMiddle>
+    </wsi-monConfig:configuration>
+  </monitor>
+
+<messageEntry xsi:type="httpMessageEntry" ID="1" conversationID="1" type="request" timestamp="2006-04-13T18:51:30.193Z">
+<messageContent>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;&lt;soapenv:Header xmlns:test=&quot;http://wtp/test1600-1&quot;&gt;&lt;test:testElement/&gt;&lt;/soapenv:Header&gt;&lt;soapenv:Body&gt;&lt;celsiusToFarenheit xmlns=&quot;http://wtp&quot;&gt;&lt;celsius&gt;37.0&lt;/celsius&gt;&lt;/celsiusToFarenheit&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:8185</senderHostAndPort>
+<receiverHostAndPort>localhost:8080</receiverHostAndPort>
+<httpHeaders>POST /ConverterProj/services/Converter HTTP/1.0&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Accept: application/soap+xml, application/dime, multipart/related, text/*&#xd;
+User-Agent: Axis/1.2.1&#xd;
+Host: localhost:8080&#xd;
+Cache-Control: no-cache&#xd;
+Pragma: no-cache&#xd;
+SOAPAction: &quot;&quot;&#xd;
+Content-Length: 344&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+<messageEntry xsi:type="httpMessageEntry" ID="2" conversationID="1" type="response" timestamp="2006-04-13T18:51:30.960Z">
+<messageContent>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;&lt;soapenv:Body&gt;&lt;celsiusToFarenheitResponse xmlns=&quot;http://wtp&quot;&gt;&lt;celsiusToFarenheitReturn&gt;98.6&lt;/celsiusToFarenheitReturn&gt;&lt;/celsiusToFarenheitResponse&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:8080</senderHostAndPort>
+<receiverHostAndPort>localhost:8185</receiverHostAndPort>
+<httpHeaders>HTTP/1.1 200 OK&#xd;
+Content-Type: text/xml;charset=utf-8&#xd;
+Date: Thu, 13 Apr 2006 18:51:30 GMT&#xd;
+Server: Apache-Coyote/1.1&#xd;
+Connection: close&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+</log>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1600-1/testcase.xml b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1600-1/testcase.xml
new file mode 100644
index 0000000..5536d80
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bp/1600-1/testcase.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testcase name="1600-1">
+  <description>
+    This is an example of a message log file that contains a message with a
+    header entry whose namespace is defined in the soap:header element.  This
+    is confirmant to requirement 9980 in the Basic Profile but is currently
+    flagged as a conformance error.
+  </description>
+  <expectedFailures/>
+</testcase>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bugzilla/141966/141966.wsimsg b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bugzilla/141966/141966.wsimsg
new file mode 100644
index 0000000..4245fa8
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bugzilla/141966/141966.wsimsg
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<log timestamp="2006-04-13T18:52:32.488"
+    xmlns="http://www.ws-i.org/testing/2004/07/log/"
+    xmlns:wsi-monConfig="http://www.ws-i.org/testing/2004/07/monitorConfig/"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <monitor version="1.0" releaseDate="2003-03-20">
+    <implementer name="IBM" location=""/>
+    <environment>
+      <runtime name="Java(TM) 2 Runtime Environment, Standard Edition" version="1.4.2"/>
+      <operatingSystem name="Linux" version="2.6.15.1"/>
+      <xmlParser name="Apache Xerces" version="XML4J 4.3.6"/>
+    </environment>
+    <wsi-monConfig:configuration>
+    <wsi-monConfig:comment>Comment</wsi-monConfig:comment>
+      <wsi-monConfig:logFile replace="true" location="URL">
+      <wsi-monConfig:addStyleSheet href="null" type="null" />
+    </wsi-monConfig:logFile>
+      <wsi-monConfig:logDuration>600</wsi-monConfig:logDuration>
+      <wsi-monConfig:cleanupTimeoutSeconds>3</wsi-monConfig:cleanupTimeoutSeconds>
+      <wsi-monConfig:manInTheMiddle>
+      </wsi-monConfig:manInTheMiddle>
+    </wsi-monConfig:configuration>
+  </monitor>
+
+<messageEntry xsi:type="httpMessageEntry" ID="1" conversationID="1" type="request" timestamp="2006-04-13T18:51:30.193Z">
+<messageContent>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;&lt;soapenv:Body&gt;&lt;celsiusToFarenheit xmlns=&quot;http://wtp&quot;&gt;&lt;celsius&gt;37.0&lt;/celsius&gt;&lt;/celsiusToFarenheit&gt;&lt;/soapenv:Body&gt;&lt;soapenv:badChild/&gt;&lt;/soapenv:Envelope&gt;</messageContent>
+<senderHostAndPort>localhost:8185</senderHostAndPort>
+<receiverHostAndPort>localhost:8080</receiverHostAndPort>
+<httpHeaders>POST /ConverterProj/services/Converter HTTP/1.1&#xd;
+Content-Type: text/xml; charset=utf-8&#xd;
+Accept: application/soap+xml, application/dime, multipart/related, text/*&#xd;
+User-Agent: Axis/1.2.1&#xd;
+Host: localhost:8080&#xd;
+Cache-Control: no-cache&#xd;
+Pragma: no-cache&#xd;
+SOAPAction: &quot;&quot;&#xd;
+Content-Length: 344&#xd;
+&#xd;
+</httpHeaders>
+</messageEntry>
+</log>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bugzilla/141966/testcase.xml b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bugzilla/141966/testcase.xml
new file mode 100644
index 0000000..65281b0
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/messageLogs/bugzilla/141966/testcase.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testcase name="141966">
+  <description>
+    This is an example of a message log file that contains only a request and
+    breaks requirement 1011.
+  </description>
+  <expectedFailures>
+	<assertion id="BP1309" tadID="SSBP10"/>
+	<assertion id="BP1309" tadID="AP10"/>
+  </expectedFailures>
+</testcase>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/Encryption.wsdl b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/Encryption.wsdl
new file mode 100644
index 0000000..6b96364
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/Encryption.wsdl
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://main" xmlns:impl="http://main" xmlns:intf="http://main" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsi="http://ws-i.org/profiles/basic/1.1/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <wsdl:types>
+  <schema targetNamespace="http://main" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+   <element name="incrementResponse">
+    <complexType>
+     <sequence>
+      <element name="incrementReturn" type="xsd:int"/>
+     </sequence>
+    </complexType>
+   </element>
+   <element name="increment">
+    <complexType>
+     <sequence>
+      <element name="value" type="xsd:int"/>
+     </sequence>
+    </complexType>
+   </element>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="incrementResponse">
+     <wsdl:part element="intf:incrementResponse" name="parameters"/>
+
+  </wsdl:message>
+
+   <wsdl:message name="incrementRequest">
+     <wsdl:part element="intf:increment" name="parameters"/>
+
+  </wsdl:message>
+
+   <wsdl:portType name="WebService">
+     <wsdl:operation name="increment">
+       <wsdl:input message="intf:incrementRequest" name="incrementRequest"/>
+
+       <wsdl:output message="intf:incrementResponse" name="incrementResponse"/>
+
+    </wsdl:operation>
+
+  </wsdl:portType>
+
+   <wsdl:binding name="WebServiceSoapBinding" type="intf:WebService">
+ <wsaw:UsingAddressing wsdl:required="false" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"/>
+
+     <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+     <wsdl:operation name="increment">
+       <wsdlsoap:operation soapAction="increment"/>
+
+       <wsdl:input name="incrementRequest">
+         <wsdlsoap:body use="literal"/>
+
+      </wsdl:input>
+
+       <wsdl:output name="incrementResponse">
+         <wsdlsoap:body use="literal"/>
+
+      </wsdl:output>
+
+    </wsdl:operation>
+
+  </wsdl:binding>
+
+   <wsdl:service name="WebServiceService">
+     <wsdl:port binding="intf:WebServiceSoapBinding" name="WebService">
+       <wsdlsoap:address location="http://localhost:9080/WebProjectWithEncription/services/WebService"/>
+
+    </wsdl:port>
+
+  </wsdl:service>
+
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/NoSecurity.wsdl b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/NoSecurity.wsdl
new file mode 100644
index 0000000..6b96364
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/NoSecurity.wsdl
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://main" xmlns:impl="http://main" xmlns:intf="http://main" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsi="http://ws-i.org/profiles/basic/1.1/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <wsdl:types>
+  <schema targetNamespace="http://main" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+   <element name="incrementResponse">
+    <complexType>
+     <sequence>
+      <element name="incrementReturn" type="xsd:int"/>
+     </sequence>
+    </complexType>
+   </element>
+   <element name="increment">
+    <complexType>
+     <sequence>
+      <element name="value" type="xsd:int"/>
+     </sequence>
+    </complexType>
+   </element>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="incrementResponse">
+     <wsdl:part element="intf:incrementResponse" name="parameters"/>
+
+  </wsdl:message>
+
+   <wsdl:message name="incrementRequest">
+     <wsdl:part element="intf:increment" name="parameters"/>
+
+  </wsdl:message>
+
+   <wsdl:portType name="WebService">
+     <wsdl:operation name="increment">
+       <wsdl:input message="intf:incrementRequest" name="incrementRequest"/>
+
+       <wsdl:output message="intf:incrementResponse" name="incrementResponse"/>
+
+    </wsdl:operation>
+
+  </wsdl:portType>
+
+   <wsdl:binding name="WebServiceSoapBinding" type="intf:WebService">
+ <wsaw:UsingAddressing wsdl:required="false" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"/>
+
+     <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+     <wsdl:operation name="increment">
+       <wsdlsoap:operation soapAction="increment"/>
+
+       <wsdl:input name="incrementRequest">
+         <wsdlsoap:body use="literal"/>
+
+      </wsdl:input>
+
+       <wsdl:output name="incrementResponse">
+         <wsdlsoap:body use="literal"/>
+
+      </wsdl:output>
+
+    </wsdl:operation>
+
+  </wsdl:binding>
+
+   <wsdl:service name="WebServiceService">
+     <wsdl:port binding="intf:WebServiceSoapBinding" name="WebService">
+       <wsdlsoap:address location="http://localhost:9080/WebProjectWithEncription/services/WebService"/>
+
+    </wsdl:port>
+
+  </wsdl:service>
+
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/Signature.wsdl b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/Signature.wsdl
new file mode 100644
index 0000000..6b96364
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/Signature.wsdl
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://main" xmlns:impl="http://main" xmlns:intf="http://main" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsi="http://ws-i.org/profiles/basic/1.1/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <wsdl:types>
+  <schema targetNamespace="http://main" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+   <element name="incrementResponse">
+    <complexType>
+     <sequence>
+      <element name="incrementReturn" type="xsd:int"/>
+     </sequence>
+    </complexType>
+   </element>
+   <element name="increment">
+    <complexType>
+     <sequence>
+      <element name="value" type="xsd:int"/>
+     </sequence>
+    </complexType>
+   </element>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="incrementResponse">
+     <wsdl:part element="intf:incrementResponse" name="parameters"/>
+
+  </wsdl:message>
+
+   <wsdl:message name="incrementRequest">
+     <wsdl:part element="intf:increment" name="parameters"/>
+
+  </wsdl:message>
+
+   <wsdl:portType name="WebService">
+     <wsdl:operation name="increment">
+       <wsdl:input message="intf:incrementRequest" name="incrementRequest"/>
+
+       <wsdl:output message="intf:incrementResponse" name="incrementResponse"/>
+
+    </wsdl:operation>
+
+  </wsdl:portType>
+
+   <wsdl:binding name="WebServiceSoapBinding" type="intf:WebService">
+ <wsaw:UsingAddressing wsdl:required="false" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"/>
+
+     <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+     <wsdl:operation name="increment">
+       <wsdlsoap:operation soapAction="increment"/>
+
+       <wsdl:input name="incrementRequest">
+         <wsdlsoap:body use="literal"/>
+
+      </wsdl:input>
+
+       <wsdl:output name="incrementResponse">
+         <wsdlsoap:body use="literal"/>
+
+      </wsdl:output>
+
+    </wsdl:operation>
+
+  </wsdl:binding>
+
+   <wsdl:service name="WebServiceService">
+     <wsdl:port binding="intf:WebServiceSoapBinding" name="WebService">
+       <wsdlsoap:address location="http://localhost:9080/WebProjectWithEncription/services/WebService"/>
+
+    </wsdl:port>
+
+  </wsdl:service>
+
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/SignatureAndEncryption.wsdl b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/SignatureAndEncryption.wsdl
new file mode 100644
index 0000000..6b96364
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/SecureWS/SignatureAndEncryption.wsdl
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://main" xmlns:impl="http://main" xmlns:intf="http://main" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsi="http://ws-i.org/profiles/basic/1.1/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <wsdl:types>
+  <schema targetNamespace="http://main" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+   <element name="incrementResponse">
+    <complexType>
+     <sequence>
+      <element name="incrementReturn" type="xsd:int"/>
+     </sequence>
+    </complexType>
+   </element>
+   <element name="increment">
+    <complexType>
+     <sequence>
+      <element name="value" type="xsd:int"/>
+     </sequence>
+    </complexType>
+   </element>
+  </schema>
+ </wsdl:types>
+
+   <wsdl:message name="incrementResponse">
+     <wsdl:part element="intf:incrementResponse" name="parameters"/>
+
+  </wsdl:message>
+
+   <wsdl:message name="incrementRequest">
+     <wsdl:part element="intf:increment" name="parameters"/>
+
+  </wsdl:message>
+
+   <wsdl:portType name="WebService">
+     <wsdl:operation name="increment">
+       <wsdl:input message="intf:incrementRequest" name="incrementRequest"/>
+
+       <wsdl:output message="intf:incrementResponse" name="incrementResponse"/>
+
+    </wsdl:operation>
+
+  </wsdl:portType>
+
+   <wsdl:binding name="WebServiceSoapBinding" type="intf:WebService">
+ <wsaw:UsingAddressing wsdl:required="false" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"/>
+
+     <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+     <wsdl:operation name="increment">
+       <wsdlsoap:operation soapAction="increment"/>
+
+       <wsdl:input name="incrementRequest">
+         <wsdlsoap:body use="literal"/>
+
+      </wsdl:input>
+
+       <wsdl:output name="incrementResponse">
+         <wsdlsoap:body use="literal"/>
+
+      </wsdl:output>
+
+    </wsdl:operation>
+
+  </wsdl:binding>
+
+   <wsdl:service name="WebServiceService">
+     <wsdl:port binding="intf:WebServiceSoapBinding" name="WebService">
+       <wsdlsoap:address location="http://localhost:9080/WebProjectWithEncription/services/WebService"/>
+
+    </wsdl:port>
+
+  </wsdl:service>
+
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/ap/2941-1/2941-1.wsdl b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/ap/2941-1/2941-1.wsdl
new file mode 100644
index 0000000..eb4e00f
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/ap/2941-1/2941-1.wsdl
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:intf="http://tempuri.org/" xmlns:impl="http://tempuri.org/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:intf="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+   <element name="findAddress">
+    <complexType>
+     <sequence>
+      <element name="name" nillable="true" type="xsd:string"/>
+     </sequence>
+    </complexType>
+   </element>
+   <complexType name="Address">
+    <sequence>
+     <element name="province" nillable="true" type="xsd:string"/>
+     <element name="city" nillable="true" type="xsd:string"/>
+     <element name="street" nillable="true" type="xsd:string"/>
+     <element name="postalCode" nillable="true" type="xsd:string"/>
+     <element name="phoneNumber" nillable="true" type="impl:PhoneNumber"/>
+    </sequence>
+   </complexType>
+   <complexType name="PhoneNumber">
+    <sequence>
+     <element name="area" type="xsd:int"/>
+     <element name="prefix" type="xsd:int"/>
+     <element name="number" type="xsd:int"/>
+    </sequence>
+   </complexType>
+   <element name="findAddressResponse">
+    <complexType>
+     <sequence>
+      <element name="findAddressReturn" nillable="true" type="impl:Address"/>
+     </sequence>
+    </complexType>
+   </element>
+   <complexType name="saveAddress">
+     <sequence>
+      <element name="name" nillable="true" type="xsd:string"/>
+      <element name="address" nillable="true" type="impl:Address"/>
+     </sequence>
+   </complexType>
+   <complexType name="saveAddressResponse">
+     <sequence/>
+   </complexType>
+   <complexType name="AddressHeaderType">
+	<all>
+	 <element name="a" type="int"/>
+	 <element name="b" type="boolean"/>
+	 <element name="s" nillable="true" type="string"/>
+	</all>
+   </complexType>
+   <element name="AddressHeader" nillable="true" type="impl:AddressHeaderType"/>
+   <element name="fault" type="string"/>
+  </schema>
+  </wsdl:types>
+  <wsdl:message name="saveAddressRequest">
+    <wsdl:part name="parameters" element="intf:saveAddress"/>
+  </wsdl:message>
+  <wsdl:message name="findAddressRequest">
+    <wsdl:part name="parameters" element="intf:findAddress"/>
+    <wsdl:part name="AddressHeader" element="intf:AddressHeader"/>
+  </wsdl:message>
+  <wsdl:message name="findAddressResponse">
+    <wsdl:part name="parameters" element="intf:findAddressResponse"/>
+  </wsdl:message>
+  <wsdl:message name="saveAddressResponse">
+    <wsdl:part name="parameters" element="intf:saveAddressResponse"/>
+  </wsdl:message>
+  <wsdl:message name="faultMessage">
+    <wsdl:part name="fault" element="intf:fault"/>
+  </wsdl:message>
+  <wsdl:portType name="AddressBook">
+    <wsdl:operation name="findAddress">
+      <wsdl:input name="findAddressRequest" message="intf:findAddressRequest"/>
+      <wsdl:output name="findAddressResponse" message="intf:findAddressResponse"/>
+      <wsdl:fault name="fault" message="intf:faultMessage"/>
+    </wsdl:operation>
+    <wsdl:operation name="saveAddress">
+      <wsdl:input name="saveAddressRequest" message="intf:saveAddressRequest"/>
+      <wsdl:output name="saveAddressResponse" message="intf:saveAddressResponse"/>
+    </wsdl:operation>
+  </wsdl:portType>
+  <wsdl:binding name="AddressBookSoapBinding" type="intf:AddressBook">
+    <wsdlsoap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
+    <wsdl:operation name="findAddress">
+      <wsdlsoap:operation style="document" soapAction=""/>
+      <wsdl:input name="findAddressRequest">
+        <wsdlsoap:header message="intf:findAddressRequest" part="AddressHeader" use="literal">
+          <wsdlsoap:headerfault message="intf:fault" part="fault" use="literal"/>
+        </wsdlsoap:header>
+        <wsdlsoap:body parts="parameters" use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="findAddressResponse">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+    <wsdl:operation name="saveAddress">
+      <wsdlsoap:operation style="document" soapAction=""/>
+      <wsdl:input name="saveAddressRequest">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:input>
+      <wsdl:output name="saveAddressResponse">
+        <wsdlsoap:body use="literal"/>
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="AddressBookService">
+    <wsdl:port name="AddressBook" binding="intf:AddressBookSoapBinding">
+      <wsdlsoap:address location="http://tempuri.org/AddressBook"/>
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>
diff --git a/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/ap/2941-1/testcase.xml b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/ap/2941-1/testcase.xml
new file mode 100644
index 0000000..2483943
--- /dev/null
+++ b/tests/org.eclipse.wst.wsi.tests/testResources/samples/wsdl/ap/2941-1/testcase.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<testcase name="2941-1">
+  <description>
+    This is an example of a conformant wsdl with a soap:headerfault element that
+    should pass test assertion BP2941.
+  </description>
+</testcase>