[116930] String2TypeRuntimeModifier not called.  Applied the patch for org.eclipse.jst.ws (attachment 30267) and org.eclipse.wst.command.env (attachment 30410).
diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/String2TypeRuntimeServerModifier.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/String2TypeRuntimeServerModifier.java
index 0b28d1c..adb3c62 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/String2TypeRuntimeServerModifier.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/String2TypeRuntimeServerModifier.java
@@ -17,6 +17,13 @@
 
 public class String2TypeRuntimeServerModifier implements BeanModifier {
 
+	private String SERVICE_RT_ID_KEY = "Service.RuntimeId";  //$NON-NLS-N$
+	private String RUNTIME_ID = "RuntimeId";  //$NON-NLS-N$
+	private String SERVICE_SRV_ID_KEY = "Service.ServerId";  //$NON-NLS-N$
+	private String SERVER_ID = "ServerId";  //$NON-NLS-N$
+	private String SERVICE_PREFIX = "Service.";  //$NON-NLS-N$
+	private String CLIENT_PREFIX = "Client.";  //$NON-NLS-N$
+	
 	/**
 	 * Modifies the supplied TypeRuntimeServer bean with properties in holder.
 	 * If the bean is null, construct a new one and set its properties.
@@ -41,15 +48,23 @@
 			Map typesMap = (Map)holder;
 			String prefix = "";
 			
-			if (typesMap.containsKey("Service.TypeId")||typesMap.containsKey("Service.RuntimeId")||
-					typesMap.containsKey("Service.ServerId"))
-			  	prefix = "Service.";
-			else
-				prefix = "Client.";
 			
-			types.setTypeId((String)typesMap.get(prefix+"TypeId"));
-			types.setRuntimeId((String)typesMap.get(prefix+"RuntimeId"));
-			types.setServerId((String)typesMap.get(prefix+"ServerId"));			
+			if (typesMap.containsKey(SERVICE_RT_ID_KEY)||typesMap.containsKey(SERVICE_SRV_ID_KEY))
+			{
+				prefix = SERVICE_PREFIX;
+			}			  	
+			else
+			{
+				prefix = CLIENT_PREFIX;
+			}
+			
+			String runtimeID = (String)typesMap.get(prefix+RUNTIME_ID);
+			if (runtimeID != null)
+				types.setRuntimeId(runtimeID);		
+			
+			String serverID = (String)typesMap.get(prefix+SERVER_ID);
+			if (serverID  != null)				
+				types.setServerId(serverID);			
 		}
   }
 
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 03a0d90..b8b0e8a 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
@@ -13,6 +13,7 @@
 import java.lang.reflect.*;
 import java.util.*;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtensionPoint;
 import org.eclipse.core.runtime.IExtensionRegistry;
@@ -121,8 +122,9 @@
 								mappingComplete_ = callSetterConstructor(mapping);
 								break;
 								
-							default:								
-								return INIT_OPERATION_DATA_FAIL;
+							default:
+								mappingComplete_ = true;
+								break;								
 							}
 						   step++;
 						}					
@@ -175,7 +177,7 @@
 		   //go to ext registry and get all antMapping extensions
 		   IExtensionRegistry reg = Platform.getExtensionRegistry();
 		   IExtensionPoint extPt = reg.getExtensionPoint(EXT_PT_NAMESPACE, MAPPER_EXT_PT);
-		   Hashtable dataTable = new Hashtable();
+		   Hashtable dataTable = new Hashtable(25);
 		   
 		   IConfigurationElement[] elements = extPt.getConfigurationElements();
 		   
@@ -186,69 +188,83 @@
 			 // look for mappings for this operation
 			 if (obj.equals(operationName))
 			 {				 
-				 String property = ce.getAttribute(MAPPER_PROPERTY_ATTRIBUTE);
 				 String key = ce.getAttribute(MAPPER_KEY_ATTRIBUTE);
-				 String transform = ce.getAttribute(MAPPER_TRANSFORM_ATTRIBUTE);
 				 String value = getProperty(key);
 				 
 				 //check to see if the property for this extension is already in the data table
 				 // if so, there is a m:1 mapping
-				 if (dataTable.containsKey(property))
+				 if (value != null)  //only do a mapping if there is an Ant property value passed in...
 				 {
-					 //get the PropertyDataHolder from the table
-					 PropertyDataHolder holder = (PropertyDataHolder)dataTable.get(property);
-					 //if already have a map - add the current key, value pair
-					 if (holder.map_ != null)
-					 {						
-						holder.map_.put(key, value);
-					 }
-					 // add a new map to the data holder and put first & current key, values into the map
-					 else 
+				
+					 String property = ce.getAttribute(MAPPER_PROPERTY_ATTRIBUTE);
+					 Object transform = null;
+					 try
 					 {
-						holder.map_ = new HashMap();
-						holder.map_.put(holder.key_, holder.value_);
-						holder.key_ = "";
-						holder.value_ = "";	
-						holder.map_.put(key, value);															
+						 transform = ce.createExecutableExtension(MAPPER_TRANSFORM_ATTRIBUTE);	 
 					 }
-				 }
-				 else  //add the extension info to the data table
-				 {
-					 PropertyDataHolder holder = new PropertyDataHolder();
-					 holder.operation_ = operation;
-					 holder.key_ = key;
-					 holder.property_ = property;
-					 holder.transform_ = transform;
-					 holder.value_ = value;
-					 dataTable.put(property, holder);
+					 catch (CoreException cex) {
+					   getLog().log(ILog.ERROR, "ws_ant", 9999, this, "getMappingExtensions", EnvironmentMessages.bind(EnvironmentMessages.MSG_ERR_ANT_DATA_TRANSFORM, key, transform));                  
+					 }
+					 
+					 if (transform != null && transform instanceof BeanModifier/*dataTable.containsKey(property)*/)
+					 {
+						 //get the PropertyDataHolder from the table
+						 PropertyDataHolder holder = (PropertyDataHolder)dataTable.get(property);
+						 if (holder == null)
+						 {
+							 holder = new PropertyDataHolder();
+							 holder.key_ = "";
+							 holder.value_ = "";	
+							 holder.transform_ = transform;
+							 holder.operation_ = operation;
+							 holder.property_ = property;
+							 holder.map_ = new HashMap();
+							 holder.map_.put(key, value);
+							 dataTable.put(property, holder);
+						 }						 
+						 else
+						 {						
+							holder.map_.put(key, value);
+						 }					
+					 }
+					 else  //plain property mapping not a bean
+					 {
+						 PropertyDataHolder holder = new PropertyDataHolder();
+						 holder.operation_ = operation;
+						 holder.key_ = key;
+						 holder.property_ = property;
+						 holder.transform_ = transform;
+						 holder.value_ = value;
+						 dataTable.put(property, holder);
+					 }			 
 				 }			 
