### Eclipse Workspace Patch 1.0
#P org.teiid.designer.datatools
Index: META-INF/MANIFEST.MF
===================================================================
--- META-INF/MANIFEST.MF	(revision 1354)
+++ META-INF/MANIFEST.MF	(working copy)
@@ -18,6 +18,7 @@
 Export-Package: org.teiid.designer.datatools,
  org.teiid.designer.datatools.connection,
  org.teiid.designer.datatools.profiles.ldap,
- org.teiid.designer.datatools.profiles.modeshape
+ org.teiid.designer.datatools.profiles.modeshape,
+ org.teiid.designer.datatools.profiles.ws
 Bundle-ClassPath: lib/jackson-all-1.6.1.jar,
  .
Index: src/org/teiid/designer/datatools/profiles/ws/WSConnectionInfoProvider.java
===================================================================
--- src/org/teiid/designer/datatools/profiles/ws/WSConnectionInfoProvider.java	(revision 0)
+++ src/org/teiid/designer/datatools/profiles/ws/WSConnectionInfoProvider.java	(revision 0)
@@ -0,0 +1,92 @@
+package org.teiid.designer.datatools.profiles.ws;
+
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.teiid.designer.datatools.connection.ConnectionInfoHelper;
+import org.teiid.designer.datatools.connection.IConnectionInfoProvider;
+
+import com.metamatrix.modeler.core.workspace.ModelResource;
+import com.metamatrix.modeler.core.workspace.ModelWorkspaceException;
+
+public class WSConnectionInfoProvider extends ConnectionInfoHelper implements
+		IConnectionInfoProvider {
+
+	@Override
+	public void setConnectionInfo(ModelResource modelResource,
+			IConnectionProfile connectionProfile)
+			throws ModelWorkspaceException {
+        Properties connectionProps = getCommonProfileProperties(connectionProfile);
+
+        Properties props = connectionProfile.getBaseProperties();
+
+        String url = props.getProperty(IWSProfileConstants.URL_PROP_ID);
+        if (null != url) {
+            connectionProps.setProperty(CONNECTION_NAMESPACE + IWSProfileConstants.URL_PROP_ID, url);
+        }
+
+        String user = props.getProperty(IWSProfileConstants.USERNAME_PROP_ID);
+        if (null != user) {
+            connectionProps.setProperty(CONNECTION_NAMESPACE + IWSProfileConstants.USERNAME_PROP_ID, user);
+        }
+
+        String security = props.getProperty(IWSProfileConstants.SECURITY_TYPE_ID);
+        if (null != security) {
+            connectionProps.setProperty(CONNECTION_NAMESPACE + IWSProfileConstants.SECURITY_TYPE_ID, security);
+        }
+        
+        getHelper().removeProperties(modelResource, CONNECTION_PROFILE_NAMESPACE);
+        getHelper().removeProperties(modelResource, TRANSLATOR_NAMESPACE);
+        getHelper().removeProperties(modelResource, CONNECTION_NAMESPACE);
+
+        connectionProps.put(TRANSLATOR_NAMESPACE + TRANSLATOR_NAME_KEY, "ws"); //$NON-NLS-1$
+        getHelper().setProperties(modelResource, connectionProps);
+		
+	}
+
+	@Override
+	public String getPasswordPropertyKey() {
+		return IWSProfileConstants.PASSWORD_PROP_ID;
+	}
+
+	@Override
+	public String getDataSourcePasswordPropertyKey() {
+		return IWSProfileConstants.PASSWORD_PROP_ID;
+	}
+
+	@Override
+	public String getDataSourceType() {
+		return "connector-ws"; //$NON-NLS-1$
+	}
+
+	@Override
+	public Properties getTeiidRelatedProperties(
+			IConnectionProfile connectionProfile) {
+        Properties connectionProps = new Properties();
+        
+        Properties props = connectionProfile.getBaseProperties();
+        
+        String password = props.getProperty(IWSProfileConstants.PASSWORD_PROP_ID);
+        if( password != null ) {
+        	connectionProps.setProperty(IWSProfileConstants.PASSWORD_PROP_ID, password);
+        }
+        
+        String url = props.getProperty(IWSProfileConstants.URL_PROP_ID);
+        if (null != url) {
+            connectionProps.setProperty(IWSProfileConstants.URL_PROP_ID, url);
+        }
+
+        String user = props.getProperty(IWSProfileConstants.USERNAME_PROP_ID);
+        if (null != user) {
+            connectionProps.setProperty(IWSProfileConstants.USERNAME_PROP_ID, user);
+        }
+
+        String contextFactory = props.getProperty(IWSProfileConstants.SECURITY_TYPE_ID);
+        if (null != contextFactory) {
+            connectionProps.setProperty(IWSProfileConstants.SECURITY_TYPE_ID, contextFactory);
+        }
+
+        return connectionProps;
+    }
+
+}
Index: plugin.xml
===================================================================
--- plugin.xml	(revision 1354)
+++ plugin.xml	(working copy)
@@ -24,6 +24,26 @@
             name="LDAP"/>
    </extension>
    
+   <extension
+       id="org.teiid.designer.datatools.profiles.ws.ConnectionInfoProvider"
+       name="%wsConnectionInfoProvider"
+       point="org.teiid.designer.datatools.ConnectionInfoProvider">
+       <ConnectionInfoProvider
+            profile="org.teiid.designer.datatools.profiles.ws.WSConnectionProfile"
+            class="org.teiid.designer.datatools.profiles.ws.WSConnectionInfoProvider"/>
+   </extension>
+   
+   <extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <category
+            id="org.teiid.designer.import.category"
+            name="Teiid Importer Connections"/>
+      <connectionProfile
+            category="org.teiid.designer.import.category"
+            id="org.teiid.designer.datatools.profiles.ws.WSConnectionProfile"
+            name="Web Service"/>
+   </extension>
+   
 	<extension point="org.eclipse.datatools.connectivity.driverExtension">
 		<category parentCategory="org.eclipse.datatools.connectivity.db.driverCategory"
 			id="org.teiid.designer.datatools.connectivity.driver.modeShapeCategory"
Index: src/org/teiid/designer/datatools/profiles/ws/IWSProfileConstants.java
===================================================================
--- src/org/teiid/designer/datatools/profiles/ws/IWSProfileConstants.java	(revision 0)
+++ src/org/teiid/designer/datatools/profiles/ws/IWSProfileConstants.java	(revision 0)
@@ -0,0 +1,12 @@
+package org.teiid.designer.datatools.profiles.ws;
+
+public interface IWSProfileConstants {
+
+    String TEIID_CATEGORY = "org.teiid.designer.import.category"; //$NON-NLS-1$
+    String PASSWORD_PROP_ID = "AuthPassword"; //$NON-NLS-1$
+    String USERNAME_PROP_ID = "AuthUserName"; //$NON-NLS-1$
+    String SECURITY_TYPE_ID = "SecurityType"; //$NON-NLS-1$ //None, HTTPBasic, WS-Security
+    String URL_PROP_ID = "WSUrl"; //$NON-NLS-1$
+
+    public enum SecurityType {None,HTTPBasic,WSSecurity};
+}
Index: plugin.properties
===================================================================
--- plugin.properties	(revision 1354)
+++ plugin.properties	(working copy)
@@ -7,4 +7,5 @@
 pluginName=Designer Datatools Plug-in
 connectionInfoProvider=ConnectionInfoProvider
 ldapConnectionInfoProvider=LDAP Connection Info Provider