-			 }			 
-		  }    	   
+		      }    	 
+		  }
 		   return dataTable.elements();
 		}     
 	   
 	   private boolean transformAndSet(PropertyDataHolder mapping, String setterMethodName)
 	   {
-			String transform = mapping.transform_;
+			Object transform = mapping.transform_;
 			if (transform != null)
 			{
 				// get transform class & create setter parameters		
 				try
 				{
-					Object classObject = Class.forName(transform).newInstance();
+					//Object classObject = Class.forName(transform).newInstance();
 					Object param = new Object();
-					if (classObject instanceof Transformer)
+					if (transform instanceof Transformer)
 					{
-						Transformer transformer = (Transformer)classObject;						
+						Transformer transformer = (Transformer)transform;						
 						// transform the property value
 						param = transformer.transform(mapping.value_);						
 					}
-					else if (mapping.map_ != null && classObject instanceof BeanModifier)
+					else if (mapping.map_ != null && transform instanceof BeanModifier)
 					{
-						  BeanModifier modifier = (BeanModifier)classObject;		
+						  BeanModifier modifier = (BeanModifier)transform;		
                           Method getter = getGetterMethod(mapping);
 						  param = getter.invoke(mapping.operation_, new Object[]{});						  
-						  modifier.modify(mapping.map_, param);
+						  modifier.modify(param, mapping.map_);
 					}												
 					return callSetter(mapping.operation_, param, setterMethodName);
 					
diff --git a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/PropertyDataHolder.java b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/PropertyDataHolder.java
index be9b75c..509ab6b 100644
--- a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/PropertyDataHolder.java
+++ b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/PropertyDataHolder.java
@@ -24,7 +24,7 @@
 
 public class PropertyDataHolder {
 	   public AbstractDataModelOperation operation_;
-	   public String transform_;
+	   public Object transform_;
 	   public String key_;
 	   public String property_;
 	   public String value_;