-flatFileConnectionInfoProvider=Flat File Connection Info Provider
\ No newline at end of file
+flatFileConnectionInfoProvider=Flat File Connection Info Provider
+wsConnectionInfoProvider=Web Service Connection Info Provider
#P org.teiid.designer.datatools.ui
Index: src/org/teiid/designer/datatools/profiles/ws/WSProfileDetailsWizardPage.java
===================================================================
--- src/org/teiid/designer/datatools/profiles/ws/WSProfileDetailsWizardPage.java	(revision 0)
+++ src/org/teiid/designer/datatools/profiles/ws/WSProfileDetailsWizardPage.java	(revision 0)
@@ -0,0 +1,337 @@
+package org.teiid.designer.datatools.profiles.ws;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.ui.wizards.ConnectionProfileDetailsPage;
+import org.eclipse.datatools.connectivity.ui.wizards.NewConnectionProfileWizard;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.layout.FillLayout;
+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.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.teiid.designer.datatools.profiles.ws.IWSProfileConstants.SecurityType;
+import org.teiid.designer.datatools.ui.DatatoolsUiConstants;
+
+import com.metamatrix.ui.internal.util.WidgetFactory;
+
+public class WSProfileDetailsWizardPage extends ConnectionProfileDetailsPage
+		implements Listener, DatatoolsUiConstants {
+
+	
+    private Composite scrolled;
+
+    private Label profileLabel;
+    private CLabel profileText;
+    private Label descriptionLabel;
+    private CLabel descriptionText;
+    private Label usernameLabel;
+    private Text usernameText;
+    private Label passwordLabel;
+    private Text passwordText;
+    private Label urlLabel;
+    private Text urlText;
+    private Label securityLabel;
+    private Combo securityCombo;
+
+    /**
+     * @param wizardPageName
+     */
+    public WSProfileDetailsWizardPage( String pageName ) {
+        super(pageName, UTIL.getString("WSProfileDetailsWizardPage.Name"), //$NON-NLS-1$
+              AbstractUIPlugin.imageDescriptorFromPlugin(DatatoolsUiConstants.PLUGIN_ID, "icons/ldap.gif")); //$NON-NLS-1$
+    }
+
+	@Override
+	public void createCustomControl(Composite parent) {
+        GridData gd;
+
+        Group group = new Group(parent, SWT.BORDER);
+        group.setText(UTIL.getString("Common.Properties.Label")); //$NON-NLS-1$
+        group.setLayout(new FillLayout());
+
+        scrolled = new Composite(group, SWT.NONE);
+        GridLayout gridLayout = new GridLayout();
+        gridLayout.numColumns = 2;
+        scrolled.setLayout(gridLayout);
+
+        profileLabel = new Label(scrolled, SWT.NONE);
+        profileLabel.setText(UTIL.getString("Common.Profile.Label")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        profileLabel.setLayoutData(gd);
+
+        profileText = WidgetFactory.createLabel(scrolled, SWT.SINGLE | SWT.BORDER);
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        profileText.setLayoutData(gd);
+        profileText.setText(((ConnectionProfileWizard)getWizard()).getProfileName());
+
+        descriptionLabel = new Label(scrolled, SWT.NONE);
+        descriptionLabel.setText(UTIL.getString("Common.Description.Label")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        descriptionLabel.setLayoutData(gd);
+
+        descriptionText = WidgetFactory.createLabel(scrolled, SWT.SINGLE | SWT.BORDER);
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        descriptionText.setLayoutData(gd);
+        descriptionText.setText(((ConnectionProfileWizard)getWizard()).getProfileDescription());
+
+        urlLabel = new Label(scrolled, SWT.NONE);
+        urlLabel.setText(UTIL.getString("Common.URL.Label")); //$NON-NLS-1$
+        urlLabel.setToolTipText(UTIL.getString("Common.URL.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        urlLabel.setLayoutData(gd);
+
+        urlText = new Text(scrolled, SWT.SINGLE | SWT.BORDER);
+        urlText.setToolTipText(UTIL.getString("Common.URL.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        urlText.setLayoutData(gd);
+
+        securityLabel = new Label(scrolled, SWT.NONE);
+        securityLabel.setText(UTIL.getString("Common.Security.Type.Label")); //$NON-NLS-1$
+        securityLabel.setToolTipText(UTIL.getString("Common.Context.Factory.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        securityLabel.setLayoutData(gd);
+
+        securityCombo = new Combo(scrolled, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);
+        securityCombo.setToolTipText(UTIL.getString("Common.Context.Factory.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        securityCombo.setLayoutData(gd);
+        securityCombo.setItems(new String[]{SecurityType.None.name(), SecurityType.HTTPBasic.name(), SecurityType.WSSecurity.name()});
+        securityCombo.setText(SecurityType.None.name());
+        
+        usernameLabel = new Label(scrolled, SWT.NONE);
+        usernameLabel.setText(UTIL.getString("Common.Username.Label")); //$NON-NLS-1$
+        usernameLabel.setToolTipText(UTIL.getString("Common.Username.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        usernameLabel.setLayoutData(gd);
+
+        usernameText = new Text(scrolled, SWT.SINGLE | SWT.BORDER);
+        usernameText.setToolTipText(UTIL.getString("Common.Username.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        usernameText.setLayoutData(gd);
+        usernameText.setEnabled(false);
+        
+        passwordLabel = new Label(scrolled, SWT.NONE);
+        passwordLabel.setText(UTIL.getString("Common.Password.Label")); //$NON-NLS-1$
+        passwordLabel.setToolTipText(UTIL.getString("Common.Password.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        passwordLabel.setLayoutData(gd);
+
+        passwordText = new Text(scrolled, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD);
+        passwordText.setToolTipText(UTIL.getString("Common.Password.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        passwordText.setLayoutData(gd);
+        passwordText.setEnabled(false);
+        
+        setPingButtonVisible(false);
+        setPingButtonEnabled(false);
+        setAutoConnectOnFinishDefault(false);
+        setCreateAutoConnectControls(false);
+        setShowAutoConnect(false);
+        setShowAutoConnectOnFinish(false);
+        setPageComplete(false);
+        addListeners();
+
+	}
+	
+    /**
+     * 
+     */
+    private void addListeners() {
+        usernameText.addListener(SWT.Modify, this);
+        passwordText.addListener(SWT.Modify, this);
+        urlText.addListener(SWT.Modify, this);
+        securityCombo.addListener(SWT.Modify, this);
+    }
+    
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
+     */
+    @Override
+    public void handleEvent( Event event ) {
+
+        if (event.widget == usernameText) {
+            Properties properties = ((NewConnectionProfileWizard)getWizard()).getProfileProperties();
+            properties.setProperty(IWSProfileConstants.USERNAME_PROP_ID, usernameText.getText());
+        }
+        if (event.widget == passwordText) {
+            Properties properties = ((NewConnectionProfileWizard)getWizard()).getProfileProperties();
+            properties.setProperty(IWSProfileConstants.PASSWORD_PROP_ID, passwordText.getText());
+        }
+        if (event.widget == urlText) {
+            Properties properties = ((NewConnectionProfileWizard)getWizard()).getProfileProperties();
+            properties.setProperty(IWSProfileConstants.URL_PROP_ID, urlText.getText());
+        }
+        if (event.widget == securityCombo) {
+            Properties properties = ((NewConnectionProfileWizard)getWizard()).getProfileProperties();
+            properties.setProperty(IWSProfileConstants.SECURITY_TYPE_ID, securityCombo.getText());
+        	if(securityCombo.getText().equals(SecurityType.None.name())) {
+        		usernameText.setEnabled(false);
+        		passwordText.setEnabled(false);
+        	} else {
+        		usernameText.setEnabled(true);
+        		passwordText.setEnabled(true);
+        	}
+        	
+
+        }
+        updateState();
+    }
+    
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.eclipse.datatools.connectivity.ui.wizards.ConnectionProfileDetailsPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    @Override
+    public void createControl( Composite parent ) {
+        super.createControl(parent);
+        updateState();
+    }
+    
+    void updateState() {
+        setPingButtonVisible(false);
+        setPingButtonEnabled(false);
+
+        profileText.setText(((NewConnectionProfileWizard)getWizard()).getProfileName());
+        descriptionText.setText(((NewConnectionProfileWizard)getWizard()).getProfileDescription());
+
+        Properties properties = ((NewConnectionProfileWizard)getWizard()).getProfileProperties();
+        if (null == properties.get(IWSProfileConstants.URL_PROP_ID)
+                || properties.get(IWSProfileConstants.URL_PROP_ID).toString().isEmpty()) {
+                setErrorMessage(UTIL.getString("Common.URL.Error.Message")); //$NON-NLS-1$
+                return;
+        }
+        setErrorMessage(null);
+        try {
+        	URL url = new URL(properties.get(IWSProfileConstants.URL_PROP_ID).toString());
+        } catch(MalformedURLException e) {
+        	setErrorMessage(UTIL.getString("Common.URL.Invalid.Message") + e.getMessage());
+        	return;
+        }
+        
+        if (null != properties.get(IWSProfileConstants.SECURITY_TYPE_ID) &&
+        		!SecurityType.None.name().equals(properties.get(IWSProfileConstants.SECURITY_TYPE_ID))) {
+        	if (null == properties.get(IWSProfileConstants.USERNAME_PROP_ID)
+                    || properties.get(IWSProfileConstants.USERNAME_PROP_ID).toString().isEmpty()) {
+                    setErrorMessage(UTIL.getString("Common.Username.Error.Message")); //$NON-NLS-1$
+                    return;
+                }
+                setErrorMessage(null);
+                if (null == properties.get(IWSProfileConstants.PASSWORD_PROP_ID)
+                    || properties.get(IWSProfileConstants.PASSWORD_PROP_ID).toString().isEmpty()) {
+                    setErrorMessage(UTIL.getString("Common.Password.Error.Message")); //$NON-NLS-1$
+                    return;
+                }
+                
+        }
+        
+        setErrorMessage(null);
+        setPageComplete(true);
+        setMessage(UTIL.getString("Click.Next.or.Finish")); //$NON-NLS-1$
+
+    }
+    
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
+     */
+    @Override
+    public boolean canFlipToNextPage() {
+        return internalComplete(super.canFlipToNextPage());
+    }
+
+	/**
+	 * @param complete
+	 * @return
+	 */
+	private boolean internalComplete(boolean complete) {
+		Properties properties = ((NewConnectionProfileWizard) getWizard())
+				.getProfileProperties();
+		if (complete
+				&& (null == properties.get(IWSProfileConstants.URL_PROP_ID) || properties
+						.get(IWSProfileConstants.URL_PROP_ID).toString()
+						.isEmpty())) {
+			complete = false;
+		}
+		if (complete
+				&& null != properties.get(IWSProfileConstants.SECURITY_TYPE_ID) && (!SecurityType.None.name().equals(
+						properties.get(IWSProfileConstants.SECURITY_TYPE_ID)
+								.toString()))) {
+			if (complete
+					&& (null == properties
+							.get(IWSProfileConstants.USERNAME_PROP_ID) || properties
+							.get(IWSProfileConstants.USERNAME_PROP_ID)
+							.toString().isEmpty())) {
+				complete = false;
+			}
+			if (complete
+					&& (null == properties
+							.get(IWSProfileConstants.PASSWORD_PROP_ID) || properties
+							.get(IWSProfileConstants.PASSWORD_PROP_ID)
+							.toString().isEmpty())) {
+				complete = false;
+			}
+
+		}
+		return complete;
+	}
+	
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.eclipse.datatools.connectivity.internal.ui.wizards.BaseWizardPage#getSummaryData()
+     */
+    @Override
+    public List getSummaryData() {
+        List result = super.getSummaryData();
+        result.add(new String[] {UTIL.getString("Common.URL.Label"), urlText.getText()}); //$NON-NLS-1$
+        result.add(new String[] {UTIL.getString("Common.Username.Label"), usernameText.getText()}); //$NON-NLS-1$
+        result.add(new String[] {UTIL.getString("Common.Security.Type.Label"), securityCombo.getText()}); //$NON-NLS-1$
+        return result;
+    }
+
+}
Index: icons/wsdswiz.ico
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: icons/wsdswiz.ico
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: plugin.xml
===================================================================
--- plugin.xml	(revision 1347)
+++ plugin.xml	(working copy)
@@ -39,6 +39,35 @@
          </enabledWhen>
       </page>
    </extension>
+
+   <extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+   <newWizard
+         class="org.teiid.designer.datatools.profiles.ws.ConnectionProfileWizard"
+         description="Create an non-SOAP Web Service connection profile."
+         icon="icons/wsdswiz.ico"
+         id="org.teiid.designer.datatools.profiles.ws.ConnectionProfileWizard"
+         name="Web Services Data Source (non-SOAP)"
+         profile="org.teiid.designer.datatools.profiles.ws.WSConnectionProfile"/>
+   </extension>
+
+   <extension
+         point="org.eclipse.ui.propertyPages">
+      <page
+            class="org.teiid.designer.datatools.profiles.ws.PropertyPage"
+            icon="icons/wsdswiz.ico"
+            id="org.teiid.designer.datatools.profiles.ws.profileProperties"
+            name="%connectionProperties.name">
+         <filter
+               name="org.eclipse.datatools.profile.property.id"
+               value="org.teiid.designer.datatools.profiles.ws.WSConnectionProfile"/>
+         <enabledWhen>
+            <instanceof
+                  value="org.eclipse.datatools.connectivity.IConnectionProfile">
+            </instanceof>
+         </enabledWhen>
+      </page>
+   </extension>
       
    <extension
          point="org.eclipse.datatools.connectivity.connectionProfile">
Index: src/org/teiid/designer/datatools/profiles/ws/PropertyPage.java
===================================================================
--- src/org/teiid/designer/datatools/profiles/ws/PropertyPage.java	(revision 0)
+++ src/org/teiid/designer/datatools/profiles/ws/PropertyPage.java	(revision 0)
@@ -0,0 +1,257 @@
+package org.teiid.designer.datatools.profiles.ws;
+
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.ui.wizards.ProfileDetailsPropertyPage;
+import org.eclipse.datatools.help.ContextProviderDelegate;
+import org.eclipse.help.IContext;
+import org.eclipse.help.IContextProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.teiid.designer.datatools.profiles.ws.IWSProfileConstants.SecurityType;
+import org.teiid.designer.datatools.ui.DatatoolsUiConstants;
+import org.teiid.designer.datatools.ui.DatatoolsUiPlugin;
+
+public class PropertyPage extends ProfileDetailsPropertyPage implements
+		IContextProvider, DatatoolsUiConstants {
+
+	
+	private ContextProviderDelegate contextProviderDelegate = new ContextProviderDelegate(
+			DatatoolsUiPlugin.getDefault().getBundle().getSymbolicName());
+	private Composite scrolled;
+	private Label usernameLabel;
+	private Text usernameText;
+	private Label passwordLabel;
+	private Text passwordText;
+	private Label urlLabel;
+	private Text urlText;
+	private Text securityText;
+	private Label securityLabel;
+
+	
+    public PropertyPage() {
+        super();
+    }
+
+    @Override
+    public IContext getContext( Object target ) {
+        return contextProviderDelegate.getContext(target);
+    }
+
+    @Override
+    public int getContextChangeMask() {
+        return contextProviderDelegate.getContextChangeMask();
+    }
+
+    @Override
+    public String getSearchExpression( Object target ) {
+        return contextProviderDelegate.getSearchExpression(target);
+    }
+    
+    @Override
+	protected Control createContents(Composite parent) {
+		Control result = super.createContents(parent);
+        this.setPingButtonEnabled(false);
+        this.setPingButtonVisible(false);
+        return result;
+	}
+
+	@Override
+    protected void createCustomContents( Composite parent ) {
+        GridData gd;
+
+        Group group = new Group(parent, SWT.BORDER);
+        group.setText(UTIL.getString("Common.Properties.Label")); //$NON-NLS-1$
+        FillLayout fl = new FillLayout();
+        fl.type = SWT.HORIZONTAL;
+        group.setLayout(new FillLayout());
+
+        scrolled = new Composite(group, SWT.NONE);
+        GridLayout gridLayout = new GridLayout();
+        gridLayout.numColumns = 2;
+        scrolled.setLayout(gridLayout);
+
+        urlLabel = new Label(scrolled, SWT.NONE);
+        urlLabel.setText(UTIL.getString("Common.URL.Label")); //$NON-NLS-1$
+        urlLabel.setToolTipText(UTIL.getString("Common.URL.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        urlLabel.setLayoutData(gd);
+
+        urlText = new Text(scrolled, SWT.SINGLE | SWT.BORDER);
+        urlText.setToolTipText(UTIL.getString("Common.URL.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        urlText.setLayoutData(gd);
+
+        securityLabel = new Label(scrolled, SWT.NONE);
+        securityLabel.setText(UTIL.getString("Common.Security.Type.Label")); //$NON-NLS-1$
+        securityLabel.setToolTipText(UTIL.getString("Common.Security.Type.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        securityLabel.setLayoutData(gd);
+
+        securityText = new Text(scrolled, SWT.SINGLE | SWT.BORDER);
+        securityText.setToolTipText(UTIL.getString("Common.Security.Type.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        securityText.setLayoutData(gd);
+
+
+        usernameLabel = new Label(scrolled, SWT.NONE);
+        usernameLabel.setText(UTIL.getString("Common.Username.Label")); //$NON-NLS-1$
+        usernameLabel.setToolTipText(UTIL.getString("Common.Username.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        usernameLabel.setLayoutData(gd);
+
+        usernameText = new Text(scrolled, SWT.SINGLE | SWT.BORDER);
+        usernameText.setToolTipText(UTIL.getString("Common.Username.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        usernameText.setLayoutData(gd);
+
+        passwordLabel = new Label(scrolled, SWT.NONE);
+        passwordLabel.setText(UTIL.getString("Common.Password.Label")); //$NON-NLS-1$
+        passwordLabel.setToolTipText(UTIL.getString("Common.Password.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.verticalAlignment = GridData.BEGINNING;
+        passwordLabel.setLayoutData(gd);
+
+        passwordText = new Text(scrolled, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD);
+        passwordText.setToolTipText(UTIL.getString("Common.Password.ToolTip")); //$NON-NLS-1$
+        gd = new GridData();
+        gd.horizontalAlignment = GridData.FILL;
+        gd.verticalAlignment = GridData.BEGINNING;
+        gd.grabExcessHorizontalSpace = true;
+        gd.horizontalSpan = 1;
+        passwordText.setLayoutData(gd);
+
+        initControls();
+        addlisteners();
+    }
+
+    /**
+     * 
+     */
+    private void addlisteners() {
+        usernameText.addModifyListener(new ModifyListener() {
+
+            @Override
+            public void modifyText( ModifyEvent e ) {
+                validate();
+            }
+        });
+
+        passwordText.addModifyListener(new ModifyListener() {
+
+            @Override
+            public void modifyText( ModifyEvent e ) {
+                validate();
+            }
+        });
+
+        urlText.addModifyListener(new ModifyListener() {
+
+            @Override
+            public void modifyText( ModifyEvent e ) {
+                validate();
+            }
+        });
+        securityText.addModifyListener(new ModifyListener() {
+
+            @Override
+            public void modifyText( ModifyEvent e ) {
+                validate();
+            }
+        });
+
+    }
+
+    protected void validate() {
+        String errorMessage = null;
+        boolean valid = true;
+        if (null == urlText.getText() || urlText.getText().isEmpty()) {
+            errorMessage = UTIL.getString("Common.URL.Error.Message"); //$NON-NLS-1$
+            valid = false;
+        }
+        if (!SecurityType.None.name().equals(securityText.getText()) &&
+        		!SecurityType.HTTPBasic.name().equals(securityText.getText()) &&
+        		!SecurityType.WSSecurity.name().equals(securityText.getText())) {
+        	errorMessage = UTIL.getString("Common.Security.Error.Message"); //$NON-NLS-1$
+    		valid = false;
+        }
+        if (!SecurityType.None.name().equals(securityText.getText())) {
+        	if (null == passwordText.getText() || passwordText.getText().isEmpty()) {
+        		errorMessage = UTIL.getString("Common.Password.Error.Message"); //$NON-NLS-1$
+        		valid = false;
+        	}
+        	if (null == usernameText.getText() || usernameText.getText().isEmpty()) {
+        		errorMessage = UTIL.getString("Common.Username.Error.Message"); //$NON-NLS-1$
+        		valid = false;
+        	}
+        }
+        setErrorMessage(errorMessage);
+        setValid(valid);
+
+    }
+
+    /**
+     * 
+     */
+    private void initControls() {
+        IConnectionProfile profile = getConnectionProfile();
+        Properties props = profile.getBaseProperties();
+        if (null != props.get(IWSProfileConstants.USERNAME_PROP_ID)) {
+            usernameText.setText((String)props.get(IWSProfileConstants.USERNAME_PROP_ID));
+        }
+        if (null != props.get(IWSProfileConstants.PASSWORD_PROP_ID)) {
+            passwordText.setText((String)props.get(IWSProfileConstants.PASSWORD_PROP_ID));
+        }
+        if (null != props.get(IWSProfileConstants.URL_PROP_ID)) {
+            urlText.setText((String)props.get(IWSProfileConstants.URL_PROP_ID));
+        }
+        if (null != props.get(IWSProfileConstants.SECURITY_TYPE_ID)) {
+            securityText.setText((String)props.get(IWSProfileConstants.SECURITY_TYPE_ID));
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.eclipse.datatools.connectivity.ui.wizards.ProfileDetailsPropertyPage#collectProperties()
+     */
+    @Override
+    protected Properties collectProperties() {
+        Properties result = super.collectProperties();
+        if (null == result) {
+            result = new Properties();
+        }
+        result.setProperty(IWSProfileConstants.URL_PROP_ID, urlText.getText());
+        result.setProperty(IWSProfileConstants.SECURITY_TYPE_ID, securityText.getText());
+        result.setProperty(IWSProfileConstants.USERNAME_PROP_ID, usernameText.getText());
+        result.setProperty(IWSProfileConstants.PASSWORD_PROP_ID, passwordText.getText());
+        return result;
+    }
+
+
+}
Index: src/org/teiid/designer/datatools/profiles/ws/ConnectionProfileWizard.java
===================================================================
--- src/org/teiid/designer/datatools/profiles/ws/ConnectionProfileWizard.java	(revision 0)
+++ src/org/teiid/designer/datatools/profiles/ws/ConnectionProfileWizard.java	(revision 0)
@@ -0,0 +1,23 @@
+package org.teiid.designer.datatools.profiles.ws;
+
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.ui.wizards.NewConnectionProfileWizard;
+import org.teiid.designer.datatools.ui.DatatoolsUiConstants;
+
+public class ConnectionProfileWizard extends NewConnectionProfileWizard
+		implements DatatoolsUiConstants {
+	
+	Properties profileProperties = new Properties();
+
+	@Override
+	public void addCustomPages() {
+		addPage(new WSProfileDetailsWizardPage(UTIL.getString("WSProfileDetailsWizardPage.Name"))); //$NON-NLS-1$
+	}
+
+	@Override
+	public Properties getProfileProperties() {
+		return profileProperties;
+	}
+
+}
Index: src/org/teiid/designer/datatools/ui/i18n.properties
===================================================================
--- src/org/teiid/designer/datatools/ui/i18n.properties	(revision 1347)
+++ src/org/teiid/designer/datatools/ui/i18n.properties	(working copy)
@@ -21,6 +21,7 @@
 # Connection Profile Stuff
 ConnectionProfileWizard.WizardTitle=LDAP Profile Wizard
 LdapProfileDetailsWizardPage.Name=LDAP Connection Properties
+WSProfileDetailsWizardPage.Name=Web Service Connection Properties
 
 Click.Next.or.Finish=Click Next or Finish
 
@@ -31,16 +32,20 @@
 Common.Password.Label=Password
 Common.URL.Label=Connection URL
 Common.Context.Factory.Label=Context Factory Name
+Common.Security.Type.Label=Security Type
 
 Common.Username.ToolTip=The User Name
 Common.Password.ToolTip=The Password
 Common.URL.ToolTip=The Connection URL
 Common.Context.Factory.ToolTip=The fully qualified ContextFactory class name.
+Common.Security.Type.ToolTip=The security required by the remote service.
 
 Common.Username.Error.Message="The User Name cannot be empty"
 Common.Password.Error.Message="The Password cannot be empty"
 Common.URL.Error.Message="The Connection URL cannot be empty"
+Common.URL.Invalid.Message="The URL is not valid: "
 Common.Context.Factory.Error.Message="The Context Factory cannot be empty"
+Common.Security.Error.Message="None, HTTPBasic, and WSSecurity are the only valid values for Security Type"
 
 Common.HOST_LBL_UI_=&Host
 Common.PORT_LBL_UI_=&Port
