Merge ../org.eclipse.datatools.connectivity
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/.classpath b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<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/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/.gitignore b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/.gitignore
new file mode 100644
index 0000000..6ec8be4
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/.gitignore
@@ -0,0 +1,4 @@
+bin
+download
+*.jar
+*.zip
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/.project b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/.project
new file mode 100644
index 0000000..08c062b
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/META-INF/MANIFEST.MF b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..65109dc
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %plugin.name
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui; singleton:=true
+Bundle-Version: 1.0.1
+Bundle-Activator: org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.Activator
+Bundle-Vendor: Eclipse.org
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui;bundle-version="[3.3.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.3.0,4.0.0)",
+ org.eclipse.datatools.connectivity.oda.design.ui;bundle-version="[3.0.6,4.0.0)",
+ org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample,
+ org.eclipse.ui.navigator;bundle-version="[3.3.0,4.0.0)",
+ org.eclipse.datatools.connectivity.oda.consumer;bundle-version="[3.2.2,4.0.0)"
+Eclipse-LazyStart: true
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/about.html b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/about.html
new file mode 100644
index 0000000..129db9d
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 15, 2009</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>
+
+<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
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/build.properties b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/build.properties
new file mode 100644
index 0000000..3f6e715
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .,\
+               plugin.properties,\
+               icons/,\
+               about.html
+src.includes = about.html
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/icons/datasetpage.ico b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/icons/datasetpage.ico
new file mode 100644
index 0000000..69f4ae1
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/icons/datasetpage.ico
Binary files differ
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/icons/new_db_element.gif b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/icons/new_db_element.gif
new file mode 100644
index 0000000..1d459ce
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/icons/new_db_element.gif
Binary files differ
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/icons/profile.gif b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/icons/profile.gif
new file mode 100644
index 0000000..6b86d07
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/icons/profile.gif
Binary files differ
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/plugin.properties b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/plugin.properties
new file mode 100644
index 0000000..ba81984
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/plugin.properties
@@ -0,0 +1,27 @@
+###############################################################################
+# Copyright (c) 2008 Actuate Corporation.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#  Actuate Corporation - initial API and implementation
+#
+###############################################################################
+# Plug-in Configuration
+#
+oda.data.source.id=org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample
+parent.category.id=org.eclipse.datatools.connectivity.db.category
+#
+###############################################################################
+# NLS strings
+#
+plugin.name=ODA Databases Profile Sample Wrapper UI Data Source ODA Designer
+newwizard.name=ODA Databases Profile Sample Wrapper UI Data Source
+newwizard.description=Create a ODA Databases Profile Sample Wrapper UI Data Source connection profile
+wizard.window.title=New ODA Databases Profile Sample Wrapper UI Data Source Profile
+wizard.data.source.page.title=ODA Databases Profile Sample Wrapper UI Data Source
+profile.propertypage.name=ODA Databases Profile Sample Wrapper UI Data Source Connection Properties
+wizard.data.set.window.title=New ODA Databases Profile Sample Wrapper UI Data Set
+wizard.data.set.page.title=Query
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/plugin.xml b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/plugin.xml
new file mode 100644
index 0000000..cd50ff8
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/plugin.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <newWizard
+            name="%newwizard.name"
+            icon="icons/new_db_element.gif"
+            profile="%oda.data.source.id"
+            description="%newwizard.description"
+            class="org.eclipse.datatools.connectivity.oda.design.ui.profile.db.wizards.NewDbDataSourceWizard"
+            id="%oda.data.source.id">
+      </newWizard>
+   </extension>
+   <extension
+         point="org.eclipse.ui.propertyPages">
+      <page
+            name="%profile.propertypage.name"
+            class="org.eclipse.datatools.connectivity.oda.design.ui.profile.db.wizards.DbProfileEditorPage"
+            id="%oda.data.source.id">
+         <enabledWhen>
+            <instanceof
+                  value="org.eclipse.datatools.connectivity.IConnectionProfile">
+            </instanceof>
+         </enabledWhen>
+         <filter
+               name="org.eclipse.datatools.profile.property.id"
+               value="%oda.data.source.id">
+         </filter>
+      </page>
+   </extension>
+   <extension
+         point="org.eclipse.datatools.connectivity.oda.design.ui.dataSource">
+      <dataSourceUI
+            id="%oda.data.source.id">
+         <newDataSourceWizard
+               pageClass="dummy"
+               includesProgressMonitor="false"
+               pageTitle="%wizard.data.source.page.title"
+               windowTitle="%wizard.window.title">
+         </newDataSourceWizard>
+      </dataSourceUI>
+      <dataSetUI
+            supportsOutParameters="false"
+            supportsInParameters="false"
+            initialPageId="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.dataSet.page1"
+            id="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.dataSet">
+         <dataSetWizard
+               class="org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizard"
+               windowTitle="%wizard.data.set.window.title">
+         </dataSetWizard>
+         <dataSetPage
+               displayName="%wizard.data.set.page.title"
+               icon="icons/datasetpage.ico"
+               wizardPageClass="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.impl.CustomDataSetWizardPage"
+               path="/"
+               id="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.dataSet.page1">
+         </dataSetPage>
+      </dataSetUI>
+   </extension>
+   <extension
+         point="org.eclipse.ui.navigator.viewer">
+      <viewerContentBinding
+            viewerId="org.eclipse.datatools.connectivity.DataSourceExplorerNavigator">
+         <includes>
+            <contentExtension
+                  isRoot="false"
+                  pattern="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.filter.commonFilter">
+            </contentExtension>
+         </includes>
+      </viewerContentBinding>
+      <viewerActionBinding
+            viewerId="org.eclipse.datatools.connectivity.DataSourceExplorerNavigator">
+         <includes>
+            <actionExtension
+                  pattern="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.filter.actionExtension">
+            </actionExtension>
+         </includes>
+      </viewerActionBinding>
+   </extension>
+   <extension
+         point="org.eclipse.ui.navigator.navigatorContent">
+      <commonFilter
+            activeByDefault="true"
+            description="Filters out this ODA DB Profile Category in Data Source Explorer"
+            id="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.filter.commonFilter"
+            name="ODA Databases Profiles Category Sample Filter">
+         <filterExpression>
+            <and>
+               <instanceof
+                     value="org.eclipse.datatools.connectivity.ICategory">
+               </instanceof>
+               <test
+                     property="org.eclipse.datatools.connectivity.category.property.categoryID"
+                     value="%oda.data.source.id">
+               </test>
+            </and>
+         </filterExpression>
+      </commonFilter>
+      <actionProvider
+            class="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.filter.DbProfileActionProvider"
+            id="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.filter.actionExtension"
+            overrides="org.eclipse.datatools.connectivity.ui.dse.actions.ProfileActionsActionProvider"
+            priority="lowest">
+         <enablement>
+            <and>
+               <instanceof
+                     value="org.eclipse.datatools.connectivity.ICategory">
+               </instanceof>
+               <test
+                     property="org.eclipse.datatools.connectivity.category.property.categoryID"
+                     value="%parent.category.id">
+               </test>
+            </and>
+         </enablement>
+      </actionProvider>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+    <handler
+            class="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.filter.AddDbProfileViewAction"
+            commandId="org.eclipse.datatools.connectivity.commands.addprofile">
+     <enabledWhen>
+      <or>
+       <with
+          variable="selection">
+          <count
+             value="0">
+          </count>
+       </with>
+	   <with variable="selection">
+	      <count value="+" />
+	      <iterate>
+	       <or>
+            <and>
+              <instanceof
+                    value="org.eclipse.datatools.connectivity.ICategory">
+              </instanceof>
+              <test
+                    property="org.eclipse.datatools.connectivity.category.property.categoryID"
+                    value="%parent.category.id">
+              </test>
+            </and>
+            <and>
+               <instanceof
+                     value="org.eclipse.datatools.connectivity.IConnectionProfile">
+               </instanceof>
+               <test
+                     property="org.eclipse.datatools.connectivity.profile.property.categoryID"
+                     value="%parent.category.id">
+               </test>
+            </and>
+           </or>
+	      </iterate>
+	   </with>
+	  </or>
+     </enabledWhen>
+     <activeWhen>
+      <or>
+       <with
+          variable="selection">
+          <count
+             value="0">
+          </count>
+       </with>
+	   <with variable="selection">
+	      <count value="+" />
+	      <iterate>
+	       <or>
+            <and>
+              <instanceof
+                    value="org.eclipse.datatools.connectivity.ICategory">
+              </instanceof>
+              <test
+                    property="org.eclipse.datatools.connectivity.category.property.categoryID"
+                    value="%parent.category.id">
+              </test>
+            </and>
+            <and>
+               <instanceof
+                     value="org.eclipse.datatools.connectivity.IConnectionProfile">
+               </instanceof>
+               <test
+                     property="org.eclipse.datatools.connectivity.profile.property.categoryID"
+                     value="%parent.category.id">
+               </test>
+            </and>
+	       </or>
+	      </iterate>
+	   </with>
+	  </or>
+     </activeWhen>
+    </handler>
+   </extension>
+   
+   <extension
+         point="org.eclipse.datatools.connectivity.oda.consumer.propertyProvider">
+      <dataSourcePropertyService
+            consumerApplicationId="%oda.data.source.id"
+            providerClass="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.impl.ProfilePropertyProvider">
+      </dataSourcePropertyService>
+   </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/Activator.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/Activator.java
new file mode 100644
index 0000000..4a243e8
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/Activator.java
@@ -0,0 +1,80 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle.
+ */
+public class Activator extends AbstractUIPlugin 
+{
+    private static Activator sm_plugin;
+    
+    /**
+     * The constructor
+     */
+    public Activator() 
+    {
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+     */
+    public void start( BundleContext context ) throws Exception 
+    {
+        super.start( context );
+        sm_plugin = this;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+     */
+    public void stop(BundleContext context) throws Exception 
+    {
+        sm_plugin = null;
+        super.stop( context );
+    }
+
+    /**
+     * Returns the shared instance
+     * @return the shared instance
+     */
+    public static Activator getDefault() 
+    {
+        return sm_plugin;
+    }
+
+    /**
+     * 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 getImageDescriptor( String path ) 
+    {
+        return imageDescriptorFromPlugin( getBundleId(), path );
+    }
+    
+    public static String getBundleId()
+    {
+        return getDefault().getBundle().getSymbolicName();
+    }
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/AddDbProfileViewAction.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/AddDbProfileViewAction.java
new file mode 100644
index 0000000..9f0e291
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/AddDbProfileViewAction.java
@@ -0,0 +1,65 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.filter;
+
+import java.util.ArrayList;
+
+import org.eclipse.datatools.connectivity.ui.actions.AddProfileViewAction;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+/**
+ * Extends the DTP Data Source Explorer's Default Add Profile Action
+ * to filter out the Databases Connection Profile wrapper type from the DSE.
+ */
+public class AddDbProfileViewAction extends AddProfileViewAction
+{
+    private ViewerFilter m_dbProfileFilter;
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.ui.actions.AddProfileViewAction#getWizardSelectionFilters()
+     */
+    protected ViewerFilter[] getWizardSelectionFilters()
+    {
+        // overrides base class method to provide an additional filter to 
+        // hide the Databases wrapper profile type in the DSE view
+        ViewerFilter[] baseFilters = super.getWizardSelectionFilters();
+        return appendFilter( baseFilters, getDbProfileFilter() );
+    }
+
+    private ViewerFilter getDbProfileFilter()
+    {
+        if( m_dbProfileFilter == null )
+            m_dbProfileFilter = new DbProfileCategoryFilter();
+        
+        return m_dbProfileFilter;
+    }
+
+    private ViewerFilter[] appendFilter( ViewerFilter[] filters, ViewerFilter moreFilter )
+    {
+        ArrayList mergedFilters = new ArrayList();
+        if( filters != null )
+        {
+            for( int i=0; i < filters.length; i++ )
+            {
+                mergedFilters.add( filters[i] );
+            }
+        }
+        
+        mergedFilters.add( moreFilter );
+        return (ViewerFilter[]) mergedFilters.toArray( new ViewerFilter[ mergedFilters.size() ] );
+    }
+    
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/DbProfileActionProvider.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/DbProfileActionProvider.java
new file mode 100644
index 0000000..eab6543
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/DbProfileActionProvider.java
@@ -0,0 +1,37 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.filter;
+
+import org.eclipse.datatools.connectivity.ui.actions.AddProfileViewAction;
+import org.eclipse.datatools.connectivity.ui.navigator.actions.ProfileActionsActionProvider;
+
+/**
+ * Extends the DTP Data Source Explorer's Default Profile Action Provider
+ * to provide own extended action(s).
+ */
+public class DbProfileActionProvider extends
+        ProfileActionsActionProvider
+{
+    
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.ui.navigator.actions.ProfileActionsActionProvider#createAddProfileViewAction()
+     */
+    protected AddProfileViewAction createAddProfileViewAction()
+    {
+        return new AddDbProfileViewAction();
+    }
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/DbProfileCategoryFilter.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/DbProfileCategoryFilter.java
new file mode 100644
index 0000000..2827b0a
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/DbProfileCategoryFilter.java
@@ -0,0 +1,65 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.filter;
+
+import org.eclipse.datatools.connectivity.ICategory;
+import org.eclipse.datatools.connectivity.internal.ui.wizards.CPWizardNode;
+import org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.Activator;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.ui.navigator.CommonViewer;
+
+/**
+ * A filter that hides the ODA DB Profile wrapper in the Data Source Explorer view.
+ */
+public class DbProfileCategoryFilter extends ViewerFilter
+{
+    private static String sm_runtimePluginId;
+    
+    public DbProfileCategoryFilter()
+    {
+        super();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+     */
+    public boolean select( Viewer viewer, Object parentElement, Object element )
+    {
+        if( ! (viewer instanceof CommonViewer) )
+        {
+            if( ! (element instanceof CPWizardNode) )
+                return true;
+            
+            String wizardProviderId = ((CPWizardNode) element).getProvider().getId();
+            return ! getRuntimePluginId().equalsIgnoreCase( wizardProviderId );
+        }
+        
+        if( ! (element instanceof ICategory) )
+            return true;
+
+        // filters out this oda data source id in the DSE
+        String categoryId = ((ICategory) element).getId();
+        return ! categoryId.equalsIgnoreCase( getRuntimePluginId() );
+    }
+
+    private static String getRuntimePluginId()
+    {
+        if( sm_runtimePluginId == null )
+            sm_runtimePluginId = Activator.getBundleId();
+        return sm_runtimePluginId;
+    }
+    
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/package.html b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/package.html
new file mode 100644
index 0000000..bbe5564
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/filter/package.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+
+-->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+<body bgcolor="white">
+
+This package provides an exemplary implementation of an ODA driver's designer 
+that adopts the integrated ODA Database Connection Profile framework.
+See the extensions defined in the plugin.xml.
+It contributes to the ODA framework's UI pages for an user to create an ODA 
+data source design that links to a DTP Database (JDBC) connection profile.
+<p>
+Its scope focus on designing an ODA data source connection.
+It uses the auto-generated ODA data set designer page, included for demo purpose only.
+<p>
+
+<!-- Put @see and @since tags down here. -->
+@since DTP 1.6
+
+</body>
+</html>
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/impl/CustomDataSetWizardPage.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/impl/CustomDataSetWizardPage.java
new file mode 100644
index 0000000..d707c8a
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/impl/CustomDataSetWizardPage.java
@@ -0,0 +1,396 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.impl;
+
+import org.eclipse.datatools.connectivity.oda.IConnection;
+import org.eclipse.datatools.connectivity.oda.IDriver;
+import org.eclipse.datatools.connectivity.oda.IParameterMetaData;
+import org.eclipse.datatools.connectivity.oda.IQuery;
+import org.eclipse.datatools.connectivity.oda.IResultSetMetaData;
+import org.eclipse.datatools.connectivity.oda.OdaException;
+import org.eclipse.datatools.connectivity.oda.design.DataSetDesign;
+import org.eclipse.datatools.connectivity.oda.design.DataSetParameters;
+import org.eclipse.datatools.connectivity.oda.design.DesignFactory;
+import org.eclipse.datatools.connectivity.oda.design.ParameterDefinition;
+import org.eclipse.datatools.connectivity.oda.design.ResultSetColumns;
+import org.eclipse.datatools.connectivity.oda.design.ResultSetDefinition;
+import org.eclipse.datatools.connectivity.oda.design.ui.designsession.DesignSessionUtil;
+import org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+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.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Auto-generated implementation of an ODA data set designer page
+ * for an user to create or edit an ODA data set design instance.
+ * This custom page provides a simple Query Text control for user input.  
+ * It further extends the DTP design-time framework to update
+ * an ODA data set design instance based on the query's derived meta-data.
+ * <br>
+ * A custom ODA designer is expected to change this exemplary implementation 
+ * as appropriate. 
+ */
+public class CustomDataSetWizardPage extends DataSetWizardPage
+{
+
+    private static String DEFAULT_MESSAGE = "Define the query text for the data set";
+    
+    private transient Text m_queryTextField;
+
+	/**
+     * Constructor
+	 * @param pageName
+	 */
+	public CustomDataSetWizardPage( String pageName )
+	{
+        super( pageName );
+        setTitle( pageName );
+        setMessage( DEFAULT_MESSAGE );
+
+        setPageComplete( false );
+	}
+
+	/**
+     * Constructor
+	 * @param pageName
+	 * @param title
+	 * @param titleImage
+	 */
+	public CustomDataSetWizardPage( String pageName, String title,
+			ImageDescriptor titleImage )
+	{
+        super( pageName, title, titleImage );
+        setMessage( DEFAULT_MESSAGE );
+        setPageComplete( false );
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage#createPageCustomControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createPageCustomControl( Composite parent )
+	{
+        setControl( createPageControl( parent ) );
+        initializeControl();
+	}
+    
+    /**
+     * Creates custom control for user-defined query text.
+     */
+    private Control createPageControl( Composite parent )
+    {
+        Composite composite = new Composite( parent, SWT.NONE );
+        composite.setLayout( new GridLayout( 1, false ) );
+        GridData gridData = new GridData( GridData.HORIZONTAL_ALIGN_FILL
+                | GridData.VERTICAL_ALIGN_FILL );
+
+        composite.setLayoutData( gridData );
+
+        Label fieldLabel = new Label( composite, SWT.NONE );
+        fieldLabel.setText( "&Query Text:" );
+        
+        m_queryTextField = new Text( composite, SWT.BORDER
+                | SWT.V_SCROLL | SWT.H_SCROLL );
+        GridData data = new GridData( GridData.FILL_HORIZONTAL );
+        data.heightHint = 100;
+        m_queryTextField.setLayoutData( data );
+        m_queryTextField.addModifyListener( new ModifyListener( ) 
+        {
+            public void modifyText( ModifyEvent e )
+            {
+                validateData();
+            }
+        } );
+       
+        return composite;
+    }
+
+	/**
+	 * Initializes the page control with the last edited data set design.
+	 */
+	private void initializeControl( )
+	{
+        /* 
+         * To optionally restore the designer state of the previous design session, use
+         *      getInitializationDesignerState(); 
+         */
+
+        // Restores the last saved data set design
+        DataSetDesign dataSetDesign = getInitializationDesign();
+        if( dataSetDesign == null )
+            return; // nothing to initialize
+
+        String queryText = dataSetDesign.getQueryText();
+        if( queryText == null )
+            return; // nothing to initialize
+
+        // initialize control
+        m_queryTextField.setText( queryText );
+        validateData();
+        setMessage( DEFAULT_MESSAGE );
+
+        /*
+         * To optionally honor the request for an editable or
+         * read-only design session, use
+         *      isSessionEditable();
+         */
+	}
+
+    /**
+     * Obtains the user-defined query text of this data set from page control.
+     * @return query text
+     */
+    private String getQueryText( )
+    {
+        return m_queryTextField.getText();
+    }
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage#collectDataSetDesign(org.eclipse.datatools.connectivity.oda.design.DataSetDesign)
+	 */
+	protected DataSetDesign collectDataSetDesign( DataSetDesign design )
+	{
+        if( ! hasValidData() )
+            return design;
+        savePage( design );
+        return design;
+	}
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage#collectResponseState()
+     */
+	protected void collectResponseState( )
+	{
+		super.collectResponseState( );
+		/*
+		 * To optionally assign a custom response state, for inclusion in the ODA
+		 * design session response, use 
+         *      setResponseSessionStatus( SessionStatus status );
+         *      setResponseDesignerState( DesignerState customState );
+		 */
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage#canLeave()
+	 */
+	protected boolean canLeave( )
+	{
+        return isPageComplete();
+	}
+
+    /**
+     * Validates the user-defined value in the page control exists
+     * and not a blank text.
+     * Set page message accordingly.
+     */
+	private void validateData( )
+	{
+        boolean isValid = ( m_queryTextField != null &&
+            getQueryText() != null && getQueryText().trim().length() > 0 );
+
+        if( isValid )
+            setMessage( DEFAULT_MESSAGE );
+        else
+            setMessage( "Requires input value.", ERROR );
+
+		setPageComplete( isValid );
+	}
+
+	/**
+	 * Indicates whether the custom page has valid data to proceed 
+     * with defining a data set.
+	 */
+	private boolean hasValidData( )
+	{
+        validateData( );
+        
+		return canLeave();
+	}
+
+	/**
+     * Saves the user-defined value in this page, and updates the specified 
+     * dataSetDesign with the latest design definition.
+	 */
+	private void savePage( DataSetDesign dataSetDesign )
+	{
+        // save user-defined query text
+        String queryText = getQueryText();
+        dataSetDesign.setQueryText( queryText );
+
+        // obtain query's current runtime metadata, and maps it to the dataSetDesign
+        IConnection customConn = null;
+        try
+        {
+            // instantiate your custom ODA runtime driver class
+            /* Note: You may need to manually update your ODA runtime extension's
+             * plug-in manifest to export its package for visibility here.
+             */
+            IDriver customDriver = new org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl.Driver();
+            
+            // obtain and open a live connection
+            customConn = customDriver.getConnection( null );
+            java.util.Properties connProps = 
+                DesignSessionUtil.getEffectiveDataSourceProperties( 
+                         getInitializationDesign().getDataSourceDesign() );
+            customConn.open( connProps );
+
+            // update the data set design with the 
+            // query's current runtime metadata
+            updateDesign( dataSetDesign, customConn, queryText );
+        }
+        catch( OdaException e )
+        {
+            // not able to get current metadata, reset previous derived metadata
+            dataSetDesign.setResultSets( null );
+            dataSetDesign.setParameters( null );
+            
+            e.printStackTrace();
+        }
+        finally
+        {
+            closeConnection( customConn );
+        }
+	}
+
+    /**
+     * Updates the given dataSetDesign with the queryText and its derived metadata
+     * obtained from the ODA runtime connection.
+     */
+    private void updateDesign( DataSetDesign dataSetDesign,
+                               IConnection conn, String queryText )
+        throws OdaException
+    {
+        IQuery query = conn.newQuery( null );
+        query.prepare( queryText );
+        
+        // TODO a runtime driver might require a query to first execute before
+        // its metadata is available
+//      query.setMaxRows( 1 );
+//      query.executeQuery();
+        
+        try
+        {
+            IResultSetMetaData md = query.getMetaData();
+            updateResultSetDesign( md, dataSetDesign );
+        }
+        catch( OdaException e )
+        {
+            // no result set definition available, reset previous derived metadata
+            dataSetDesign.setResultSets( null );
+            e.printStackTrace();
+        }
+        
+        // proceed to get parameter design definition
+        try
+        {
+            IParameterMetaData paramMd = query.getParameterMetaData();
+            updateParameterDesign( paramMd, dataSetDesign );
+        }
+        catch( OdaException ex )
+        {
+            // no parameter definition available, reset previous derived metadata
+            dataSetDesign.setParameters( null );
+            ex.printStackTrace();
+        }
+        
+        /*
+         * See DesignSessionUtil for more convenience methods
+         * to define a data set design instance.  
+         */     
+    }
+
+    /**
+     * Updates the specified data set design's result set definition based on the
+     * specified runtime metadata.
+     * @param md    runtime result set metadata instance
+     * @param dataSetDesign     data set design instance to update
+     * @throws OdaException
+     */
+	private void updateResultSetDesign( IResultSetMetaData md,
+            DataSetDesign dataSetDesign ) 
+        throws OdaException
+	{
+        ResultSetColumns columns = DesignSessionUtil.toResultSetColumnsDesign( md );
+
+        ResultSetDefinition resultSetDefn = DesignFactory.eINSTANCE
+                .createResultSetDefinition();
+        // resultSetDefn.setName( value );  // result set name
+        resultSetDefn.setResultSetColumns( columns );
+
+        // no exception in conversion; go ahead and assign to specified dataSetDesign
+        dataSetDesign.setPrimaryResultSet( resultSetDefn );
+        dataSetDesign.getResultSets().setDerivedMetaData( true );
+	}
+
+    /**
+     * Updates the specified data set design's parameter definition based on the
+     * specified runtime metadata.
+     * @param paramMd   runtime parameter metadata instance
+     * @param dataSetDesign     data set design instance to update
+     * @throws OdaException
+     */
+    private void updateParameterDesign( IParameterMetaData paramMd,
+            DataSetDesign dataSetDesign ) 
+        throws OdaException
+    {
+        DataSetParameters paramDesign = 
+            DesignSessionUtil.toDataSetParametersDesign( paramMd, 
+                    DesignSessionUtil.toParameterModeDesign( IParameterMetaData.parameterModeIn ) );
+        
+        // no exception in conversion; go ahead and assign to specified dataSetDesign
+        dataSetDesign.setParameters( paramDesign );        
+        if( paramDesign == null )
+            return;     // no parameter definitions; done with update
+        
+        paramDesign.setDerivedMetaData( true );
+
+        // TODO replace below with data source specific implementation;
+        // hard-coded parameter's default value for demo purpose
+        if( paramDesign.getParameterDefinitions().size() > 0 )
+        {
+            ParameterDefinition paramDef = 
+                (ParameterDefinition) paramDesign.getParameterDefinitions().get( 0 );
+            if( paramDef != null )
+                paramDef.setDefaultScalarValue( "dummy default value" );
+        }
+    }
+
+    /**
+     * Attempts to close given ODA connection.
+     */
+    private void closeConnection( IConnection conn )
+    {
+        try
+        {
+            if( conn != null && conn.isOpen() )
+                conn.close();
+        }
+        catch ( OdaException e )
+        {
+            // ignore
+            e.printStackTrace();
+        }
+    }
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/impl/ProfilePropertyProvider.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/impl/ProfilePropertyProvider.java
new file mode 100644
index 0000000..54b23bc
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/ui/impl/ProfilePropertyProvider.java
@@ -0,0 +1,46 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2009 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.ui.impl;
+
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.oda.OdaException;
+import org.eclipse.datatools.connectivity.oda.consumer.services.IPropertyProvider;
+
+/**
+ *  Sample template implementation of IPropertyProvider that gets called
+ *  when a data source design is exported to an external connection profile.
+ */
+public class ProfilePropertyProvider implements IPropertyProvider
+{
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.consumer.services.IPropertyProvider#getDataSourceProperties(java.util.Properties, java.lang.Object)
+     */
+    public Properties getDataSourceProperties( Properties candidateProperties, Object appContext ) 
+        throws OdaException
+    {
+        // exporting data source properties to be saved in an external db profile
+        
+        // makes a copy of the specified properties
+        Properties profileProps = new Properties();
+        profileProps.putAll( candidateProperties );
+        
+        // TODO - adjust the profile properties returned to be saved in an external connection profile
+        
+        return profileProps;
+    }
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/.classpath b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<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/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/.gitignore b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/.gitignore
new file mode 100644
index 0000000..6ec8be4
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/.gitignore
@@ -0,0 +1,4 @@
+bin
+download
+*.jar
+*.zip
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/.project b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/.project
new file mode 100644
index 0000000..dcd43da
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/META-INF/MANIFEST.MF b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..df029a0
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %plugin.name
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample; singleton:=true
+Bundle-Version: 1.0.1
+Bundle-ClassPath: .,
+ src
+Bundle-Activator: org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.Activator
+Bundle-Vendor: Eclipse.org
+Bundle-Localization: plugin
+Export-Package: org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample,
+ org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.datatools.connectivity.oda;bundle-version="[3.2.2,4.0.0)",
+ org.eclipse.datatools.connectivity.oda.profile;bundle-version="[3.0.7,4.0.0)"
+Eclipse-LazyStart: true
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/about.html b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/about.html
new file mode 100644
index 0000000..129db9d
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 15, 2009</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>
+
+<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
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/build.properties b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/build.properties
new file mode 100644
index 0000000..6e16e40
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .,\
+               plugin.properties,\
+               about.html
+src.includes = about.html
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/plugin.properties b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/plugin.properties
new file mode 100644
index 0000000..0a7453c
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/plugin.properties
@@ -0,0 +1,24 @@
+###############################################################################
+# Copyright (c) 2008 Actuate Corporation.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#  Actuate Corporation - initial API and implementation
+#
+###############################################################################
+# Plug-in Configuration
+#
+oda.data.source.id=org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample
+parent.category.id=org.eclipse.datatools.connectivity.db.category
+#
+###############################################################################
+# NLS String
+###############################################################################
+#
+plugin.name=ODA Databases Profile Sample Wrapper Data Source Runtime Driver
+data.source.name=ODA Databases Profile Sample Wrapper Data Source
+data.set.name=ODA Databases Profile Sample Wrapper Data Set
+connection.profile.name=ODA Databases Profile Sample Wrapper Data Source Connection Profile
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/plugin.xml b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/plugin.xml
new file mode 100644
index 0000000..1971252
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/plugin.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+   <extension
+         id="%oda.data.source.id"
+         point="org.eclipse.datatools.connectivity.oda.dataSource">
+      <dataSource
+            defaultDisplayName="%data.source.name"
+            driverClass="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl.Driver"
+            id="%oda.data.source.id"
+            odaVersion="3.1"
+            overrideExplorerFiltering="true"
+            setThreadContextClassLoader="false">
+         <properties></properties>
+         <relationship
+               relatedId="%parent.category.id"
+               type="wrapperOf">
+         </relationship>
+      </dataSource>
+      <dataSet
+            defaultDisplayName="%data.set.name"
+            id="org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.dataSet">
+         <dataTypeMapping
+               nativeDataTypeCode="1"
+               odaScalarDataType="String"
+               nativeDataType="String">
+         </dataTypeMapping>
+         <dataTypeMapping
+               nativeDataTypeCode="4"
+               odaScalarDataType="Integer"
+               nativeDataType="Integer">
+         </dataTypeMapping>
+         <dataTypeMapping
+               nativeDataTypeCode="8"
+               odaScalarDataType="Double"
+               nativeDataType="Double">
+         </dataTypeMapping>
+         <dataTypeMapping
+               nativeDataTypeCode="3"
+               odaScalarDataType="Decimal"
+               nativeDataType="BigDecimal">
+         </dataTypeMapping>
+         <dataTypeMapping
+               nativeDataTypeCode="91"
+               odaScalarDataType="Date"
+               nativeDataType="Date">
+         </dataTypeMapping>
+         <dataTypeMapping
+               nativeDataTypeCode="92"
+               odaScalarDataType="Time"
+               nativeDataType="Time">
+         </dataTypeMapping>
+         <dataTypeMapping
+               nativeDataTypeCode="93"
+               odaScalarDataType="Timestamp"
+               nativeDataType="Timestamp">
+         </dataTypeMapping>
+         <dataTypeMapping
+               nativeDataTypeCode="16"
+               odaScalarDataType="Boolean"
+               nativeDataType="Boolean">
+         </dataTypeMapping>
+      </dataSet>
+   </extension>
+   <extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <category
+            id="%oda.data.source.id"
+            name="%data.source.name"
+            parentCategory="%parent.category.id">
+      </category>
+      <connectionProfile
+            pingFactory="org.eclipse.datatools.connectivity.oda.profile.OdaConnectionFactory"
+            name="%connection.profile.name"
+            category="%oda.data.source.id"
+            id="%oda.data.source.id">
+      </connectionProfile>
+      <connectionFactory
+            name="ODA Connection Factory"
+            profile="%oda.data.source.id"
+            class="org.eclipse.datatools.connectivity.oda.profile.OdaConnectionFactory"
+            id="org.eclipse.datatools.connectivity.oda.IConnection">
+      </connectionFactory>
+   </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/Activator.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/Activator.java
new file mode 100644
index 0000000..b2c4ae0
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/Activator.java
@@ -0,0 +1,70 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin 
+{
+    // The shared instance
+    private static Activator sm_plugin;
+    
+    /**
+     * The constructor
+     */
+    public Activator() 
+    {
+        super();
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+     */
+    public void start( BundleContext context ) throws Exception 
+    {
+        super.start( context );
+        sm_plugin = this;
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+     */
+    public void stop( BundleContext context ) throws Exception 
+    {
+        sm_plugin = null;
+        super.stop( context );
+    }
+
+    /**
+     * Returns the shared instance.
+     * @return the shared instance
+     */
+    public static Activator getDefault() 
+    {
+        return sm_plugin;
+    }
+    
+    public static String getBundleId()
+    {
+        return getDefault().getBundle().getSymbolicName();
+    }
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/Connection.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/Connection.java
new file mode 100644
index 0000000..76d678c
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/Connection.java
@@ -0,0 +1,119 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008, 2009 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl;
+
+import java.util.Properties;
+import org.eclipse.datatools.connectivity.oda.IConnection;
+import org.eclipse.datatools.connectivity.oda.IDataSetMetaData;
+import org.eclipse.datatools.connectivity.oda.IQuery;
+import org.eclipse.datatools.connectivity.oda.OdaException;
+
+import com.ibm.icu.util.ULocale;
+
+/**
+ * Implementation class of IConnection for an ODA runtime driver.
+ */
+public class Connection implements IConnection
+{
+    private boolean m_isOpen = false;
+    
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IConnection#open(java.util.Properties)
+	 */
+	public void open( Properties connProperties ) throws OdaException
+	{
+        // TODO replace with data source specific implementation
+	    m_isOpen = true;        
+ 	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IConnection#setAppContext(java.lang.Object)
+	 */
+	public void setAppContext( Object context ) throws OdaException
+	{
+	    // do nothing; assumes no support for pass-through context
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IConnection#close()
+	 */
+	public void close() throws OdaException
+	{
+        // TODO replace with data source specific implementation
+	    m_isOpen = false;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IConnection#isOpen()
+	 */
+	public boolean isOpen() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return m_isOpen;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IConnection#getMetaData(java.lang.String)
+	 */
+	public IDataSetMetaData getMetaData( String dataSetType ) throws OdaException
+	{
+	    // assumes that this driver supports only one type of data set,
+        // ignores the specified dataSetType
+		return new DataSetMetaData( this );
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IConnection#newQuery(java.lang.String)
+	 */
+	public IQuery newQuery( String dataSetType ) throws OdaException
+	{
+        // assumes that this driver supports only one type of data set,
+        // ignores the specified dataSetType
+		return new Query();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IConnection#getMaxQueries()
+	 */
+	public int getMaxQueries() throws OdaException
+	{
+		return 0;	// no limit
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IConnection#commit()
+	 */
+	public void commit() throws OdaException
+	{
+	    // do nothing; assumes no transaction support needed
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IConnection#rollback()
+	 */
+	public void rollback() throws OdaException
+	{
+        // do nothing; assumes no transaction support needed
+	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IConnection#setLocale(com.ibm.icu.util.ULocale)
+     */
+    public void setLocale( ULocale locale ) throws OdaException
+    {
+        // do nothing; assumes no locale support
+    }
+    
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/DataSetMetaData.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/DataSetMetaData.java
new file mode 100644
index 0000000..fb9c7e0
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/DataSetMetaData.java
@@ -0,0 +1,163 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl;
+
+import org.eclipse.datatools.connectivity.oda.IConnection;
+import org.eclipse.datatools.connectivity.oda.IDataSetMetaData;
+import org.eclipse.datatools.connectivity.oda.IResultSet;
+import org.eclipse.datatools.connectivity.oda.OdaException;
+
+/**
+ * Implementation class of IDataSetMetaData for an ODA runtime driver.
+ * <br>
+ * For demo purpose, the auto-generated method stubs have
+ * hard-coded implementation that assume this custom ODA data set
+ * is capable of handling a query that returns a single result set and 
+ * accepts scalar input parameters by index.
+ * A custom ODA driver is expected to implement own data set specific
+ * behavior in its place. 
+ */
+public class DataSetMetaData implements IDataSetMetaData
+{
+	private IConnection m_connection;
+	
+	DataSetMetaData( IConnection connection )
+	{
+		m_connection = connection;
+	}
+	
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#getConnection()
+	 */
+	public IConnection getConnection() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return m_connection;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#getDataSourceObjects(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
+	 */
+	public IResultSet getDataSourceObjects( String catalog, String schema, String object, String version ) throws OdaException
+	{
+	    throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#getDataSourceMajorVersion()
+	 */
+	public int getDataSourceMajorVersion() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return 1;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#getDataSourceMinorVersion()
+	 */
+	public int getDataSourceMinorVersion() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return 0;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#getDataSourceProductName()
+	 */
+	public String getDataSourceProductName() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return "ODA Sample Databases Profile Wrapper Data Source";
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#getDataSourceProductVersion()
+	 */
+	public String getDataSourceProductVersion() throws OdaException
+	{
+		return Integer.toString( getDataSourceMajorVersion() ) + "." +   //$NON-NLS-1$
+			   Integer.toString( getDataSourceMinorVersion() );
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#getSQLStateType()
+	 */
+	public int getSQLStateType() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return IDataSetMetaData.sqlStateSQL99;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#supportsMultipleResultSets()
+	 */
+	public boolean supportsMultipleResultSets() throws OdaException
+	{
+		return false;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#supportsMultipleOpenResults()
+	 */
+	public boolean supportsMultipleOpenResults() throws OdaException
+	{
+		return false;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#supportsNamedResultSets()
+	 */
+	public boolean supportsNamedResultSets() throws OdaException
+	{
+		return false;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#supportsNamedParameters()
+	 */
+	public boolean supportsNamedParameters() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return false;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#supportsInParameters()
+	 */
+	public boolean supportsInParameters() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return true;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#supportsOutParameters()
+	 */
+	public boolean supportsOutParameters() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return false;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDataSetMetaData#getSortMode()
+	 */
+	public int getSortMode()
+	{
+        // TODO Auto-generated method stub
+		return IDataSetMetaData.sortModeNone;
+	}
+    
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/Driver.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/Driver.java
new file mode 100644
index 0000000..3f30e11
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/Driver.java
@@ -0,0 +1,95 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl;
+
+import org.eclipse.datatools.connectivity.oda.IConnection;
+import org.eclipse.datatools.connectivity.oda.IDriver;
+import org.eclipse.datatools.connectivity.oda.LogConfiguration;
+import org.eclipse.datatools.connectivity.oda.OdaException;
+import org.eclipse.datatools.connectivity.oda.util.manifest.DataTypeMapping;
+import org.eclipse.datatools.connectivity.oda.util.manifest.ExtensionManifest;
+import org.eclipse.datatools.connectivity.oda.util.manifest.ManifestExplorer;
+
+/**
+ * Implementation class of IDriver for an ODA runtime driver.
+ */
+public class Driver implements IDriver
+{
+    static String ODA_DATA_SOURCE_ID = "org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample";  //$NON-NLS-1$
+    
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDriver#getConnection(java.lang.String)
+	 */
+	public IConnection getConnection( String dataSourceType ) throws OdaException
+	{
+        // assumes that this driver supports only one type of data source,
+        // ignores the specified dataSourceType
+        return new Connection();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDriver#setLogConfiguration(org.eclipse.datatools.connectivity.oda.LogConfiguration)
+	 */
+	public void setLogConfiguration( LogConfiguration logConfig ) throws OdaException
+	{
+		// do nothing; assumes simple driver has no logging
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDriver#getMaxConnections()
+	 */
+	public int getMaxConnections() throws OdaException
+	{
+		return 0;	// no limit
+	}
+	
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IDriver#setAppContext(java.lang.Object)
+	 */
+	public void setAppContext( Object context ) throws OdaException
+	{
+	    // do nothing; assumes no support for pass-through context
+	}
+
+    /**
+     * Returns the object that represents this extension's manifest.
+     * @throws OdaException
+     */
+    static ExtensionManifest getManifest()
+        throws OdaException
+    {
+        return ManifestExplorer.getInstance()
+                .getExtensionManifest( ODA_DATA_SOURCE_ID );
+    }
+    
+    /**
+     * Returns the native data type name of the specified code, as
+     * defined in this data source extension's manifest.
+     * @param nativeTypeCode    the native data type code
+     * @return                  corresponding native data type name
+     * @throws OdaException     if lookup fails
+     */
+    static String getNativeDataTypeName( int nativeDataTypeCode ) 
+        throws OdaException
+    {
+        DataTypeMapping typeMapping = 
+                            getManifest().getDataSetType( null )
+                                .getDataTypeMapping( nativeDataTypeCode );
+        if( typeMapping != null )
+            return typeMapping.getNativeType();
+        return "Non-defined"; 
+    }
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/ParameterMetaData.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/ParameterMetaData.java
new file mode 100644
index 0000000..815d52a
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/ParameterMetaData.java
@@ -0,0 +1,108 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl;
+
+import org.eclipse.datatools.connectivity.oda.IParameterMetaData;
+import org.eclipse.datatools.connectivity.oda.OdaException;
+
+/**
+ * Implementation class of IParameterMetaData for an ODA runtime driver.
+ * <br>
+ * For demo purpose, the auto-generated method stubs have
+ * hard-coded implementation that returns a pre-defined set
+ * of meta-data and query results.
+ * A custom ODA driver is expected to implement own data source specific
+ * behavior in its place. 
+ */
+public class ParameterMetaData implements IParameterMetaData 
+{
+
+	/* 
+	 * @see org.eclipse.datatools.connectivity.oda.IParameterMetaData#getParameterCount()
+	 */
+	public int getParameterCount() throws OdaException 
+	{
+        // TODO replace with data source specific implementation
+
+        // hard-coded for demo purpose
+        return 1;
+	}
+
+    /*
+	 * @see org.eclipse.datatools.connectivity.oda.IParameterMetaData#getParameterMode(int)
+	 */
+	public int getParameterMode( int param ) throws OdaException 
+	{
+        // TODO Auto-generated method stub
+		return IParameterMetaData.parameterModeIn;
+	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IParameterMetaData#getParameterName(int)
+     */
+    public String getParameterName( int param ) throws OdaException
+    {
+        // TODO Auto-generated method stub
+        return null;    // name is not available
+    }
+
+	/* 
+	 * @see org.eclipse.datatools.connectivity.oda.IParameterMetaData#getParameterType(int)
+	 */
+	public int getParameterType( int param ) throws OdaException 
+	{
+        // TODO replace with data source specific implementation
+
+        // hard-coded for demo purpose
+        return java.sql.Types.CHAR;   // as defined in data set extension manifest
+	}
+
+	/* 
+	 * @see org.eclipse.datatools.connectivity.oda.IParameterMetaData#getParameterTypeName(int)
+	 */
+	public String getParameterTypeName( int param ) throws OdaException 
+	{
+        int nativeTypeCode = getParameterType( param );
+        return Driver.getNativeDataTypeName( nativeTypeCode );
+	}
+
+	/* 
+	 * @see org.eclipse.datatools.connectivity.oda.IParameterMetaData#getPrecision(int)
+	 */
+	public int getPrecision( int param ) throws OdaException 
+	{
+        // TODO Auto-generated method stub
+		return -1;
+	}
+
+	/* 
+	 * @see org.eclipse.datatools.connectivity.oda.IParameterMetaData#getScale(int)
+	 */
+	public int getScale( int param ) throws OdaException 
+	{
+        // TODO Auto-generated method stub
+		return -1;
+	}
+
+	/* 
+	 * @see org.eclipse.datatools.connectivity.oda.IParameterMetaData#isNullable(int)
+	 */
+	public int isNullable( int param ) throws OdaException 
+	{
+        // TODO Auto-generated method stub
+		return IParameterMetaData.parameterNullableUnknown;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/Query.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/Query.java
new file mode 100644
index 0000000..f5c3ba5
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/Query.java
@@ -0,0 +1,390 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008, 2009 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl;
+
+import java.math.BigDecimal;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+import org.eclipse.datatools.connectivity.oda.IParameterMetaData;
+import org.eclipse.datatools.connectivity.oda.IResultSet;
+import org.eclipse.datatools.connectivity.oda.IResultSetMetaData;
+import org.eclipse.datatools.connectivity.oda.IQuery;
+import org.eclipse.datatools.connectivity.oda.OdaException;
+import org.eclipse.datatools.connectivity.oda.SortSpec;
+import org.eclipse.datatools.connectivity.oda.spec.QuerySpecification;
+
+/**
+ * Implementation class of IQuery for an ODA runtime driver.
+ * <br>
+ * For demo purpose, the auto-generated method stubs have
+ * hard-coded implementation that returns a pre-defined set
+ * of meta-data and query results.
+ * A custom ODA driver is expected to implement own data source specific
+ * behavior in its place. 
+ */
+public class Query implements IQuery
+{
+	private int m_maxRows;
+	private String m_preparedText;
+	
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#prepare(java.lang.String)
+	 */
+	public void prepare( String queryText ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+	    m_preparedText = queryText;
+	}
+	
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setAppContext(java.lang.Object)
+	 */
+	public void setAppContext( Object context ) throws OdaException
+	{
+	    // do nothing; assumes no support for pass-through context
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#close()
+	 */
+	public void close() throws OdaException
+	{
+        // TODO Auto-generated method stub
+	    m_preparedText = null;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#getMetaData()
+	 */
+	public IResultSetMetaData getMetaData() throws OdaException
+	{
+        /* TODO Auto-generated method stub
+         * Replace with implementation to return an instance 
+         * based on this prepared query.
+         */
+		return new ResultSetMetaData();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#executeQuery()
+	 */
+	public IResultSet executeQuery() throws OdaException
+	{
+        /* TODO Auto-generated method stub
+         * Replace with implementation to return an instance 
+         * based on this prepared query.
+         */
+		IResultSet resultSet = new ResultSet();
+		resultSet.setMaxRows( getMaxRows() );
+		return resultSet;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setProperty(java.lang.String, java.lang.String)
+	 */
+	public void setProperty( String name, String value ) throws OdaException
+	{
+		// do nothing; assumes no data set query property
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setMaxRows(int)
+	 */
+	public void setMaxRows( int max ) throws OdaException
+	{
+	    m_maxRows = max;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#getMaxRows()
+	 */
+	public int getMaxRows() throws OdaException
+	{
+		return m_maxRows;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#clearInParameters()
+	 */
+	public void clearInParameters() throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setInt(java.lang.String, int)
+	 */
+	public void setInt( String parameterName, int value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to named input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setInt(int, int)
+	 */
+	public void setInt( int parameterId, int value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setDouble(java.lang.String, double)
+	 */
+	public void setDouble( String parameterName, double value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to named input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setDouble(int, double)
+	 */
+	public void setDouble( int parameterId, double value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setBigDecimal(java.lang.String, java.math.BigDecimal)
+	 */
+	public void setBigDecimal( String parameterName, BigDecimal value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to named input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setBigDecimal(int, java.math.BigDecimal)
+	 */
+	public void setBigDecimal( int parameterId, BigDecimal value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setString(java.lang.String, java.lang.String)
+	 */
+	public void setString( String parameterName, String value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to named input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setString(int, java.lang.String)
+	 */
+	public void setString( int parameterId, String value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setDate(java.lang.String, java.sql.Date)
+	 */
+	public void setDate( String parameterName, Date value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to named input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setDate(int, java.sql.Date)
+	 */
+	public void setDate( int parameterId, Date value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setTime(java.lang.String, java.sql.Time)
+	 */
+	public void setTime( String parameterName, Time value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to named input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setTime(int, java.sql.Time)
+	 */
+	public void setTime( int parameterId, Time value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setTimestamp(java.lang.String, java.sql.Timestamp)
+	 */
+	public void setTimestamp( String parameterName, Timestamp value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to named input parameter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setTimestamp(int, java.sql.Timestamp)
+	 */
+	public void setTimestamp( int parameterId, Timestamp value ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to input parameter
+	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#setBoolean(java.lang.String, boolean)
+     */
+    public void setBoolean( String parameterName, boolean value )
+            throws OdaException
+    {
+        // TODO Auto-generated method stub
+        // only applies to named input parameter
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#setBoolean(int, boolean)
+     */
+    public void setBoolean( int parameterId, boolean value )
+            throws OdaException
+    {
+        // TODO Auto-generated method stub       
+        // only applies to input parameter
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#setObject(java.lang.String, java.lang.Object)
+     */
+    public void setObject( String parameterName, Object value )
+            throws OdaException
+    {
+        // TODO Auto-generated method stub
+        // only applies to named input parameter
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#setObject(int, java.lang.Object)
+     */
+    public void setObject( int parameterId, Object value ) throws OdaException
+    {
+        // TODO Auto-generated method stub
+        // only applies to input parameter
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#setNull(java.lang.String)
+     */
+    public void setNull( String parameterName ) throws OdaException
+    {
+        // TODO Auto-generated method stub
+        // only applies to named input parameter
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#setNull(int)
+     */
+    public void setNull( int parameterId ) throws OdaException
+    {
+        // TODO Auto-generated method stub
+        // only applies to input parameter
+    }
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#findInParameter(java.lang.String)
+	 */
+	public int findInParameter( String parameterName ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		// only applies to named input parameter
+		return 0;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#getParameterMetaData()
+	 */
+	public IParameterMetaData getParameterMetaData() throws OdaException
+	{
+        /* TODO Auto-generated method stub
+         * Replace with implementation to return an instance 
+         * based on this prepared query.
+         */
+		return new ParameterMetaData();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#setSortSpec(org.eclipse.datatools.connectivity.oda.SortSpec)
+	 */
+	public void setSortSpec( SortSpec sortBy ) throws OdaException
+	{
+		// only applies to sorting, assumes not supported
+        throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IQuery#getSortSpec()
+	 */
+	public SortSpec getSortSpec() throws OdaException
+	{
+		// only applies to sorting
+		return null;
+	}
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#setSpecification(org.eclipse.datatools.connectivity.oda.spec.QuerySpecification)
+     */
+    @SuppressWarnings("restriction")
+    public void setSpecification( QuerySpecification querySpec )
+            throws OdaException, UnsupportedOperationException
+    {
+        // assumes no support
+        throw new UnsupportedOperationException();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#getSpecification()
+     */
+    @SuppressWarnings("restriction")
+    public QuerySpecification getSpecification()
+    {
+        // assumes no support
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#getEffectiveQueryText()
+     */
+    public String getEffectiveQueryText()
+    {
+        // TODO Auto-generated method stub
+        return m_preparedText;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IQuery#cancel()
+     */
+    public void cancel() throws OdaException, UnsupportedOperationException
+    {
+        // assumes unable to cancel while executing a query
+        throw new UnsupportedOperationException();
+    }
+    
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/ResultSet.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/ResultSet.java
new file mode 100644
index 0000000..9ce9702
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/ResultSet.java
@@ -0,0 +1,334 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008, 2009 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl;
+
+import java.math.BigDecimal;
+import java.sql.Date;
+import java.sql.Time;
+import java.sql.Timestamp;
+
+import org.eclipse.datatools.connectivity.oda.IBlob;
+import org.eclipse.datatools.connectivity.oda.IClob;
+import org.eclipse.datatools.connectivity.oda.IResultSet;
+import org.eclipse.datatools.connectivity.oda.IResultSetMetaData;
+import org.eclipse.datatools.connectivity.oda.OdaException;
+
+/**
+ * Implementation class of IResultSet for an ODA runtime driver.
+ * <br>
+ * For demo purpose, the auto-generated method stubs have
+ * hard-coded implementation that returns a pre-defined set
+ * of meta-data and query results.
+ * A custom ODA driver is expected to implement own data source specific
+ * behavior in its place. 
+ */
+public class ResultSet implements IResultSet
+{
+	private int m_maxRows;
+    private int m_currentRowId;
+	
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getMetaData()
+	 */
+	public IResultSetMetaData getMetaData() throws OdaException
+	{
+        /* TODO Auto-generated method stub
+         * Replace with implementation to return an instance 
+         * based on this result set.
+         */
+		return new ResultSetMetaData();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#setMaxRows(int)
+	 */
+	public void setMaxRows( int max ) throws OdaException
+	{
+		m_maxRows = max;
+	}
+	
+	/**
+	 * Returns the maximum number of rows that can be fetched from this result set.
+	 * @return the maximum number of rows to fetch.
+	 */
+	protected int getMaxRows()
+	{
+		return m_maxRows;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#next()
+	 */
+	public boolean next() throws OdaException
+	{
+		// TODO replace with data source specific implementation
+        
+        // simple implementation done below for demo purpose only
+        int maxRows = getMaxRows();
+        if( maxRows <= 0 )  // no limit is specified
+            maxRows = 5;    // hard-coded for demo purpose
+        
+        if( m_currentRowId < maxRows )
+        {
+            m_currentRowId++;
+            return true;
+        }
+        
+        return false;        
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#close()
+	 */
+	public void close() throws OdaException
+	{
+        // TODO Auto-generated method stub       
+        m_currentRowId = 0;     // reset row counter
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getRow()
+	 */
+	public int getRow() throws OdaException
+	{
+		return m_currentRowId;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getString(int)
+	 */
+	public String getString( int index ) throws OdaException
+	{
+        // TODO replace with data source specific implementation
+        
+        // hard-coded for demo purpose
+        return "row" + getRow() + "_column" + index + " value";
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getString(java.lang.String)
+	 */
+	public String getString( String columnName ) throws OdaException
+	{
+	    return getString( findColumn( columnName ) );
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getInt(int)
+	 */
+	public int getInt( int index ) throws OdaException
+	{
+        // TODO replace with data source specific implementation
+        
+        // hard-coded for demo purpose
+        return getRow();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getInt(java.lang.String)
+	 */
+	public int getInt( String columnName ) throws OdaException
+	{
+	    return getInt( findColumn( columnName ) );
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getDouble(int)
+	 */
+	public double getDouble( int index ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getDouble(java.lang.String)
+	 */
+	public double getDouble( String columnName ) throws OdaException
+	{
+	    return getDouble( findColumn( columnName ) );
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getBigDecimal(int)
+	 */
+	public BigDecimal getBigDecimal( int index ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getBigDecimal(java.lang.String)
+	 */
+	public BigDecimal getBigDecimal( String columnName ) throws OdaException
+	{
+	    return getBigDecimal( findColumn( columnName ) );
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getDate(int)
+	 */
+	public Date getDate( int index ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getDate(java.lang.String)
+	 */
+	public Date getDate( String columnName ) throws OdaException
+	{
+	    return getDate( findColumn( columnName ) );
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getTime(int)
+	 */
+	public Time getTime( int index ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getTime(java.lang.String)
+	 */
+	public Time getTime( String columnName ) throws OdaException
+	{
+	    return getTime( findColumn( columnName ) );
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getTimestamp(int)
+	 */
+	public Timestamp getTimestamp( int index ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSet#getTimestamp(java.lang.String)
+	 */
+	public Timestamp getTimestamp( String columnName ) throws OdaException
+	{
+	    return getTimestamp( findColumn( columnName ) );
+	}
+
+    /* 
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#getBlob(int)
+     */
+    public IBlob getBlob( int index ) throws OdaException
+    {
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException();
+    }
+
+    /* 
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#getBlob(java.lang.String)
+     */
+    public IBlob getBlob( String columnName ) throws OdaException
+    {
+        return getBlob( findColumn( columnName ) );
+    }
+
+    /* 
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#getClob(int)
+     */
+    public IClob getClob( int index ) throws OdaException
+    {
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException();
+    }
+
+    /* 
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#getClob(java.lang.String)
+     */
+    public IClob getClob( String columnName ) throws OdaException
+    {
+        return getClob( findColumn( columnName ) );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#getBoolean(int)
+     */
+    public boolean getBoolean( int index ) throws OdaException
+    {
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#getBoolean(java.lang.String)
+     */
+    public boolean getBoolean( String columnName ) throws OdaException
+    {
+        return getBoolean( findColumn( columnName ) );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#getObject(int)
+     */
+    public Object getObject( int index ) throws OdaException
+    {
+        // TODO Auto-generated method stub
+        throw new UnsupportedOperationException();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#getObject(java.lang.String)
+     */
+    public Object getObject( String columnName ) throws OdaException
+    {
+        return getObject( findColumn( columnName ) );
+    }
+
+    /*
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#wasNull()
+     */
+    public boolean wasNull() throws OdaException
+    {
+        // TODO Auto-generated method stub
+        
+        // hard-coded for demo purpose
+        return false;
+    }
+
+    /*
+     * @see org.eclipse.datatools.connectivity.oda.IResultSet#findColumn(java.lang.String)
+     */
+    public int findColumn( String columnName ) throws OdaException
+    {
+        // TODO replace with data source specific implementation
+        
+        // hard-coded for demo purpose
+        int columnId = 1;   // dummy column id
+        if( columnName == null || columnName.length() == 0 )
+            return columnId;
+        String lastChar = columnName.substring( columnName.length()-1, 1 );
+        try
+        {
+            columnId = Integer.parseInt( lastChar );
+        }
+        catch( NumberFormatException e )
+        {
+            // ignore, use dummy column id
+        }
+        return columnId;
+    }
+    
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/ResultSetMetaData.java b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/ResultSetMetaData.java
new file mode 100644
index 0000000..06718c6
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/ResultSetMetaData.java
@@ -0,0 +1,122 @@
+/*
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+ */
+
+package org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample.impl;
+
+import org.eclipse.datatools.connectivity.oda.IResultSetMetaData;
+import org.eclipse.datatools.connectivity.oda.OdaException;
+
+/**
+ * Implementation class of IResultSetMetaData for an ODA runtime driver.
+ * <br>
+ * For demo purpose, the auto-generated method stubs have
+ * hard-coded implementation that returns a pre-defined set
+ * of meta-data and query results.
+ * A custom ODA driver is expected to implement own data source specific
+ * behavior in its place. 
+ */
+public class ResultSetMetaData implements IResultSetMetaData
+{
+    
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSetMetaData#getColumnCount()
+	 */
+	public int getColumnCount() throws OdaException
+	{
+        // TODO replace with data source specific implementation
+
+        // hard-coded for demo purpose
+        return 2;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSetMetaData#getColumnName(int)
+	 */
+	public String getColumnName( int index ) throws OdaException
+	{
+        // TODO replace with data source specific implementation
+
+        // hard-coded for demo purpose
+        return "Column" + index;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSetMetaData#getColumnLabel(int)
+	 */
+	public String getColumnLabel( int index ) throws OdaException
+	{
+		return getColumnName( index );		// default
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSetMetaData#getColumnType(int)
+	 */
+	public int getColumnType( int index ) throws OdaException
+	{
+        // TODO replace with data source specific implementation
+
+        // hard-coded for demo purpose
+        if( index == 1 )
+            return java.sql.Types.INTEGER;   // as defined in data set extension manifest
+        return java.sql.Types.CHAR;          // as defined in data set extension manifest
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSetMetaData#getColumnTypeName(int)
+	 */
+	public String getColumnTypeName( int index ) throws OdaException
+	{
+        int nativeTypeCode = getColumnType( index );
+        return Driver.getNativeDataTypeName( nativeTypeCode );
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSetMetaData#getColumnDisplayLength(int)
+	 */
+	public int getColumnDisplayLength( int index ) throws OdaException
+	{
+        // TODO replace with data source specific implementation
+
+        // hard-coded for demo purpose
+		return 8;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSetMetaData#getPrecision(int)
+	 */
+	public int getPrecision( int index ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return -1;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSetMetaData#getScale(int)
+	 */
+	public int getScale( int index ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return -1;
+	}
+
+	/*
+	 * @see org.eclipse.datatools.connectivity.oda.IResultSetMetaData#isNullable(int)
+	 */
+	public int isNullable( int index ) throws OdaException
+	{
+        // TODO Auto-generated method stub
+		return IResultSetMetaData.columnNullableUnknown;
+	}
+    
+}
diff --git a/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/package.html b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/package.html
new file mode 100644
index 0000000..0cbb5aa
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.oda.jdbc.dbprofile.sample/src/org/eclipse/datatools/connectivity/oda/jdbc/dbprofile/sample/impl/package.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+ *************************************************************************
+ * Copyright (c) 2008 Actuate Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Actuate Corporation - initial API and implementation
+ *  
+ *************************************************************************
+
+-->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+<body bgcolor="white">
+
+This package provides an exemplary implementation of an ODA driver's runtime extensions
+that adopts the integrated ODA Database Connection Profile framework.
+See the extensions defined in the plugin.xml.
+It adopts the ODA framework to define an ODA data source type 
+that links to a DTP Database (JDBC) connection profile.
+<p>
+Its scope focus on supporting the design of an ODA data source connection.
+It uses the auto-generated runtime classes of an ODA driver, included for demo purpose only.
+<p>
+
+<!-- Put @see and @since tags down here. -->
+@since DTP 1.6
+
+</body>
+</html>
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/.classpath b/examples/org.eclipse.datatools.connectivity.repository.file/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<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/examples/org.eclipse.datatools.connectivity.repository.file/.gitignore b/examples/org.eclipse.datatools.connectivity.repository.file/.gitignore
new file mode 100644
index 0000000..fe99505
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/.gitignore
@@ -0,0 +1,2 @@
+bin
+
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/.project b/examples/org.eclipse.datatools.connectivity.repository.file/.project
new file mode 100644
index 0000000..894a21c
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.repository.file</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.datatools.connectivity.repository.file/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..73f4382
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Fri Apr 13 14:14:14 PDT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
+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.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.4
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/META-INF/MANIFEST.MF b/examples/org.eclipse.datatools.connectivity.repository.file/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d45b98b
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Connection Profile File Based Repository Plug-in
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.repository.file;singleton:=true
+Bundle-Version: 1.0.0.200802261
+Bundle-Activator: org.eclipse.datatools.connectivity.repository.file.FileRepositoryPlugin
+Bundle-Vendor: Eclipse.org
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.datatools.connectivity;bundle-version="[0.9.1,1.5.0)",
+ org.eclipse.datatools.connectivity.ui;bundle-version="[0.9.1,1.5.0)",
+ org.eclipse.datatools.help;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.help.base;bundle-version="[3.2.0,5.0.0)"
+Eclipse-LazyStart: true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/build.properties b/examples/org.eclipse.datatools.connectivity.repository.file/build.properties
new file mode 100644
index 0000000..6c480f3
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               icons/
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/icons/local_file_repository.gif b/examples/org.eclipse.datatools.connectivity.repository.file/icons/local_file_repository.gif
new file mode 100644
index 0000000..309c5e9
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/icons/local_file_repository.gif
Binary files differ
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/plugin.xml b/examples/org.eclipse.datatools.connectivity.repository.file/plugin.xml
new file mode 100644
index 0000000..0d89970
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+   <extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <connectionProfile
+            category="org.eclipse.datatools.connectivity.connectionProfileRepositoryCategory"
+            icon="icons/local_file_repository.GIF"
+            id="org.eclipse.datatools.connectivity.repository.file.connectionProfile"
+            name="File Based Connection Profile Repository"
+            pingFactory="org.eclipse.datatools.connectivity.repository.file.FileRepositoryConnectionFactory"
+            propertiesPersistenceHook="org.eclipse.datatools.connectivity.repository.file.PropertiesPersistenceHook"/>
+      <connectionFactory
+            class="org.eclipse.datatools.connectivity.repository.file.FileRepositoryConnectionFactory"
+            id="org.eclipse.datatools.connectivity.internal.repository.IConnectionProfileRepository"
+            name="Connection Profile Repository Connection"
+            profile="org.eclipse.datatools.connectivity.repository.file.connectionProfile"/>
+      <newWizard
+            class="org.eclipse.datatools.connectivity.repository.file.NewFileRepositoryProfileWizard"
+            id="org.eclipse.datatools.connectivity.repository.file.newWizard1"
+            name="File Based Connection Profile Repository"
+            profile="org.eclipse.datatools.connectivity.repository.file.connectionProfile"/>
+   </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileBasedRepository.java b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileBasedRepository.java
new file mode 100644
index 0000000..f046cdb
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileBasedRepository.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2006-2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: rcernich - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.file;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.internal.ConnectionProfileMgmt;
+import org.eclipse.datatools.connectivity.internal.ConnectivityPlugin;
+import org.eclipse.datatools.connectivity.internal.repository.ConnectionProfileRepositoryBase;
+
+public class FileBasedRepository extends ConnectionProfileRepositoryBase {
+
+	public FileBasedRepository(IConnectionProfile profile) {
+		super(profile);
+	}
+
+	protected Collection loadProfiles() throws CoreException {
+		File repoFile = getRepositoryFile();
+		if (!repoFile.exists()) {
+			try {
+				ConnectionProfileMgmt.saveCPs(new IConnectionProfile[0],repoFile,null);
+			}
+			catch (CoreException e) {
+				// we can eat this since we'll be flagged as read-only
+			}
+			return new ArrayList();
+		}
+		return Arrays.asList(ConnectionProfileMgmt.loadCPs(repoFile));
+	}
+
+	public void save() {
+		try {
+			if (getRepositoryFile().canWrite())
+				ConnectionProfileMgmt.saveCPs(getProfiles(),getRepositoryFile(),null);
+		}
+		catch (CoreException e) {
+			ConnectivityPlugin.getDefault().log(e.getStatus());
+		}
+	}
+
+	public boolean isReadOnly() {
+		return !getRepositoryFile().canWrite();
+	}
+
+	public boolean supportsProfileType(String providerID) {
+		// we support 'em all
+		return true;
+	}
+
+	public boolean supportsCategory(String id) {
+		// we support 'em all
+		return true;
+	}
+
+	public File getRepositoryFile() {
+		String fileName = getRepositoryProfile().getBaseProperties()
+				.getProperty(FileRepositoryPlugin.FILE_NAME_PROP_ID);
+		return new File(fileName);
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryConnection.java b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryConnection.java
new file mode 100644
index 0000000..d16736f
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryConnection.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: rcernich - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.file;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.datatools.connectivity.IConnection;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+
+public class FileRepositoryConnection implements IConnection {
+
+	private FileBasedRepository mRepository;
+	private CoreException mConnectException;
+
+	public FileRepositoryConnection(IConnectionProfile profile) {
+		mRepository = new FileBasedRepository(profile);
+		try {
+			mRepository.load();
+		}
+		catch (CoreException e) {
+			mConnectException = e;
+		}
+	}
+
+	public void close() {
+		mRepository.dispose();
+	}
+
+	public Throwable getConnectException() {
+		return mConnectException;
+	}
+
+	public IConnectionProfile getConnectionProfile() {
+		return mRepository.getRepositoryProfile();
+	}
+
+	public Object getRawConnection() {
+		return mRepository;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryConnectionFactory.java b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryConnectionFactory.java
new file mode 100644
index 0000000..6ae8bbc
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryConnectionFactory.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    rcernich - initial API and implementation
+ *******************************************************************************/ 
+package org.eclipse.datatools.connectivity.repository.file;
+
+import org.eclipse.datatools.connectivity.IConnection;
+import org.eclipse.datatools.connectivity.IConnectionFactory;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+
+
+public class FileRepositoryConnectionFactory implements IConnectionFactory {
+
+	public IConnection createConnection(IConnectionProfile profile) {
+		return createConnection(profile,null,null);
+	}
+
+	public IConnection createConnection(IConnectionProfile profile, String uid,
+			String pwd) {
+		return new FileRepositoryConnection(profile);
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryDetailsWizardPage.java b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryDetailsWizardPage.java
new file mode 100644
index 0000000..0ea71aa
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryDetailsWizardPage.java
@@ -0,0 +1,161 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: rcernich - initial API and implementation
+ * 			IBM Corporation - defect fix #213266
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.file;
+
+import org.eclipse.datatools.connectivity.ui.wizards.ConnectionProfileDetailsPage;
+import org.eclipse.datatools.help.ContextProviderDelegate;
+import org.eclipse.datatools.help.HelpUtil;
+import org.eclipse.help.IContext;
+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.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class FileRepositoryDetailsWizardPage extends
+		ConnectionProfileDetailsPage {
+
+	private Text mPathText;
+//	private Button mEncryptCheckbox;
+//	private Text mPassword1Text;
+//	private Text mPassword2Text;
+
+	public FileRepositoryDetailsWizardPage(String name) {
+		super(name);
+		setTitle("File Repository Details");
+		setDescription("Please specify a file location and password, if desired.");
+	}
+
+	public String getFileName() {
+		return mPathText.getText();
+	}
+
+	public boolean getEncrypt() {
+//		return mEncryptCheckbox.getSelection();
+		return false;
+	}
+
+	public String getPassword() {
+//		return mPassword1Text.getText();
+		return new String();
+	}
+
+	public void createCustomControl(Composite parent) {
+		Composite content = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout(3, false);
+		content.setLayout(layout);
+
+		Label label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText("Directory Path:");
+
+		mPathText = new Text(content, SWT.BORDER);
+		mPathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		mPathText.addModifyListener(new ModifyListener() {
+
+			public void modifyText(ModifyEvent e) {
+				handlePathModify();
+			}
+		});
+
+		Button button = new Button(content, SWT.PUSH);
+		button.setText("Browse...");
+		button.setLayoutData(new GridData());
+		button.addSelectionListener(new SelectionAdapter() {
+
+			public void widgetSelected(SelectionEvent e) {
+				handleBrowse();
+			}
+		});
+
+//		mEncryptCheckbox = new Button(content, SWT.CHECK);
+//		button.setText("Encrypt");
+//		button.setLayoutData(new GridData());
+//		button.addSelectionListener(new SelectionAdapter() {
+//
+//			public void widgetSelected(SelectionEvent e) {
+//				handleEncryptChecked();
+//			}
+//		});
+	}
+
+	private void handleBrowse() {
+		FileDialog dialog = new FileDialog(getShell());
+		String path = dialog.open();
+		if (path != null) {
+			mPathText.setText(path);
+		}
+	}
+
+	private void handlePathModify() {
+		validate();
+	}
+
+//	private void handleEncryptChecked() {
+//		mPassword1Text.setEnabled(mEncryptCheckbox.getSelection());
+//		mPassword2Text.setEnabled(mEncryptCheckbox.getSelection());
+//		validate();
+//	}
+
+	private void validate() {
+		String errorMessage;
+		String path = mPathText.getText();
+		if (path == null) {
+			errorMessage = "Please specify repository location.";
+		}
+//		else if (mEncryptCheckbox.getSelection()) {
+//			if (mPassword1Text.getText().length() == 0
+//					&& mPassword2Text.getText().length() == 0) {
+//				errorMessage = "Please specify a password";
+//			}
+//			else if (mPassword1Text.getText().equals(mPassword2Text.getText())) {
+//				errorMessage = null;
+//			}
+//			else {
+//				errorMessage = "Please verify password";
+//			}
+//		}
+		else {
+			errorMessage = null;
+		}
+		setErrorMessage(errorMessage);
+		setPageComplete(errorMessage == null);
+	}
+
+	private ContextProviderDelegate contextProviderDelegate =
+		new ContextProviderDelegate(FileRepositoryPlugin.getDefault().getBundle().getSymbolicName());
+
+	public IContext getContext(Object target) {
+		return contextProviderDelegate.getContext(target);
+	}
+
+	public int getContextChangeMask() {
+		return contextProviderDelegate.getContextChangeMask();
+	}
+
+	public String getSearchExpression(Object target) {
+		return contextProviderDelegate.getSearchExpression(target);
+	}
+
+	public void createControl(Composite parent) {
+		super.createControl(parent);
+		getShell().setData( HelpUtil.CONTEXT_PROVIDER_KEY, this);
+		HelpUtil.setHelp( getControl(), HelpUtil.getContextId(IHelpContextsRepositoryFile.FILE_REPOSITORY_PROFILE_WIZARD_PAGE, FileRepositoryPlugin.getDefault().getBundle().getSymbolicName()));
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryPlugin.java b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryPlugin.java
new file mode 100644
index 0000000..d6ef992
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/FileRepositoryPlugin.java
@@ -0,0 +1,53 @@
+package org.eclipse.datatools.connectivity.repository.file;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class FileRepositoryPlugin extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.datatools.connectivity.repository.file";
+	public static final String FILE_NAME_PROP_ID = PLUGIN_ID + ".fileName";
+	public static final String ENCRYPT_PROP_ID = PLUGIN_ID + ".encrypt";
+	public static final String PASSWORD_PROP_ID = PLUGIN_ID + ".password";
+
+	// The shared instance
+	private static FileRepositoryPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public FileRepositoryPlugin() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static FileRepositoryPlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/IHelpContextsRepositoryFile.java b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/IHelpContextsRepositoryFile.java
new file mode 100644
index 0000000..a128a62
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/IHelpContextsRepositoryFile.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.file;
+
+public interface IHelpContextsRepositoryFile {
+
+	/**
+	 * TPS_helpKey_constants_for_plug-in: org.eclipse.datatools.connectivity.repository.file
+	 */
+
+	/*
+	 * FILE_REPOSITORY_PROFILE_WIZARD_PAGE = the wizard page that collects details for the
+	 * file repository profile
+	 */
+	public static final String FILE_REPOSITORY_PROFILE_WIZARD_PAGE = "FILE_REPOSITORY_PROFILE_WIZARD_PAGE";
+
+	/*
+	 * FILE_REPOSITORY_PROFILE_WIZARD = the actual New File Repository Profile wizard
+	 */
+	public static final String FILE_REPOSITORY_PROFILE_WIZARD = "FILE_REPOSITORY_PROFILE_WIZARD";
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/NewFileRepositoryProfileWizard.java b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/NewFileRepositoryProfileWizard.java
new file mode 100644
index 0000000..93430a5
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/NewFileRepositoryProfileWizard.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: rcernich - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.file;
+
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.ui.wizards.NewConnectionProfileWizard;
+import org.eclipse.datatools.help.ContextProviderDelegate;
+import org.eclipse.datatools.help.HelpUtil;
+import org.eclipse.help.IContext;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.swt.widgets.Composite;
+
+public class NewFileRepositoryProfileWizard extends NewConnectionProfileWizard
+		implements IWizard {
+
+	protected FileRepositoryDetailsWizardPage mPropPage;
+
+	public NewFileRepositoryProfileWizard() {
+		setWindowTitle("New Connection Profile File Repository");
+	}
+
+	public void addCustomPages() {
+		mPropPage = new FileRepositoryDetailsWizardPage("detailsPage"); //$NON-NLS-1$
+		addPage(mPropPage);
+	}
+
+	public Properties getProfileProperties() {
+		Properties props = new Properties();
+		props.setProperty(FileRepositoryPlugin.FILE_NAME_PROP_ID, mPropPage
+				.getFileName());
+		props.setProperty(FileRepositoryPlugin.ENCRYPT_PROP_ID, Boolean
+				.valueOf(mPropPage.getEncrypt()).toString());
+		if (mPropPage.getEncrypt()) {
+			props.setProperty(FileRepositoryPlugin.PASSWORD_PROP_ID, mPropPage
+					.getPassword());
+		}
+		return props;
+	}
+
+	private ContextProviderDelegate contextProviderDelegate =
+		new ContextProviderDelegate(FileRepositoryPlugin.getDefault().getBundle().getSymbolicName());
+
+	public IContext getContext(Object target) {
+		return contextProviderDelegate.getContext(target);
+	}
+
+	public int getContextChangeMask() {
+		return contextProviderDelegate.getContextChangeMask();
+	}
+
+	public String getSearchExpression(Object target) {
+		return contextProviderDelegate.getSearchExpression(target);
+	}
+	public void createPageControls(Composite pageContainer) {
+		super.createPageControls(pageContainer);
+		getShell().setData(HelpUtil.CONTEXT_PROVIDER_KEY, this);
+		HelpUtil.setHelp(getShell(), HelpUtil.getContextId(
+				IHelpContextsRepositoryFile.FILE_REPOSITORY_PROFILE_WIZARD,
+				FileRepositoryPlugin.getDefault().getBundle().getSymbolicName()));
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/PropertiesPersistenceHook.java b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/PropertiesPersistenceHook.java
new file mode 100644
index 0000000..2cfa89d
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.file/src/org/eclipse/datatools/connectivity/repository/file/PropertiesPersistenceHook.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2006 Sybase, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    rcernich - initial API and implementation
+ *******************************************************************************/ 
+package org.eclipse.datatools.connectivity.repository.file;
+
+import org.eclipse.datatools.connectivity.IPropertiesPersistenceHook;
+
+
+public class PropertiesPersistenceHook extends
+		org.eclipse.datatools.connectivity.PropertiesPersistenceHook implements
+		IPropertiesPersistenceHook {
+
+	public PropertiesPersistenceHook() {
+		// RJC Auto-generated constructor stub
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/.classpath b/examples/org.eclipse.datatools.connectivity.repository.uri/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<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/examples/org.eclipse.datatools.connectivity.repository.uri/.gitignore b/examples/org.eclipse.datatools.connectivity.repository.uri/.gitignore
new file mode 100644
index 0000000..fe99505
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/.gitignore
@@ -0,0 +1,2 @@
+bin
+
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/.project b/examples/org.eclipse.datatools.connectivity.repository.uri/.project
new file mode 100644
index 0000000..280a940
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.repository.uri</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.datatools.connectivity.repository.uri/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..73f4382
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Fri Apr 13 14:14:14 PDT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
+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.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.4
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/META-INF/MANIFEST.MF b/examples/org.eclipse.datatools.connectivity.repository.uri/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..337939a
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Connection Profile URI Based Repository Plug-in
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.repository.uri;singleton:=true
+Bundle-Version: 1.0.0.20081014
+Bundle-Activator: org.eclipse.datatools.connectivity.repository.uri.URIRepositoryPlugin
+Bundle-Vendor: Eclipse.org
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.datatools.connectivity;bundle-version="[0.9.1,1.5.0)",
+ org.eclipse.datatools.connectivity.ui;bundle-version="[0.9.1,1.5.0)",
+ org.eclipse.datatools.help;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.help.base;bundle-version="[3.2.0,5.0.0)"
+Eclipse-LazyStart: true
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/build.properties b/examples/org.eclipse.datatools.connectivity.repository.uri/build.properties
new file mode 100644
index 0000000..6c480f3
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               icons/
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/icons/local_file_repository.gif b/examples/org.eclipse.datatools.connectivity.repository.uri/icons/local_file_repository.gif
new file mode 100644
index 0000000..309c5e9
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/icons/local_file_repository.gif
Binary files differ
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/plugin.xml b/examples/org.eclipse.datatools.connectivity.repository.uri/plugin.xml
new file mode 100644
index 0000000..40d2b2a
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+   <extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <connectionProfile
+            category="org.eclipse.datatools.connectivity.connectionProfileRepositoryCategory"
+            icon="icons/local_file_repository.GIF"
+            id="org.eclipse.datatools.connectivity.repository.uri.connectionProfile"
+            name="URI Based Connection Profile Repository"
+            pingFactory="org.eclipse.datatools.connectivity.repository.uri.URIRepositoryConnectionFactory"
+            propertiesPersistenceHook="org.eclipse.datatools.connectivity.repository.uri.PropertiesPersistenceHook"/>
+      <connectionFactory
+            class="org.eclipse.datatools.connectivity.repository.uri.URIRepositoryConnectionFactory"
+            id="org.eclipse.datatools.connectivity.internal.repository.IConnectionProfileRepository"
+            name="Connection Profile URI Repository Connection"
+            profile="org.eclipse.datatools.connectivity.repository.uri.connectionProfile"/>
+      <newWizard
+            class="org.eclipse.datatools.connectivity.repository.uri.NewURIRepositoryProfileWizard"
+            id="org.eclipse.datatools.connectivity.repository.uri.newWizard1"
+            name="URI Based Connection Profile Repository"
+            profile="org.eclipse.datatools.connectivity.repository.uri.connectionProfile"/>
+   </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/IHelpContextsRepositoryURI.java b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/IHelpContextsRepositoryURI.java
new file mode 100644
index 0000000..94912b8
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/IHelpContextsRepositoryURI.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.uri;
+
+public interface IHelpContextsRepositoryURI {
+
+	/**
+	 * TPS_helpKey_constants_for_plug-in: org.eclipse.datatools.connectivity.repository.uri
+	 */
+
+	/*
+	 * URI_REPOSITORY_PROFILE_WIZARD_PAGE = the wizard page that collects details for the
+	 * URI repository profile
+	 */
+	public static final String URI_REPOSITORY_PROFILE_WIZARD_PAGE = "URI_REPOSITORY_PROFILE_WIZARD_PAGE";
+
+	/*
+	 * URI_REPOSITORY_PROFILE_WIZARD = the actual New URI Repository Profile wizard
+	 */
+	public static final String URI_REPOSITORY_PROFILE_WIZARD = "URI_REPOSITORY_PROFILE_WIZARD";
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/NewURIRepositoryProfileWizard.java b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/NewURIRepositoryProfileWizard.java
new file mode 100644
index 0000000..a299aa1
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/NewURIRepositoryProfileWizard.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.uri;
+
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.ui.wizards.NewConnectionProfileWizard;
+import org.eclipse.datatools.help.ContextProviderDelegate;
+import org.eclipse.datatools.help.HelpUtil;
+import org.eclipse.help.IContext;
+import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.swt.widgets.Composite;
+
+public class NewURIRepositoryProfileWizard extends NewConnectionProfileWizard
+		implements IWizard {
+
+	protected URIRepositoryDetailsWizardPage mPropPage;
+
+	public NewURIRepositoryProfileWizard() {
+		setWindowTitle("New Connection Profile URI Repository");
+	}
+
+	public void addCustomPages() {
+		mPropPage = new URIRepositoryDetailsWizardPage("detailsPage"); //$NON-NLS-1$
+		addPage(mPropPage);
+	}
+
+	public Properties getProfileProperties() {
+		Properties props = new Properties();
+		props.setProperty(URIRepositoryPlugin.URI_PATH_PROP_ID, mPropPage
+				.getFileName());
+		return props;
+	}
+
+	private ContextProviderDelegate contextProviderDelegate =
+		new ContextProviderDelegate(URIRepositoryPlugin.getDefault().getBundle().getSymbolicName());
+
+	public IContext getContext(Object target) {
+		return contextProviderDelegate.getContext(target);
+	}
+
+	public int getContextChangeMask() {
+		return contextProviderDelegate.getContextChangeMask();
+	}
+
+	public String getSearchExpression(Object target) {
+		return contextProviderDelegate.getSearchExpression(target);
+	}
+	public void createPageControls(Composite pageContainer) {
+		super.createPageControls(pageContainer);
+		getShell().setData(HelpUtil.CONTEXT_PROVIDER_KEY, this);
+		HelpUtil.setHelp(getShell(), HelpUtil.getContextId(
+				IHelpContextsRepositoryURI.URI_REPOSITORY_PROFILE_WIZARD,
+				URIRepositoryPlugin.getDefault().getBundle().getSymbolicName()));
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/PropertiesPersistenceHook.java b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/PropertiesPersistenceHook.java
new file mode 100644
index 0000000..e5b8c77
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/PropertiesPersistenceHook.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    brianf - initial API and implementation
+ *******************************************************************************/ 
+package org.eclipse.datatools.connectivity.repository.uri;
+
+import org.eclipse.datatools.connectivity.IPropertiesPersistenceHook;
+
+
+public class PropertiesPersistenceHook extends
+		org.eclipse.datatools.connectivity.PropertiesPersistenceHook implements
+		IPropertiesPersistenceHook {
+
+	public PropertiesPersistenceHook() {
+		// RJC Auto-generated constructor stub
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIBasedRepository.java b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIBasedRepository.java
new file mode 100644
index 0000000..3178e49
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIBasedRepository.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.uri;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.internal.ConnectionProfileMgmt;
+import org.eclipse.datatools.connectivity.internal.ConnectivityPlugin;
+import org.eclipse.datatools.connectivity.internal.repository.ConnectionProfileRepositoryBase;
+
+public class URIBasedRepository extends ConnectionProfileRepositoryBase {
+
+	public URIBasedRepository(IConnectionProfile profile) {
+		super(profile);
+	}
+
+	protected Collection loadProfiles() throws CoreException {
+		File repoFile = getRepositoryFile();
+		if (repoFile == null) {
+			// Houston, we have a problem here
+			return null;
+		}
+		if (!repoFile.exists()) {
+			try {
+				ConnectionProfileMgmt.saveCPs(new IConnectionProfile[0],repoFile,null);
+			}
+			catch (CoreException e) {
+				// we can eat this since we'll be flagged as read-only
+			}
+			return new ArrayList();
+		}
+		return Arrays.asList(ConnectionProfileMgmt.loadCPs(repoFile));
+	}
+
+	public void save() {
+		try {
+			if (getRepositoryFile().canWrite())
+				ConnectionProfileMgmt.saveCPs(getProfiles(),getRepositoryFile(),null);
+		}
+		catch (CoreException e) {
+			ConnectivityPlugin.getDefault().log(e.getStatus());
+		}
+	}
+
+	public boolean isReadOnly() {
+		return !getRepositoryFile().canWrite();
+	}
+
+	public boolean supportsProfileType(String providerID) {
+		// we support 'em all
+		return true;
+	}
+
+	public boolean supportsCategory(String id) {
+		// we support 'em all
+		return true;
+	}
+
+	public URI getRepositoryURI() throws URISyntaxException {
+		String URIString = getRepositoryProfile().getBaseProperties()
+				.getProperty(URIRepositoryPlugin.URI_PATH_PROP_ID);
+		return new URI(URIString);
+	}
+	
+	public File getRepositoryFile() {
+		try {
+			URI repoURI = getRepositoryURI();
+			File repoFile = new File ( repoURI);
+			return repoFile;
+		} catch (URISyntaxException e) {
+			// catch and throw the exception?
+			return null;
+		}
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryConnection.java b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryConnection.java
new file mode 100644
index 0000000..6476d89
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryConnection.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.uri;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.datatools.connectivity.IConnection;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+
+public class URIRepositoryConnection implements IConnection {
+
+	private URIBasedRepository mRepository;
+	private CoreException mConnectException;
+
+	public URIRepositoryConnection(IConnectionProfile profile) {
+		mRepository = new URIBasedRepository(profile);
+		try {
+			mRepository.load();
+		}
+		catch (CoreException e) {
+			mConnectException = e;
+		}
+	}
+
+	public void close() {
+		mRepository.dispose();
+	}
+
+	public Throwable getConnectException() {
+		return mConnectException;
+	}
+
+	public IConnectionProfile getConnectionProfile() {
+		return mRepository.getRepositoryProfile();
+	}
+
+	public Object getRawConnection() {
+		return mRepository;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryConnectionFactory.java b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryConnectionFactory.java
new file mode 100644
index 0000000..6503532
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryConnectionFactory.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    rcernich - initial API and implementation
+ *******************************************************************************/ 
+package org.eclipse.datatools.connectivity.repository.uri;
+
+import org.eclipse.datatools.connectivity.IConnection;
+import org.eclipse.datatools.connectivity.IConnectionFactory;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+
+
+public class URIRepositoryConnectionFactory implements IConnectionFactory {
+
+	public IConnection createConnection(IConnectionProfile profile) {
+		return createConnection(profile,null,null);
+	}
+
+	public IConnection createConnection(IConnectionProfile profile, String uid,
+			String pwd) {
+		return new URIRepositoryConnection(profile);
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryDetailsWizardPage.java b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryDetailsWizardPage.java
new file mode 100644
index 0000000..c0d609c
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryDetailsWizardPage.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.uri;
+
+import org.eclipse.datatools.connectivity.ui.wizards.ConnectionProfileDetailsPage;
+import org.eclipse.datatools.help.ContextProviderDelegate;
+import org.eclipse.datatools.help.HelpUtil;
+import org.eclipse.help.IContext;
+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.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class URIRepositoryDetailsWizardPage extends
+		ConnectionProfileDetailsPage {
+
+	private Text mPathText;
+
+	public URIRepositoryDetailsWizardPage(String name) {
+		super(name);
+		setTitle("URI Repository Details");
+		setDescription("Please specify a URI location.");
+	}
+
+	public String getFileName() {
+		return mPathText.getText();
+	}
+
+	public void createCustomControl(Composite parent) {
+		Composite content = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout(3, false);
+		content.setLayout(layout);
+
+		Label label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText("Directory Path:");
+
+		mPathText = new Text(content, SWT.BORDER);
+		mPathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		mPathText.addModifyListener(new ModifyListener() {
+
+			public void modifyText(ModifyEvent e) {
+				handlePathModify();
+			}
+		});
+
+		Button button = new Button(content, SWT.PUSH);
+		button.setText("Browse...");
+		button.setLayoutData(new GridData());
+		button.addSelectionListener(new SelectionAdapter() {
+
+			public void widgetSelected(SelectionEvent e) {
+				handleBrowse();
+			}
+		});
+
+	}
+
+	private void handleBrowse() {
+		FileDialog dialog = new FileDialog(getShell());
+		String path = dialog.open();
+		if (path != null) {
+			mPathText.setText(path);
+		}
+	}
+
+	private void handlePathModify() {
+		validate();
+	}
+
+	private void validate() {
+		String errorMessage;
+		String path = mPathText.getText();
+		if (path == null) {
+			errorMessage = "Please specify repository location.";
+		}
+		else {
+			errorMessage = null;
+		}
+		setErrorMessage(errorMessage);
+		setPageComplete(errorMessage == null);
+	}
+
+	private ContextProviderDelegate contextProviderDelegate =
+		new ContextProviderDelegate(URIRepositoryPlugin.getDefault().getBundle().getSymbolicName());
+
+	public IContext getContext(Object target) {
+		return contextProviderDelegate.getContext(target);
+	}
+
+	public int getContextChangeMask() {
+		return contextProviderDelegate.getContextChangeMask();
+	}
+
+	public String getSearchExpression(Object target) {
+		return contextProviderDelegate.getSearchExpression(target);
+	}
+
+	public void createControl(Composite parent) {
+		super.createControl(parent);
+		getShell().setData( HelpUtil.CONTEXT_PROVIDER_KEY, this);
+		HelpUtil.setHelp( getControl(), HelpUtil.getContextId(IHelpContextsRepositoryURI.URI_REPOSITORY_PROFILE_WIZARD_PAGE, URIRepositoryPlugin.getDefault().getBundle().getSymbolicName()));
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryPlugin.java b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryPlugin.java
new file mode 100644
index 0000000..1f81451
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.repository.uri/src/org/eclipse/datatools/connectivity/repository/uri/URIRepositoryPlugin.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.repository.uri;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class URIRepositoryPlugin extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.datatools.connectivity.repository.uri";
+	public static final String URI_PATH_PROP_ID = PLUGIN_ID + ".uriPath";
+
+	// The shared instance
+	private static URIRepositoryPlugin plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public URIRepositoryPlugin() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static URIRepositoryPlugin getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/.classpath b/examples/org.eclipse.datatools.connectivity.sample.cp/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<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/examples/org.eclipse.datatools.connectivity.sample.cp/.gitignore b/examples/org.eclipse.datatools.connectivity.sample.cp/.gitignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/.project b/examples/org.eclipse.datatools.connectivity.sample.cp/.project
new file mode 100644
index 0000000..b78945f
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.sample.cp</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.datatools.connectivity.sample.cp/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..73f4382
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Fri Apr 13 14:14:14 PDT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
+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.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.4
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/META-INF/MANIFEST.MF b/examples/org.eclipse.datatools.connectivity.sample.cp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2ef89b0
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Plugin.Name
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.sample.cp; singleton:=true
+Bundle-Version: 1.0.1.200802261
+Bundle-Vendor: %Plugin.Provider.Name
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.datatools.connectivity;bundle-version="[0.9.1,1.5.0)",
+ org.eclipse.datatools.connectivity.ui;bundle-version="[0.9.1,1.5.0)",
+ org.eclipse.ui.navigator;bundle-version="[3.3.0,4.0.0)",
+ org.eclipse.ui.views;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.datatools.connectivity.ui.dse;bundle-version="[0.9.1,1.5.0)"
+Eclipse-LazyStart: true
+Bundle-ClassPath: cpsample.jar
+Export-Package: org.eclipse.datatools.connectivity.sample.cp,
+ org.eclipse.datatools.connectivity.sample.cp.ui,
+ org.eclipse.datatools.connectivity.sample.cp.ui.actions,
+ org.eclipse.datatools.connectivity.sample.cp.ui.handler,
+ org.eclipse.datatools.connectivity.sample.cp.ui.properties,
+ org.eclipse.datatools.connectivity.sample.cp.ui.wizards
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/about.html b/examples/org.eclipse.datatools.connectivity.sample.cp/about.html
new file mode 100644
index 0000000..1b7d275
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/about.html
@@ -0,0 +1,28 @@
+<html>
+<head>
+<title>About This Content</title>
+</head>
+<body>
+<div>
+<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
+(&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/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; 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 (&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 and such source code may be obtained at <a
+href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+<p>&nbsp;</p>
+</div>
+</body>
+</html>
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/build.properties b/examples/org.eclipse.datatools.connectivity.sample.cp/build.properties
new file mode 100644
index 0000000..7dbd707
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/build.properties
@@ -0,0 +1,11 @@
+bin.includes = plugin.xml,\
+               icons/,\
+               about.html,\
+               plugin.properties,\
+               SybaseLogo2_black_sml.jpg,\
+               cpsample.jar,\
+               META-INF/
+
+jars.compile.order = cpsample.jar
+source.cpsample.jar = src/
+output.cpsample.jar = bin/
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/eclipse3_2_support_readme.txt b/examples/org.eclipse.datatools.connectivity.sample.cp/eclipse3_2_support_readme.txt
new file mode 100644
index 0000000..0702efd
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/eclipse3_2_support_readme.txt
@@ -0,0 +1,20 @@
+################################################################################
+# Copyright (c) 2007 Sybase, Inc.
+# 
+# All rights reserved. This program and the accompanying materials are made
+# available under the terms of the Eclipse Public License v1.0 which
+# accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Sybase, Inc. - initial API and implementation
+################################################################################
+
+To make this sample work in Eclipse 3.2.2, you will need to do the following:
+
+1) Change the Versions to Match for the Eclipse Platform dependencies in the
+	Manifest editor from 3.3 to 3.2
+
+2) Remove or comment out the sections of the plugin.xml headed with:
+ 	NOTE: This is supported in Eclipse 3.3 only
+ 	
+It should then compile and work in 3.2.
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/icons/file.gif b/examples/org.eclipse.datatools.connectivity.sample.cp/icons/file.gif
new file mode 100644
index 0000000..6b86d07
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/icons/file.gif
Binary files differ
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/icons/file2.gif b/examples/org.eclipse.datatools.connectivity.sample.cp/icons/file2.gif
new file mode 100644
index 0000000..485440f
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/icons/file2.gif
Binary files differ
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/plugin.properties b/examples/org.eclipse.datatools.connectivity.sample.cp/plugin.properties
new file mode 100644
index 0000000..500801b
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/plugin.properties
@@ -0,0 +1,22 @@
+################################################################################
+# Copyright (c) 2005 Sybase, Inc.
+# 
+# All rights reserved. This program and the accompanying materials are made
+# available under the terms of the Eclipse Public License v1.0 which
+# accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors: Sybase, Inc. - initial API and implementation
+################################################################################
+Plugin.Name = Connection Profile Sample Plug-in
+Plugin.Provider.Name = Eclipse.org
+
+Extension.PropertyPage.Name = File Server Example Properties
+Extension.ServerExtension.Name = Sample File Profile
+Extension.ServerExtension.Category.Name = Files (Example category)
+Extension.ServerExtension.ConnectionProfile.Name = File Server Example
+Extension.ServerExtension.ConfigurationType.Name = File Path (Example configuraiton type)
+Extension.ServerExtension.ConnectionFactory.Name = java.io.File Connection Factory
+Extension.NewWizard.Name = File Connection Profile (Example)
+Extension.NewWizard.Description = Create a sample file connection profile
+Extension.PopupAction.Name = Sample File Action
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/plugin.xml b/examples/org.eclipse.datatools.connectivity.sample.cp/plugin.xml
new file mode 100644
index 0000000..047ff88
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/plugin.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.ui.popupMenus">
+      <objectContribution
+            objectClass="java.io.File"
+            id="org.eclipse.datatools.connectivity.sample.connectionProfileSample.contribution1">
+         <action
+               label="%Extension.PopupAction.Name"
+               class="org.eclipse.datatools.connectivity.sample.cp.ui.actions.SampleFileAction"
+               menubarPath="additions"
+               enablesFor="1"
+               id="org.eclipse.datatools.connectivity.sample.connectionProfileSample.newAction">
+         </action>
+      </objectContribution>
+   </extension>
+   
+   <extension
+         point="org.eclipse.ui.propertyPages">
+      <page
+            class="org.eclipse.datatools.connectivity.sample.cp.ui.properties.FileProfilePropetyPage"
+            id="org.eclipse.datatools.connectivity.sample.ui.properties.fileProfilePropertyPage"
+            name="%Extension.PropertyPage.Name">
+         <filter
+               name="org.eclipse.datatools.profile.property.id"
+               value="org.eclipse.datatools.connectivity.sample.fileProfile">
+         </filter>
+         <enabledWhen>
+            <instanceof
+                  value="org.eclipse.datatools.connectivity.IConnectionProfile">
+            </instanceof>
+         </enabledWhen>
+      </page>
+   </extension>
+   
+   <extension
+         id="fileProfile"
+         name="%Extension.ServerExtension.Name"
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <category
+            name="%Extension.ServerExtension.Category.Name"
+            id="org.eclipse.datatools.connectivity.sample.fileCategory">
+      </category>
+      <configurationType
+            name="%Extension.ServerExtension.ConfigurationType.Name"
+            id="org.eclipse.datatools.connectivity.sample.pathConfiguration">
+      </configurationType>
+      <connectionFactory
+            name="%Extension.ServerExtension.ConnectionFactory.Name"
+            profile="org.eclipse.datatools.connectivity.sample.fileProfile"
+            class="org.eclipse.datatools.connectivity.sample.cp.FileConnectionFactory"
+            id="java.io.File">
+      </connectionFactory>
+      <connectionProfile
+            category="org.eclipse.datatools.connectivity.sample.fileCategory"
+            configurationType="org.eclipse.datatools.connectivity.sample.pathConfiguration"
+            icon="icons/file.gif"
+            id="org.eclipse.datatools.connectivity.sample.fileProfile"
+            name="%Extension.ServerExtension.ConnectionProfile.Name">
+      </connectionProfile>
+      <newWizard
+            name="%Extension.NewWizard.Name"
+            profile="org.eclipse.datatools.connectivity.sample.fileProfile"
+            icon="icons/file.gif"
+            description="%Extension.NewWizard.Description"
+            class="org.eclipse.datatools.connectivity.sample.cp.ui.wizards.FileConnectionProfileNewWizard"
+            id="org.eclipse.datatools.connectivity.sample.connectionProfileSample.wizard1">
+      </newWizard>
+      <connectionFactory
+            class="org.eclipse.datatools.connectivity.sample.cp.FileConnectionFactory"
+            id="org.eclipse.datatools.connectivity.connectionFactory.pingFactory"
+            name="Ping Factory"
+            profile="org.eclipse.datatools.connectivity.sample.fileProfile"/>      
+   </extension>
+   
+   <extension
+         point="org.eclipse.ui.navigator.navigatorContent">
+      <navigatorContent
+            contentProvider="org.eclipse.datatools.connectivity.sample.cp.DirectoryContentProviderExtension"
+            id="org.eclipse.datatools.connectivity.sample.directoryContent"
+            labelProvider="org.eclipse.datatools.connectivity.sample.cp.DirectoryLabelProviderExtension"
+            name="Directory Content Extension (Sample)">
+         <enablement>
+            <or>
+	            <and>
+                     <instanceof value="org.eclipse.datatools.connectivity.IConnectionProfile"/>
+				     <test
+						property="org.eclipse.datatools.connectivity.profile.property.id"
+	                     value="org.eclipse.datatools.connectivity.sample.fileProfile"/>
+	            </and>
+               <instanceof
+	                     value="java.io.File">
+               </instanceof>
+               <instanceof
+                     value="org.eclipse.datatools.connectivity.sample.cp.DirectoryContentExtension">
+               </instanceof>
+            </or>
+         </enablement>
+      </navigatorContent>
+   </extension>
+   
+      <extension
+            point="org.eclipse.core.runtime.adapters">
+         <factory
+               adaptableType="org.eclipse.datatools.connectivity.IConnectionProfile"
+               class="org.eclipse.datatools.connectivity.sample.cp.FileProfileAdapterFactory">
+            <adapter
+                  type="org.eclipse.ui.views.properties.IPropertySourceProvider">
+            </adapter>
+         </factory>
+      </extension>
+      
+      <extension
+            point="org.eclipse.ui.navigator.viewer">
+         <viewerContentBinding viewerId="org.eclipse.datatools.connectivity.DataSourceExplorerNavigator">
+            <includes>
+               <contentExtension pattern="org.eclipse.datatools.connectivity.sample.directoryContent"/>
+            </includes>
+         </viewerContentBinding>
+      </extension>
+
+<!-- This action provider will override the Refresh action
+for File profiles to pop up a simple dialog instead of actually
+refreshing the view
+	NOTE: This is supported in Eclipse 3.3 only -->
+
+<!--
+    <extension
+         point="org.eclipse.ui.navigator.navigatorContent">
+      <actionProvider
+            class="org.eclipse.datatools.connectivity.sample.cp.ui.actions.RefreshOverrideActionProvider"
+            id="org.eclipse.datatools.connectivity.ui.dse.actions.testbed2"
+            overrides="org.eclipse.datatools.connectivity.ui.dse.actions.RefreshActionProvider">
+         <enablement>
+            <and>
+               <instanceof
+                     value="org.eclipse.datatools.connectivity.IConnectionProfile">
+               </instanceof>
+               <test
+                     property="org.eclipse.datatools.connectivity.profile.property.id"
+                     value="org.eclipse.datatools.connectivity.sample.fileProfile">
+               </test>
+            </and>
+         </enablement>
+      </actionProvider>
+   </extension>
+-->
+
+<!-- This action provider contributes an overriding Refresh action for 
+directories appearing in connected file profiles -->   
+
+<!-- 	NOTE: This is supported in Eclipse 3.3 only -->
+
+   <extension
+         point="org.eclipse.ui.navigator.navigatorContent">
+      <actionProvider
+            class="org.eclipse.datatools.connectivity.sample.cp.ui.actions.RefreshDirectoryActionProvider"
+            id="org.eclipse.datatools.connectivity.ui.dse.actions.testbed3"
+            overrides="org.eclipse.datatools.connectivity.ui.dse.actions.RefreshActionProvider">
+         <enablement>
+               <instanceof
+                     value="java.io.File">
+               </instanceof>
+         </enablement>
+      </actionProvider>
+   </extension>
+   <extension
+         point="org.eclipse.datatools.connectivity.ui.connectionProfileImage">
+      <profileImage
+            icon="icons/file2.gif"
+            profileID="org.eclipse.datatools.connectivity.sample.fileProfile">
+      </profileImage>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.datatools.connectivity.sample.cp.ui.handler.NewCPSampleHandler"
+            commandId="org.eclipse.datatools.connectivity.commands.addprofile">
+     <enabledWhen>
+	   <with variable="selection">
+	    <count value="1" />
+	    <iterate>
+        <or>
+           <and>
+              <instanceof
+                    value="org.eclipse.datatools.connectivity.IConnectionProfile">
+              </instanceof>
+              <test
+                    property="org.eclipse.datatools.connectivity.profile.property.id"
+                    value="org.eclipse.datatools.connectivity.sample.fileProfile">
+              </test>
+           </and>
+           <instanceof
+                 value="java.io.File">
+           </instanceof>
+           <instanceof
+                 value="org.eclipse.datatools.connectivity.sample.cp.DirectoryContentExtension">
+           </instanceof>
+        </or>
+	    </iterate>
+	   </with>
+     </enabledWhen>
+     <activeWhen>
+        <and>
+           <with
+                 variable="activeWorkbenchWindow">
+              <test
+                    property="org.eclipse.datatools.connectivity.workbench.window.perspective.property.perspectiveID"
+                    value="org.eclipse.ui.resourcePerspective">
+              </test>
+           </with>
+           <with
+                 variable="selection">
+              <count
+                    value="1">
+              </count>
+              <iterate
+                    operator="or">
+                 <or>
+                    <and>
+                       <instanceof
+                             value="org.eclipse.datatools.connectivity.IConnectionProfile">
+                       </instanceof>
+                       <test
+                             property="org.eclipse.datatools.connectivity.profile.property.id"
+                             value="org.eclipse.datatools.connectivity.sample.fileProfile">
+                       </test>
+                    </and>
+                    <instanceof
+                          value="java.io.File">
+                    </instanceof>
+                    <instanceof
+                          value="org.eclipse.datatools.connectivity.sample.cp.DirectoryContentExtension">
+                    </instanceof>
+                 </or>
+              </iterate>
+           </with>
+        </and>
+     </activeWhen>
+      </handler>
+   </extension>
+</plugin>
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/DirectoryContentExtension.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/DirectoryContentExtension.java
new file mode 100644
index 0000000..0f586cc
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/DirectoryContentExtension.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.ui.IContentExtension;
+import org.eclipse.datatools.connectivity.ui.ManagedContentExtensionBase;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.internal.WorkbenchPlugin;
+
+/**
+ * @see IContentExtension
+ */
+public class DirectoryContentExtension extends ManagedContentExtensionBase {
+
+	public DirectoryContentExtension(IConnectionProfile profile) {
+		super(profile, IFileProfileConstants.FILE_FACTORY_ID);
+	}
+
+	public Image getImage() {
+		return WorkbenchPlugin.getDefault().getSharedImages().getImage(
+				ISharedImages.IMG_OBJ_FILE);
+	}
+
+	public String getLabel() {
+		return "Directory Content (Sample Extension)";
+	}
+	
+	public boolean isVisible() {
+		return true;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/DirectoryContentProviderExtension.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/DirectoryContentProviderExtension.java
new file mode 100644
index 0000000..1ca8439
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/DirectoryContentProviderExtension.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.sample.cp.ui.FileContentProvider;
+import org.eclipse.datatools.connectivity.ui.CommonContentProviderBase;
+import org.eclipse.datatools.connectivity.ui.IContentExtension;
+
+/**
+ * This class implements the navigatorContent extension and supplies workspace
+ * resources.
+ * 
+ */
+public class DirectoryContentProviderExtension extends
+		CommonContentProviderBase {
+
+	public DirectoryContentProviderExtension() {
+		super(new FileContentProvider());
+	}
+
+	protected IContentExtension createContentExtension(
+			IConnectionProfile profile) {
+		return new DirectoryContentExtension(profile);
+	}
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/DirectoryLabelProviderExtension.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/DirectoryLabelProviderExtension.java
new file mode 100644
index 0000000..81e99ff
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/DirectoryLabelProviderExtension.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: rcernich - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp;
+
+import org.eclipse.datatools.connectivity.sample.cp.ui.FileLabelProvider;
+import org.eclipse.datatools.connectivity.ui.CommonLabelProviderBase;
+
+public class DirectoryLabelProviderExtension extends CommonLabelProviderBase {
+
+	public DirectoryLabelProviderExtension() {
+		super(new FileLabelProvider());
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/FileConnection.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/FileConnection.java
new file mode 100644
index 0000000..63dcfab
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/FileConnection.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2004-2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: rcernich - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp;
+
+import java.io.File;
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.IConnection;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.Version;
+import org.eclipse.datatools.connectivity.VersionProviderConnection;
+
+/**
+ * @author rcernich
+ * 
+ * Created on Mar 15, 2004
+ */
+public class FileConnection extends VersionProviderConnection implements
+		IConnection {
+
+	private final static String TECHNOLOGY_ROOT_KEY = "fileSample";
+
+	private File mFile;
+	private Exception mConnectException;
+
+	public FileConnection(IConnectionProfile profile) {
+		super(profile, FileConnectionFactory.class);
+		Properties props = profile.getBaseProperties();
+		String path = props
+				.getProperty(IFileProfilePropertyConstants.FILE_PATH);
+		if (path == null) {
+			mFile = null;
+		}
+		else {
+			mFile = new File(path);
+			if (!mFile.isDirectory() || !mFile.exists()) {
+				mFile = null;
+			}
+		}
+		if (mFile == null) {
+			mConnectException = new Exception(
+					"Specified directory does not exist.");
+			clearVersionCache();
+		}
+		else {
+			updateVersionCache();
+		}
+	}
+
+	public Object getRawConnection() {
+		return mFile;
+	}
+
+	public void close() {
+		// Nothing to do here. We don't really open anything.
+		mFile = null;
+		mConnectException = null;
+	}
+
+	public Throwable getConnectException() {
+		return mConnectException;
+	}
+
+	protected String getTechnologyRootKey() {
+		return TECHNOLOGY_ROOT_KEY;
+	}
+
+	public String getProviderName() {
+		// We'll use the OS name for the technology type
+		return System.getProperty("os.name");
+	}
+
+	public Version getProviderVersion() {
+		// We'll use the OS version for the technology version
+		return Version.valueOf(System.getProperty("os.version"));
+	}
+
+	public String getTechnologyName() {
+		// We'll use the JVM name for the provider name
+		return System.getProperty("java.vendor");
+	}
+
+	public Version getTechnologyVersion() {
+		// We'll use the JVM version for the provider version
+		return Version.valueOf(System.getProperty("java.version"));
+	}
+
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/FileConnectionFactory.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/FileConnectionFactory.java
new file mode 100644
index 0000000..019a58b
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/FileConnectionFactory.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp;
+
+import org.eclipse.datatools.connectivity.IConnection;
+import org.eclipse.datatools.connectivity.IConnectionFactory;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+
+/**
+ */
+public class FileConnectionFactory implements IConnectionFactory {
+
+	/**
+	 */
+	public FileConnectionFactory() {
+	}
+
+	public IConnection createConnection(IConnectionProfile profile, String uid,
+			String pwd) {
+		return createConnection(profile);
+	}
+
+	public IConnection createConnection(IConnectionProfile profile) {
+		return new FileConnection(profile);
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/FileProfileAdapterFactory.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/FileProfileAdapterFactory.java
new file mode 100644
index 0000000..0a1e5d9
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/FileProfileAdapterFactory.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp;
+
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.sample.cp.ui.FileCPPropertySource;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.IPropertySourceProvider;
+
+public class FileProfileAdapterFactory implements IAdapterFactory {
+
+	public Class[] getAdapterList() {
+		Class[] c = new Class[1];
+		c[0] = IPropertySourceProvider.class;
+		return c;
+	}
+
+	public Object getAdapter(Object adaptableObject, Class adapterType) {
+
+		if (adapterType.isAssignableFrom(IPropertySourceProvider.class)) {
+			final IConnectionProfile icp = (IConnectionProfile) adaptableObject;
+			if (icp.getProviderId().equals("org.eclipse.datatools.connectivity.sample.fileProfile"))
+				return new FileProfilePropertySourceProvider();
+		}
+		return null;
+	}
+	
+	private class FileProfilePropertySourceProvider implements IPropertySourceProvider {
+
+		public IPropertySource getPropertySource(Object adaptableObject) {
+			if (adaptableObject instanceof IConnectionProfile) {
+				final IConnectionProfile icp = (IConnectionProfile) adaptableObject;
+				if (icp.getProviderId().equals("org.eclipse.datatools.connectivity.sample.fileProfile"))
+					return new FileCPPropertySource(icp);
+			}
+			return null;
+		}
+		
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/IFileProfileConstants.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/IFileProfileConstants.java
new file mode 100644
index 0000000..87197de
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/IFileProfileConstants.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: rcernich - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp;
+
+import java.io.File;
+
+/**
+ * @author rcernich
+ * 
+ * Created on Mar 15, 2004
+ */
+public interface IFileProfileConstants extends IFileProfilePropertyConstants {
+
+	public static final String FILE_PROFILE_ID = "org.eclipse.datatools.connectivity.sample.fileProfile";
+	public static final String FILE_CONTENT_EXTENSION_ID = "org.eclipse.datatools.connectivity.sample.directoryContent";
+	public static final String FILE_FACTORY_ID = File.class.getName();
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/IFileProfilePropertyConstants.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/IFileProfilePropertyConstants.java
new file mode 100644
index 0000000..814197d
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/IFileProfilePropertyConstants.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2004-2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: rcernich - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp;
+
+/**
+ * @author rcernich
+ * 
+ * Created on Mar 15, 2004
+ */
+public interface IFileProfilePropertyConstants {
+
+	public static final String FILE_PATH = "filePath";
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/FileCPPropertySource.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/FileCPPropertySource.java
new file mode 100644
index 0000000..00566c8
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/FileCPPropertySource.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.internal.ui.ConnectionProfilePropertySource;
+import org.eclipse.datatools.connectivity.sample.cp.IFileProfilePropertyConstants;
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.PropertyDescriptor;
+
+/**
+ * @author brianf
+ */
+public class FileCPPropertySource extends ConnectionProfilePropertySource {
+
+	private static final String P_ID_FILEPATH = "org.eclipse.datatools.connectivity.properties.sample.profile.filepath"; //$NON-NLS-1$
+
+	private IConnectionProfile mCP;
+
+	public FileCPPropertySource(IConnectionProfile cp) {
+		super(cp);
+		mCP = cp;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.views.properties.IPropertySource#getEditableValue()
+	 */
+	public Object getEditableValue() {
+		return mCP;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyDescriptors()
+	 */
+	public IPropertyDescriptor[] getPropertyDescriptors() {
+		
+		IPropertyDescriptor[] superDescriptors =
+			super.getPropertyDescriptors();
+		
+		List descList = Arrays.asList(superDescriptors);
+		ArrayList fullList = new ArrayList();
+		fullList.addAll(descList);
+		
+		PropertyDescriptor desFilePath = new PropertyDescriptor(P_ID_FILEPATH,
+				"File Path"); //$NON-NLS-1$
+		desFilePath.setCategory("Core"); //$NON-NLS-1$
+		
+		fullList.add(desFilePath);
+
+		return (IPropertyDescriptor[]) fullList.toArray( new IPropertyDescriptor[ fullList.size() ]);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.views.properties.IPropertySource#getPropertyValue(java.lang.Object)
+	 */
+	public Object getPropertyValue(Object id) {
+		Object value =
+			super.getPropertyValue(id);
+		if (value == null) {
+			if (id.equals(P_ID_FILEPATH)) {
+				return mCP.getBaseProperties().getProperty(IFileProfilePropertyConstants.FILE_PATH);
+			}
+			else {
+				return null;
+			}
+		}
+		else
+			return value;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.views.properties.IPropertySource#isPropertySet(java.lang.Object)
+	 */
+	public boolean isPropertySet(Object id) {
+		return true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.views.properties.IPropertySource#resetPropertyValue(java.lang.Object)
+	 */
+	public void resetPropertyValue(Object id) {
+		// Do nothing
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object,
+	 *      java.lang.Object)
+	 */
+	public void setPropertyValue(Object id, Object value) {
+		// Do nothing
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/FileContentProvider.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/FileContentProvider.java
new file mode 100644
index 0000000..9248a6e
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/FileContentProvider.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2004-2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui;
+
+import java.io.File;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * This represents an existing content provider used for working the object type
+ * representing connections for this profile (java.io.File).
+ * 
+ * @author rcernich
+ * 
+ * Created on Mar 15, 2004
+ */
+public class FileContentProvider implements ITreeContentProvider {
+
+	/**
+	 * 
+	 */
+	public FileContentProvider() {
+		super();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+	 */
+	public Object[] getChildren(Object parentElement) {
+		Object[] children;
+		if (parentElement instanceof File) {
+			File file = (File) parentElement;
+			if (file.isDirectory()) {
+				children = file.listFiles();
+			}
+			else {
+				children = new Object[0];
+			}
+		}
+		else {
+			children = new Object[0];
+		}
+		return children;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+	 */
+	public Object getParent(Object element) {
+		Object parent;
+		if (element instanceof File) {
+			parent = ((File) element).getParentFile();
+		}
+		else {
+			parent = null;
+		}
+		return parent;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+	 */
+	public boolean hasChildren(Object element) {
+		return getChildren(element).length > 0;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+	 */
+	public Object[] getElements(Object inputElement) {
+		return getChildren(inputElement);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+	 */
+	public void dispose() {
+		// Release any listeners. Other cleanup.
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+	 *      java.lang.Object, java.lang.Object)
+	 */
+	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		// Register listeners on newInput, remove listeners on oldInput, other
+		// initialization.
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/FileLabelProvider.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/FileLabelProvider.java
new file mode 100644
index 0000000..2558abd
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/FileLabelProvider.java
@@ -0,0 +1,73 @@
+/*******************************************************************************
+ * Copyright (c) 2004-2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui;
+
+import java.io.File;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.internal.WorkbenchPlugin;
+
+/**
+ * This represents an existing label provider used for working the object type
+ * representing connections for this profile (java.io.File).
+ * 
+ * @author rcernich
+ * 
+ * Created on Mar 15, 2004
+ */
+public class FileLabelProvider extends LabelProvider {
+
+	public FileLabelProvider() {
+		super();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+	 */
+	public Image getImage(Object element) {
+		Image image;
+		if (element instanceof File) {
+			File file = (File) element;
+			if (file.isDirectory()) {
+				image = WorkbenchPlugin.getDefault().getSharedImages()
+						.getImage(ISharedImages.IMG_OBJ_FOLDER);
+			}
+			else {
+				image = WorkbenchPlugin.getDefault().getSharedImages()
+						.getImage(ISharedImages.IMG_OBJ_FILE);
+			}
+		}
+		else {
+			image = super.getImage(element);
+		}
+		return image;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+	 */
+	public String getText(Object element) {
+		String text;
+		if (element instanceof File) {
+			text = ((File) element).getName();
+		}
+		else {
+			text = super.getText(element);
+		}
+		return text;
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshDirectoryAction.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshDirectoryAction.java
new file mode 100644
index 0000000..7fb6b4e
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshDirectoryAction.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.ui.actions.ActionContext;
+import org.eclipse.ui.navigator.CommonViewer;
+
+public class RefreshDirectoryAction extends Action {
+
+	private ActionContext context = null;
+	private StructuredViewer viewer = null;
+
+	public void setActionContext ( ActionContext context ) {
+		this.context = context;
+	}
+	
+	public ActionContext getActionContext() {
+		return this.context;
+	}
+	
+	public void setViewer ( StructuredViewer viewer ) {
+		this.viewer = viewer;
+	}
+	
+	public StructuredViewer getViewer () {
+		return this.viewer;
+	}
+	
+	public void run() {
+		IStructuredSelection ssel = 
+			(IStructuredSelection) getActionContext().getSelection();
+		getViewer().refresh(ssel.getFirstElement());
+		if (getViewer() instanceof CommonViewer) {
+			CommonViewer cv = (CommonViewer) getViewer();
+			cv.collapseToLevel(ssel.getFirstElement(), 1);
+		}
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshDirectoryActionProvider.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshDirectoryActionProvider.java
new file mode 100644
index 0000000..6db3dbe
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshDirectoryActionProvider.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui.actions;
+
+import java.io.File;
+
+import org.eclipse.datatools.connectivity.ui.navigator.actions.RefreshActionProvider;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.navigator.ICommonActionExtensionSite;
+
+public class RefreshDirectoryActionProvider extends RefreshActionProvider {
+
+	private RefreshDirectoryAction addRefreshAction;
+	
+	public RefreshDirectoryActionProvider() {
+		super();
+	}
+		
+	public void fillContextMenu(IMenuManager manager) {
+		IStructuredSelection selection = 
+			(IStructuredSelection) getContext().getSelection();
+		if (selection.getFirstElement() instanceof File) {
+			File file = (File) selection.getFirstElement();
+			if (file.isDirectory()) {
+				this.addRefreshAction.setActionContext(getContext());
+				this.addRefreshAction.setViewer(getViewer());
+				manager.appendToGroup("slot3", this.addRefreshAction);
+			}
+		}
+		return;
+	}
+
+	public void fillActionBars(IActionBars bars) {
+		bars.setGlobalActionHandler(ActionFactory.REFRESH.getId(),
+				this.addRefreshAction);
+        updateActionBars();
+        return;
+	}
+
+	public void init(ICommonActionExtensionSite config) {
+		super.init(config);
+		makeActions();
+	}
+
+    /**
+     * 
+     */
+    private void makeActions() {
+		this.addRefreshAction = new RefreshDirectoryAction();
+		this.addRefreshAction.setActionDefinitionId("org.eclipse.ui.file.refresh"); //$NON-NLS-1$
+		this.addRefreshAction.setText("Refresh Directory");
+		this.addRefreshAction.setViewer(getViewer());
+
+    }
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.actions.ActionGroup#updateActionBars()
+	 */
+	public void updateActionBars() {
+		this.addRefreshAction.setActionContext(getContext());
+		this.addRefreshAction.setViewer(getViewer());
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshOverrideAction.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshOverrideAction.java
new file mode 100644
index 0000000..b4a913b
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshOverrideAction.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+
+public class RefreshOverrideAction extends Action {
+
+	public void run() {
+		MessageDialog.openInformation(new Shell(), 
+				"Override Refresh", 
+				"This action has been overridden to pop up this dialog.");
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshOverrideActionProvider.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshOverrideActionProvider.java
new file mode 100644
index 0000000..29151db
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/RefreshOverrideActionProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui.actions;
+
+import org.eclipse.datatools.connectivity.ui.navigator.actions.RefreshActionProvider;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.navigator.ICommonActionExtensionSite;
+
+public class RefreshOverrideActionProvider extends RefreshActionProvider {
+
+	private RefreshOverrideAction addRefreshAction;
+
+	public RefreshOverrideActionProvider() {
+		super();
+	}
+		
+	public void fillContextMenu(IMenuManager manager) {
+		manager.appendToGroup("slot3", this.addRefreshAction);
+		return;
+	}
+
+	public void fillActionBars(IActionBars bars) {
+		bars.setGlobalActionHandler(ActionFactory.REFRESH.getId(),
+				this.addRefreshAction);
+        updateActionBars();
+        return;
+	}
+
+    /**
+     * 
+     */
+    private void makeActions() {
+		this.addRefreshAction = new RefreshOverrideAction();
+		this.addRefreshAction.setActionDefinitionId("org.eclipse.ui.file.refresh"); //$NON-NLS-1$
+		this.addRefreshAction.setText("Override Refresh");
+
+    }
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.actions.ActionGroup#updateActionBars()
+	 */
+	public void updateActionBars() {
+	}
+
+	public void init(ICommonActionExtensionSite config) {
+		super.init(config);
+		makeActions();
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/SampleFileAction.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/SampleFileAction.java
new file mode 100644
index 0000000..72f9aea
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/actions/SampleFileAction.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui.actions;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IActionDelegate;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class SampleFileAction implements IObjectActionDelegate {
+
+	private IWorkbenchPart mTargetPart;
+
+	/**
+	 * Constructor for Action1.
+	 */
+	public SampleFileAction() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+		mTargetPart = targetPart;
+	}
+
+	/**
+	 * @see IActionDelegate#run(IAction)
+	 */
+	public void run(IAction action) {
+		MessageDialog.openInformation(mTargetPart.getSite().getShell(),
+				"Connection Profile Sample Plug-in",
+				"Sample Action was executed.");
+	}
+
+	/**
+	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
+	 */
+	public void selectionChanged(IAction action, ISelection selection) {
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/handler/NewCPSampleHandler.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/handler/NewCPSampleHandler.java
new file mode 100644
index 0000000..a0802cf
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/handler/NewCPSampleHandler.java
@@ -0,0 +1,24 @@
+package org.eclipse.datatools.connectivity.sample.cp.ui.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class NewCPSampleHandler extends AbstractHandler {
+
+	public NewCPSampleHandler() {
+		super();
+	}
+
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		Shell shell = HandlerUtil.getActiveShell(event);
+		MessageDialog.openInformation(shell, 
+				"Overridden by Sample CP", 
+				"New profile handler was overridden by the Sample CP");
+		return null;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/properties/FileProfilePropetyPage.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/properties/FileProfilePropetyPage.java
new file mode 100644
index 0000000..d3322e0
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/properties/FileProfilePropetyPage.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui.properties;
+
+import java.util.Properties;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.sample.cp.IFileProfileConstants;
+import org.eclipse.datatools.connectivity.ui.wizards.ProfileDetailsPropertyPage;
+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.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+public class FileProfilePropetyPage extends ProfileDetailsPropertyPage {
+
+	private Text mPathText;
+
+	/**
+	 * Constructor for FileProfilePropetyPage.
+	 */
+	public FileProfilePropetyPage() {
+		super();
+		noDefaultAndApplyButton();
+	}
+
+	protected void createCustomContents(Composite parent) {
+		Composite content = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout(3, false);
+		content.setLayout(layout);
+
+		Label label;
+
+		label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText("Directory Path:");
+
+		mPathText = new Text(content, SWT.BORDER);
+		mPathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		mPathText.addModifyListener(new ModifyListener() {
+
+			public void modifyText(ModifyEvent e) {
+				handlePathModify();
+			}
+		});
+
+		Button button = new Button(content, SWT.PUSH);
+		button.setText("Browse...");
+		button.setLayoutData(new GridData());
+		button.addSelectionListener(new SelectionAdapter() {
+
+			public void widgetSelected(SelectionEvent e) {
+				handleBrowse();
+			}
+		});
+
+		initControls();
+	}
+
+	public Properties collectProperties() {
+		Properties props = new Properties();
+		props.setProperty(IFileProfileConstants.FILE_PATH, mPathText.getText());
+		return props;
+	}
+
+	private void initControls() {
+		IConnectionProfile profile = getConnectionProfile();
+		Assert.isTrue(profile.getProviderId().equals(
+				IFileProfileConstants.FILE_PROFILE_ID));
+		String path = profile.getBaseProperties().getProperty(
+				IFileProfileConstants.FILE_PATH);
+		if (path != null) {
+			mPathText.setText(path);
+		}
+		validate();
+		setErrorMessage(null);
+	}
+
+	private void handleBrowse() {
+		DirectoryDialog dialog = new DirectoryDialog(getShell());
+		String path = dialog.open();
+		if (path != null) {
+			mPathText.setText(path);
+		}
+	}
+
+	private void handlePathModify() {
+		validate();
+	}
+
+	private void validate() {
+		String errorMessage;
+		String path = mPathText.getText();
+		if (path == null || path.length() == 0) {
+			errorMessage = "Please specify server path.";
+		}
+		else {
+			errorMessage = null;
+		}
+		setErrorMessage(errorMessage);
+		setValid(errorMessage == null);
+	}
+
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/wizards/FileConnectionProfileNewWizard.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/wizards/FileConnectionProfileNewWizard.java
new file mode 100644
index 0000000..aacc248
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/wizards/FileConnectionProfileNewWizard.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2005 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui.wizards;
+
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.sample.cp.IFileProfileConstants;
+import org.eclipse.datatools.connectivity.sample.cp.IFileProfilePropertyConstants;
+import org.eclipse.datatools.connectivity.ui.wizards.NewConnectionProfileWizard;
+import org.eclipse.jface.wizard.Wizard;
+
+/**
+ * @see Wizard
+ */
+public class FileConnectionProfileNewWizard extends NewConnectionProfileWizard {
+
+	private FilePathPropertyWizardPage mPropPage;
+
+	/**
+	 * 
+	 */
+	public FileConnectionProfileNewWizard() {
+		setWindowTitle("New File Server Connection Profile");
+		setNeedsProgressMonitor(true);
+		mProviderID = IFileProfileConstants.FILE_PROFILE_ID;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.wizard.IWizard#addPages()
+	 */
+	public void addCustomPages() {
+		mPropPage = new FilePathPropertyWizardPage("propPage");
+		addPage(mPropPage);
+	}
+
+	public Properties getProfileProperties() {
+		Properties props = new Properties();
+		props.setProperty(IFileProfilePropertyConstants.FILE_PATH, mPropPage
+				.getProperty());
+		return props;
+	}
+
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/wizards/FilePathPropertyWizardPage.java b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/wizards/FilePathPropertyWizardPage.java
new file mode 100644
index 0000000..6a96325
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.cp/src/org/eclipse/datatools/connectivity/sample/cp/ui/wizards/FilePathPropertyWizardPage.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2004-2005, 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: Sybase, Inc. - initial API and implementation
+ * 		IBM Corporation - defect fix #213266
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.cp.ui.wizards;
+
+import org.eclipse.datatools.connectivity.ui.wizards.ConnectionProfileDetailsPage;
+import org.eclipse.jface.resource.ImageDescriptor;
+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.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * @author rcernich
+ * 
+ * Created on Mar 11, 2004
+ */
+public class FilePathPropertyWizardPage extends ConnectionProfileDetailsPage {
+
+	private Text mPathText;
+
+	/**
+	 * @param pageName
+	 */
+	public FilePathPropertyWizardPage(String pageName) {
+		super(pageName);
+	}
+
+	/**
+	 * @param pageName
+	 * @param title
+	 * @param titleImage
+	 */
+	public FilePathPropertyWizardPage(String pageName, String title,
+										ImageDescriptor titleImage) {
+		super(pageName, title, titleImage);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createCustomControl(Composite parent) {
+		Composite content = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout(3, false);
+		content.setLayout(layout);
+
+		Label label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText("Directory Path:");
+
+		mPathText = new Text(content, SWT.BORDER);
+		mPathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		mPathText.addModifyListener(new ModifyListener() {
+
+			public void modifyText(ModifyEvent e) {
+				handlePathModify();
+			}
+		});
+
+		Button button = new Button(content, SWT.PUSH);
+		button.setText("Browse...");
+		button.setLayoutData(new GridData());
+		button.addSelectionListener(new SelectionAdapter() {
+
+			public void widgetSelected(SelectionEvent e) {
+				handleBrowse();
+			}
+		});
+	}
+
+	public String getProperty() {
+		return mPathText.getText();
+	}
+
+	private void handleBrowse() {
+		DirectoryDialog dialog = new DirectoryDialog(getShell());
+		String path = dialog.open();
+		if (path != null) {
+			mPathText.setText(path);
+		}
+	}
+
+	private void handlePathModify() {
+		validate();
+	}
+
+	private void validate() {
+		String errorMessage;
+		String path = mPathText.getText();
+		if (path == null) {
+			errorMessage = "Please specify server path.";
+		}
+		else {
+			errorMessage = null;
+		}
+		setErrorMessage(errorMessage);
+		setPageComplete(errorMessage == null);
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/.classpath b/examples/org.eclipse.datatools.connectivity.sample.ftp/.classpath
new file mode 100644
index 0000000..065ac06
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/.project b/examples/org.eclipse.datatools.connectivity.sample.ftp/.project
new file mode 100644
index 0000000..c470ab6
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/.project
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.sample.ftp</name>
+	<comment></comment>
+	<projects>
+		<project>com.sybase.suade.common</project>
+		<project>com.sybase.suade.servers.core</project>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/META-INF/MANIFEST.MF b/examples/org.eclipse.datatools.connectivity.sample.ftp/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ed4ff92
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Plugin.name
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.sample.ftp;singleton:=true
+Bundle-Version: 2.0.0
+Bundle-Activator: org.eclipse.datatools.connectivity.sample.ftp.Activator
+Bundle-Vendor: %Plugin.Provider.name
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.ui.navigator,
+ org.apache.oro;visibility:=reexport,
+ org.apache.commons.net;visibility:=reexport,
+ org.eclipse.datatools.connectivity.ui.dse
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.datatools.connectivity.sample.ftp,
+ org.eclipse.datatools.connectivity.sample.ftp.internal,
+ org.eclipse.datatools.connectivity.sample.ftp.properties,
+ org.eclipse.datatools.connectivity.sample.ftp.wizards
+Bundle-ClassPath: cpftpsample.jar
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/about.html b/examples/org.eclipse.datatools.connectivity.sample.ftp/about.html
new file mode 100644
index 0000000..1b7d275
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/about.html
@@ -0,0 +1,28 @@
+<html>
+<head>
+<title>About This Content</title>
+</head>
+<body>
+<div>
+<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
+(&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/org/documents/epl-v10.php">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; 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 (&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 and such source code may be obtained at <a
+href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+<p>&nbsp;</p>
+</div>
+</body>
+</html>
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/build.properties b/examples/org.eclipse.datatools.connectivity.sample.ftp/build.properties
new file mode 100644
index 0000000..4090c0f
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/build.properties
@@ -0,0 +1,10 @@
+bin.includes = plugin.xml,\
+               icons/,\
+               about.html,\
+               plugin.properties,\
+               cpftpsample.jar,\
+               META-INF/
+
+jars.compile.order = cpftpsample.jar
+source.cpftpsample.jar = src/
+output.cpftpsample.jar = bin/
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/icons/file.gif b/examples/org.eclipse.datatools.connectivity.sample.ftp/icons/file.gif
new file mode 100644
index 0000000..6b86d07
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/icons/file.gif
Binary files differ
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/plugin.properties b/examples/org.eclipse.datatools.connectivity.sample.ftp/plugin.properties
new file mode 100644
index 0000000..128d90d
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/plugin.properties
@@ -0,0 +1,16 @@
+Plugin.name = Sample FTP Profile Plug-in
+Plugin.Provider.name = Sybase, Inc.
+
+NewWizard.name = Sample FTP Connection Profile
+NewWizard.description = Create a Sample FTP connection profile
+
+PropertyPage.name = Sample FTP Connection Profile
+
+ServerExtension.name = Sample FTP Connection Profile
+ServerExtension.Category.name = FTP
+ServerExtension.ConnectionProfile.name = Sample FTP Connection Profile
+ServerExtension.ConfigurationType.name = Sample FTP Configuration Type
+ServerExtension.PingFactory.name = Sample FTP Ping Connection Factory
+ServerExtension.ConnectionFactory.name = Sample FTP Provider Connection Factory
+
+Navigator.extension.name = FTP Content Extension (Sample)
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/plugin.xml b/examples/org.eclipse.datatools.connectivity.sample.ftp/plugin.xml
new file mode 100644
index 0000000..5f9fabb
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/plugin.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+   <extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <category
+            id="org.eclipse.datatools.connectivity.sample.ftp.category"
+            name="FTP"/>
+      <connectionProfile
+            category="org.eclipse.datatools.connectivity.sample.ftp.category"
+            icon="icons/file.gif"
+            id="org.eclipse.datatools.connectivity.sample.ftp.profile"
+            name="%ServerExtension.ConnectionProfile.name"
+            pingFactory="org.eclipse.datatools.connectivity.sample.ftp.internal.FtpConnectionFactory"/>
+      <connectionFactory
+            name="%ServerExtension.ConnectionFactory.name"
+            profile="org.eclipse.datatools.connectivity.sample.ftp.profile"
+            class="org.eclipse.datatools.connectivity.sample.ftp.internal.FtpConnectionFactory"
+            id="org.eclipse.datatools.connectivity.sample.ftp.profile.connectionFactory">
+      </connectionFactory>
+      <newWizard
+            class="org.eclipse.datatools.connectivity.sample.ftp.wizards.FtpConnectionProfileWizard"
+            description="%NewWizard.description"
+            icon="icons/file.gif"
+            id="org.eclipse.datatools.connectivity.sample.ftp.profile.wizards.ftpConnectionProfileWizard"
+            name="%NewWizard.name"
+            profile="org.eclipse.datatools.connectivity.sample.ftp.profile">
+      </newWizard>
+   </extension>
+   <extension
+         point="org.eclipse.ui.navigator.navigatorContent">
+      <navigatorContent
+            contentProvider="org.eclipse.datatools.connectivity.sample.ftp.internal.FTPContentProviderExtension"
+            icon="icons/file.gif"
+            id="org.eclipse.datatools.connectivity.sample.ftp.content"
+            labelProvider="org.eclipse.datatools.connectivity.sample.ftp.internal.FTPLabelProviderExtension"
+            name="%Navigator.extension.name"
+            priority="normal">
+         <enablement>
+            <or>
+	            <and>
+                     <instanceof value="org.eclipse.datatools.connectivity.IConnectionProfile"/>
+				     <test
+						property="org.eclipse.datatools.connectivity.profile.property.id"
+	                     value="org.eclipse.datatools.connectivity.sample.ftp.profile"/>
+	            </and>
+               <instanceof
+	                     value="org.eclipse.datatools.connectivity.sample.ftp.internal.FTPClientObject">
+               </instanceof>
+            </or>
+         </enablement>
+      </navigatorContent>
+   </extension>
+      <extension
+            point="org.eclipse.ui.navigator.viewer">
+         <viewerContentBinding viewerId="org.eclipse.datatools.connectivity.DataSourceExplorerNavigator">
+            <includes>
+               <contentExtension pattern="org.eclipse.datatools.connectivity.sample.ftp.content"/>
+            </includes>
+         </viewerContentBinding>
+      </extension>  
+   <extension
+         point="org.eclipse.ui.propertyPages">
+      <page
+            class="org.eclipse.datatools.connectivity.sample.ftp.properties.FtpProfilePropertyPage"
+            id="org.eclipse.datatools.connectivity.sample.ftp.profile.properties.ftpProfilePropertyPage"
+            name="%PropertyPage.name"
+            objectClass="org.eclipse.datatools.connectivity.IConnectionProfile">
+         <filter
+               name="org.eclipse.datatools.profile.property.id"
+               value="org.eclipse.datatools.connectivity.sample.ftp.profile">
+         </filter>
+      </page>
+   </extension>
+</plugin>
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/readme.txt b/examples/org.eclipse.datatools.connectivity.sample.ftp/readme.txt
new file mode 100644
index 0000000..6cbe1b1
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/readme.txt
@@ -0,0 +1,22 @@
+FTP Connection Profile Sample
+
+In order to use this sample, you need to grab a couple
+of plug-ins from the latest Orbit bundle.
+
+http://download.eclipse.org/tools/orbit/downloads/
+
+You need to find:
+	org.apache.oro
+	org.apache.commons.net
+
+The sample will not compile or run without them. 
+
+This sample focuses mainly on creating a profile,
+providing unique values (like a FTP system name,
+user id, password, etc), and populating the tree
+once the profile is created or edited. 
+
+It is VERY basic functionality that could be extended
+easily to handle drag/drop of a file from the FTP site 
+into a project or adding the ability to open/edit a file
+on an FTP server, etc.
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/Activator.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/Activator.java
new file mode 100644
index 0000000..9afe142
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/Activator.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.datatools.connectivity.sample.ftp";
+	// The registered id for the ftp connection profile
+	public final static String PROVIDER_ID = "org.eclipse.datatools.connectivity.sample.ftp.profile"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/FTPProfileMessages.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/FTPProfileMessages.java
new file mode 100644
index 0000000..52e6cc9
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/FTPProfileMessages.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp;
+
+import java.text.MessageFormat;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ * Utility class which helps managing messages
+ */
+public class FTPProfileMessages {
+	private static final String RESOURCE_BUNDLE= "org.eclipse.datatools.connectivity.sample.ftp.messages";//$NON-NLS-1$
+	private static ResourceBundle bundle = ResourceBundle.getBundle(RESOURCE_BUNDLE);
+
+	private FTPProfileMessages(){
+		// prevent instantiation of class
+	}
+	/**
+	 * Returns the formatted message for the given key in
+	 * the resource bundle. 
+	 *
+	 * @param key the resource name
+	 * @param args the message arguments
+	 * @return the string
+	 */	
+	public static String format(String key, Object[] args) {
+		return MessageFormat.format(getString(key),args);
+	}
+	/**
+	 * Returns the resource object with the given key in
+	 * the resource bundle. If there isn't any value under
+	 * the given key, the key is returned.
+	 *
+	 * @param key the resource name
+	 * @return the string
+	 */	
+	public static String getString(String key) {
+		try {
+			return bundle.getString(key);
+		} catch (MissingResourceException e) {
+			return key;
+		}
+	}
+	/**
+	 * Returns the resource object with the given key in
+	 * the resource bundle. If there isn't any value under
+	 * the given key, the default value is returned.
+	 *
+	 * @param key the resource name
+	 * @param def the default value
+	 * @return the string
+	 */	
+	public static String getString(String key, String def) {
+		try {
+			return bundle.getString(key);
+		} catch (MissingResourceException e) {
+			return def;
+		}
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/FtpProfilePlugin.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/FtpProfilePlugin.java
new file mode 100644
index 0000000..55ac67f
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/FtpProfilePlugin.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class FtpProfilePlugin extends AbstractUIPlugin {
+	// The shared instance.
+	private static FtpProfilePlugin plugin;
+
+	// The registered id for the ftp connection profile
+	public final static String PROVIDER_ID = "org.eclipse.datatools.connectivity.sample.ftp"; //$NON-NLS-1$
+
+	/**
+	 * The constructor.
+	 */
+	public FtpProfilePlugin() {
+		super();
+		plugin = this;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static FtpProfilePlugin getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * @return
+	 * @throws MissingResourceException
+	 */
+	public ResourceBundle loadResourceBundle() throws MissingResourceException {
+		return ResourceBundle
+				.getBundle("org.eclipse.datatools.connectivity.sample.ftp.messages"); //$NON-NLS-1$
+	}
+
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/IFtpProfileConstants.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/IFtpProfileConstants.java
new file mode 100644
index 0000000..251217d
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/IFtpProfileConstants.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp;
+
+/**
+ * This class exposes the property names for FTP connection profiles.
+ * 
+ * @author mdow and brianf
+ */
+public interface IFtpProfileConstants {
+
+	// Property name for the base path of the file
+	public static final String BASE_PATH = "basePath"; //$NON-NLS-1$
+
+	// Property name for the name of the file
+	public static final String FILE_NAME = "name"; //$NON-NLS-1$
+
+	// Property name for the message delimiter within the file
+	public static final String MESSAGE_DELIMITER = "delimiter"; //$NON-NLS-1$
+
+	// The id of the file connection factory
+	public static final String FTP_FACTORY_ID = "org.eclipse.datatools.connectivity.sample.ftp.profile.connectionFactory"; //$NON-NLS-1$
+	
+	// the name of the FTP server
+	public static final String FTP_SERVER = "serverName"; //$NON-NLS-1$
+	public static final String FTP_PORT = "port"; //$NON-NLS-1$
+	
+	// the user name and password for the FTP server
+	public static final String FTP_UID = "userId"; //$NON-NLS-1$
+	public static final String FTP_PWD = "password"; //$NON-NLS-1$
+	
+	public static final String FTP_PROVIDER_ID = "org.eclipse.datatools.connectivity.sample.ftp.profile"; //$NON-NLS-1$
+	
+	// Phantom property for directory
+	public static final String FTP_PHANTOM_PROPERTY_IS_DIRECTORY = "org.eclipse.datatools.connectivity.ftp.isdirectory";	
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPClientObject.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPClientObject.java
new file mode 100644
index 0000000..bada265
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPClientObject.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.internal;
+
+import org.apache.commons.net.ftp.FTPClient;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+
+/**
+ * Wrapper class for FTPClient
+ */
+public class FTPClientObject {
+	private IConnectionProfile profile;
+	private FTPClient ftpClient;
+	
+	/**
+	 * @param profile
+	 * @param ftpClient
+	 */
+	public FTPClientObject(IConnectionProfile profile, FTPClient ftpClient) {
+		super();
+		this.profile = profile;
+		this.ftpClient = ftpClient;
+	}
+	/**
+	 * @return Returns the ftpClient.
+	 */
+	public FTPClient getFtpClient() {
+		return ftpClient;
+	}
+	/**
+	 * @return Returns the profile.
+	 */
+	public IConnectionProfile getProfile() {
+		return profile;
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPContentExtension.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPContentExtension.java
new file mode 100644
index 0000000..5b51a30
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPContentExtension.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & shongxum - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.internal;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.sample.ftp.IFtpProfileConstants;
+import org.eclipse.datatools.connectivity.ui.IContentExtension;
+import org.eclipse.datatools.connectivity.ui.ManagedContentExtensionBase;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.internal.WorkbenchPlugin;
+
+/**
+ * @see IContentExtension
+ */
+public class FTPContentExtension extends ManagedContentExtensionBase {
+
+	public FTPContentExtension(IConnectionProfile profile) {
+		super(profile, IFtpProfileConstants.FTP_FACTORY_ID);
+	}
+
+	public Image getImage() {
+		return WorkbenchPlugin.getDefault().getSharedImages().getImage(
+				ISharedImages.IMG_OBJ_FILE);
+	}
+
+	public String getLabel() {
+		return "FTP Content (Sample Extension)";
+	}
+	
+	public boolean isVisible() {
+		return true;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPContentProviderExtension.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPContentProviderExtension.java
new file mode 100644
index 0000000..c63dc5b
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPContentProviderExtension.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.internal;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.ui.CommonContentProviderBase;
+import org.eclipse.datatools.connectivity.ui.IContentExtension;
+
+/**
+ * This class implements the navigatorContent extension and supplies workspace
+ * resources.
+ * 
+ */
+public class FTPContentProviderExtension extends
+		CommonContentProviderBase {
+
+	public FTPContentProviderExtension() {
+		super(new FtpContentProvider());
+	}
+
+	protected IContentExtension createContentExtension(
+			IConnectionProfile profile) {
+		return new FTPContentExtension(profile);
+	}
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPFileObject.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPFileObject.java
new file mode 100644
index 0000000..cdb665b
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPFileObject.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.internal;
+
+import org.apache.commons.net.ftp.FTPFile;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.ui.IActionFilter;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.sample.ftp.IFtpProfileConstants;
+
+
+/**
+ * Wrapper class for FTPFile which stores the connection
+ * profile
+ */
+public class FTPFileObject implements IAdaptable {
+    private Object parent;
+
+    private FTPFile file;
+
+    private IConnectionProfile profile;
+
+    public FTPFileObject(Object parent, IConnectionProfile profile, FTPFile file) {
+        this.parent = parent;
+        this.profile = profile;
+        this.file = file;
+    }
+
+    /**
+     * @return Returns the parent.
+     */
+    public Object getParent() {
+        return parent;
+    }
+
+    /**
+     * @return Returns the file.
+     */
+    public FTPFile getFTPFile() {
+        return file;
+    }
+
+    public String getName() {
+        StringBuffer sb = new StringBuffer();        
+        FTPFileObject parent = this;
+        while(parent != null) {
+            sb.insert(0, "/" + parent.getFTPFile().getName());
+            if (parent.getParent() instanceof FTPFileObject) {
+                parent = (FTPFileObject) parent.getParent();
+            } else {
+                parent = null;
+            }
+        }
+        while (sb.charAt(0) == '/') {
+            sb.deleteCharAt(0);
+        }
+        return sb.toString();
+    }
+
+    /**
+     * @return Returns the profile.
+     */
+    public IConnectionProfile getProfile() {
+        return profile;
+    }
+
+    /**
+     * Utility method
+     */
+    public static FTPFileObject[] convert(Object parent,
+            IConnectionProfile profile, FTPFile[] files) {
+        if (files == null) return new FTPFileObject[0];
+        FTPFileObject[] fileobjs = new FTPFileObject[files.length];
+        for (int i = 0; i < files.length; i++) {
+            fileobjs[i] = new FTPFileObject(parent, profile, files[i]);
+        }
+        return fileobjs;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+     */
+    public Object getAdapter(Class adapter) {
+        if (adapter == IActionFilter.class)
+            return new IActionFilter() {
+                public boolean testAttribute(Object target, String name,
+                        String value) {
+                    if (target == null || !(target instanceof FTPFileObject))
+                        return false;
+                    FTPFileObject fo = (FTPFileObject) target;
+                    if (name
+                            .equals(IFtpProfileConstants.FTP_PHANTOM_PROPERTY_IS_DIRECTORY)
+                            && fo.getFTPFile().isDirectory())
+                        return true;
+                    else
+                        return false;
+                }
+            };
+        else
+            return null;
+    }
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPLabelProviderExtension.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPLabelProviderExtension.java
new file mode 100644
index 0000000..1631e85
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FTPLabelProviderExtension.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.internal;
+
+import org.eclipse.datatools.connectivity.ui.CommonLabelProviderBase;
+
+public class FTPLabelProviderExtension extends CommonLabelProviderBase {
+
+	public FTPLabelProviderExtension() {
+		super(new FtpLabelProvider());
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpConnection.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpConnection.java
new file mode 100644
index 0000000..9f54bbc
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpConnection.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.internal;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPReply;
+
+import org.eclipse.datatools.connectivity.IConnection;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.IServerVersionProvider;
+import org.eclipse.datatools.connectivity.Version;
+import org.eclipse.datatools.connectivity.sample.ftp.FTPProfileMessages;
+import org.eclipse.datatools.connectivity.sample.ftp.IFtpProfileConstants;
+
+/**
+ * @author mdow
+ */
+public class FtpConnection implements IConnection, IServerVersionProvider {
+
+	private static int counter = 0;
+	
+	private Throwable mException;
+	
+	private FTPClient mFtpClient;
+	
+	private FTPClientObject mFtpClientObject;
+	
+	private IConnectionProfile mProfile;
+
+	/**
+	 * Constructor
+	 * @param profile
+	 */
+	public FtpConnection(IConnectionProfile profile) {
+		this.mProfile = profile;
+		Properties props = profile.getBaseProperties();
+
+		String server = props.getProperty(IFtpProfileConstants.FTP_SERVER);
+		String port = props.getProperty(IFtpProfileConstants.FTP_PORT);
+		String user = props.getProperty(IFtpProfileConstants.FTP_UID);
+		String pass = props.getProperty(IFtpProfileConstants.FTP_PWD);
+
+        try {
+            int reply;
+            this.mFtpClient = new FTPClient();
+            this.mFtpClientObject = new FTPClientObject(profile,
+                    this.mFtpClient);
+            if (port != null && port.length() != 0)
+            	this.mFtpClient.setDefaultPort(new Integer(port).intValue());
+            this.mFtpClient.setDefaultTimeout(2 * 60 * 1000);
+            this.mFtpClient.setDataTimeout(2 * 60 * 1000);
+            this.mFtpClient.connect(server);
+            if (!this.mFtpClient.login(user, pass)) {
+                throw new Exception(mFtpClient.getReplyString());
+            }
+            reply = this.mFtpClient.getReplyCode();
+            if (!FTPReply.isPositiveCompletion(reply)) {
+                this.mFtpClient.disconnect();
+                throw new Exception(FTPProfileMessages
+                        .getString("FtpConnection.errormessage")); //$NON-NLS-1$
+            }
+        } catch (Exception e) {
+            this.mException = e;
+            return;
+        }
+        this.mFtpClient.enterLocalPassiveMode();
+        FtpConnection.counter++;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IConnection#getRawConnection()
+	 */
+	public Object getRawConnection() {
+		return this.mFtpClientObject;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IConnection#close()
+	 */
+	public void close() {
+		if (this.mFtpClient != null) {
+			if (this.mFtpClient.isConnected()) {
+				try {
+					this.mFtpClient.disconnect();
+					FtpConnection.counter--;
+				} catch (IOException e) {
+					// Guess we can't disconnect.
+					e.printStackTrace();
+				}
+			}
+			this.mFtpClient = null;
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IConnection#getConnectException()
+	 */
+	public Throwable getConnectException() {
+		return this.mException;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IConnection#getConnectionProfile()
+	 */
+	public IConnectionProfile getConnectionProfile() {
+		return this.mProfile;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IServerVersionProvider#getProviderName()
+	 */
+	public String getProviderName() {
+		try {
+			if (mFtpClient != null && mFtpClient.isConnected())
+				return mFtpClient.getSystemName();
+		} catch (IOException e) {
+			// do nothing
+		}
+		return "Not Available";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IServerVersionProvider#getProviderVersion()
+	 */
+	public Version getProviderVersion() {
+		return new Version(0,0,0,"0");
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IServerVersionProvider#getTechnologyName()
+	 */
+	public String getTechnologyName() {
+		return "FTP";
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IServerVersionProvider#getTechnologyVersion()
+	 */
+	public Version getTechnologyVersion() {
+		return new Version(0,0,0,"0");
+	}
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpConnectionFactory.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpConnectionFactory.java
new file mode 100644
index 0000000..9808508
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpConnectionFactory.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.internal;
+
+import org.eclipse.datatools.connectivity.IConnection;
+import org.eclipse.datatools.connectivity.IConnectionFactory;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+
+/**
+ * @author mdow
+ */
+public class FtpConnectionFactory implements IConnectionFactory {
+
+	/*
+	 * Constructor
+	 */
+	public FtpConnectionFactory() {
+		super();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IConnectionFactory#createConnection(org.eclipse.datatools.connectivity.IConnectionProfile)
+	 */
+	public IConnection createConnection(IConnectionProfile profile) {
+		FtpConnection connect = new FtpConnection(profile);
+//		if (connect.getConnectException() != null) {
+//			return null;
+//		}
+		return connect;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.IConnectionFactory#createConnection(org.eclipse.datatools.connectivity.IConnectionProfile, java.lang.String, java.lang.String)
+	 */
+	public IConnection createConnection(IConnectionProfile profile, String uid,
+			String pwd) {
+		FtpConnection connect = new FtpConnection(profile);
+		if (connect.getConnectException() != null) {
+			return null;
+		}
+		return connect;
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpContentProvider.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpContentProvider.java
new file mode 100644
index 0000000..1b13fe4
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpContentProvider.java
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.internal;
+
+import org.apache.commons.net.ftp.FTPClient;
+import org.apache.commons.net.ftp.FTPFile;
+import org.apache.commons.net.ftp.FTPListParseEngine;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ * @author mdow and brianf
+ */
+public class FtpContentProvider implements ITreeContentProvider,
+		IAdaptable {
+
+	/**
+	 * Constructor
+	 */
+	public FtpContentProvider() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+	 */
+	public Object[] getChildren(Object parent) {
+		try {
+			if (parent instanceof FTPClientObject) {
+				FTPClient ftpClient = ((FTPClientObject) parent).getFtpClient();
+				if (ftpClient.isConnected()) {
+					FTPListParseEngine engine = ftpClient.initiateListParsing();
+					FTPFile[] files = engine.getFiles();
+					return FTPFileObject.convert(parent, ((FTPClientObject) parent).getProfile(), files);
+				}
+			} else if (parent instanceof FTPFileObject) {
+				FTPFile ftpFile = ((FTPFileObject) parent).getFTPFile();
+				FTPClient ftpClient = getFTPClient(parent);
+				if (ftpFile.isDirectory() && ftpClient.isConnected()) {
+					FTPListParseEngine engine = ftpClient
+							.initiateListParsing(getDirectory((FTPFileObject) parent));
+					FTPFile[] files = engine.getFiles();
+					return FTPFileObject.convert(parent, ((FTPFileObject) parent).getProfile(), files);
+				}
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+			FTPClient ftpClient = getFTPClient(parent);
+			try {
+				if (ftpClient != null)
+					ftpClient.disconnect();
+			} catch (Exception ex) {
+			}
+		}
+		return new Object[0];
+	}
+
+	private String getDirectory(FTPFileObject file) {
+		StringBuffer sb = new StringBuffer();
+		FTPFileObject fileobj = file;
+		Object obj;
+		FTPFile ftpFile;
+		while (fileobj != null) {
+			ftpFile = fileobj.getFTPFile();
+			sb.insert(0, ftpFile.getName());
+			sb.insert(0, "/");
+			obj = getParent(fileobj);
+			if (obj instanceof FTPFileObject) {
+			    fileobj = (FTPFileObject) obj;
+			} else {
+			    fileobj = null;
+			}
+		}
+		return sb.toString();
+	}
+
+	private FTPClient getFTPClient(Object element) {
+		Object obj = element;
+		while (obj != null && !(obj instanceof FTPClientObject)) {
+			obj = ((FTPFileObject) obj).getParent();
+		}
+		if (obj != null)
+			return ((FTPClientObject) obj).getFtpClient();
+		else
+			return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+	 */
+	public Object getParent(Object element) {
+		Object parent = null;
+		if (element instanceof FTPFileObject) {
+			parent = ((FTPFileObject) element).getParent();
+		}
+		return parent;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+	 */
+	public boolean hasChildren(Object element) {
+	    if (element instanceof FTPClientObject) {
+	        return true;
+	    } else if (element instanceof FTPFileObject) {
+			FTPFile ftpFile = ((FTPFileObject) element).getFTPFile();
+			if (ftpFile.isDirectory()) {
+			    return true;
+			} else {
+			    return false;
+			}
+	    } else {
+	        return false;
+	    }
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+	 */
+	public Object[] getElements(Object inputElement) {
+		return getChildren(inputElement);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+	 */
+	public void dispose() {
+		// Release any listeners. Other cleanup.
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+	 *      java.lang.Object, java.lang.Object)
+	 */
+	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		// Register listeners on newInput, remove listeners on oldInput, other
+		// initialization.
+	}
+
+	/**
+	 * @param oldInput
+	 * @param newInput
+	 */
+	public void init(Object oldInput, Object newInput) {
+		// Auto-generated method stub
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+	 */
+	public Object getAdapter(Class adapter) {
+		return Platform.getAdapterManager().getAdapter(this, adapter);
+	}
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpLabelProvider.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpLabelProvider.java
new file mode 100644
index 0000000..034d817
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/internal/FtpLabelProvider.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.internal;
+
+import org.apache.commons.net.ftp.FTPFile;
+import org.eclipse.datatools.connectivity.ui.navigator.ConnectionProfileLabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.internal.WorkbenchPlugin;
+
+/**
+ * @author mdow and brianf
+ */
+public class FtpLabelProvider extends ConnectionProfileLabelProvider  {
+
+    /**
+     * Constructor
+     */
+    public FtpLabelProvider() {
+        super();
+    }
+
+	/*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
+     */
+    public Image getImage(Object element) {
+        Image image;
+        if (element instanceof FTPFileObject) {
+        		FTPFile file = ((FTPFileObject) element).getFTPFile();
+                if (file.isDirectory()) {
+                    image = WorkbenchPlugin.getDefault().getSharedImages()
+                            .getImage(ISharedImages.IMG_OBJ_FOLDER);
+                } else {
+                    image = WorkbenchPlugin.getDefault().getSharedImages()
+                            .getImage(ISharedImages.IMG_OBJ_FILE);
+                }
+        } else {
+            image = super.getImage(element);
+        }
+        return image;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
+     */
+    public String getText(Object element) {
+        String text;
+        if (element instanceof FTPFileObject) {
+      		FTPFile file = ((FTPFileObject) element).getFTPFile();
+      		text = file.getName();
+        } else {
+            text = super.getText(element);
+        }
+        return text;
+    }
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/messages.properties b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/messages.properties
new file mode 100644
index 0000000..9df72de
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/messages.properties
@@ -0,0 +1,30 @@
+#*******************************************************************************
+#* Copyright (c) 2008 Sybase, Inc.
+#* 
+#* All rights reserved. This program and the accompanying materials are made
+#* available under the terms of the Eclipse Public License v1.0 which
+#* accompanies this distribution, and is available at
+#* http://www.eclipse.org/legal/epl-v10.html
+#* 
+#* Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+wizardpage.title = FTP Transport Location
+wizardpage.text = Specify the FTP server name, user name, and password.
+wizardpage.label.servername = Server Name:
+wizardpage.label.username = User Name:
+wizardpage.label.password = Password:
+wizardpage.summary.label.servername = Server Name
+wizardpage.summary.label.username = User Name
+wizardpage.summary.label.password = Password
+
+wizard.title = New FTP Connection Profile
+wizard.error.title = Error
+
+propertypage.label.servername = Server Name:
+propertypage.label.username = User Name:
+propertypage.label.password = Password:
+
+ce.node.label = Server Content
+
+FtpWSMFConnection.connectmessage = Connected to 
+FtpWSMFConnection.errormessage = FTP server refused connection.
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/properties/FtpProfilePropertyPage.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/properties/FtpProfilePropertyPage.java
new file mode 100644
index 0000000..f2f691f
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/properties/FtpProfilePropertyPage.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.properties;
+
+import java.util.Properties;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.sample.ftp.FTPProfileMessages;
+import org.eclipse.datatools.connectivity.sample.ftp.IFtpProfileConstants;
+import org.eclipse.datatools.connectivity.ui.wizards.ProfileDetailsPropertyPage;
+
+
+/**
+ * FTP Profile properties
+ * @author brianf
+ */
+public class FtpProfilePropertyPage extends ProfileDetailsPropertyPage {
+
+	// ui pieces
+	private Text mServerText;
+	private Text mUIDText;
+	private Text mPWDText;
+
+	/**
+	 * Constructor for FtpProfilePropertyPage.
+	 */
+	public FtpProfilePropertyPage() {
+		super();
+		noDefaultAndApplyButton();
+	}
+
+	/**
+	 * Return the name of the FTP Server
+	 * @return
+	 */
+	public String getServerName() {
+		return this.mServerText.getText();
+	}
+
+	/**
+	 * Set the name of the FTP Server
+	 * @param server
+	 */
+	public void setServerName(String server) {
+		this.mServerText.setText(server);
+	}
+
+	/**
+	 * Return the user name for the FTP Server
+	 * @return
+	 */
+	public String getUserName() {
+		return this.mUIDText.getText();
+	}
+
+	/**
+	 * Set the user name for the FTP Server
+	 * @param user
+	 */
+	public void setUserName(String user) {
+		this.mUIDText.setText(user);
+	}
+
+	/**
+	 * Return the password for the FTP Server
+	 * @return
+	 */
+	public String getPassword() {
+		return this.mPWDText.getText();
+	}
+
+	/**
+	 * Set the password for the FTP Server
+	 * @param pwd
+	 */
+	public void setPassword(String pwd) {
+		this.mPWDText.setText(pwd);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.preference.IPreferencePage#performOk()
+	 */
+	public boolean performOk() {
+		IConnectionProfile profile = getConnectionProfile();
+		Properties props = new Properties();
+		props.setProperty(IFtpProfileConstants.FTP_SERVER, getServerName());
+		props.setProperty(IFtpProfileConstants.FTP_UID, getUserName());
+		props.setProperty(IFtpProfileConstants.FTP_PWD, getPassword());
+		profile.setBaseProperties(props);
+		return true;
+	}
+
+	/**
+	 * Initialize the controls from the profile
+	 */
+	private void initControls() {
+		IConnectionProfile profile = getConnectionProfile();
+		String server = profile.getBaseProperties().getProperty(IFtpProfileConstants.FTP_SERVER);
+		if (server != null) {
+			setServerName(server);
+		}
+		String uid = profile.getBaseProperties().getProperty(IFtpProfileConstants.FTP_UID);
+		if (uid != null) {
+			setUserName(uid);
+		}
+		String pwd = profile.getBaseProperties().getProperty(IFtpProfileConstants.FTP_PWD);
+		if (pwd != null) {
+			setPassword(pwd);
+		}
+		setErrorMessage(null);
+	}
+
+	protected Properties collectProperties() {
+		Properties props = new Properties();
+		props.setProperty(IFtpProfileConstants.FTP_SERVER, getServerName());
+		props.setProperty(IFtpProfileConstants.FTP_UID, getUserName());
+		props.setProperty(IFtpProfileConstants.FTP_PWD, getPassword());
+		return props;
+	}
+
+	protected void createCustomContents(Composite parent) {
+		Composite content = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout(2, false);
+		content.setLayout(layout);
+
+		Label label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText(FTPProfileMessages.getString("propertypage.label.servername")); //$NON-NLS-1$
+
+		this.mServerText = new Text(content, SWT.BORDER);
+		this.mServerText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		this.mServerText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				// empty
+			}
+		});
+
+		label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText(FTPProfileMessages.getString("propertypage.label.username")); //$NON-NLS-1$
+
+		this.mUIDText = new Text(content, SWT.BORDER);
+		this.mUIDText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		this.mUIDText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				// empty
+			}
+		});
+
+		label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText(FTPProfileMessages.getString("propertypage.label.password")); //$NON-NLS-1$
+
+		this.mPWDText = new Text(content, SWT.BORDER);
+		this.mPWDText.setEchoChar('*');
+		this.mPWDText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		this.mPWDText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				// empty
+			}
+		});
+
+		initControls();
+	}
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/wizards/FtpConnectionProfileWizard.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/wizards/FtpConnectionProfileWizard.java
new file mode 100644
index 0000000..1fe4c8c
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/wizards/FtpConnectionProfileWizard.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.wizards;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.internal.ui.wizards.ISummaryDataSource;
+import org.eclipse.datatools.connectivity.internal.ui.wizards.SummaryWizardPage;
+import org.eclipse.datatools.connectivity.sample.ftp.FTPProfileMessages;
+import org.eclipse.datatools.connectivity.sample.ftp.IFtpProfileConstants;
+import org.eclipse.datatools.connectivity.ui.wizards.NewConnectionProfileWizard;
+import org.eclipse.jface.wizard.Wizard;
+
+
+/**
+ * This class is the wizard for creating new ftp connection profiles.
+ * 
+ * @author mdow
+ * @see Wizard
+ */
+public class FtpConnectionProfileWizard extends NewConnectionProfileWizard {
+
+	// The file property page
+	private FtpPropertyWizardPage mPropPage;
+
+	// The summary page
+	private SummaryWizardPage mSummaryPage;
+		
+	private Wizard mParentWizard;
+	
+	private boolean showProjectPage = true;
+
+	/**
+	 * Default constructor
+	 */
+	public FtpConnectionProfileWizard() {
+		super();
+		setWindowTitle(FTPProfileMessages.getString("wizard.title")); //$NON-NLS-1$
+//		setDefaultPageImageDescriptor(FtpProfilePlugin.getDefault().getImageDescriptor("syb_banner.gif")); //$NON-NLS-1$
+	}
+	
+	public void setShowProjectPage ( boolean flag ) {
+		this.showProjectPage = flag;
+	}
+	
+	public boolean getShowProjectPage() {
+		return this.showProjectPage;
+	}
+
+	/**
+	 * @see Wizard#performFinish
+	 */
+	public boolean performFinish() {
+		
+		boolean flag = super.performFinish();
+		
+		if (!flag) return flag;
+				
+		return flag;
+	}
+
+	/**
+	 * @param parent
+	 */
+	public void setParentWizard(Wizard parent) {
+		this.mParentWizard = parent;
+	}
+
+	/**
+	 * @return
+	 */
+	public Wizard getParentWizard() {
+		return this.mParentWizard;
+	}
+
+	public List getSummaryData() {
+		List data = new ArrayList();
+		if (this.mParentWizard != null && this.mParentWizard instanceof ISummaryDataSource) {
+			ISummaryDataSource wiz = (ISummaryDataSource) this.mParentWizard;
+			data.addAll(wiz.getSummaryData());
+		}
+		data.addAll(super.getSummaryData());
+		return data;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.ui.wizards.NewConnectionProfileWizard#addCustomPages()
+	 */
+	public void addCustomPages() {
+		this.mPropPage = new FtpPropertyWizardPage("PropertyPage"); //$NON-NLS-1$
+		addPage(this.mPropPage);
+
+		this.mSummaryPage = new SummaryWizardPage(this);
+		addPage(this.mSummaryPage);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.ui.wizards.NewConnectionProfileWizard#getProfileProperties()
+	 */
+	public Properties getProfileProperties() {
+		Properties props = new Properties();
+		props.setProperty(IFtpProfileConstants.FTP_SERVER, this.mPropPage.getServerName());
+		props.setProperty(IFtpProfileConstants.FTP_UID, this.mPropPage.getUserName());
+		props.setProperty(IFtpProfileConstants.FTP_PWD, this.mPropPage.getPassword());
+		
+		return props;
+	}
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/wizards/FtpPropertyWizardPage.java b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/wizards/FtpPropertyWizardPage.java
new file mode 100644
index 0000000..06a98f9
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample.ftp/src/org/eclipse/datatools/connectivity/sample/ftp/wizards/FtpPropertyWizardPage.java
@@ -0,0 +1,181 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf & mdow - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.ftp.wizards;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.datatools.connectivity.sample.ftp.FTPProfileMessages;
+import org.eclipse.datatools.connectivity.ui.wizards.ConnectionProfileDetailsPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+
+/**
+ * FTP Profile Property wizard page
+ * @author mdow & brianf
+ */
+public class FtpPropertyWizardPage extends ConnectionProfileDetailsPage {
+
+	// various UI components
+	private Text mServerText;
+	private Text mUIDText;
+	private Text mPWDText;
+
+	/**
+	 * Constructor
+	 * @param pageName
+	 */
+	public FtpPropertyWizardPage(String pageName) {
+		super(pageName);
+		setTitle(FTPProfileMessages.getString("wizardpage.title")); //$NON-NLS-1$
+		setDescription(FTPProfileMessages.getString("wizardpage.text")); //$NON-NLS-1$
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.ui.wizards.ConnectionProfileDetailsPage#createCustomControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createCustomControl(Composite parent) {
+		Composite content = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout(2, false);
+		content.setLayout(layout);
+
+		Label label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText(FTPProfileMessages.getString("wizardpage.label.servername")); //$NON-NLS-1$
+
+		this.mServerText = new Text(content, SWT.BORDER);
+		this.mServerText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		this.mServerText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				validate();
+			}
+		});
+
+		label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText(FTPProfileMessages.getString("wizardpage.label.username")); //$NON-NLS-1$
+
+		this.mUIDText = new Text(content, SWT.BORDER);
+		this.mUIDText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		this.mUIDText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				validate();
+			}
+		});
+
+		label = new Label(content, SWT.NULL);
+		label.setLayoutData(new GridData());
+		label.setText(FTPProfileMessages.getString("wizardpage.label.password")); //$NON-NLS-1$
+
+		this.mPWDText = new Text(content, SWT.BORDER);
+		this.mPWDText.setEchoChar('*');
+		this.mPWDText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		this.mPWDText.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				validate();
+			}
+		});
+		
+//		setControl(content);
+		setPageComplete(false);
+	}
+
+	/**
+	 * Return the name of the FTP Server
+	 * @return
+	 */
+	public String getServerName() {
+		return this.mServerText.getText();
+	}
+
+	/**
+	 * Set the name of the FTP Server
+	 * @param server
+	 */
+	public void setServerName(String server) {
+		this.mServerText.setText(server);
+	}
+
+	/**
+	 * Return the user name for the FTP Server
+	 * @return
+	 */
+	public String getUserName() {
+		return this.mUIDText.getText();
+	}
+
+	/**
+	 * Set the user name for the FTP Server
+	 * @param user
+	 */
+	public void setUserName(String user) {
+		this.mUIDText.setText(user);
+	}
+
+	/**
+	 * Return the password for the FTP Server
+	 * @return
+	 */
+	public String getPassword() {
+		return this.mPWDText.getText();
+	}
+
+	/**
+	 * Set the password for the FTP Server
+	 * @param pwd
+	 */
+	public void setPassword(String pwd) {
+		this.mPWDText.setText(pwd);
+	}
+
+	/**
+	 * Validate the profile
+	 */
+	private void validate() {
+		String server = getServerName();
+		String uid = getUserName();
+		String pwd = getPassword();
+		
+		if (server != null && uid != null && pwd != null) {
+			setPageComplete(true);
+		}
+		else {
+			setPageComplete(false);
+		}
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.datatools.connectivity.internal.ui.wizards.BaseWizardPage#getSummaryData()
+	 */
+	public List getSummaryData() {
+		List data = new ArrayList();
+		data.add(new String[] {FTPProfileMessages.getString("wizardpage.summary.label.servername"), //$NON-NLS-1$ 
+				this.getServerName()});
+		data.add(new String[] {FTPProfileMessages.getString("wizardpage.summary.label.username"),  //$NON-NLS-1$
+				this.getUserName()});
+		String pwd = this.getPassword();
+		String mask = ""; //$NON-NLS-1$
+		for (int i = 0; i < pwd.length(); i++) {
+			mask = mask + "*"; //$NON-NLS-1$
+		}
+		data.add(new String[] {FTPProfileMessages.getString("wizardpage.summary.label.password"),  //$NON-NLS-1$
+				mask});
+		return data;
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample/.classpath b/examples/org.eclipse.datatools.connectivity.sample/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<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/examples/org.eclipse.datatools.connectivity.sample/.gitignore b/examples/org.eclipse.datatools.connectivity.sample/.gitignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/examples/org.eclipse.datatools.connectivity.sample/.project b/examples/org.eclipse.datatools.connectivity.sample/.project
new file mode 100644
index 0000000..c4936d2
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.sample</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/examples/org.eclipse.datatools.connectivity.sample/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.datatools.connectivity.sample/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..15288e5
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Sep 20 15:32:39 PDT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
+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.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.4
diff --git a/examples/org.eclipse.datatools.connectivity.sample/META-INF/MANIFEST.MF b/examples/org.eclipse.datatools.connectivity.sample/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..62bdf99
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Sample Plug-in
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.sample; singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.datatools.connectivity.sample.Activator
+Bundle-Vendor: Eclipse.org
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.datatools.connectivity.ui.dse
+Eclipse-LazyStart: true
diff --git a/examples/org.eclipse.datatools.connectivity.sample/build.properties b/examples/org.eclipse.datatools.connectivity.sample/build.properties
new file mode 100644
index 0000000..2b0d95b
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               META-INF/,\
+               .
diff --git a/examples/org.eclipse.datatools.connectivity.sample/plugin.xml b/examples/org.eclipse.datatools.connectivity.sample/plugin.xml
new file mode 100644
index 0000000..4cf1e3b
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/plugin.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.ui.popupMenus">
+      <objectContribution
+            objectClass="org.eclipse.core.resources.IFile"
+            id="org.eclipse.datatools.connectivity.sample.contribution1">
+         <menu
+               label="Connectivity Sample"
+               path="additions"
+               id="org.eclipse.datatools.connectivity.sample.menu1">
+            <separator
+                  name="group1">
+            </separator>
+         </menu>
+         <action
+               label="Launch Sample"
+               class="org.eclipse.datatools.connectivity.sample.popup.actions.LaunchSample"
+               menubarPath="org.eclipse.datatools.connectivity.sample.menu1/group1"
+               enablesFor="*"
+               id="org.eclipse.datatools.connectivity.sample.LaunchSample">
+         </action>
+         <action
+               label="Create Connection"
+               class="org.eclipse.datatools.connectivity.sample.popup.actions.CreateConnection"
+               menubarPath="org.eclipse.datatools.connectivity.sample.menu1/group1"
+               enablesFor="*"
+               id="org.eclipse.datatools.connectivity.sample.CreateConnection">
+         </action>
+      </objectContribution>
+   </extension>
+
+</plugin>
diff --git a/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/Activator.java b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/Activator.java
new file mode 100644
index 0000000..762f029
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/Activator.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+package org.eclipse.datatools.connectivity.sample;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.datatools.connectivity.sample";
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * 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 getImageDescriptor(String path) {
+		return imageDescriptorFromPlugin(PLUGIN_ID, path);
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/popup/actions/CreateConnection.java b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/popup/actions/CreateConnection.java
new file mode 100644
index 0000000..c2e1b76
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/popup/actions/CreateConnection.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.popup.actions;
+
+import java.io.File;
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.ConnectionProfileConstants;
+import org.eclipse.datatools.connectivity.ConnectionProfileException;
+import org.eclipse.datatools.connectivity.ProfileManager;
+import org.eclipse.datatools.connectivity.drivers.DriverInstance;
+import org.eclipse.datatools.connectivity.drivers.DriverManager;
+import org.eclipse.datatools.connectivity.drivers.jdbc.IJDBCDriverDefinitionConstants;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+public class CreateConnection implements IObjectActionDelegate {
+
+	public CreateConnection() {
+		super();
+	}
+
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+	}
+
+	public void run(IAction action) {
+		// Create new driver instance
+		String jarlist = System.getProperty("user.home") + File.separator
+				+ "derby.jar";
+		String uniqueDriverInstanceName = generateUniqueDriverDefinitionName();
+		DriverInstance driverInstance = DriverManager
+				.getInstance()
+				.createNewDriverInstance(
+						"org.eclipse.datatools.connectivity.db.derby101.genericDriverTemplate",
+						uniqueDriverInstanceName, jarlist);
+
+		// Create new connection profile using the new driver instance
+		String uniqueConnectionProfileName = generateUniqueConnectionProfileName();
+
+		Properties connectionProfileProperties = driverInstance
+				.getPropertySet().getBaseProperties();
+		String databaseName = "SAMPLE";
+		connectionProfileProperties.setProperty(
+				ConnectionProfileConstants.PROP_DRIVER_DEFINITION_ID,
+				driverInstance.getId());
+		connectionProfileProperties.setProperty(
+				IJDBCDriverDefinitionConstants.DATABASE_NAME_PROP_ID, databaseName);
+		connectionProfileProperties.setProperty(
+				IJDBCDriverDefinitionConstants.USERNAME_PROP_ID, "");
+		connectionProfileProperties.setProperty(
+				IJDBCDriverDefinitionConstants.PASSWORD_PROP_ID, "");
+		String databaseLocation = System.getProperty("user.home")
+				+ File.separator + "DerbyDB" + File.separator;
+		connectionProfileProperties.setProperty(
+				IJDBCDriverDefinitionConstants.URL_PROP_ID, "jdbc:derby:"
+						+ databaseLocation + databaseName + ";create=true");
+		try {
+			ProfileManager
+					.getInstance()
+					.createProfile(
+							uniqueConnectionProfileName,
+							"",
+							"org.eclipse.datatools.connectivity.db.derby.embedded.connectionProfile",
+							connectionProfileProperties, "", false);
+		} catch (ConnectionProfileException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private String generateUniqueDriverDefinitionName() {
+		String baseDriverInstanceName = "SampleDriver";
+		int index = 1;
+		String testName = baseDriverInstanceName + String.valueOf(index);
+		while (DriverManager.getInstance().getDriverInstanceByName(testName) != null) {
+			index++;
+			testName = baseDriverInstanceName + String.valueOf(index);
+		}
+		return testName;
+	}
+
+	private String generateUniqueConnectionProfileName() {
+		String baseConnectionProfileName = "SampleConnection";
+		int index = 1;
+		String testName = baseConnectionProfileName + String.valueOf(index);
+		while (ProfileManager.getInstance().getProfileByName(testName) != null) {
+			index++;
+			testName = baseConnectionProfileName + String.valueOf(index);
+		}
+		return testName;
+	}
+
+	public void selectionChanged(IAction action, ISelection selection) {
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/popup/actions/LaunchSample.java b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/popup/actions/LaunchSample.java
new file mode 100644
index 0000000..d17fc86
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/popup/actions/LaunchSample.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.popup.actions;
+
+import org.eclipse.datatools.connectivity.sample.wizards.SampleConnectionWizard;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IActionDelegate;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+
+public class LaunchSample implements IObjectActionDelegate {
+
+	/**
+	 * Constructor for Action1.
+	 */
+	public LaunchSample() {
+		super();
+	}
+
+	/**
+	 * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
+	 */
+	public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+	}
+
+	/**
+	 * @see IActionDelegate#run(IAction)
+	 */
+	public void run(IAction action) {
+		SampleConnectionWizard wizard = new SampleConnectionWizard();
+		wizard.setNeedsProgressMonitor(true);
+
+		WizardDialog dialog = new WizardDialog(Display.getCurrent()
+				.getActiveShell(), wizard);
+		dialog.setMinimumPageSize(300, 350);
+		dialog.create();
+		dialog.open();
+	}
+
+	/**
+	 * @see IActionDelegate#selectionChanged(IAction, ISelection)
+	 */
+	public void selectionChanged(IAction action, ISelection selection) {
+	}
+
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/wizards/SampleConnectionWizard.java b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/wizards/SampleConnectionWizard.java
new file mode 100644
index 0000000..10a2f76
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/wizards/SampleConnectionWizard.java
@@ -0,0 +1,168 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.wizards;
+
+import java.sql.Connection;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.IManagedConnection;
+import org.eclipse.datatools.connectivity.internal.ConnectionProfileProvider;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.preference.PreferenceDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.window.SameShellProvider;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.dialogs.PropertyDialogAction;
+import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
+
+public class SampleConnectionWizard extends Wizard {
+
+	private SelectExistingConnectionWizardPage myExistingConnectionPage;
+
+	private static final String EXISTING_CONNECTION_PAGE_NAME = "org.eclipse.datatools.connectivity.sample.SelectExistingConnectionWizardPage";
+
+	private static final String WIZARD_TITLE = "Connectivity Sample Wizard";
+
+	public SampleConnectionWizard() {
+		super();
+		setWindowTitle(WIZARD_TITLE);
+	}
+
+	public boolean performFinish() {
+		IConnectionProfile connectionProfile = myExistingConnectionPage
+				.getSelectedConnection();
+		if (connectionProfile != null) {
+			Connection connection = getActiveConnection(connectionProfile);
+			try {
+				if (connection != null && !connection.isClosed()) {
+					new DisplayMessage(WIZARD_TITLE, connectionProfile
+							.getName()
+							+ " : Keywords : "
+							+ connection.getMetaData().getSQLKeywords()).run();
+				} else {
+					return false;
+				}
+			} catch (Exception e) {
+				e.printStackTrace();
+				return false;
+			}
+		}
+		return true;
+	}
+
+	private Connection getActiveConnection(IConnectionProfile connectionProfile) {
+		Connection activeConnection = null;			
+		IManagedConnection connection = null;
+		IStatus connectionStatus = null;
+		
+		if (connectionProfile.getConnectionState() == IConnectionProfile.CONNECTED_STATE) {
+			activeConnection = (Connection) connectionProfile.getManagedConnection("java.sql.Connection").getConnection().getRawConnection();
+		} else {
+			connectionStatus = connectionProfile.connectWithoutJob();
+			if (connectionProfile.getConnectionState() == IConnectionProfile.CONNECTED_STATE) {
+				return (Connection) connectionProfile.getManagedConnection("java.sql.Connection").getConnection().getRawConnection();
+			}
+			while (connectionProfile.getConnectionState() != IConnectionProfile.CONNECTED_STATE) {		
+				// display error message
+				new DisplayMessage(WIZARD_TITLE, connectionStatus
+						.getChildren()[0].getException().getLocalizedMessage()).run();
+
+				// Prompt to fix properties
+				PropertyDialogAction propertyDialogAction = new PropertyDialogAction(
+						new SameShellProvider(this.getShell()),
+						new SampleWizardSelectionProvider(connectionProfile));
+
+				StructuredSelection selection = new StructuredSelection(
+						connectionProfile);
+				propertyDialogAction.selectionChanged(selection);
+				if (propertyDialogAction.isApplicableForSelection()) {
+					PreferenceDialog dialog = propertyDialogAction
+							.createDialog();
+					String initialPage = ((ConnectionProfileProvider) connectionProfile
+							.getProvider()).getPropertiesPersistenceHook()
+							.getConnectionPropertiesPageID();
+					if (initialPage != null) {
+						((IWorkbenchPreferenceContainer) dialog).openPage(
+								initialPage, null);
+					}
+					if (dialog.open() == Dialog.CANCEL) {
+						return activeConnection;
+					}
+				}
+				connectionStatus = connectionProfile.connectWithoutJob();
+				connection = connectionProfile.getManagedConnection("java.sql.Connection");
+			}
+			activeConnection = (Connection) connection.getConnection().getRawConnection();
+		}
+
+		return activeConnection;
+	}
+
+	private class SampleWizardSelectionProvider implements ISelectionProvider {
+
+		private IStructuredSelection selection;
+
+		public SampleWizardSelectionProvider(
+				IConnectionProfile connectionProfile) {
+			selection = new StructuredSelection(connectionProfile);
+		}
+
+		public void addSelectionChangedListener(
+				ISelectionChangedListener listener) {
+		}
+
+		public ISelection getSelection() {
+			return selection;
+		}
+
+		public void removeSelectionChangedListener(
+				ISelectionChangedListener listener) {
+		}
+
+		public void setSelection(ISelection selection) {
+		}
+	}
+
+	public void addPages() {
+		super.addPages();
+
+		myExistingConnectionPage = new SelectExistingConnectionWizardPage(
+				EXISTING_CONNECTION_PAGE_NAME);
+		addPage(myExistingConnectionPage);
+	}
+
+	public boolean canFinish() {
+		boolean canFinish = false;
+		if (myExistingConnectionPage.getSelectedConnection() != null) {
+			canFinish = true;
+		}
+		return canFinish;
+	}
+
+	public class DisplayMessage implements Runnable {
+		String title, message;
+
+		public DisplayMessage(String title, String message) {
+			this.title = title;
+			this.message = message;
+		}
+
+		public void run() {
+			MessageDialog.openInformation(getShell(), title, message);
+		}
+	}
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/wizards/SelectExistingConnectionProfileDialogPage.java b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/wizards/SelectExistingConnectionProfileDialogPage.java
new file mode 100644
index 0000000..ea6af70
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/wizards/SelectExistingConnectionProfileDialogPage.java
@@ -0,0 +1,112 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.wizards;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Vector;
+
+import org.eclipse.datatools.connectivity.ConnectionProfileConstants;
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.datatools.connectivity.ProfileManager;
+import org.eclipse.datatools.connectivity.drivers.DriverInstance;
+import org.eclipse.datatools.connectivity.drivers.DriverManager;
+import org.eclipse.datatools.connectivity.drivers.jdbc.IJDBCDriverDefinitionConstants;
+import org.eclipse.datatools.connectivity.ui.dse.dialogs.ConnectionDisplayProperty;
+import org.eclipse.datatools.connectivity.ui.dse.dialogs.ExistingConnectionProfilesDialogPage;
+import org.eclipse.swt.widgets.Event;
+
+public class SelectExistingConnectionProfileDialogPage extends
+		ExistingConnectionProfilesDialogPage {
+	private SelectExistingConnectionWizardPage page;
+	
+	public SelectExistingConnectionProfileDialogPage(SelectExistingConnectionWizardPage page, boolean isShowProperties, boolean isPropertiesSectionExpanded){
+		super(isShowProperties, isPropertiesSectionExpanded);
+		this.page = page;
+	}
+
+	protected ConnectionDisplayProperty[] updateConnectionDisplayProperties(
+			IConnectionProfile connectionProfile,
+			ConnectionDisplayProperty[] defaultDisplayProperties) {
+		ConnectionDisplayProperty[] properties = null;
+		Vector propertiesCollection = new Vector();
+		propertiesCollection.addAll(Arrays.asList(defaultDisplayProperties));
+
+		Properties baseProperties = connectionProfile.getBaseProperties();
+
+		propertiesCollection
+				.add(new ConnectionDisplayProperty(
+						"Database",
+						(String) baseProperties
+								.get(IJDBCDriverDefinitionConstants.DATABASE_NAME_PROP_ID)));
+		propertiesCollection
+				.add(new ConnectionDisplayProperty(
+						"JDBC Driver Class",
+						(String) baseProperties
+								.get(IJDBCDriverDefinitionConstants.DRIVER_CLASS_PROP_ID)));
+		propertiesCollection.add(new ConnectionDisplayProperty(
+				"Class Location", getJarList(connectionProfile)));
+		propertiesCollection.add(new ConnectionDisplayProperty(
+				"Connection URL", (String) baseProperties
+						.get(IJDBCDriverDefinitionConstants.URL_PROP_ID)));
+		propertiesCollection.add(new ConnectionDisplayProperty("User ID",
+				(String) baseProperties
+						.get(IJDBCDriverDefinitionConstants.USERNAME_PROP_ID)));
+		properties = new ConnectionDisplayProperty[propertiesCollection.size()];
+		propertiesCollection.toArray(properties);
+
+		return properties;
+	}
+
+	protected IConnectionProfile[] getConnectionsToDisplay() {
+		Vector filteredProfilesCollection = new Vector();
+		IConnectionProfile[] filteredProfiles = new IConnectionProfile[] {};
+		IConnectionProfile[] allProfiles = ProfileManager.getInstance()
+				.getProfiles(false);
+		final int infoLength = allProfiles.length;
+		if (infoLength > 0) {
+			for (int index = 0; index < infoLength; index++) {
+				Map factories =  allProfiles[index]
+						.getProvider().getConnectionFactories();
+				if ((factories != null)
+						&& (factories.containsKey("java.sql.Connection"))) {
+					filteredProfilesCollection.add(allProfiles[index]);
+				}
+				filteredProfiles = new IConnectionProfile[filteredProfilesCollection
+						.size()];
+				filteredProfilesCollection.copyInto(filteredProfiles);
+			}
+		}
+		return filteredProfiles;
+	}
+
+	private String getJarList(IConnectionProfile connectionProfile) {
+		String jarList = "";
+		DriverInstance driverInstance = null;
+		String driverID = connectionProfile.getBaseProperties().getProperty(
+				ConnectionProfileConstants.PROP_DRIVER_DEFINITION_ID);
+		if (driverID != null) {
+			driverInstance = DriverManager.getInstance().getDriverInstanceByID(
+					driverID);
+			if (driverInstance != null) {
+				jarList = driverInstance.getJarList();
+			}
+		}
+		return jarList;
+	}
+	
+	public void handleEvent(Event event) {
+		super.handleEvent(event);
+		page.handleEvent(event);
+	}
+	
+}
diff --git a/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/wizards/SelectExistingConnectionWizardPage.java b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/wizards/SelectExistingConnectionWizardPage.java
new file mode 100644
index 0000000..c122932
--- /dev/null
+++ b/examples/org.eclipse.datatools.connectivity.sample/src/org/eclipse/datatools/connectivity/sample/wizards/SelectExistingConnectionWizardPage.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+package org.eclipse.datatools.connectivity.sample.wizards;
+
+import org.eclipse.datatools.connectivity.IConnectionProfile;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+
+public class SelectExistingConnectionWizardPage extends WizardPage {
+
+	SelectExistingConnectionProfileDialogPage dialogPage;
+	
+	protected SelectExistingConnectionWizardPage(String pageName) {
+		super(pageName);
+	}
+
+	public void createControl(Composite parent) {
+        setTitle("Sample Page"); //$NON-NLS-1$
+        setMessage("Select a connection.  This sample wizard will only display JDBC connections \nto demonstrate the filter capabilities of the dialog page.");
+        
+        Composite container = new Composite(parent, SWT.NULL);
+        GridLayout gridLayout = new GridLayout();
+        gridLayout.horizontalSpacing = 0;
+        gridLayout.marginWidth = 0;
+        gridLayout.marginHeight = 0;
+        container.setLayout(gridLayout);
+        
+        GridData gridData = new GridData(GridData.FILL_BOTH);
+        gridData.grabExcessHorizontalSpace = true;
+        gridData.grabExcessVerticalSpace = true;
+        container.setLayoutData(gridData);
+
+        dialogPage = new SelectExistingConnectionProfileDialogPage (this, true, true);
+        dialogPage.createControl(container); 
+        setControl(container);
+	}
+
+	public void handleEvent(Event event) {
+		this.getContainer().updateButtons();
+	}
+	
+	public IConnectionProfile getSelectedConnection(){
+		IConnectionProfile connection =null;
+		if(dialogPage != null){
+			connection = dialogPage.getSelectedConnection();
+		}
+		return connection;
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/.gitignore b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/.gitignore
new file mode 100644
index 0000000..60463af
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/.gitignore
@@ -0,0 +1,2 @@
+bin
+build.xml
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/.project b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/.project
new file mode 100644
index 0000000..d2cffe0
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.apache.derby.dbdefinition</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/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/META-INF/MANIFEST.MF b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d74427c
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.apache.derby.dbdefinition;singleton:=true
+Bundle-Version: 1.2.1.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/about.html b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/about.html
new file mode 100644
index 0000000..d0a7cc2
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 15, 2009</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>
+
+<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
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/build.properties b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/build.properties
new file mode 100644
index 0000000..fb38330
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/build.properties
@@ -0,0 +1,24 @@
+###############################################################################
+# 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
+###############################################################################
+bin.includes = plugin.xml,\
+               runtime/,\
+               plugin.properties,\
+               about.html,\
+               META-INF/
+
+jars.extra.classpath =
+src.dir	= src/
+plugin.version =	1.0.0.200706071
+javadoc.dir =		doc/api/
+download.dir =		./download/
+javac.source =		1.4
+javac.target =		1.4
+src.includes = about.html
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/plugin.properties b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/plugin.properties
new file mode 100644
index 0000000..1afe2fa
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/plugin.properties
@@ -0,0 +1,21 @@
+###############################################################################
+# 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
+###############################################################################
+pluginName=Eclipse Data Tools Platform Apache Derby Database Definition
+providerName=Eclipse Data Tools Platform
+
+100ProductString = Derby
+100VersionString = 10.0
+
+101ProductString = Derby
+101VersionString = 10.1
+
+102ProductString = Derby
+102VersionString = 10.2
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/plugin.xml b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/plugin.xml
new file mode 100644
index 0000000..0af6644
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/plugin.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.datatools.connectivity.sqm.core.databaseDefinition">
+      <definition
+      		product="Derby"
+            version="10.0"
+            productDisplayString="%100ProductString"
+            versionDisplayString="%100VersionString"
+            file="runtime/vendors/Derby_10.0/Derby_10.0.xmi">
+      </definition>
+       <definition 
+       		product="Derby" 
+       		version="10.1" 
+       		productDisplayString="%101ProductString" 
+       		versionDisplayString="%101VersionString"
+            file="runtime/vendors/Derby_10.1/Derby_10.1.xmi"/>
+       <definition 
+       		product="Derby" 
+       		version="10.2" 
+       		productDisplayString="%102ProductString" 
+       		versionDisplayString="%102VersionString"
+            file="runtime/vendors/Derby_10.2/Derby_10.2.xmi"/>
+   </extension>
+</plugin>
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/runtime/vendors/Derby_10.0/Derby_10.0.xmi b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/runtime/vendors/Derby_10.0/Derby_10.0.xmi
new file mode 100644
index 0000000..dc58bb1
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/runtime/vendors/Derby_10.0/Derby_10.0.xmi
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="ASCII"?>
+<DBDefinition:DatabaseVendorDefinition xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:DBDefinition="http:///org/eclipse/datatools/modelbase/dbdefinition/dbdefinition.ecore" vendor="Derby" version="10.0" maximumIdentifierLength="8" maximumCommentLength="64">
+  <predefinedDataTypeDefinitions xmi:id="BIGINT_1" keyConstraintSupported="true" identitySupported="true" primitiveType="BIGINT" jdbcEnumType="-5" javaClassName="long">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>BIGINT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_LARGE_OBJECT_1" lengthSupported="true" defaultLength="1024" maximumLength="2147483647" primitiveType="BINARY_LARGE_OBJECT" jdbcEnumType="2004" javaClassName="java.sql.Blob">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>BLOB</name>
+    <name>BINARY LARGE OBJECT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_1" lengthSupported="true" keyConstraintSupported="true" defaultLength="1" maximumLength="254" jdbcEnumType="1" javaClassName="java.lang.String">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>CHAR</name>
+    <name>CHARACTER</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_1" lengthSupported="true" defaultLength="1" displayNameSupported="true" displayName="CHAR ({0}) FOR BIT DATA" maximumLength="254" primitiveType="BINARY_VARYING" jdbcEnumType="-2" javaClassName="byte[]">
+    <name>CHAR FOR BIT DATA</name>
+    <name>CHARACTER FOR BIT DATA</name>
+    <name>CHAR () FOR BIT DATA</name>
+    <name>CHARACTER () FOR BIT DATA</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_LARGE_OBJECT_1" lengthSupported="true" defaultLength="1024" maximumLength="2147483647" primitiveType="CHARACTER_LARGE_OBJECT" jdbcEnumType="2005" javaClassName="java.sql.Clob">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>CLOB</name>
+    <name>CHARACTER LARGE OBJECT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_VARYING_1" lengthSupported="true" keyConstraintSupported="true" defaultLength="32" maximumLength="32672" primitiveType="CHARACTER_VARYING" jdbcEnumType="12" javaClassName="java.lang.String">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>VARCHAR</name>
+    <name>CHARACTER VARYING</name>
+    <name>CHAR VARYING</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_VARYING_2" primitiveType="CHARACTER_VARYING" jdbcEnumType="-1" javaClassName="java.lang.String">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>LONG VARCHAR</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_VARYING_2" primitiveType="BINARY_VARYING" jdbcEnumType="-4" javaClassName="byte[]">
+    <name>LONG VARCHAR FOR BIT DATA</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="DATE_1" keyConstraintSupported="true" primitiveType="DATE" jdbcEnumType="91" javaClassName="java.sql.Date">
+    <defaultValueTypes>CURRENT_DATE</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>DATE</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="DECIMAL_1" scaleSupported="true" precisionSupported="true" defaultPrecision="5" maximumPrecision="31" defaultScale="0" keyConstraintSupported="true" primitiveType="DECIMAL" jdbcEnumType="3" javaClassName="java.math.BigDecimal">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>DECIMAL</name>
+    <name>DEC</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="DOUBLE_PRECISION_1" keyConstraintSupported="true" primitiveType="DOUBLE_PRECISION" jdbcEnumType="8" javaClassName="double">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>DOUBLE</name>
+    <name>DOUBLE PRECISION</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="FLOAT_1" keyConstraintSupported="true" primitiveType="FLOAT" defaultPrecision="53" maximumPrecision="53" cutoffPrecision="24" jdbcEnumType="6" javaClassName="double">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>FLOAT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="INTEGER_1" keyConstraintSupported="true" identitySupported="true" primitiveType="INTEGER" jdbcEnumType="4" javaClassName="int">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>INTEGER</name>
+    <name>INT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="NUMERIC_1" scaleSupported="true" precisionSupported="true" defaultPrecision="5" maximumPrecision="31" defaultScale="0" keyConstraintSupported="true" primitiveType="NUMERIC" jdbcEnumType="2" javaClassName="java.math.BigDecimal">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>NUMERIC</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="REAL_1" keyConstraintSupported="true" primitiveType="REAL" jdbcEnumType="7" javaClassName="float">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>REAL</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="SMALLINT_1" keyConstraintSupported="true" identitySupported="true" primitiveType="SMALLINT" jdbcEnumType="5" javaClassName="short">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>SMALLINT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="TIME_1" keyConstraintSupported="true" primitiveType="TIME" jdbcEnumType="92" javaClassName="java.sql.Time">
+    <defaultValueTypes>CURRENT_TIME</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>TIME</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="TIMESTAMP_1" keyConstraintSupported="true" primitiveType="TIMESTAMP" jdbcEnumType="93" javaClassName="java.sql.Timestamp">
+    <defaultValueTypes>CURRENT_TIME_STAMP</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>TIMESTAMP</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_VARYING_1" lengthSupported="true" defaultLength="1" displayNameSupported="true" displayName="VARCHAR ({0}) FOR BIT DATA" maximumLength="32700" primitiveType="BINARY_VARYING" jdbcEnumType="-3" javaClassName="byte[]">
+    <name>VARCHAR FOR BIT DATA</name>
+    <name>CHAR VARYING FOR BIT DATA</name>
+    <name>CHARACTER VARYING FOR BIT DATA</name>
+    <name>VARCHAR () FOR BIT DATA</name>
+    <name>CHAR VARYING () FOR BIT DATA</name>
+    <name>CHARACTER VARYING () FOR BIT DATA</name>
+  </predefinedDataTypeDefinitions>
+  <storedProcedureDefinition maximumIdentifierLength="128" nullInputActionSupported="true" returnedNullSupported="true" parameterStyleSupported="true">
+    <languageType>SQL</languageType>
+    <languageType>JAVA</languageType>
+    <procedureType>PROCEDURE</procedureType>
+    <procedureType>FUNCTION</procedureType>
+  </storedProcedureDefinition>
+  <triggerDefinition maximumIdentifierLength="18" referencesClauseSupported="true" perColumnUpdateTriggerSupported="true" rowTriggerReferenceSupported="true" tableTriggerReferenceSupported="true" whenClauseSupported="false"/>
+  <columnDefinition maximumIdentifierLength="30" identitySupported="true" computedSupported="true"/>
+  <constraintDefinition maximumPrimaryKeyIdentifierLength="18" maximumForeignKeyIdentifierLength="18" maximumCheckConstraintIdentifierLength="18">
+    <parentUpdateDRIRuleType>RESTRICT</parentUpdateDRIRuleType>
+    <parentUpdateDRIRuleType>NO_ACTION</parentUpdateDRIRuleType>
+    <parentDeleteDRIRuleType>RESTRICT</parentDeleteDRIRuleType>
+    <parentDeleteDRIRuleType>CASCADE</parentDeleteDRIRuleType>
+    <parentDeleteDRIRuleType>SET_NULL</parentDeleteDRIRuleType>
+    <parentDeleteDRIRuleType>NO_ACTION</parentDeleteDRIRuleType>
+    <checkOption>NONE</checkOption>
+    <checkOption>LOCAL</checkOption>
+    <checkOption>CASCADE</checkOption>
+  </constraintDefinition>
+  <queryDefinition hostVariableMarker=":"/>
+  <indexDefinition clusteringSupported="false" maximumIdentifierLength="18"/>
+  <viewDefinition maximumIdentifierLength="128" checkOptionSupported="false"/>
+  <tableDefinition maximumIdentifierLength="128"/>
+  <schemaDefinition maximumIdentifierLength="30"/>
+  <SQLSyntaxDefinition>
+    <keywords>ADD</keywords>
+    <keywords>ALL</keywords>
+    <keywords>ALLOCATE</keywords>
+    <keywords>ALTER</keywords>
+    <keywords>AND</keywords>
+    <keywords>ANY</keywords>
+    <keywords>ARE</keywords>
+    <keywords>AS</keywords>
+    <keywords>ASC</keywords>
+    <keywords>ASSERTION</keywords>
+    <keywords>AT</keywords>
+    <keywords>AUTHORIZATION</keywords>
+    <keywords>AVG</keywords>
+    <keywords>BEGIN</keywords>
+    <keywords>BETWEEN</keywords>
+    <keywords>BIT</keywords>
+    <keywords>BIT_LENGTH</keywords>
+	<keywords>BOOLEAN</keywords> 
+    <keywords>BOTH</keywords>
+    <keywords>BY</keywords>
+    <keywords>CALL</keywords>
+    <keywords>CASCADE</keywords>
+    <keywords>CASCADED</keywords>
+    <keywords>CASE</keywords>
+    <keywords>CAST</keywords>
+    <keywords>CHAR</keywords>
+    <keywords>CHARACTER</keywords>
+    <keywords>CHARACTER_LENGTH</keywords>
+	<keywords>CHAR_LENGTH</keywords> 
+    <keywords>CHECK</keywords>
+    <keywords>CLOSE</keywords>
+    <keywords>COLLATE</keywords>
+    <keywords>COLLATION</keywords>
+    <keywords>COLUMN</keywords>
+    <keywords>COMMIT</keywords>
+    <keywords>CONNECT</keywords>
+    <keywords>CONNECTION</keywords>
+    <keywords>CONSTRAINT</keywords>
+    <keywords>CONSTRAINTS</keywords>
+    <keywords>CONTINUE</keywords>
+    <keywords>CONVERT</keywords>
+    <keywords>CORRESPONDING</keywords>
+    <keywords>COUNT</keywords>
+    <keywords>CREATE</keywords>
+    <keywords>CROSS</keywords>
+    <keywords>CURRENT</keywords>
+    <keywords>CURRENT_DATE</keywords>
+    <keywords>CURRENT_TIME</keywords>
+    <keywords>CURRENT_TIMESTAMP</keywords>
+    <keywords>CURRENT_USER</keywords>
+    <keywords>CURSOR</keywords>
+    <keywords>DEALLOCATE</keywords>
+    <keywords>DEC</keywords>
+    <keywords>DECIMAL</keywords>
+    <keywords>DECLARE</keywords>
+    <keywords>DEFERRABLE</keywords>
+    <keywords>DEFERRED</keywords>
+    <keywords>DELETE</keywords>
+    <keywords>DESC</keywords>
+    <keywords>DESCRIBE</keywords>
+    <keywords>DIAGNOSTICS</keywords>
+    <keywords>DISCONNECT</keywords>
+    <keywords>DISTINCT</keywords>
+    <keywords>DOUBLE</keywords>
+    <keywords>DROP</keywords>
+    <keywords>ELSE</keywords>
+    <keywords>END</keywords>
+	<keywords>ENDEXEC</keywords> 
+    <keywords>ESCAPE</keywords>
+    <keywords>EXCEPT</keywords>
+    <keywords>EXCEPTION</keywords>
+    <keywords>EXEC</keywords>
+    <keywords>EXECUTE</keywords>
+    <keywords>EXISTS</keywords>
+    <keywords>EXPLAIN</keywords>
+    <keywords>EXTERNAL</keywords>
+    <keywords>EXTRACT</keywords>
+    <keywords>FALSE</keywords>
+    <keywords>FETCH</keywords>
+    <keywords>FIRST</keywords>
+    <keywords>FLOAT</keywords>
+    <keywords>FOR</keywords>
+    <keywords>FOREIGN</keywords>
+    <keywords>FOUND</keywords>
+    <keywords>FROM</keywords>
+    <keywords>FULL</keywords>
+    <keywords>FUNCTION</keywords>
+    <keywords>GET</keywords>
+	<keywords>GET_CURRENT_CONNECTION</keywords> 
+    <keywords>GLOBAL</keywords>
+    <keywords>GO</keywords>
+    <keywords>GOTO</keywords>
+    <keywords>GRANT</keywords>
+    <keywords>GROUP</keywords>
+    <keywords>HAVING</keywords>
+    <keywords>HOUR</keywords>
+    <keywords>IDENTITY</keywords>
+    <keywords>IMMEDIATE</keywords>
+    <keywords>IN</keywords>
+    <keywords>INDICATOR</keywords>
+    <keywords>INITIALLY</keywords>
+    <keywords>INNER</keywords>
+    <keywords>INOUT</keywords>
+    <keywords>INPUT</keywords>
+    <keywords>INSENSITIVE</keywords>
+    <keywords>INSERT</keywords>
+    <keywords>INT</keywords>
+    <keywords>INTEGER</keywords>
+    <keywords>INTERSECT</keywords>
+    <keywords>INTO</keywords>
+    <keywords>IS</keywords>
+    <keywords>ISOLATION</keywords>
+    <keywords>JOIN</keywords>
+    <keywords>KEY</keywords>
+    <keywords>LAST</keywords>
+    <keywords>LEADING</keywords>
+    <keywords>LEFT</keywords>
+    <keywords>LIKE</keywords>
+    <keywords>LOCAL</keywords>
+	<keywords>LONGINT</keywords> 
+    <keywords>LOWER</keywords>
+	<keywords>LTRIM</keywords> 
+    <keywords>MATCH</keywords>
+    <keywords>MAX</keywords>
+	<keywords>MIN</keywords> 
+    <keywords>MINUTE</keywords>
+    <keywords>NATIONAL</keywords>
+    <keywords>NATURAL</keywords>
+    <keywords>NCHAR</keywords>
+	<keywords>NVARCHAR</keywords> 
+    <keywords>NEXT</keywords>
+    <keywords>NO</keywords>
+    <keywords>NOT</keywords>
+    <keywords>NULL</keywords>
+	<keywords>NULLIF</keywords> 
+    <keywords>NUMERIC</keywords>
+    <keywords>OCTET_LENGTH</keywords>
+    <keywords>OF</keywords>
+    <keywords>ON</keywords>
+    <keywords>ONLY</keywords>
+    <keywords>OPEN</keywords>
+    <keywords>OPTION</keywords>
+    <keywords>OR</keywords>
+    <keywords>ORDER</keywords>
+    <keywords>OUT</keywords>
+    <keywords>OUTER</keywords>
+    <keywords>OUTPUT</keywords>
+    <keywords>OVERLAPS</keywords>
+    <keywords>PAD</keywords>
+    <keywords>PARTIAL</keywords>
+    <keywords>PREPARE</keywords>
+    <keywords>PRESERVE</keywords>
+    <keywords>PRIMARY</keywords>
+    <keywords>PRIOR</keywords>
+    <keywords>PRIVILEGES</keywords>
+    <keywords>PROCEDURE</keywords>
+    <keywords>PUBLIC</keywords>
+    <keywords>READ</keywords>
+    <keywords>REAL</keywords>
+    <keywords>REFERENCES</keywords>
+    <keywords>RELATIVE</keywords>
+    <keywords>RESTRICT</keywords>
+    <keywords>REVOKE</keywords>
+    <keywords>RIGHT</keywords>
+    <keywords>ROLLBACK</keywords>
+    <keywords>ROWS</keywords>
+	<keywords>RTRIM</keywords> 
+	<keywords>RUNTIMESTATISTICS</keywords> 
+    <keywords>SCHEMA</keywords>
+    <keywords>SCROLL</keywords>
+    <keywords>SECOND</keywords>
+    <keywords>SELECT</keywords>
+    <keywords>SESSION_USER</keywords>
+    <keywords>SET</keywords>
+    <keywords>SMALLINT</keywords>
+    <keywords>SOME</keywords>
+    <keywords>SPACE</keywords>
+    <keywords>SQL</keywords>
+    <keywords>SQLCODE</keywords>
+    <keywords>SQLERROR</keywords>
+    <keywords>SQLSTATE</keywords>
+	<keywords>SUBSTR</keywords> 
+    <keywords>SUBSTRING</keywords>
+	<keywords>SUM</keywords> 
+    <keywords>SYSTEM_USER</keywords>
+    <keywords>TABLE</keywords>
+    <keywords>TEMPORARY</keywords>
+    <keywords>TIMEZONE_HOUR</keywords>
+    <keywords>TIMEZONE_MINUTE</keywords>
+	<keywords>TINYINT</keywords> 
+    <keywords>TO</keywords>
+    <keywords>TRAILING</keywords>
+    <keywords>TRANSACTION</keywords>
+    <keywords>TRANSLATE</keywords>
+    <keywords>TRANSLATION</keywords>
+    <keywords>TRIM</keywords>
+    <keywords>TRUE</keywords>
+    <keywords>UNION</keywords>
+    <keywords>UNIQUE</keywords>
+    <keywords>UNKNOWN</keywords>
+    <keywords>UPDATE</keywords>
+    <keywords>UPPER</keywords>
+    <keywords>USER</keywords>
+    <keywords>USING</keywords>
+    <keywords>VALUES</keywords>
+    <keywords>VARCHAR</keywords>
+    <keywords>VARYING</keywords>
+    <keywords>VIEW</keywords>
+    <keywords>WHENEVER</keywords>
+    <keywords>WHERE</keywords>
+    <keywords>WITH</keywords>
+    <keywords>WORK</keywords>
+    <keywords>WRITE</keywords>
+    <keywords>YEAR</keywords>
+    <operators>&lt;</operators>
+    <operators>&quot;</operators>
+    <operators>%</operators>
+    <operators>&amp;</operators>
+    <operators>''''</operators>
+    <operators>(</operators>
+    <operators>)</operators>
+    <operators>*</operators>
+    <operators>+</operators>
+    <operators>,</operators>
+    <operators>-</operators>
+    <operators>.</operators>
+    <operators>/</operators>
+    <operators>:</operators>
+    <operators>;</operators>
+    <operators>=</operators>
+    <operators>?</operators>
+    <operators>[</operators>
+    <operators>]</operators>
+    <operators>_</operators>
+    <operators>'|'</operators>
+    <operators>,=</operators>
+    <operators>&lt;=</operators>
+    <operators>||</operators>
+    <operators>..</operators>
+    <operators>'-,'</operators>
+    <operators>!</operators>
+    <operators>~</operators>
+    <operators>:=</operators>
+    <operators>{</operators>
+    <operators>}</operators>
+    <operators>(+)</operators>
+  </SQLSyntaxDefinition>
+</DBDefinition:DatabaseVendorDefinition>
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/runtime/vendors/Derby_10.1/Derby_10.1.xmi b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/runtime/vendors/Derby_10.1/Derby_10.1.xmi
new file mode 100644
index 0000000..0e591d1
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/runtime/vendors/Derby_10.1/Derby_10.1.xmi
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="ASCII"?>
+<DBDefinition:DatabaseVendorDefinition xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:DBDefinition="http:///org/eclipse/datatools/modelbase/dbdefinition/dbdefinition.ecore" vendor="Derby" version="10.1" maximumIdentifierLength="128" maximumCommentLength="64">
+  <predefinedDataTypeDefinitions xmi:id="BIGINT_1" keyConstraintSupported="true" identitySupported="true" primitiveType="BIGINT" jdbcEnumType="-5" javaClassName="long">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>BIGINT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_LARGE_OBJECT_1" lengthSupported="true" defaultLength="1024" maximumLength="2147483647" primitiveType="BINARY_LARGE_OBJECT" jdbcEnumType="2004" javaClassName="java.sql.Blob">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>BLOB</name>
+    <name>BINARY LARGE OBJECT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_1" lengthSupported="true" keyConstraintSupported="true" defaultLength="1" maximumLength="254" jdbcEnumType="1" javaClassName="java.lang.String">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>CHAR</name>
+    <name>CHARACTER</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_1" lengthSupported="true" defaultLength="1" displayNameSupported="true" displayName="CHAR ({0}) FOR BIT DATA" maximumLength="254" primitiveType="BINARY_VARYING" jdbcEnumType="-2" javaClassName="byte[]">
+    <name>CHAR FOR BIT DATA</name>
+    <name>CHARACTER FOR BIT DATA</name>
+    <name>CHAR () FOR BIT DATA</name>
+    <name>CHARACTER () FOR BIT DATA</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_LARGE_OBJECT_1" lengthSupported="true" defaultLength="1024" maximumLength="2147483647" primitiveType="CHARACTER_LARGE_OBJECT" jdbcEnumType="2005" javaClassName="java.sql.Clob">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>CLOB</name>
+    <name>CHARACTER LARGE OBJECT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_VARYING_1" lengthSupported="true" keyConstraintSupported="true" defaultLength="32" maximumLength="32672" primitiveType="CHARACTER_VARYING" jdbcEnumType="12" javaClassName="java.lang.String">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>VARCHAR</name>
+    <name>CHARACTER VARYING</name>
+    <name>CHAR VARYING</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_VARYING_2" primitiveType="CHARACTER_VARYING" jdbcEnumType="-1" javaClassName="java.lang.String">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>LONG VARCHAR</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_VARYING_2" primitiveType="BINARY_VARYING" jdbcEnumType="-4" javaClassName="byte[]">
+    <name>LONG VARCHAR FOR BIT DATA</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="DATE_1" keyConstraintSupported="true" primitiveType="DATE" jdbcEnumType="91" javaClassName="java.sql.Date">
+    <defaultValueTypes>CURRENT_DATE</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>DATE</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="DECIMAL_1" scaleSupported="true" precisionSupported="true" defaultPrecision="5" maximumPrecision="31" defaultScale="0" keyConstraintSupported="true" primitiveType="DECIMAL" jdbcEnumType="3" javaClassName="java.math.BigDecimal">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>DECIMAL</name>
+    <name>DEC</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="DOUBLE_PRECISION_1" keyConstraintSupported="true" primitiveType="DOUBLE_PRECISION" jdbcEnumType="8" javaClassName="double">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>DOUBLE</name>
+    <name>DOUBLE PRECISION</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="FLOAT_1" keyConstraintSupported="true" primitiveType="FLOAT" defaultPrecision="53" maximumPrecision="53" cutoffPrecision="24" jdbcEnumType="6" javaClassName="double">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>FLOAT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="INTEGER_1" keyConstraintSupported="true" identitySupported="true" primitiveType="INTEGER" jdbcEnumType="4" javaClassName="int">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>INTEGER</name>
+    <name>INT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="NUMERIC_1" scaleSupported="true" precisionSupported="true" defaultPrecision="5" maximumPrecision="31" defaultScale="0" keyConstraintSupported="true" primitiveType="NUMERIC" jdbcEnumType="2" javaClassName="java.math.BigDecimal">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>NUMERIC</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="REAL_1" keyConstraintSupported="true" primitiveType="REAL" jdbcEnumType="7" javaClassName="float">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>REAL</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="SMALLINT_1" keyConstraintSupported="true" identitySupported="true" primitiveType="SMALLINT" jdbcEnumType="5" javaClassName="short">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>SMALLINT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="TIME_1" keyConstraintSupported="true" primitiveType="TIME" jdbcEnumType="92" javaClassName="java.sql.Time">
+    <defaultValueTypes>CURRENT_TIME</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>TIME</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="TIMESTAMP_1" keyConstraintSupported="true" primitiveType="TIMESTAMP" jdbcEnumType="93" javaClassName="java.sql.Timestamp">
+    <defaultValueTypes>CURRENT_TIME_STAMP</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>TIMESTAMP</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_VARYING_1" lengthSupported="true" defaultLength="1" displayNameSupported="true" displayName="VARCHAR ({0}) FOR BIT DATA" maximumLength="32700" primitiveType="BINARY_VARYING" jdbcEnumType="-3" javaClassName="byte[]">
+    <name>VARCHAR FOR BIT DATA</name>
+    <name>CHAR VARYING FOR BIT DATA</name>
+    <name>CHARACTER VARYING FOR BIT DATA</name>
+    <name>VARCHAR () FOR BIT DATA</name>
+    <name>CHAR VARYING () FOR BIT DATA</name>
+    <name>CHARACTER VARYING () FOR BIT DATA</name>
+  </predefinedDataTypeDefinitions>
+  <storedProcedureDefinition maximumIdentifierLength="128" nullInputActionSupported="true" returnedNullSupported="true" parameterStyleSupported="true">
+    <languageType>SQL</languageType>
+    <languageType>JAVA</languageType>
+    <procedureType>PROCEDURE</procedureType>
+    <procedureType>FUNCTION</procedureType>
+  </storedProcedureDefinition>
+  <triggerDefinition maximumIdentifierLength="128" referencesClauseSupported="true" perColumnUpdateTriggerSupported="true" rowTriggerReferenceSupported="true" tableTriggerReferenceSupported="true" whenClauseSupported="false"/>
+  <columnDefinition maximumIdentifierLength="128" identitySupported="true" computedSupported="true"/>
+  <constraintDefinition maximumPrimaryKeyIdentifierLength="18" maximumForeignKeyIdentifierLength="18" maximumCheckConstraintIdentifierLength="18">
+    <parentUpdateDRIRuleType>RESTRICT</parentUpdateDRIRuleType>
+    <parentUpdateDRIRuleType>NO_ACTION</parentUpdateDRIRuleType>
+    <parentDeleteDRIRuleType>RESTRICT</parentDeleteDRIRuleType>
+    <parentDeleteDRIRuleType>CASCADE</parentDeleteDRIRuleType>
+    <parentDeleteDRIRuleType>SET_NULL</parentDeleteDRIRuleType>
+    <parentDeleteDRIRuleType>NO_ACTION</parentDeleteDRIRuleType>
+    <checkOption>NONE</checkOption>
+    <checkOption>LOCAL</checkOption>
+    <checkOption>CASCADE</checkOption>
+  </constraintDefinition>
+  <queryDefinition hostVariableMarker=":"/>
+  <indexDefinition clusteringSupported="false" maximumIdentifierLength="128"/>
+  <viewDefinition maximumIdentifierLength="128" checkOptionSupported="false"/>
+  <tableDefinition maximumIdentifierLength="128"/>
+  <schemaDefinition maximumIdentifierLength="128"/>
+  <SQLSyntaxDefinition>
+    <keywords>ADD</keywords>
+	<keywords>ALL</keywords> 
+	<keywords>ALLOCATE</keywords> 
+	<keywords>ALTER</keywords> 
+	<keywords>AND</keywords> 
+	<keywords>ANY</keywords> 
+	<keywords>ARE</keywords> 
+	<keywords>AS</keywords> 
+	<keywords>ASC</keywords> 
+	<keywords>ASSERTION</keywords> 
+	<keywords>AT</keywords> 
+	<keywords>AUTHORIZATION</keywords> 
+	<keywords>AVG</keywords> 
+	<keywords>BEGIN</keywords> 
+	<keywords>BETWEEN</keywords> 
+	<keywords>BIT</keywords> 
+	<keywords>BOOLEAN</keywords> 
+	<keywords>BOTH</keywords> 
+	<keywords>BY</keywords> 
+	<keywords>CALL</keywords> 
+	<keywords>CASCADE</keywords> 
+	<keywords>CASCADED</keywords> 
+	<keywords>CASE</keywords> 
+	<keywords>CAST</keywords> 
+	<keywords>CHAR</keywords> 
+	<keywords>CHARACTER</keywords> 
+	<keywords>CHECK</keywords> 
+	<keywords>CLOSE</keywords> 
+	<keywords>COLLATE</keywords> 
+	<keywords>COLLATION</keywords> 
+	<keywords>COLUMN</keywords> 
+	<keywords>COMMIT</keywords> 
+	<keywords>CONNECT</keywords> 
+	<keywords>CONNECTION</keywords> 
+	<keywords>CONSTRAINT</keywords> 
+	<keywords>CONSTRAINTS</keywords> 
+	<keywords>CONTINUE</keywords> 
+	<keywords>CONVERT</keywords> 
+	<keywords>CORRESPONDING</keywords> 
+	<keywords>COUNT</keywords> 
+	<keywords>CREATE</keywords> 
+	<keywords>CURRENT</keywords> 
+	<keywords>CURRENT_DATE</keywords> 
+	<keywords>CURRENT_TIME</keywords> 
+	<keywords>CURRENT_TIMESTAMP</keywords> 
+	<keywords>CURRENT_USER</keywords> 
+	<keywords>CURSOR</keywords> 
+	<keywords>DEALLOCATE</keywords> 
+	<keywords>DEC</keywords> 
+	<keywords>DECIMAL</keywords> 
+	<keywords>DECLARE</keywords> 
+	<keywords>DEFERRABLE</keywords> 
+	<keywords>DEFERRED</keywords> 
+	<keywords>DELETE</keywords> 
+	<keywords>DESC</keywords> 
+	<keywords>DESCRIBE</keywords> 
+	<keywords>DIAGNOSTICS</keywords> 
+	<keywords>DISCONNECT</keywords> 
+	<keywords>DISTINCT</keywords> 
+	<keywords>DOUBLE</keywords> 
+	<keywords>DROP</keywords> 
+	<keywords>ELSE</keywords> 
+	<keywords>END</keywords> 
+	<keywords>ENDEXEC</keywords> 
+	<keywords>ESCAPE</keywords> 
+	<keywords>EXCEPT</keywords> 
+	<keywords>EXCEPTION</keywords> 
+	<keywords>EXEC</keywords> 
+	<keywords>EXECUTE</keywords> 
+	<keywords>EXISTS</keywords> 
+	<keywords>EXPLAIN</keywords> 
+	<keywords>EXTERNAL</keywords> 
+	<keywords>FALSE</keywords> 
+	<keywords>FETCH</keywords> 
+	<keywords>FIRST</keywords> 
+	<keywords>FLOAT</keywords> 
+	<keywords>FOR</keywords> 
+	<keywords>FOREIGN</keywords> 
+	<keywords>FOUND</keywords> 
+	<keywords>FROM</keywords> 
+	<keywords>FULL</keywords> 
+	<keywords>FUNCTION</keywords> 
+	<keywords>GET</keywords> 
+	<keywords>GET_CURRENT_CONNECTION</keywords> 
+	<keywords>GLOBAL</keywords> 
+	<keywords>GO</keywords> 
+	<keywords>GOTO</keywords> 
+	<keywords>GRANT</keywords> 
+	<keywords>GROUP</keywords> 
+	<keywords>HAVING</keywords> 
+	<keywords>HOUR</keywords> 
+	<keywords>IDENTITY</keywords> 
+	<keywords>IMMEDIATE</keywords> 
+	<keywords>IN</keywords> 
+	<keywords>INDICATOR</keywords> 
+	<keywords>INITIALLY</keywords> 
+	<keywords>INNER</keywords> 
+	<keywords>INOUT</keywords> 
+	<keywords>INPUT</keywords> 
+	<keywords>INSENSITIVE</keywords> 
+	<keywords>INSERT</keywords> 
+	<keywords>INT</keywords> 
+	<keywords>INTEGER</keywords> 
+	<keywords>INTERSECT</keywords> 
+	<keywords>INTO</keywords> 
+	<keywords>IS</keywords> 
+	<keywords>ISOLATION</keywords> 
+	<keywords>JOIN</keywords> 
+	<keywords>KEY</keywords> 
+	<keywords>LAST</keywords> 
+	<keywords>LEFT</keywords> 
+	<keywords>LIKE</keywords> 
+	<keywords>LONGINT</keywords> 
+	<keywords>LOWER</keywords> 
+	<keywords>LTRIM</keywords> 
+	<keywords>MATCH</keywords> 
+	<keywords>MAX</keywords> 
+	<keywords>MIN</keywords> 
+	<keywords>MINUTE</keywords> 
+	<keywords>NATIONAL</keywords> 
+	<keywords>NATURAL</keywords> 
+	<keywords>NCHAR</keywords> 
+	<keywords>NVARCHAR</keywords> 
+	<keywords>NEXT</keywords> 
+	<keywords>NO</keywords> 
+	<keywords>NOT</keywords> 
+	<keywords>NULL</keywords> 
+	<keywords>NULLIF</keywords> 
+	<keywords>NUMERIC</keywords> 
+	<keywords>OF</keywords> 
+	<keywords>ON</keywords> 
+	<keywords>ONLY</keywords> 
+	<keywords>OPEN</keywords> 
+	<keywords>OPTION</keywords> 
+	<keywords>OR</keywords> 
+	<keywords>ORDER</keywords> 
+	<keywords>OUT</keywords> 
+	<keywords>OUTER</keywords> 
+	<keywords>OUTPUT</keywords> 
+	<keywords>OVERLAPS</keywords> 
+	<keywords>PAD</keywords> 
+	<keywords>PARTIAL</keywords> 
+	<keywords>PREPARE</keywords> 
+	<keywords>PRESERVE</keywords> 
+	<keywords>PRIMARY</keywords> 
+	<keywords>PRIOR</keywords> 
+	<keywords>PRIVILEGES</keywords> 
+	<keywords>PROCEDURE</keywords> 
+	<keywords>PUBLIC</keywords> 
+	<keywords>READ</keywords> 
+	<keywords>REAL</keywords> 
+	<keywords>REFERENCES</keywords> 
+	<keywords>RELATIVE</keywords> 
+	<keywords>RESTRICT</keywords> 
+	<keywords>REVOKE</keywords> 
+	<keywords>RIGHT</keywords> 
+	<keywords>ROLLBACK</keywords> 
+	<keywords>ROWS</keywords> 
+	<keywords>RTRIM</keywords> 
+	<keywords>SCHEMA</keywords> 
+	<keywords>SCROLL</keywords> 
+	<keywords>SECOND</keywords> 
+	<keywords>SELECT</keywords> 
+	<keywords>SESSION_USER</keywords> 
+	<keywords>SET</keywords> 
+	<keywords>SMALLINT</keywords> 
+	<keywords>SOME</keywords> 
+	<keywords>SPACE</keywords> 
+	<keywords>SQL</keywords> 
+	<keywords>SQLCODE</keywords> 
+	<keywords>SQLERROR</keywords> 
+	<keywords>SQLSTATE</keywords> 
+	<keywords>SUBSTR</keywords> 
+	<keywords>SUBSTRING</keywords> 
+	<keywords>SUM</keywords> 
+	<keywords>SYSTEM_USER</keywords> 
+	<keywords>TABLE</keywords> 
+	<keywords>TEMPORARY</keywords> 
+	<keywords>TIMEZONE_HOUR</keywords> 
+	<keywords>TIMEZONE_MINUTE</keywords> 
+	<keywords>TO</keywords> 
+	<keywords>TRAILING</keywords> 
+	<keywords>TRANSACTION</keywords> 
+	<keywords>TRANSLATE</keywords> 
+	<keywords>TRANSLATION</keywords> 
+	<keywords>TRUE</keywords> 
+	<keywords>UNION</keywords> 
+	<keywords>UNIQUE</keywords> 
+	<keywords>UNKNOWN</keywords> 
+	<keywords>UPDATE</keywords>
+	<keywords>UPPER</keywords> 
+	<keywords>USER</keywords> 
+	<keywords>USING</keywords> 
+	<keywords>VALUES</keywords> 
+	<keywords>VARCHAR</keywords> 
+	<keywords>VARYING</keywords> 
+	<keywords>VIEW</keywords> 
+	<keywords>WHENEVER</keywords> 
+	<keywords>WHERE</keywords> 
+	<keywords>WITH</keywords> 
+	<keywords>WORK</keywords> 
+	<keywords>WRITE</keywords>
+	<keywords>XML</keywords> 
+	<keywords>XMLEXISTS</keywords> 
+	<keywords>XMLPARSE</keywords> 
+	<keywords>XMLSERIALIZE</keywords>  
+	<keywords>YEAR</keywords>
+    <operators>&lt;</operators>
+    <operators>&quot;</operators>
+    <operators>%</operators>
+    <operators>&amp;</operators>
+    <operators>''''</operators>
+    <operators>(</operators>
+    <operators>)</operators>
+    <operators>*</operators>
+    <operators>+</operators>
+    <operators>,</operators>
+    <operators>-</operators>
+    <operators>.</operators>
+    <operators>/</operators>
+    <operators>:</operators>
+    <operators>;</operators>
+    <operators>=</operators>
+    <operators>?</operators>
+    <operators>[</operators>
+    <operators>]</operators>
+    <operators>_</operators>
+    <operators>'|'</operators>
+    <operators>,=</operators>
+    <operators>&lt;=</operators>
+    <operators>||</operators>
+    <operators>..</operators>
+    <operators>'-,'</operators>
+    <operators>!</operators>
+    <operators>~</operators>
+    <operators>:=</operators>
+    <operators>{</operators>
+    <operators>}</operators>
+    <operators>(+)</operators>
+  </SQLSyntaxDefinition>
+</DBDefinition:DatabaseVendorDefinition>
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/runtime/vendors/Derby_10.2/Derby_10.2.xmi b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/runtime/vendors/Derby_10.2/Derby_10.2.xmi
new file mode 100644
index 0000000..c475a71
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition/runtime/vendors/Derby_10.2/Derby_10.2.xmi
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="ASCII"?>
+<DBDefinition:DatabaseVendorDefinition xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:DBDefinition="http:///org/eclipse/datatools/modelbase/dbdefinition/dbdefinition.ecore" vendor="Derby" version="10.2" maximumIdentifierLength="128" maximumCommentLength="64">
+  <predefinedDataTypeDefinitions xmi:id="BIGINT_1" keyConstraintSupported="true" identitySupported="true" primitiveType="BIGINT" jdbcEnumType="-5" javaClassName="long">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>BIGINT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_LARGE_OBJECT_1" lengthSupported="true" defaultLength="2147483647" maximumLength="2147483647" primitiveType="BINARY_LARGE_OBJECT" jdbcEnumType="2004" javaClassName="java.sql.Blob">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>BLOB</name>
+    <name>BINARY LARGE OBJECT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_1" lengthSupported="true" keyConstraintSupported="true" defaultLength="1" maximumLength="254" jdbcEnumType="1" javaClassName="java.lang.String">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>CHAR</name>
+    <name>CHARACTER</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_1" lengthSupported="true" defaultLength="1" displayNameSupported="true" displayName="CHAR ({0}) FOR BIT DATA" maximumLength="254" primitiveType="BINARY_VARYING" jdbcEnumType="-2" javaClassName="byte[]">
+    <name>CHAR FOR BIT DATA</name>
+    <name>CHARACTER FOR BIT DATA</name>
+    <name>CHAR () FOR BIT DATA</name>
+    <name>CHARACTER () FOR BIT DATA</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_LARGE_OBJECT_1" lengthSupported="true" defaultLength="2147483647" maximumLength="2147483647" primitiveType="CHARACTER_LARGE_OBJECT" jdbcEnumType="2005" javaClassName="java.sql.Clob">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>CLOB</name>
+    <name>CHARACTER LARGE OBJECT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_VARYING_1" lengthSupported="true" keyConstraintSupported="true" defaultLength="32" maximumLength="32672" primitiveType="CHARACTER_VARYING" jdbcEnumType="12" javaClassName="java.lang.String">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>VARCHAR</name>
+    <name>CHARACTER VARYING</name>
+    <name>CHAR VARYING</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="CHARACTER_VARYING_2" primitiveType="CHARACTER_VARYING" jdbcEnumType="-1" javaClassName="java.lang.String">
+    <defaultValueTypes>CURRENT_USER</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>LONG VARCHAR</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_VARYING_2" primitiveType="BINARY_VARYING" jdbcEnumType="-4" javaClassName="byte[]">
+    <name>LONG VARCHAR FOR BIT DATA</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="DATE_1" keyConstraintSupported="true" primitiveType="DATE" jdbcEnumType="91" javaClassName="java.sql.Date">
+    <defaultValueTypes>CURRENT_DATE</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>DATE</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="DECIMAL_1" scaleSupported="true" precisionSupported="true" defaultPrecision="5" maximumPrecision="31" defaultScale="0" keyConstraintSupported="true" primitiveType="DECIMAL" jdbcEnumType="3" javaClassName="java.math.BigDecimal">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>DECIMAL</name>
+    <name>DEC</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="DOUBLE_PRECISION_1" keyConstraintSupported="true" primitiveType="DOUBLE_PRECISION" jdbcEnumType="8" javaClassName="double">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>DOUBLE</name>
+    <name>DOUBLE PRECISION</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="FLOAT_1" keyConstraintSupported="true" primitiveType="FLOAT" defaultPrecision="53" maximumPrecision="53" cutoffPrecision="24" jdbcEnumType="6" javaClassName="double">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>FLOAT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="INTEGER_1" keyConstraintSupported="true" identitySupported="true" primitiveType="INTEGER" jdbcEnumType="4" javaClassName="int">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>INTEGER</name>
+    <name>INT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="NUMERIC_1" scaleSupported="true" precisionSupported="true" defaultPrecision="5" maximumPrecision="31" defaultScale="0" keyConstraintSupported="true" primitiveType="NUMERIC" jdbcEnumType="2" javaClassName="java.math.BigDecimal">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>NUMERIC</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="REAL_1" keyConstraintSupported="true" primitiveType="REAL" jdbcEnumType="7" javaClassName="float">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>REAL</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="SMALLINT_1" keyConstraintSupported="true" identitySupported="true" primitiveType="SMALLINT" jdbcEnumType="5" javaClassName="short">
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>SMALLINT</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="TIME_1" keyConstraintSupported="true" primitiveType="TIME" jdbcEnumType="92" javaClassName="java.sql.Time">
+    <defaultValueTypes>CURRENT_TIME</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>TIME</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="TIMESTAMP_1" keyConstraintSupported="true" primitiveType="TIMESTAMP" jdbcEnumType="93" javaClassName="java.sql.Timestamp">
+    <defaultValueTypes>CURRENT_TIME_STAMP</defaultValueTypes>
+    <defaultValueTypes>NULL</defaultValueTypes>
+    <name>TIMESTAMP</name>
+  </predefinedDataTypeDefinitions>
+  <predefinedDataTypeDefinitions xmi:id="BINARY_VARYING_1" lengthSupported="true" defaultLength="1" displayNameSupported="true" displayName="VARCHAR ({0}) FOR BIT DATA" maximumLength="32672" primitiveType="BINARY_VARYING" jdbcEnumType="-3" javaClassName="byte[]">
+    <name>VARCHAR FOR BIT DATA</name>
+    <name>CHAR VARYING FOR BIT DATA</name>
+    <name>CHARACTER VARYING FOR BIT DATA</name>
+    <name>VARCHAR () FOR BIT DATA</name>
+    <name>CHAR VARYING () FOR BIT DATA</name>
+    <name>CHARACTER VARYING () FOR BIT DATA</name>
+  </predefinedDataTypeDefinitions>
+  <storedProcedureDefinition maximumIdentifierLength="128" nullInputActionSupported="true" returnedNullSupported="true" parameterStyleSupported="true">
+    <languageType>SQL</languageType>
+    <languageType>JAVA</languageType>
+    <procedureType>PROCEDURE</procedureType>
+    <procedureType>FUNCTION</procedureType>
+  </storedProcedureDefinition>
+  <triggerDefinition maximumIdentifierLength="128" referencesClauseSupported="true" perColumnUpdateTriggerSupported="true" rowTriggerReferenceSupported="true" tableTriggerReferenceSupported="true" whenClauseSupported="false"/>
+  <columnDefinition maximumIdentifierLength="128" identitySupported="true" computedSupported="true"/>
+  <constraintDefinition maximumPrimaryKeyIdentifierLength="18" maximumForeignKeyIdentifierLength="18" maximumCheckConstraintIdentifierLength="18">
+    <parentUpdateDRIRuleType>RESTRICT</parentUpdateDRIRuleType>
+    <parentUpdateDRIRuleType>NO_ACTION</parentUpdateDRIRuleType>
+    <parentDeleteDRIRuleType>RESTRICT</parentDeleteDRIRuleType>
+    <parentDeleteDRIRuleType>CASCADE</parentDeleteDRIRuleType>
+    <parentDeleteDRIRuleType>SET_NULL</parentDeleteDRIRuleType>
+    <parentDeleteDRIRuleType>NO_ACTION</parentDeleteDRIRuleType>
+    <checkOption>NONE</checkOption>
+    <checkOption>LOCAL</checkOption>
+    <checkOption>CASCADE</checkOption>
+  </constraintDefinition>
+  <queryDefinition hostVariableMarker=":"/>
+  <indexDefinition clusteringSupported="false" maximumIdentifierLength="128"/>
+  <viewDefinition maximumIdentifierLength="128" checkOptionSupported="false"/>
+  <tableDefinition maximumIdentifierLength="128"/>
+  <schemaDefinition maximumIdentifierLength="128"/>
+  <SQLSyntaxDefinition>
+    <keywords>ADD</keywords>
+	<keywords>ALL</keywords> 
+	<keywords>ALLOCATE</keywords> 
+	<keywords>ALTER</keywords> 
+	<keywords>AND</keywords> 
+	<keywords>ANY</keywords> 
+	<keywords>ARE</keywords> 
+	<keywords>AS</keywords> 
+	<keywords>ASC</keywords> 
+	<keywords>ASSERTION</keywords> 
+	<keywords>AT</keywords> 
+	<keywords>AUTHORIZATION</keywords> 
+	<keywords>AVG</keywords> 
+	<keywords>BEGIN</keywords> 
+	<keywords>BETWEEN</keywords> 
+	<keywords>BIT</keywords> 
+	<keywords>BOOLEAN</keywords> 
+	<keywords>BOTH</keywords> 
+	<keywords>BY</keywords> 
+	<keywords>CALL</keywords> 
+	<keywords>CASCADE</keywords> 
+	<keywords>CASCADED</keywords> 
+	<keywords>CASE</keywords> 
+	<keywords>CAST</keywords> 
+	<keywords>CHAR</keywords> 
+	<keywords>CHARACTER</keywords> 
+	<keywords>CHECK</keywords> 
+	<keywords>CLOSE</keywords> 
+	<keywords>COLLATE</keywords> 
+	<keywords>COLLATION</keywords> 
+	<keywords>COLUMN</keywords> 
+	<keywords>COMMIT</keywords> 
+	<keywords>CONNECT</keywords> 
+	<keywords>CONNECTION</keywords> 
+	<keywords>CONSTRAINT</keywords> 
+	<keywords>CONSTRAINTS</keywords> 
+	<keywords>CONTINUE</keywords> 
+	<keywords>CONVERT</keywords> 
+	<keywords>CORRESPONDING</keywords> 
+	<keywords>COUNT</keywords> 
+	<keywords>CREATE</keywords> 
+	<keywords>CURRENT</keywords> 
+	<keywords>CURRENT_DATE</keywords> 
+	<keywords>CURRENT_TIME</keywords> 
+	<keywords>CURRENT_TIMESTAMP</keywords> 
+	<keywords>CURRENT_USER</keywords> 
+	<keywords>CURSOR</keywords> 
+	<keywords>DEALLOCATE</keywords> 
+	<keywords>DEC</keywords> 
+	<keywords>DECIMAL</keywords> 
+	<keywords>DECLARE</keywords> 
+	<keywords>DEFERRABLE</keywords> 
+	<keywords>DEFERRED</keywords> 
+	<keywords>DELETE</keywords> 
+	<keywords>DESC</keywords> 
+	<keywords>DESCRIBE</keywords> 
+	<keywords>DIAGNOSTICS</keywords> 
+	<keywords>DISCONNECT</keywords> 
+	<keywords>DISTINCT</keywords> 
+	<keywords>DOUBLE</keywords> 
+	<keywords>DROP</keywords> 
+	<keywords>ELSE</keywords> 
+	<keywords>END</keywords> 
+	<keywords>ENDEXEC</keywords> 
+	<keywords>ESCAPE</keywords> 
+	<keywords>EXCEPT</keywords> 
+	<keywords>EXCEPTION</keywords> 
+	<keywords>EXEC</keywords> 
+	<keywords>EXECUTE</keywords> 
+	<keywords>EXISTS</keywords> 
+	<keywords>EXPLAIN</keywords> 
+	<keywords>EXTERNAL</keywords> 
+	<keywords>FALSE</keywords> 
+	<keywords>FETCH</keywords> 
+	<keywords>FIRST</keywords> 
+	<keywords>FLOAT</keywords> 
+	<keywords>FOR</keywords> 
+	<keywords>FOREIGN</keywords> 
+	<keywords>FOUND</keywords> 
+	<keywords>FROM</keywords> 
+	<keywords>FULL</keywords> 
+	<keywords>FUNCTION</keywords> 
+	<keywords>GET</keywords> 
+	<keywords>GET_CURRENT_CONNECTION</keywords> 
+	<keywords>GLOBAL</keywords> 
+	<keywords>GO</keywords> 
+	<keywords>GOTO</keywords> 
+	<keywords>GRANT</keywords> 
+	<keywords>GROUP</keywords> 
+	<keywords>HAVING</keywords> 
+	<keywords>HOUR</keywords> 
+	<keywords>IDENTITY</keywords> 
+	<keywords>IMMEDIATE</keywords> 
+	<keywords>IN</keywords> 
+	<keywords>INDICATOR</keywords> 
+	<keywords>INITIALLY</keywords> 
+	<keywords>INNER</keywords> 
+	<keywords>INOUT</keywords> 
+	<keywords>INPUT</keywords> 
+	<keywords>INSENSITIVE</keywords> 
+	<keywords>INSERT</keywords> 
+	<keywords>INT</keywords> 
+	<keywords>INTEGER</keywords> 
+	<keywords>INTERSECT</keywords> 
+	<keywords>INTO</keywords> 
+	<keywords>IS</keywords> 
+	<keywords>ISOLATION</keywords> 
+	<keywords>JOIN</keywords> 
+	<keywords>KEY</keywords> 
+	<keywords>LAST</keywords> 
+	<keywords>LEFT</keywords> 
+	<keywords>LIKE</keywords> 
+	<keywords>LONGINT</keywords> 
+	<keywords>LOWER</keywords> 
+	<keywords>LTRIM</keywords> 
+	<keywords>MATCH</keywords> 
+	<keywords>MAX</keywords> 
+	<keywords>MIN</keywords> 
+	<keywords>MINUTE</keywords> 
+	<keywords>NATIONAL</keywords> 
+	<keywords>NATURAL</keywords> 
+	<keywords>NCHAR</keywords> 
+	<keywords>NVARCHAR</keywords> 
+	<keywords>NEXT</keywords> 
+	<keywords>NO</keywords> 
+	<keywords>NOT</keywords> 
+	<keywords>NULL</keywords> 
+	<keywords>NULLIF</keywords> 
+	<keywords>NUMERIC</keywords> 
+	<keywords>OF</keywords> 
+	<keywords>ON</keywords> 
+	<keywords>ONLY</keywords> 
+	<keywords>OPEN</keywords> 
+	<keywords>OPTION</keywords> 
+	<keywords>OR</keywords> 
+	<keywords>ORDER</keywords> 
+	<keywords>OUT</keywords> 
+	<keywords>OUTER</keywords> 
+	<keywords>OUTPUT</keywords> 
+	<keywords>OVERLAPS</keywords> 
+	<keywords>PAD</keywords> 
+	<keywords>PARTIAL</keywords> 
+	<keywords>PREPARE</keywords> 
+	<keywords>PRESERVE</keywords> 
+	<keywords>PRIMARY</keywords> 
+	<keywords>PRIOR</keywords> 
+	<keywords>PRIVILEGES</keywords> 
+	<keywords>PROCEDURE</keywords> 
+	<keywords>PUBLIC</keywords> 
+	<keywords>READ</keywords> 
+	<keywords>REAL</keywords> 
+	<keywords>REFERENCES</keywords> 
+	<keywords>RELATIVE</keywords> 
+	<keywords>RESTRICT</keywords> 
+	<keywords>REVOKE</keywords> 
+	<keywords>RIGHT</keywords> 
+	<keywords>ROLLBACK</keywords> 
+	<keywords>ROWS</keywords> 
+	<keywords>RTRIM</keywords> 
+	<keywords>SCHEMA</keywords> 
+	<keywords>SCROLL</keywords> 
+	<keywords>SECOND</keywords> 
+	<keywords>SELECT</keywords> 
+	<keywords>SESSION_USER</keywords> 
+	<keywords>SET</keywords> 
+	<keywords>SMALLINT</keywords> 
+	<keywords>SOME</keywords> 
+	<keywords>SPACE</keywords> 
+	<keywords>SQL</keywords> 
+	<keywords>SQLCODE</keywords> 
+	<keywords>SQLERROR</keywords> 
+	<keywords>SQLSTATE</keywords> 
+	<keywords>SUBSTR</keywords> 
+	<keywords>SUBSTRING</keywords> 
+	<keywords>SUM</keywords> 
+	<keywords>SYSTEM_USER</keywords> 
+	<keywords>TABLE</keywords> 
+	<keywords>TEMPORARY</keywords> 
+	<keywords>TIMEZONE_HOUR</keywords> 
+	<keywords>TIMEZONE_MINUTE</keywords> 
+	<keywords>TO</keywords> 
+	<keywords>TRAILING</keywords> 
+	<keywords>TRANSACTION</keywords> 
+	<keywords>TRANSLATE</keywords> 
+	<keywords>TRANSLATION</keywords> 
+	<keywords>TRUE</keywords> 
+	<keywords>UNION</keywords> 
+	<keywords>UNIQUE</keywords> 
+	<keywords>UNKNOWN</keywords> 
+	<keywords>UPDATE</keywords>
+	<keywords>UPPER</keywords> 
+	<keywords>USER</keywords> 
+	<keywords>USING</keywords> 
+	<keywords>VALUES</keywords> 
+	<keywords>VARCHAR</keywords> 
+	<keywords>VARYING</keywords> 
+	<keywords>VIEW</keywords> 
+	<keywords>WHENEVER</keywords> 
+	<keywords>WHERE</keywords> 
+	<keywords>WITH</keywords> 
+	<keywords>WORK</keywords> 
+	<keywords>WRITE</keywords>
+	<keywords>XML</keywords> 
+	<keywords>XMLEXISTS</keywords> 
+	<keywords>XMLPARSE</keywords> 
+	<keywords>XMLSERIALIZE</keywords>  
+	<keywords>YEAR</keywords>
+    <operators>&lt;</operators>
+    <operators>&quot;</operators>
+    <operators>%</operators>
+    <operators>&amp;</operators>
+    <operators>''''</operators>
+    <operators>(</operators>
+    <operators>)</operators>
+    <operators>*</operators>
+    <operators>+</operators>
+    <operators>,</operators>
+    <operators>-</operators>
+    <operators>.</operators>
+    <operators>/</operators>
+    <operators>:</operators>
+    <operators>;</operators>
+    <operators>=</operators>
+    <operators>?</operators>
+    <operators>[</operators>
+    <operators>]</operators>
+    <operators>_</operators>
+    <operators>'|'</operators>
+    <operators>,=</operators>
+    <operators>&lt;=</operators>
+    <operators>||</operators>
+    <operators>..</operators>
+    <operators>'-,'</operators>
+    <operators>!</operators>
+    <operators>~</operators>
+    <operators>:=</operators>
+    <operators>{</operators>
+    <operators>}</operators>
+    <operators>(+)</operators>
+  </SQLSyntaxDefinition>
+</DBDefinition:DatabaseVendorDefinition>
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.classpath b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<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/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.gitignore b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.gitignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.project b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.project
new file mode 100644
index 0000000..95b866d
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.apache.derby.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..73f4382
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Fri Apr 13 14:14:14 PDT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
+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.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.4
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1892b93
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.apache.derby.ui;singleton:=true
+Bundle-Version: 1.2.1.qualifier
+Bundle-Activator: org.eclipse.datatools.connectivity.apache.derby.internal.ui.DerbyUIPlugin
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.common,
+ org.eclipse.ui.navigator,
+ org.eclipse.datatools.connectivity.sqm.core.ui,
+ org.eclipse.datatools.connectivity.sqm.core,
+ org.eclipse.datatools.connectivity.sqm.server.ui,
+ org.eclipse.emf.ecore,
+ org.eclipse.datatools.modelbase.sql,
+ org.eclipse.datatools.modelbase.derby,
+ org.eclipse.datatools.connectivity.apache.derby,
+ org.eclipse.datatools.connectivity,
+ org.eclipse.datatools.connectivity.ui
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers;x-internal:=true
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/about.html b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/about.html
new file mode 100644
index 0000000..129db9d
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 15, 2009</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>
+
+<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
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/build.properties b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/build.properties
new file mode 100644
index 0000000..3f59e9e
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/build.properties
@@ -0,0 +1,15 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               about.html,\
+               plugin.xml,\
+               icons/,\
+               plugin.properties
+src.dir			 = src/
+plugin.version =	1.0.0.200706071
+javadoc.dir =		doc/api/
+download.dir =		./download/
+javac.source =		1.4
+javac.target =		1.4
+src.includes = about.html
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/icons/alias.gif b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/icons/alias.gif
new file mode 100644
index 0000000..5a12ea6
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/icons/alias.gif
Binary files differ
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/icons/new_db_element.gif b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/icons/new_db_element.gif
new file mode 100644
index 0000000..1d459ce
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/icons/new_db_element.gif
Binary files differ
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/plugin.properties b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/plugin.properties
new file mode 100644
index 0000000..7de6d70
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/plugin.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2006, 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
+###############################################################################
+pluginName=Eclipse Data Tools Platform Apache Derby UI Plug-in
+providerName=Eclipse Data Tools Platform
+
+DERBY_EMBEDDED_CONNECTION_PROFILE_WIZARD_NAME=Derby
+DERBY_EMBEDDED_CONNECTION_PROFILE_WIZARD_DESCRIPTION = Create a Derby connection profile.
+DERBY_EMBEDDED_DB_PROPERTY_PAGE_NAME=JDBC Connection Properties
+
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/plugin.xml b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/plugin.xml
new file mode 100644
index 0000000..cbac333
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/plugin.xml
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+    
+<!-- Content provider for Derby in Database Explorer -->
+   <extension point="org.eclipse.ui.navigator.viewer">
+      <viewerContentBinding viewerId="org.eclipse.datatools.connectivity.DataSourceExplorerNavigator">
+         <includes>
+            <contentExtension
+                  pattern="org.eclipse.datatools.connectivity.apache.derby.ui.ServerExplorerContent"/>
+         </includes>
+      </viewerContentBinding>
+   </extension>
+   <extension point="org.eclipse.ui.navigator.navigatorContent">
+      <navigatorContent
+            name="Database_Explorer_Derby_Content_Extension"
+            priority="high"
+            icon="platform:/plugin/org.eclipse.datatools.connectivity.sqm.core.ui/icons/server_explorer.gif"
+            activeByDefault="true"
+            contentProvider="org.eclipse.datatools.connectivity.apache.derby.internal.ui.explorer.providers.ServerExplorerContentProvider"
+            labelProvider="org.eclipse.datatools.connectivity.apache.derby.internal.ui.explorer.providers.label.ServerExplorerlabelProvider"			
+            id="org.eclipse.datatools.connectivity.apache.derby.ui.ServerExplorerContent">
+		    <triggerPoints>
+		         <or>
+		            <instanceof 
+		                  value="org.eclipse.datatools.modelbase.derby.DerbySchema" />
+		         </or>
+		    </triggerPoints>
+	        <possibleChildren>
+	           <or>         
+	            	<instanceof
+	                  	value="org.eclipse.datatools.connectivity.apache.derby.ui.explorer.providers.virtual.ISynonymFolder" /> 
+		            <instanceof
+		                  value="org.eclipse.datatools.modelbase.derby.Synonym" /> 
+	           </or>
+	        </possibleChildren>
+      </navigatorContent>
+   </extension>
+
+   <!-- Label Service -->	
+   <extension point = "org.eclipse.datatools.connectivity.sqm.core.ui.labelService">
+		<contributor
+			type = "org.eclipse.datatools.modelbase.derby.Synonym"
+			iconLocation = "icons/alias.gif"
+			displayType = "%Synonym">
+		</contributor>
+	</extension>
+	
+   <extension
+         point="org.eclipse.datatools.connectivity.ui.driverPropertyEditor">
+      <propertyEditor
+            customPropertyDescriptor="org.eclipse.datatools.connectivity.ui.PasswordTextPropertyDescriptor"
+            driverPropertyID="org.eclipse.datatools.connectivity.db.password"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby101.genericDriverTemplate"
+            id="org.eclipse.datatools.connectivity.derby101.ui.propertyEditor.password">
+      </propertyEditor>
+      <propertyEditor
+            customPropertyDescriptor="org.eclipse.datatools.connectivity.ui.PasswordTextPropertyDescriptor"
+            driverPropertyID="org.eclipse.datatools.connectivity.db.password"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby.genericDriverTemplate"
+            id="org.eclipse.datatools.connectivity.derby.ui.propertyEditor.password">
+      </propertyEditor>
+      <propertyEditor
+            customPropertyDescriptor="org.eclipse.datatools.connectivity.ui.PasswordTextPropertyDescriptor"
+            driverPropertyID="org.eclipse.datatools.connectivity.db.password"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby102.genericDriverTemplate"
+            id="org.eclipse.datatools.connectivity.derby102.ui.propertyEditor.password">
+      </propertyEditor>
+      <propertyEditor
+            customPropertyDescriptor="org.eclipse.datatools.connectivity.ui.PasswordTextPropertyDescriptor"
+            driverPropertyID="org.eclipse.datatools.connectivity.db.password"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby.db2UniversalDriver"
+            id="org.eclipse.datatools.connectivity.derby.db2UniversalDriver.ui.propertyEditor.password">
+      </propertyEditor>
+      <propertyEditor
+            customPropertyDescriptor="org.eclipse.datatools.connectivity.ui.PasswordTextPropertyDescriptor"
+            driverPropertyID="org.eclipse.datatools.connectivity.db.password"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby101.db2UniversalDriver"
+            id="org.eclipse.datatools.connectivity.derby101.db2UniversalDriver.ui.propertyEditor.password">
+      </propertyEditor>
+      <propertyEditor
+            customPropertyDescriptor="org.eclipse.datatools.connectivity.ui.PasswordTextPropertyDescriptor"
+            driverPropertyID="org.eclipse.datatools.connectivity.db.password"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby101.clientDriver"
+            id="org.eclipse.datatools.connectivity.derby101.clientDriver.ui.propertyEditor.password">
+      </propertyEditor>
+      <propertyEditor
+            customPropertyDescriptor="org.eclipse.datatools.connectivity.ui.PasswordTextPropertyDescriptor"
+            driverPropertyID="org.eclipse.datatools.connectivity.db.password"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby102.clientDriver"
+            id="org.eclipse.datatools.connectivity.derby102.clientDriver.ui.propertyEditor.password">
+      </propertyEditor>
+   </extension>
+	
+	<extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <newWizard
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.NewDerbyEmbeddedConnectionProfileWizard"
+            icon="icons/new_db_element.gif"
+            id="org.eclipse.datatools.connectivity.db.derby.embedded.NewConnectionProfileWizard"
+            name="%DERBY_EMBEDDED_CONNECTION_PROFILE_WIZARD_NAME"
+            description = "%DERBY_EMBEDDED_CONNECTION_PROFILE_WIZARD_DESCRIPTION"
+            profile="org.eclipse.datatools.connectivity.db.derby.embedded.connectionProfile"/>
+   </extension>
+   <extension
+         point="org.eclipse.ui.propertyPages">
+      <page
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.DerbyEmbeddedDBPropertyPage"
+            id="org.eclipse.datatools.connectivity.db.derby.profileProperties"
+            name="%DERBY_EMBEDDED_DB_PROPERTY_PAGE_NAME">
+         <filter
+               name="org.eclipse.datatools.profile.property.id"
+               value="org.eclipse.datatools.connectivity.db.derby.embedded.connectionProfile"/>
+         <enabledWhen>
+            <instanceof
+                  value="org.eclipse.datatools.connectivity.IConnectionProfile">
+            </instanceof>
+         </enabledWhen>
+      </page>
+   </extension>
+	   
+   <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyOtherDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby.otherDriver"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_0.DerbyOtherDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+   
+   <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyOtherDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby101.otherDriver"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_1.DerbyOtherDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+   
+   <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyOtherDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby102.otherDriver"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_2.DerbyOtherDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+   
+   <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyEmbeddedDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby.genericDriverTemplate"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_0.DerbyEmbeddedDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+   
+   <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyEmbeddedDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby101.genericDriverTemplate"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_1.DerbyEmbeddedDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+   
+   <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyEmbeddedDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby102.genericDriverTemplate"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_2.DerbyEmbeddedDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+   
+   <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby.db2UniversalDriver"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_0.DerbyDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+   
+   <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby101.db2UniversalDriver"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_1.DerbyDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+   
+      <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyClientDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby101.clientDriver"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_1.DerbyClientDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+   
+   <extension point="org.eclipse.datatools.connectivity.ui.driverUIContributor">
+      <driverUIContributor
+            class="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.DerbyClientDriverUIContributor"
+            driverTemplateID="org.eclipse.datatools.connectivity.db.derby102.clientDriver"
+            id="org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.10_2.DerbyClientDriverUIContributor">
+      </driverUIContributor>
+   </extension>
+</plugin>
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/DerbyUIPlugin.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/DerbyUIPlugin.java
new file mode 100644
index 0000000..275e339
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/DerbyUIPlugin.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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.datatools.connectivity.apache.derby.internal.ui;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class DerbyUIPlugin extends AbstractUIPlugin
+{
+	//The shared instance.
+	private static DerbyUIPlugin plugin;
+
+	/**
+	 * The constructor.
+	 */
+	public DerbyUIPlugin()
+	{
+		super();
+		plugin = this;
+	}
+
+	/**
+	 * Returns the shared instance.
+	 */
+	public static DerbyUIPlugin getDefault()
+	{
+		return plugin;
+	}	
+	
+	/**
+	 * 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 getImageDescriptor(String path) {
+		return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.datatools.connectivity.apache.derby.ui", path); //$NON-NLS-1$
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/DerbyEmbeddedDBProfileDetailsWizardPage.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/DerbyEmbeddedDBProfileDetailsWizardPage.java
new file mode 100644
index 0000000..48be1ae
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/DerbyEmbeddedDBProfileDetailsWizardPage.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2004-2006, 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ *     IBM Corporation - migrated to new wizard framework
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection;
+
+import org.eclipse.datatools.connectivity.apache.derby.internal.ui.DerbyUIPlugin;
+import org.eclipse.datatools.connectivity.apache.internal.derby.connection.IDerbyConnectionProfileConstants;
+import org.eclipse.datatools.connectivity.ui.wizards.ExtensibleProfileDetailsWizardPage;
+import org.eclipse.datatools.help.ContextProviderDelegate;
+import org.eclipse.datatools.help.HelpUtil;
+import org.eclipse.help.IContext;
+import org.eclipse.help.IContextProvider;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * This class gathers the properties for the derby embedded DB connection
+ * profile.
+ * 
+ * @author brianf
+ */
+public class DerbyEmbeddedDBProfileDetailsWizardPage extends
+		ExtensibleProfileDetailsWizardPage implements IContextProvider {
+
+	public DerbyEmbeddedDBProfileDetailsWizardPage(String pageName) {
+		super(pageName, IDerbyConnectionProfileConstants.DERBY_CATEGORY_ID);
+	}
+
+	private ContextProviderDelegate contextProviderDelegate = new ContextProviderDelegate(
+			DerbyUIPlugin.getDefault().getBundle().getSymbolicName());
+
+	public IContext getContext(Object target) {
+		return contextProviderDelegate.getContext(target);
+	}
+
+	public int getContextChangeMask() {
+		return contextProviderDelegate.getContextChangeMask();
+	}
+
+	public String getSearchExpression(Object target) {
+		return contextProviderDelegate.getSearchExpression(target);
+	}
+
+	public void createControl(Composite parent) {
+		super.createControl(parent);
+		getShell().setData(HelpUtil.CONTEXT_PROVIDER_KEY, this);
+		HelpUtil.setHelp(getControl(), HelpUtil.getContextId(
+				IHelpContextsDerbyProfile.DERBY_PROFILE_WIZARD_PAGE,
+				DerbyUIPlugin.getDefault().getBundle().getSymbolicName()));
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/DerbyEmbeddedDBPropertyPage.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/DerbyEmbeddedDBPropertyPage.java
new file mode 100644
index 0000000..8eb59b3
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/DerbyEmbeddedDBPropertyPage.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: rcernich - initial API and implementation
+ * 				 brianf - customized for Derby url requirements
+ *      IBM Corporation - migrated to new wizard framework
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection;
+
+import org.eclipse.datatools.connectivity.apache.derby.internal.ui.DerbyUIPlugin;
+import org.eclipse.datatools.connectivity.apache.internal.derby.connection.IDerbyConnectionProfileConstants;
+import org.eclipse.datatools.connectivity.internal.ui.ConnectivityUIPlugin;
+import org.eclipse.datatools.connectivity.internal.ui.IHelpConstants;
+import org.eclipse.datatools.connectivity.ui.wizards.ExtensibleProfileDetailsPropertyPage;
+import org.eclipse.datatools.help.ContextProviderDelegate;
+import org.eclipse.datatools.help.HelpUtil;
+import org.eclipse.help.IContext;
+import org.eclipse.help.IContextProvider;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * Property page for Derby Embedded profiles
+ * 
+ */
+public class DerbyEmbeddedDBPropertyPage extends
+		ExtensibleProfileDetailsPropertyPage implements IContextProvider {
+
+	/**
+	 * Constructor
+	 */
+	public DerbyEmbeddedDBPropertyPage() {
+		super(IDerbyConnectionProfileConstants.DERBY_CATEGORY_ID);
+	}
+
+	private ContextProviderDelegate contextProviderDelegate = new ContextProviderDelegate(
+			DerbyUIPlugin.getDefault().getBundle().getSymbolicName());
+
+	public IContext getContext(Object target) {
+		return contextProviderDelegate.getContext(target);
+	}
+
+	public int getContextChangeMask() {
+		return contextProviderDelegate.getContextChangeMask();
+	}
+
+	public String getSearchExpression(Object target) {
+		return contextProviderDelegate.getSearchExpression(target);
+	}
+
+	protected Control createContents(Composite parent) {
+		Control contents = super.createContents(parent);
+		getShell().setData(HelpUtil.CONTEXT_PROVIDER_KEY, this);
+		HelpUtil.setHelp(getControl(), HelpUtil
+				.getContextId(IHelpConstants.GENERIC_DB_PROFILE_PROPERTY_PAGE,
+						ConnectivityUIPlugin.getDefault().getBundle()
+								.getSymbolicName()));
+		return contents;
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/IHelpContextsDerbyProfile.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/IHelpContextsDerbyProfile.java
new file mode 100644
index 0000000..2bdab4e
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/IHelpContextsDerbyProfile.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection;
+
+public interface IHelpContextsDerbyProfile {
+
+	/**
+	 * TPS_helpKey_constants_for_plug-in: org.eclipse.datatools.connectivity.db.derby
+	 */
+
+	/*
+	 * DERBY_PROFILE_WIZARD_PAGE = the wizard page that collects Derby Embedded profile
+	 * details such as the path to the database, user id, password, etc.
+	 */
+	public static final String DERBY_PROFILE_WIZARD_PAGE = "DERBY_PROFILE_WIZARD_PAGE";
+
+	/*
+	 * DERBY_PROFILE_PROPERTY_PAGE = the property page that collects and allows editing of
+	 * Derby Embedded profile details such as the path to the database, user id, password, etc.
+	 */
+	public static final String DERBY_PROFILE_PROPERTY_PAGE = "DERBY_PROFILE_PROPERTY_PAGE";
+	
+	/*
+	 * DERBY_PROFILE_WIZARD = the actual New Derby Embedded Profile wizard
+	 */
+	public static final String DERBY_PROFILE_WIZARD = "DERBY_PROFILE_WIZARD";
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/Messages.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/Messages.java
new file mode 100644
index 0000000..cd1f648
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/Messages.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.datatools.connectivity.apache.derby.internal.ui.connection;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.messages"; //$NON-NLS-1$
+
+	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+			.getBundle(BUNDLE_NAME);
+
+	private Messages() {
+	}
+
+	public static String getString(String key) {
+		// TODO Auto-generated method stub
+		try {
+			return RESOURCE_BUNDLE.getString(key);
+		} catch (MissingResourceException e) {
+			return '!' + key + '!';
+		}
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/NewDerbyEmbeddedConnectionProfileWizard.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/NewDerbyEmbeddedConnectionProfileWizard.java
new file mode 100644
index 0000000..2840cf0
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/NewDerbyEmbeddedConnectionProfileWizard.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2004-2005, 2007 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ *     IBM Corporation - migrated to new wizard framework
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection;
+
+import org.eclipse.datatools.connectivity.apache.derby.internal.ui.DerbyUIPlugin;
+import org.eclipse.datatools.connectivity.ui.wizards.ExtensibleNewConnectionProfileWizard;
+import org.eclipse.datatools.help.ContextProviderDelegate;
+import org.eclipse.datatools.help.HelpUtil;
+import org.eclipse.help.IContext;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @see Wizard
+ */
+public class NewDerbyEmbeddedConnectionProfileWizard extends
+ExtensibleNewConnectionProfileWizard {
+
+	public NewDerbyEmbeddedConnectionProfileWizard() {
+		super(new DerbyEmbeddedDBProfileDetailsWizardPage("detailsPage")); //$NON-NLS-1$
+		setWindowTitle(Messages.getString("NewDerbyEmbeddedConnectionProfileWizard.DerbyEmbeddedDatabaseWizardTitle")); //$NON-NLS-1$
+	}
+
+	private ContextProviderDelegate contextProviderDelegate =
+		new ContextProviderDelegate(DerbyUIPlugin.getDefault().getBundle().getSymbolicName());
+
+	public IContext getContext(Object target) {
+		return contextProviderDelegate.getContext(target);
+	}
+
+	public int getContextChangeMask() {
+		return contextProviderDelegate.getContextChangeMask();
+	}
+
+	public String getSearchExpression(Object target) {
+		return contextProviderDelegate.getSearchExpression(target);
+	}
+
+	public void createPageControls(Composite pageContainer) {
+		super.createPageControls(pageContainer);
+		getShell().setData(HelpUtil.CONTEXT_PROVIDER_KEY, this);
+		HelpUtil.setHelp(getShell(), HelpUtil.getContextId(
+				IHelpContextsDerbyProfile.DERBY_PROFILE_WIZARD,
+				DerbyUIPlugin.getDefault().getBundle().getSymbolicName()));
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyClientDriverUIContributor.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyClientDriverUIContributor.java
new file mode 100644
index 0000000..6cb5e74
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyClientDriverUIContributor.java
@@ -0,0 +1,580 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: IBM Corporation - initial API and implementation
+ *               Actuate Corporation - added optional properties tab
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.drivers.jdbc.IJDBCConnectionProfileConstants;
+import org.eclipse.datatools.connectivity.drivers.jdbc.IJDBCDriverDefinitionConstants;
+import org.eclipse.datatools.connectivity.internal.ui.ConnectivityUIPlugin;
+import org.eclipse.datatools.connectivity.ui.wizards.IDriverUIContributor;
+import org.eclipse.datatools.connectivity.ui.wizards.IDriverUIContributorInformation;
+import org.eclipse.datatools.connectivity.ui.wizards.OptionalPropertiesPane;
+import org.eclipse.jface.dialogs.DialogPage;
+import org.eclipse.osgi.util.TextProcessor;
+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.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Text;
+
+public class DerbyClientDriverUIContributor implements IDriverUIContributor,
+		Listener {
+
+	protected String CUI_NEWCW_DATABASE_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_DATABASE_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_HOST_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_HOST_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_PORT_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_PORT_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_CONNECTIONURL_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_CONNECTIONURL_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_USERNAME_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_USERNAME_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_PASSWORD_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_PASSWORD_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_CREATEDB_BTN_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.2"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_UPGRADEDB_BTN_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.3"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_SAVE_PASSWORD_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_SAVE_PASSWORD_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_DATABASE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_DATABASE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_HOST_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_HOST_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_PORT_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_PORT_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_USERNAME_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_USERNAME_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_URL_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_URL_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_ = TextProcessor.process(Messages
+			.getString("CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_")); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CREATE_EQUALS_TRUE_TEXT = "create=true"; //$NON-NLS-1$
+
+	private static final String UPGRADE_EQUALS_TRUE_TEXT = "upgrade=true"; //$NON-NLS-1$
+
+	private Label databaseLabel;
+
+	private Text databaseText;
+
+	private Label hostLabel;
+
+	private Text hostText;
+
+	private Label portLabel;
+
+	private Text portText;
+
+	private Label usernameLabel;
+
+	private Text usernameText;
+
+	private Label passwordLabel;
+
+	private Text passwordText;
+
+	private Button createCheck;
+
+	private Button upgradeCheck;
+
+	private Button savePasswordButton;
+
+	private Label urlLabel;
+
+	private Text urlText;
+
+	private DialogPage parentPage;
+
+	private ScrolledComposite parentComposite;
+
+	private OptionalPropertiesPane optionalPropsComposite;
+
+    private IDriverUIContributorInformation contributorInformation;
+
+	private Properties properties;
+	
+	private boolean isReadOnly = false;
+
+	public Composite getContributedDriverUI(Composite parent, boolean isReadOnly) {
+
+		if ((parentComposite == null) || parentComposite.isDisposed() || (this.isReadOnly != isReadOnly)) {
+			GridData gd;
+
+			this.isReadOnly = isReadOnly;
+			int additionalStyles = SWT.NONE;
+			if (isReadOnly){
+				additionalStyles = SWT.READ_ONLY;
+			}
+			
+			parentComposite = new ScrolledComposite(parent, SWT.H_SCROLL
+					| SWT.V_SCROLL);
+			parentComposite.setExpandHorizontal(true);
+			parentComposite.setExpandVertical(true);
+			parentComposite.setLayout(new GridLayout());
+
+            TabFolder tabComposite = new TabFolder(parentComposite, SWT.TOP);
+
+            // add general tab
+            TabItem generalTab = new TabItem(tabComposite, SWT.None);
+            generalTab.setText(ConnectivityUIPlugin.getDefault()
+                    .getResourceString("CommonDriverUIContributor.generaltab")); //$NON-NLS-1$
+
+            Composite baseComposite = new Composite(tabComposite, SWT.NULL);
+			GridLayout layout = new GridLayout();
+			layout.numColumns = 3;
+			baseComposite.setLayout(layout);
+            generalTab.setControl(baseComposite);
+
+			databaseLabel = new Label(baseComposite, SWT.NONE);
+			databaseLabel.setText(CUI_NEWCW_DATABASE_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			databaseLabel.setLayoutData(gd);
+
+			databaseText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER | additionalStyles);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.horizontalAlignment = GridData.FILL;
+			gd.horizontalSpan = 2;
+			databaseText.setLayoutData(gd);
+
+			hostLabel = new Label(baseComposite, SWT.NONE);
+			hostLabel.setText(CUI_NEWCW_HOST_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			hostLabel.setLayoutData(gd);
+
+			hostText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.horizontalSpan = 2;
+			gd.grabExcessHorizontalSpace = true;
+			hostText.setLayoutData(gd);
+
+			portLabel = new Label(baseComposite, SWT.NONE);
+			portLabel.setText(CUI_NEWCW_PORT_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			portLabel.setLayoutData(gd);
+
+			portText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			portText.setLayoutData(gd);
+
+			usernameLabel = new Label(baseComposite, SWT.NONE);
+			usernameLabel.setText(CUI_NEWCW_USERNAME_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			usernameLabel.setLayoutData(gd);
+
+			usernameText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			usernameText.setLayoutData(gd);
+
+			passwordLabel = new Label(baseComposite, SWT.NONE);
+			passwordLabel.setText(CUI_NEWCW_PASSWORD_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			passwordLabel.setLayoutData(gd);
+
+			passwordText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER
+					| SWT.PASSWORD | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			passwordText.setLayoutData(gd);
+
+			createCheck = new Button(baseComposite, SWT.CHECK);
+			createCheck.setText(CUI_NEWCW_CREATEDB_BTN_UI_);
+			createCheck.setSelection(true);
+			gd = new GridData();
+			gd.horizontalSpan = 3;
+			createCheck.setLayoutData(gd);
+
+			upgradeCheck = new Button(baseComposite, SWT.CHECK);
+			upgradeCheck.setText(CUI_NEWCW_UPGRADEDB_BTN_UI_);
+			upgradeCheck.setSelection(false);
+			gd = new GridData();
+			gd.horizontalSpan = 3;
+			upgradeCheck.setLayoutData(gd);
+
+			savePasswordButton = new Button(baseComposite, SWT.CHECK);
+			savePasswordButton.setText(CUI_NEWCW_SAVE_PASSWORD_LBL_UI_);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.horizontalSpan = 3;
+			gd.grabExcessHorizontalSpace = true;
+			savePasswordButton.setLayoutData(gd);
+
+			urlLabel = new Label(baseComposite, SWT.NONE);
+			urlLabel.setText(CUI_NEWCW_CONNECTIONURL_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			urlLabel.setLayoutData(gd);
+
+			urlText = new Text(baseComposite, SWT.MULTI | SWT.BORDER
+					| SWT.READ_ONLY | SWT.WRAP | SWT.V_SCROLL);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			gd.widthHint = 190;
+			gd.heightHint = 90;
+			urlText.setLayoutData(gd);
+
+            // add optional properties tab
+            TabItem optionalPropsTab = new TabItem( tabComposite, SWT.None );
+            optionalPropsTab.setText( ConnectivityUIPlugin.getDefault()
+                    .getResourceString( "CommonDriverUIContributor.optionaltab" ) ); //$NON-NLS-1$
+            optionalPropsComposite = new OptionalPropertiesPane( tabComposite, SWT.NULL, isReadOnly );
+            optionalPropsTab.setControl( optionalPropsComposite );
+
+            parentComposite.setContent(tabComposite);
+            parentComposite.setMinSize(tabComposite.computeSize(SWT.DEFAULT,
+                    SWT.DEFAULT));
+
+			initialize();
+		}
+		return parentComposite;
+	}
+
+	public void setConnectionInformation() {
+		properties.setProperty(
+				IJDBCDriverDefinitionConstants.DATABASE_NAME_PROP_ID,
+				this.databaseText.getText().trim());
+		properties.setProperty(IJDBCDriverDefinitionConstants.PASSWORD_PROP_ID,
+				this.passwordText.getText());
+
+		properties.setProperty(IJDBCDriverDefinitionConstants.USERNAME_PROP_ID,
+				this.usernameText.getText());
+		properties.setProperty(IJDBCDriverDefinitionConstants.URL_PROP_ID,
+				this.urlText.getText().trim());
+
+		properties.setProperty(
+				IJDBCConnectionProfileConstants.SAVE_PASSWORD_PROP_ID, String
+						.valueOf(savePasswordButton.getSelection()));
+        optionalPropsComposite.setConnectionInformation();
+		this.contributorInformation.setProperties(properties);
+	}
+
+	public void updateURL() {
+		String url = "jdbc:derby://" + hostText.getText().trim(); //$NON-NLS-1$
+		if (portText.getText().trim().length() > 0) {
+			url += ":" + portText.getText().trim(); //$NON-NLS-1$
+		}
+		url += "/" + databaseText.getText().trim(); //$NON-NLS-1$
+		if (createCheck.getSelection()) {
+			url += ";" + CREATE_EQUALS_TRUE_TEXT; //$NON-NLS-1$
+		}
+		if (upgradeCheck.getSelection()) {
+			url += ";" + UPGRADE_EQUALS_TRUE_TEXT; //$NON-NLS-1$
+		}
+		urlText.setText(url);
+	}
+
+	private void removeListeners() {
+		databaseText.removeListener(SWT.Modify, this);
+		hostText.removeListener(SWT.Modify, this);
+		portText.removeListener(SWT.Modify, this);
+		usernameText.removeListener(SWT.Modify, this);
+		passwordText.removeListener(SWT.Modify, this);
+		createCheck.removeListener(SWT.Selection, this);
+		upgradeCheck.removeListener(SWT.Selection, this);
+		savePasswordButton.removeListener(SWT.Selection, this);
+	}
+
+	private void addListeners() {
+		databaseText.addListener(SWT.Modify, this);
+		hostText.addListener(SWT.Modify, this);
+		portText.addListener(SWT.Modify, this);
+		usernameText.addListener(SWT.Modify, this);
+		passwordText.addListener(SWT.Modify, this);
+		createCheck.addListener(SWT.Selection, this);
+		upgradeCheck.addListener(SWT.Selection, this);
+		savePasswordButton.addListener(SWT.Selection, this);
+	}
+
+	private void initialize() {
+		updateURL();
+		addListeners();
+	}
+
+	public void handleEvent(Event event) {	
+		if (isReadOnly){
+			if (event.widget == savePasswordButton){
+				savePasswordButton.setSelection(!savePasswordButton.getSelection());
+			} else if (event.widget == createCheck){
+				createCheck.setSelection(!createCheck.getSelection());
+			} else if (event.widget == upgradeCheck){
+				upgradeCheck.setSelection(!upgradeCheck.getSelection());
+			}	
+		} else {
+			updateURL();
+			setConnectionInformation();
+		}
+	}
+
+	public boolean determineContributorCompletion() {
+		boolean isComplete = true;
+		if (databaseText.getText().trim().length() < 1) {
+			parentPage.setErrorMessage(MessageFormat.format(Messages
+					.getString("CUI_NEWCW_VALIDATE_DATABASE_REQ_UI_"), //$NON-NLS-1$
+					new Object[] { Messages
+							.getString("CUI_NEWCW_DEFDBNAME_VAL_UI_") })); //$NON-NLS-1$
+			isComplete = false;
+		} else if (hostText.getText().trim().length() < 1) {
+			parentPage.setErrorMessage(Messages
+					.getString("CUI_NEWCW_VALIDATE_HOST_REQ_UI_")); //$NON-NLS-1$
+			isComplete = false;
+		} else if (usernameText.getText().trim().length() < 1) {
+			parentPage.setErrorMessage(Messages
+					.getString("CUI_NEWCW_VALIDATE_USERID_REQ_UI_")); //$NON-NLS-1$
+			isComplete = false;
+		} else if (passwordText.getText().trim().length() < 1) {
+			parentPage.setErrorMessage(Messages
+					.getString("CUI_NEWCW_VALIDATE_PASSWORD_REQ_UI_")); //$NON-NLS-1$
+			isComplete = false;
+        } else if (!optionalPropsComposite.validateControl(parentPage)) {
+            isComplete = false;
+        } 
+
+		if (isComplete) {
+			parentPage.setErrorMessage(null);
+		}
+		return isComplete;
+	}
+
+	public void setDialogPage(DialogPage parentPage) {
+		this.parentPage = parentPage;
+	}
+
+	public void setDriverUIContributorInformation(
+			IDriverUIContributorInformation contributorInformation) {
+		this.contributorInformation = contributorInformation;
+		this.properties = contributorInformation.getProperties();
+        optionalPropsComposite.setDriverUIContributorInformation( contributorInformation );
+	}
+
+	public void loadProperties() {
+		removeListeners();
+		DerbyClientJDBCURL url = new DerbyClientJDBCURL(this.properties
+				.getProperty(IJDBCDriverDefinitionConstants.URL_PROP_ID));
+		hostText.setText(url.getNode());
+		portText.setText(url.getPort());
+		databaseText.setText(url.getDatabaseName());
+
+		String username = this.properties
+				.getProperty(IJDBCDriverDefinitionConstants.USERNAME_PROP_ID);
+		if (username != null) {
+			usernameText.setText(username);
+		}
+		String password = this.properties
+				.getProperty(IJDBCDriverDefinitionConstants.PASSWORD_PROP_ID);
+		if (password != null) {
+			passwordText.setText(password);
+		}
+		if (!(url.getProperties().indexOf(CREATE_EQUALS_TRUE_TEXT) > -1)) {
+			createCheck.setSelection(false);
+		}
+		if ((url.getProperties().indexOf(UPGRADE_EQUALS_TRUE_TEXT) > -1)) {
+			upgradeCheck.setSelection(true);
+		}
+		String savePassword = this.properties
+				.getProperty(IJDBCConnectionProfileConstants.SAVE_PASSWORD_PROP_ID);
+		if ((savePassword != null)
+				&& Boolean.valueOf(savePassword) == Boolean.TRUE) {
+			savePasswordButton.setSelection(true);
+		}
+        
+        // load optional connection properties
+        optionalPropsComposite.loadProperties();
+
+        updateURL();
+		addListeners();
+		setConnectionInformation();
+	}
+
+	public List getSummaryData() {
+		List summaryData = new ArrayList();
+
+		summaryData.add(new String[] { CUI_NEWCW_DATABASE_SUMMARY_DATA_TEXT_,
+				this.databaseText.getText().trim() });
+		summaryData.add(new String[] { CUI_NEWCW_HOST_SUMMARY_DATA_TEXT_,
+				this.hostText.getText().trim() });
+		summaryData.add(new String[] { CUI_NEWCW_PORT_SUMMARY_DATA_TEXT_,
+				this.portText.getText().trim() });
+
+		summaryData.add(new String[] { CUI_NEWCW_USERNAME_SUMMARY_DATA_TEXT_,
+				this.usernameText.getText().trim() });
+		summaryData.add(new String[] {
+				CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_,
+				createCheck.getSelection() ? CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_
+						: CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ });
+		summaryData.add(new String[] {
+				CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_,
+				upgradeCheck.getSelection() ? CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_
+						: CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ });
+		summaryData
+				.add(new String[] {
+						CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_,
+						savePasswordButton.getSelection() ? CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_
+								: CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ });
+		summaryData.add(new String[] { CUI_NEWCW_URL_SUMMARY_DATA_TEXT_,
+				this.urlText.getText().trim() });
+		return summaryData;
+	}
+
+	private class DerbyClientJDBCURL {
+		private String subprotocol = ""; //$NON-NLS-1$
+
+		private String node = ""; //$NON-NLS-1$
+
+		private String port = ""; //$NON-NLS-1$
+
+		private String databaseName = ""; //$NON-NLS-1$
+
+		private String properties = ""; //$NON-NLS-1$
+
+		/**
+		 * @param url
+		 */
+		public DerbyClientJDBCURL(String url) {
+			if (url != null) {
+				parseURL(url);
+			}
+		}
+
+		/**
+		 * @return Returns the databaseName.
+		 */
+		public String getDatabaseName() {
+			return databaseName;
+		}
+
+		/**
+		 * @return Returns the node.
+		 */
+		public String getNode() {
+			return node;
+		}
+
+		/**
+		 * @return Returns the subprotocol.
+		 */
+		public String getSubprotocol() {
+			return subprotocol;
+		}
+
+		private void parseURL(String url) {
+			try {
+				String remainingURL = url.substring(url.indexOf(':') + 1);
+				this.subprotocol = remainingURL.substring(0, remainingURL
+						.indexOf(':'));
+				remainingURL = remainingURL
+						.substring(remainingURL.indexOf(':') + 3);
+				this.node = remainingURL
+						.substring(0, remainingURL.indexOf('/'));
+				if (this.node.indexOf(':') > -1) {
+					this.port = this.node.substring(this.node.indexOf(':') + 1);
+					this.node = this.node.substring(0, this.node.indexOf(':'));
+				}
+				remainingURL = remainingURL
+						.substring(remainingURL.indexOf('/') + 1);
+				if (remainingURL.indexOf('"') > -1) {
+					remainingURL = remainingURL.substring(remainingURL
+							.indexOf('"') + 1);
+					this.databaseName = "\"" //$NON-NLS-1$
+							+ remainingURL.substring(0, remainingURL
+									.indexOf('"') + 1);
+					remainingURL = remainingURL.substring(remainingURL
+							.indexOf('"') + 1);
+					this.properties = remainingURL;
+				} else {
+					if (remainingURL.indexOf(';') > -1) {
+						this.databaseName = remainingURL.substring(0,
+								remainingURL.indexOf(';'));
+						remainingURL = remainingURL.substring(remainingURL
+								.indexOf(';') + 1);
+						this.properties = remainingURL;
+					} else {
+						this.databaseName = remainingURL;
+					}
+				}
+			} catch (Exception e) {
+			}
+		}
+
+		/**
+		 * @return Returns the port.
+		 */
+		public String getPort() {
+			return port;
+		}
+
+		/**
+		 * @return Returns the properties.
+		 */
+		public String getProperties() {
+			return properties;
+		}
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyDriverUIContributor.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyDriverUIContributor.java
new file mode 100644
index 0000000..698a25d
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyDriverUIContributor.java
@@ -0,0 +1,584 @@
+/*******************************************************************************
+ * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: IBM Corporation - initial API and implementation
+ *               Actuate Corporation - added optional properties tab
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.eclipse.datatools.connectivity.drivers.jdbc.IJDBCConnectionProfileConstants;
+import org.eclipse.datatools.connectivity.drivers.jdbc.IJDBCDriverDefinitionConstants;
+import org.eclipse.datatools.connectivity.internal.ui.ConnectivityUIPlugin;
+import org.eclipse.datatools.connectivity.ui.wizards.IDriverUIContributor;
+import org.eclipse.datatools.connectivity.ui.wizards.IDriverUIContributorInformation;
+import org.eclipse.datatools.connectivity.ui.wizards.OptionalPropertiesPane;
+import org.eclipse.jface.dialogs.DialogPage;
+import org.eclipse.osgi.util.TextProcessor;
+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.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Text;
+
+public class DerbyDriverUIContributor implements IDriverUIContributor, Listener {
+
+	protected String CUI_NEWCW_DATABASE_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_DATABASE_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_HOST_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_HOST_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_PORT_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_PORT_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_CONNECTIONURL_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_CONNECTIONURL_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_USERNAME_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_USERNAME_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_PASSWORD_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_PASSWORD_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_CREATEDB_BTN_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.2"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_UPGRADEDB_BTN_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.3"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_SAVE_PASSWORD_LBL_UI_ = Messages
+			.getString("CUI_NEWCW_SAVE_PASSWORD_LBL_UI_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_DATABASE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_DATABASE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_HOST_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_HOST_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_PORT_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_PORT_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_USERNAME_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_USERNAME_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_URL_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_URL_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_ = TextProcessor.process(Messages
+			.getString("CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_")); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CREATE_EQUALS_TRUE_TEXT = "create=true"; //$NON-NLS-1$
+
+	private static final String UPGRADE_EQUALS_TRUE_TEXT = "upgrade=true"; //$NON-NLS-1$
+
+	private Label databaseLabel;
+
+	private Text databaseText;
+
+	private Label hostLabel;
+
+	private Text hostText;
+
+	private Label portLabel;
+
+	private Text portText;
+
+	private Label usernameLabel;
+
+	private Text usernameText;
+
+	private Label passwordLabel;
+
+	private Text passwordText;
+
+	private Button createCheck;
+
+	private Button upgradeCheck;
+
+	private Button savePasswordButton;
+
+	private Label urlLabel;
+
+	private Text urlText;
+
+	private DialogPage parentPage;
+
+	private ScrolledComposite parentComposite;
+
+    private OptionalPropertiesPane optionalPropsComposite;
+
+	private IDriverUIContributorInformation contributorInformation;
+
+	private Properties properties;
+	
+	private boolean isReadOnly = false;
+
+	public Composite getContributedDriverUI(Composite parent, boolean isReadOnly) {
+
+		if ((parentComposite == null) || parentComposite.isDisposed() || (this.isReadOnly != isReadOnly)) {
+			GridData gd;
+
+			this.isReadOnly = isReadOnly;
+			int additionalStyles = SWT.NONE;
+			if (isReadOnly){
+				additionalStyles = SWT.READ_ONLY;
+			}
+			
+			parentComposite = new ScrolledComposite(parent, SWT.H_SCROLL
+					| SWT.V_SCROLL);
+			parentComposite.setExpandHorizontal(true);
+			parentComposite.setExpandVertical(true);
+			parentComposite.setLayout(new GridLayout());
+
+            TabFolder tabComposite = new TabFolder(parentComposite, SWT.TOP);
+
+            // add general tab
+            TabItem generalTab = new TabItem(tabComposite, SWT.None);
+            generalTab.setText(ConnectivityUIPlugin.getDefault()
+                    .getResourceString("CommonDriverUIContributor.generaltab")); //$NON-NLS-1$
+
+            Composite baseComposite = new Composite(tabComposite, SWT.NULL);
+			GridLayout layout = new GridLayout();
+			layout.numColumns = 3;
+			baseComposite.setLayout(layout);
+            generalTab.setControl(baseComposite);
+
+			databaseLabel = new Label(baseComposite, SWT.NONE);
+			databaseLabel.setText(CUI_NEWCW_DATABASE_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			databaseLabel.setLayoutData(gd);
+
+			databaseText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER | additionalStyles);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.horizontalAlignment = GridData.FILL;
+			gd.horizontalSpan = 2;
+			databaseText.setLayoutData(gd);
+
+			hostLabel = new Label(baseComposite, SWT.NONE);
+			hostLabel.setText(CUI_NEWCW_HOST_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			hostLabel.setLayoutData(gd);
+
+			hostText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.horizontalSpan = 2;
+			gd.grabExcessHorizontalSpace = true;
+			hostText.setLayoutData(gd);
+
+			portLabel = new Label(baseComposite, SWT.NONE);
+			portLabel.setText(CUI_NEWCW_PORT_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			portLabel.setLayoutData(gd);
+
+			portText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			portText.setLayoutData(gd);
+
+			usernameLabel = new Label(baseComposite, SWT.NONE);
+			usernameLabel.setText(CUI_NEWCW_USERNAME_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			usernameLabel.setLayoutData(gd);
+
+			usernameText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			usernameText.setLayoutData(gd);
+
+			passwordLabel = new Label(baseComposite, SWT.NONE);
+			passwordLabel.setText(CUI_NEWCW_PASSWORD_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			passwordLabel.setLayoutData(gd);
+
+			passwordText = new Text(baseComposite, SWT.SINGLE | SWT.BORDER
+					| SWT.PASSWORD | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			passwordText.setLayoutData(gd);
+
+			createCheck = new Button(baseComposite, SWT.CHECK);
+			createCheck.setText(CUI_NEWCW_CREATEDB_BTN_UI_);
+			createCheck.setSelection(true);
+			gd = new GridData();
+			gd.horizontalSpan = 3;
+			createCheck.setLayoutData(gd);
+
+			upgradeCheck = new Button(baseComposite, SWT.CHECK);
+			upgradeCheck.setText(CUI_NEWCW_UPGRADEDB_BTN_UI_);
+			upgradeCheck.setSelection(false);
+			gd = new GridData();
+			gd.horizontalSpan = 3;
+			upgradeCheck.setLayoutData(gd);
+
+			this.savePasswordButton = new Button(baseComposite, SWT.CHECK);
+			this.savePasswordButton.setText(CUI_NEWCW_SAVE_PASSWORD_LBL_UI_);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.horizontalSpan = 3;
+			gd.grabExcessHorizontalSpace = true;
+			savePasswordButton.setLayoutData(gd);
+
+			urlLabel = new Label(baseComposite, SWT.NONE);
+			urlLabel.setText(CUI_NEWCW_CONNECTIONURL_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			urlLabel.setLayoutData(gd);
+
+			urlText = new Text(baseComposite, SWT.MULTI | SWT.BORDER
+					| SWT.READ_ONLY | SWT.WRAP | SWT.V_SCROLL);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			gd.widthHint = 190;
+			gd.heightHint = 90;
+			urlText.setLayoutData(gd);
+
+            // add optional properties tab
+            TabItem optionalPropsTab = new TabItem( tabComposite, SWT.None );
+            optionalPropsTab.setText( ConnectivityUIPlugin.getDefault()
+                    .getResourceString( "CommonDriverUIContributor.optionaltab" ) ); //$NON-NLS-1$
+            optionalPropsComposite = new OptionalPropertiesPane( tabComposite, SWT.NULL, isReadOnly );
+            optionalPropsTab.setControl( optionalPropsComposite );
+
+            parentComposite.setContent(tabComposite);
+            parentComposite.setMinSize(tabComposite.computeSize(SWT.DEFAULT,
+                    SWT.DEFAULT));
+
+			initialize();
+		}
+		return parentComposite;
+	}
+
+	public void setConnectionInformation() {
+		properties.setProperty(
+				IJDBCDriverDefinitionConstants.DATABASE_NAME_PROP_ID,
+				this.databaseText.getText().trim());
+		properties.setProperty(IJDBCDriverDefinitionConstants.PASSWORD_PROP_ID,
+				this.passwordText.getText());
+
+		properties.setProperty(IJDBCDriverDefinitionConstants.USERNAME_PROP_ID,
+				this.usernameText.getText());
+		properties.setProperty(IJDBCDriverDefinitionConstants.URL_PROP_ID,
+				this.urlText.getText().trim());
+
+		properties.setProperty(
+				IJDBCConnectionProfileConstants.SAVE_PASSWORD_PROP_ID, String
+						.valueOf(savePasswordButton.getSelection()));
+        optionalPropsComposite.setConnectionInformation();
+		this.contributorInformation.setProperties(properties);
+	}
+
+	public void updateURL() {
+		String url = "jdbc:derby:net://" + hostText.getText().trim(); //$NON-NLS-1$
+		if (portText.getText().trim().length() > 0) {
+			url += ":" + portText.getText().trim(); //$NON-NLS-1$
+		}
+		url += "/" + databaseText.getText().trim() //$NON-NLS-1$
+				+ ":retrieveMessagesFromServerOnGetMessage=true;"; //$NON-NLS-1$
+		if (createCheck.getSelection()) {
+			url += CREATE_EQUALS_TRUE_TEXT + ";"; //$NON-NLS-1$
+		}
+		if (upgradeCheck.getSelection()) {
+			url += UPGRADE_EQUALS_TRUE_TEXT + ";"; //$NON-NLS-1$
+		}
+		urlText.setText(url);
+	}
+
+	private void removeListeners() {
+		databaseText.removeListener(SWT.Modify, this);
+		hostText.removeListener(SWT.Modify, this);
+		portText.removeListener(SWT.Modify, this);
+		usernameText.removeListener(SWT.Modify, this);
+		passwordText.removeListener(SWT.Modify, this);
+		createCheck.removeListener(SWT.Selection, this);
+		upgradeCheck.removeListener(SWT.Selection, this);
+		savePasswordButton.removeListener(SWT.Selection, this);
+	}
+
+	private void addListeners() {
+		databaseText.addListener(SWT.Modify, this);
+		hostText.addListener(SWT.Modify, this);
+		portText.addListener(SWT.Modify, this);
+		usernameText.addListener(SWT.Modify, this);
+		passwordText.addListener(SWT.Modify, this);
+		createCheck.addListener(SWT.Selection, this);
+		upgradeCheck.addListener(SWT.Selection, this);
+		savePasswordButton.addListener(SWT.Selection, this);
+	}
+
+	private void initialize() {
+		updateURL();
+		addListeners();
+	}
+
+	public void handleEvent(Event event) {
+		if (isReadOnly){
+			if (event.widget == savePasswordButton){
+				savePasswordButton.setSelection(!savePasswordButton.getSelection());
+			} else if (event.widget == createCheck){
+				createCheck.setSelection(!createCheck.getSelection());
+			} else if (event.widget == upgradeCheck){
+				upgradeCheck.setSelection(!upgradeCheck.getSelection());
+			}	
+		} else {
+			updateURL();
+			setConnectionInformation();
+		}
+	}
+
+	public boolean determineContributorCompletion() {
+		boolean isComplete = true;
+		if (databaseText.getText().trim().length() < 1) {
+			parentPage.setErrorMessage(MessageFormat.format(Messages
+					.getString("CUI_NEWCW_VALIDATE_DATABASE_REQ_UI_"), //$NON-NLS-1$
+					new Object[] { Messages
+							.getString("CUI_NEWCW_DEFDBNAME_VAL_UI_") })); //$NON-NLS-1$
+			isComplete = false;
+		} else if (hostText.getText().trim().length() < 1) {
+			parentPage.setErrorMessage(Messages
+					.getString("CUI_NEWCW_VALIDATE_HOST_REQ_UI_")); //$NON-NLS-1$
+			isComplete = false;
+		} else if (usernameText.getText().trim().length() < 1) {
+			parentPage.setErrorMessage(Messages
+					.getString("CUI_NEWCW_VALIDATE_USERID_REQ_UI_")); //$NON-NLS-1$
+			isComplete = false;
+		} else if (passwordText.getText().trim().length() < 1) {
+			parentPage.setErrorMessage(Messages
+					.getString("CUI_NEWCW_VALIDATE_PASSWORD_REQ_UI_")); //$NON-NLS-1$
+			isComplete = false;
+        } else if (!optionalPropsComposite.validateControl(parentPage)) {
+            isComplete = false;
+        } 
+
+		if (isComplete) {
+			parentPage.setErrorMessage(null);
+		}
+		return isComplete;
+	}
+
+	public void setDialogPage(DialogPage parentPage) {
+		this.parentPage = parentPage;
+	}
+
+	public void setDriverUIContributorInformation(
+			IDriverUIContributorInformation contributorInformation) {
+		this.contributorInformation = contributorInformation;
+		this.properties = contributorInformation.getProperties();
+        optionalPropsComposite.setDriverUIContributorInformation( contributorInformation );
+	}
+
+	public void loadProperties() {
+		removeListeners();
+		DerbyJDBCURL url = new DerbyJDBCURL(this.properties
+				.getProperty(IJDBCDriverDefinitionConstants.URL_PROP_ID));
+		hostText.setText(url.getNode());
+		portText.setText(url.getPort());
+		databaseText.setText(url.getDatabaseName());
+
+		String username = this.properties
+				.getProperty(IJDBCDriverDefinitionConstants.USERNAME_PROP_ID);
+		if (username != null) {
+			usernameText.setText(username);
+		}
+		String password = this.properties
+				.getProperty(IJDBCDriverDefinitionConstants.PASSWORD_PROP_ID);
+		if (password != null) {
+			passwordText.setText(password);
+		}
+		if (!(url.getProperties().indexOf(CREATE_EQUALS_TRUE_TEXT) > -1)) {
+			createCheck.setSelection(false);
+		}
+		if ((url.getProperties().indexOf(UPGRADE_EQUALS_TRUE_TEXT) > -1)) {
+			upgradeCheck.setSelection(true);
+		}
+		String savePassword = this.properties
+				.getProperty(IJDBCConnectionProfileConstants.SAVE_PASSWORD_PROP_ID);
+		if ((savePassword != null)
+				&& Boolean.valueOf(savePassword) == Boolean.TRUE) {
+			savePasswordButton.setSelection(true);
+		}
+        
+        // load optional connection properties
+        optionalPropsComposite.loadProperties();
+
+        updateURL();
+		addListeners();
+		setConnectionInformation();
+	}
+
+	public List getSummaryData() {
+		List summaryData = new ArrayList();
+
+		summaryData.add(new String[] { CUI_NEWCW_DATABASE_SUMMARY_DATA_TEXT_,
+				this.databaseText.getText().trim() });
+		summaryData.add(new String[] { CUI_NEWCW_HOST_SUMMARY_DATA_TEXT_,
+				this.hostText.getText().trim() });
+		summaryData.add(new String[] { CUI_NEWCW_PORT_SUMMARY_DATA_TEXT_,
+				this.portText.getText().trim() });
+
+		summaryData.add(new String[] { CUI_NEWCW_USERNAME_SUMMARY_DATA_TEXT_,
+				this.usernameText.getText().trim() });
+		summaryData.add(new String[] {
+				CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_,
+				createCheck.getSelection() ? CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_
+						: CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ });
+		summaryData.add(new String[] {
+				CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_,
+				upgradeCheck.getSelection() ? CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_
+						: CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ });
+		summaryData
+				.add(new String[] {
+						CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_,
+						savePasswordButton.getSelection() ? CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_
+								: CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ });
+		summaryData.add(new String[] { CUI_NEWCW_URL_SUMMARY_DATA_TEXT_,
+				this.urlText.getText().trim() });
+		return summaryData;
+	}
+
+	private class DerbyJDBCURL {
+		private String subprotocol = ""; //$NON-NLS-1$
+
+		private String node = ""; //$NON-NLS-1$
+
+		private String port = ""; //$NON-NLS-1$
+
+		private String databaseName = ""; //$NON-NLS-1$
+
+		private String properties = ""; //$NON-NLS-1$
+
+		/**
+		 * @param url
+		 */
+		public DerbyJDBCURL(String url) {
+			if (url != null) {
+				parseURL(url);
+			}
+		}
+
+		/**
+		 * @return Returns the databaseName.
+		 */
+		public String getDatabaseName() {
+			return databaseName;
+		}
+
+		/**
+		 * @return Returns the node.
+		 */
+		public String getNode() {
+			return node;
+		}
+
+		/**
+		 * @return Returns the subprotocol.
+		 */
+		public String getSubprotocol() {
+			return subprotocol;
+		}
+
+		private void parseURL(String url) {
+			try {
+				String remainingURL = url.substring(url.indexOf(':') + 1);
+				this.subprotocol = remainingURL.substring(0, remainingURL
+						.indexOf(':'));
+				remainingURL = remainingURL
+						.substring(remainingURL.indexOf(':') + 1);
+				this.subprotocol += ":" //$NON-NLS-1$
+						+ remainingURL.substring(0, remainingURL.indexOf(':'));
+				remainingURL = remainingURL
+						.substring(remainingURL.indexOf(':') + 3);
+				this.node = remainingURL
+						.substring(0, remainingURL.indexOf('/'));
+				if (this.node.indexOf(':') > -1) {
+					this.port = this.node.substring(this.node.indexOf(':') + 1);
+					this.node = this.node.substring(0, this.node.indexOf(':'));
+				}
+				remainingURL = remainingURL
+						.substring(remainingURL.indexOf('/') + 1);
+				if (remainingURL.indexOf('"') > -1) {
+					remainingURL = remainingURL.substring(remainingURL
+							.indexOf('"') + 1);
+					this.databaseName = "\"" //$NON-NLS-1$
+							+ remainingURL.substring(0, remainingURL
+									.indexOf('"') + 1);
+					remainingURL = remainingURL.substring(remainingURL
+							.indexOf('"') + 2);
+					this.properties = remainingURL;
+				} else {
+					if (remainingURL.indexOf(':') > -1) {
+						this.databaseName = remainingURL.substring(0,
+								remainingURL.indexOf(':'));
+						remainingURL = remainingURL.substring(remainingURL
+								.indexOf(':') + 1);
+						this.properties = remainingURL;
+					} else {
+						this.databaseName = remainingURL;
+					}
+				}
+			} catch (Exception e) {
+			}
+		}
+
+		/**
+		 * @return Returns the port.
+		 */
+		public String getPort() {
+			return port;
+		}
+
+		/**
+		 * @return Returns the properties.
+		 */
+		public String getProperties() {
+			return properties;
+		}
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyEmbeddedDriverUIContributor.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyEmbeddedDriverUIContributor.java
new file mode 100644
index 0000000..c33414f
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyEmbeddedDriverUIContributor.java
@@ -0,0 +1,582 @@
+/*******************************************************************************
+ * Copyright (c) 2004-2006, 2007, 2008 Sybase, Inc.
+ * 
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: brianf - initial API and implementation
+ *     IBM Corporation - migrated to new wizard framework
+ *     IBM Corporation - defect fix #213266
+ *     IBM Corporation - defect fix #223677
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.datatools.connectivity.ConnectionProfileConstants;
+import org.eclipse.datatools.connectivity.drivers.DriverInstance;
+import org.eclipse.datatools.connectivity.drivers.DriverManager;
+import org.eclipse.datatools.connectivity.drivers.jdbc.IJDBCConnectionProfileConstants;
+import org.eclipse.datatools.connectivity.drivers.jdbc.IJDBCDriverDefinitionConstants;
+import org.eclipse.datatools.connectivity.internal.ui.DelimitedStringList;
+import org.eclipse.datatools.connectivity.ui.wizards.IDriverUIContributor;
+import org.eclipse.datatools.connectivity.ui.wizards.IDriverUIContributorInformation;
+import org.eclipse.jface.dialogs.DialogPage;
+import org.eclipse.osgi.util.TextProcessor;
+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.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Text;
+
+public class DerbyEmbeddedDriverUIContributor implements IDriverUIContributor,
+		Listener, ModifyListener {
+
+	private static final String CUI_NEWCW_GENERAL_TAB_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.general.tab"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_OPTIONAL_TAB_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.optional.tab"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_DBLOCATION_LBL_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.0"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_DBBROWSE_BTN_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.1"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_CREATEDB_BTN_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.2"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_UPGRADEDB_BTN_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.3"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_USERNAME_LBL_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.userName.label"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_PASSWORD_LBL_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.password.label"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_SAVE_PASSWORD_LBL_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.persistpassword.label"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_CONNECTIONURL_LBL_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.url.label"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_OPTIONAL_PROPERTIES_LBL_UI_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.optionalproperties.label"); //$NON-NLS-1$	
+
+	private static final String CUI_NEWCW_DRIVER_NAME_SUMMARY_DATA_TEXT_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.summary.driverName.label"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_DATABASE_LOCATION_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_DATABASE_LOCATION_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_USERNAME_SUMMARY_DATA_TEXT_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.summary.userName.label"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_URL_SUMMARY_DATA_TEXT_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.summary.url.label"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_ = TextProcessor.process(Messages
+			.getString("CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_")); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_OPTIONAL_CONNECTION_PROPERTIES_SUMMARY_DATA_TEXT_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.summary.connProps.label"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ = Messages
+			.getString("CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_FILE_BROWSER_TITLE_TEXT_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.FileDialog.title.filebrowse"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_FILE_BROWSER_MESSAGE_TEXT_ = Messages
+			.getString("DerbyEmbeddedDriverUIContributor.FileDialog.msg.filebrowse"); //$NON-NLS-1$
+
+	private static final String CUI_NEWCW_VALIDATE_DBLOCATION_REQ_UI_ = Messages
+			.getString("CUI_NEWCW_VALIDATE_DBLOCATION_REQ_UI_"); //$NON-NLS-1$
+
+	private static final String CREATE_EQUALS_TRUE_TEXT = "create=true"; //$NON-NLS-1$
+
+	private static final String UPGRADE_EQUALS_TRUE_TEXT = "upgrade=true"; //$NON-NLS-1$
+
+	private ScrolledComposite parentComposite;
+
+	private Label databaseLocationLabel;
+
+	private Combo databaseLocationCombo;
+
+	private Button browseDatabaseLocation;
+
+	private Button createCheck;
+
+	private Button upgradeCheck;
+
+	private Label usernameLabel;
+
+	private Text usernameText;
+
+	private Label passwordLabel;
+
+	private Text passwordText;
+
+	private Button savePasswordButton;
+
+	private Label urlLabel;
+
+	private Text urlText;
+
+	private DelimitedStringList optionalConnectionProperties;
+
+	private DialogPage parentPage;
+
+	private IDriverUIContributorInformation contributorInformation;
+
+	private Properties properties;
+
+	private String databaseName;
+
+	private boolean isReadOnly = false;
+	
+	public boolean determineContributorCompletion() {
+		boolean isComplete = true;
+		if (databaseLocationCombo.getText().equals("")) //$NON-NLS-1$
+		{
+			parentPage.setErrorMessage(CUI_NEWCW_VALIDATE_DBLOCATION_REQ_UI_); //$NON-NLS-1$
+			isComplete = false;
+		}
+
+		if (isComplete) {
+			parentPage.setErrorMessage(null);
+		}
+		return isComplete;
+	}
+
+	public Composite getContributedDriverUI(Composite parent, boolean isReadOnly) {
+		if (parentComposite == null || parentComposite.isDisposed() || (this.isReadOnly != isReadOnly)) {
+			this.isReadOnly = isReadOnly;
+			int additionalStyles = SWT.NONE;
+			if (isReadOnly){
+				additionalStyles = SWT.READ_ONLY;
+			}
+			
+			parentComposite = new ScrolledComposite(parent, SWT.H_SCROLL
+					| SWT.V_SCROLL);
+			parentComposite.setExpandHorizontal(true);
+			parentComposite.setExpandVertical(true);
+			parentComposite.setLayout(new GridLayout());
+
+			TabFolder baseComposite = new TabFolder(parentComposite, SWT.TOP);
+
+			TabItem generalTab = new TabItem(baseComposite, SWT.None);
+			generalTab.setText(CUI_NEWCW_GENERAL_TAB_UI_); //$NON-NLS-1$
+
+			TabItem optionalTab = new TabItem(baseComposite, SWT.None);
+			optionalTab.setText(CUI_NEWCW_OPTIONAL_TAB_UI_); //$NON-NLS-1$
+
+			Composite generalComposite = new Composite(baseComposite, SWT.NULL);
+			GridLayout layout = new GridLayout();
+			layout.numColumns = 3;
+			generalComposite.setLayout(layout);
+			generalTab.setControl(generalComposite);
+
+			Composite optionalComposite = new Composite(baseComposite, SWT.NULL);
+			layout = new GridLayout();
+			layout.numColumns = 1;
+			optionalComposite.setLayout(layout);
+			optionalTab.setControl(optionalComposite);
+
+			GridData gd;
+
+			databaseLocationLabel = new Label(generalComposite, SWT.NONE);
+			databaseLocationLabel.setText(CUI_NEWCW_DBLOCATION_LBL_UI_);
+
+			Composite textAndBrowseComposite = new Composite(generalComposite,
+					SWT.NULL);
+			GridLayout subCompositeLayout = new GridLayout(2, false);
+			subCompositeLayout.marginLeft = -5;
+			subCompositeLayout.marginRight = -5;
+			subCompositeLayout.marginTop = -5;
+			subCompositeLayout.marginBottom = -5;
+			textAndBrowseComposite.setLayout(subCompositeLayout);
+			gd = new GridData(GridData.FILL_HORIZONTAL);
+			gd.horizontalSpan = 2;
+			textAndBrowseComposite.setLayoutData(gd);
+
+			databaseLocationCombo = new Combo(textAndBrowseComposite,
+					SWT.SINGLE | SWT.BORDER);
+			databaseLocationCombo.setEnabled(!isReadOnly);
+			gd = new GridData(GridData.FILL_HORIZONTAL);
+			databaseLocationCombo.setLayoutData(gd);
+
+			browseDatabaseLocation = new Button(textAndBrowseComposite,
+					SWT.PUSH);
+			browseDatabaseLocation.setEnabled(!isReadOnly);
+			browseDatabaseLocation.setText(CUI_NEWCW_DBBROWSE_BTN_UI_);
+			browseDatabaseLocation.setLayoutData(new GridData(
+					GridData.HORIZONTAL_ALIGN_END));
+			browseDatabaseLocation.addListener(SWT.Selection, new Listener() {
+
+				public void handleEvent(Event event) {
+					DerbyEmbeddedDriverUIContributor.this.browseForDBFolder();
+				}
+
+			});
+			usernameLabel = new Label(generalComposite, SWT.NONE);
+			usernameLabel.setText(CUI_NEWCW_USERNAME_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			usernameLabel.setLayoutData(gd);
+
+			usernameText = new Text(generalComposite, SWT.SINGLE | SWT.BORDER | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			usernameText.setLayoutData(gd);
+
+			passwordLabel = new Label(generalComposite, SWT.NONE);
+			passwordLabel.setText(CUI_NEWCW_PASSWORD_LBL_UI_);
+			gd = new GridData();
+			gd.verticalAlignment = GridData.BEGINNING;
+			passwordLabel.setLayoutData(gd);
+
+			passwordText = new Text(generalComposite, SWT.SINGLE | SWT.BORDER
+					| SWT.PASSWORD | additionalStyles);
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.grabExcessHorizontalSpace = true;
+			gd.horizontalSpan = 2;
+			passwordText.setLayoutData(gd);
+
+			urlLabel = new Label(generalComposite, SWT.NONE);
+			urlLabel.setText(CUI_NEWCW_CONNECTIONURL_LBL_UI_);
+
+			urlText = new Text(generalComposite, SWT.SINGLE | SWT.BORDER
+					| SWT.READ_ONLY);
+			gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+			gd.horizontalSpan = 2;
+			urlText.setLayoutData(gd);
+
+			createCheck = new Button(generalComposite, SWT.CHECK);
+			createCheck.setText(CUI_NEWCW_CREATEDB_BTN_UI_);
+			createCheck.setSelection(true);
+			gd = new GridData();
+			gd.horizontalSpan = 3;
+			createCheck.setLayoutData(gd);
+
+			upgradeCheck = new Button(generalComposite, SWT.CHECK);
+			upgradeCheck.setText(CUI_NEWCW_UPGRADEDB_BTN_UI_);
+			upgradeCheck.setSelection(false);
+			gd = new GridData();
+			gd.horizontalSpan = 3;
+			upgradeCheck.setLayoutData(gd);
+
+			this.savePasswordButton = new Button(generalComposite, SWT.CHECK);
+			this.savePasswordButton.setText(CUI_NEWCW_SAVE_PASSWORD_LBL_UI_); //$NON-NLS-1$
+			gd = new GridData();
+			gd.horizontalAlignment = GridData.FILL;
+			gd.verticalAlignment = GridData.BEGINNING;
+			gd.horizontalSpan = 3;
+			gd.grabExcessHorizontalSpace = true;
+			savePasswordButton.setLayoutData(gd);
+
+			Label optionalPropertiesLabel = new Label(optionalComposite,
+					SWT.NULL);
+			GridData gdata = new GridData(GridData.FILL_HORIZONTAL);
+			gdata.horizontalSpan = 2;
+			optionalPropertiesLabel.setLayoutData(gdata);
+			optionalPropertiesLabel
+					.setText(CUI_NEWCW_OPTIONAL_PROPERTIES_LBL_UI_); //$NON-NLS-1$
+
+			optionalConnectionProperties = new DelimitedStringList(
+					optionalComposite, SWT.NONE, isReadOnly);
+			gdata = new GridData(GridData.FILL_HORIZONTAL);
+			gdata.horizontalSpan = 2;
+			optionalConnectionProperties.setLayoutData(gdata);
+
+			parentComposite.setContent(baseComposite);
+			parentComposite.setMinSize(baseComposite.computeSize(SWT.DEFAULT,
+					SWT.DEFAULT));
+
+			initialize();
+		}
+
+		return parentComposite;
+	}
+
+	private void initialize() {
+		updateURL();
+		addListeners();
+	}
+
+	public List getSummaryData() {
+		List summaryData = new ArrayList();
+		String driverID = this.properties
+				.getProperty(ConnectionProfileConstants.PROP_DRIVER_DEFINITION_ID);
+		DriverInstance driverInstance = DriverManager.getInstance()
+				.getDriverInstanceByID(driverID);
+
+		summaryData.add(new String[] {
+				CUI_NEWCW_DRIVER_NAME_SUMMARY_DATA_TEXT_, //$NON-NLS-1$
+				driverInstance.getName() });
+		summaryData.add(new String[] {
+				CUI_NEWCW_DATABASE_LOCATION_SUMMARY_DATA_TEXT_,
+				this.databaseLocationCombo.getText().trim() });
+
+		summaryData.add(new String[] { CUI_NEWCW_USERNAME_SUMMARY_DATA_TEXT_,
+				this.usernameText.getText().trim() });
+		summaryData.add(new String[] { CUI_NEWCW_URL_SUMMARY_DATA_TEXT_,
+				this.urlText.getText().trim() });
+		summaryData.add(new String[] {
+				CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_,
+				createCheck.getSelection() ? CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_
+						: CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ });
+		summaryData.add(new String[] {
+				CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_,
+				upgradeCheck.getSelection() ? CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_
+						: CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ });
+		summaryData
+				.add(new String[] {
+						CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_,
+						savePasswordButton.getSelection() ? CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_
+								: CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ });
+		summaryData.add(new String[] {
+				CUI_NEWCW_OPTIONAL_CONNECTION_PROPERTIES_SUMMARY_DATA_TEXT_, //$NON-NLS-1$
+				optionalConnectionProperties.getSelection() });
+		return summaryData;
+	}
+
+	public void loadProperties() {
+		removeListeners();
+		DerbyEmbeddedJDBCURL url = new DerbyEmbeddedJDBCURL(this.properties
+				.getProperty(IJDBCDriverDefinitionConstants.URL_PROP_ID));
+		databaseLocationCombo.setText(url.getNode());
+		updateDatabaseName();
+		String username = this.properties
+				.getProperty(IJDBCDriverDefinitionConstants.USERNAME_PROP_ID);
+		if (username != null) {
+			usernameText.setText(username);
+		}
+		String password = this.properties
+				.getProperty(IJDBCDriverDefinitionConstants.PASSWORD_PROP_ID);
+		if (password != null) {
+			passwordText.setText(password);
+		}
+		String savePassword = this.properties
+				.getProperty(IJDBCConnectionProfileConstants.SAVE_PASSWORD_PROP_ID);
+		if ((savePassword != null)
+				&& Boolean.valueOf(savePassword) == Boolean.TRUE) {
+			savePasswordButton.setSelection(true);
+		}
+		if (!(url.getProperties().indexOf(CREATE_EQUALS_TRUE_TEXT) > -1)) {
+			createCheck.setSelection(false);
+		}
+		if ((url.getProperties().indexOf(UPGRADE_EQUALS_TRUE_TEXT) > -1)) {
+			upgradeCheck.setSelection(true);
+		}
+
+		String connectionProperties = this.properties
+				.getProperty(IJDBCConnectionProfileConstants.CONNECTION_PROPERTIES_PROP_ID);
+		if (connectionProperties != null) {
+			this.optionalConnectionProperties
+					.setSelection(connectionProperties);
+		}
+		updateURL();
+		addListeners();
+		setConnectionInformation();
+	}
+
+	protected void updateDatabaseName() {
+		if (databaseLocationCombo.getText() != null
+				&& !databaseLocationCombo.getText().equals("")) { //$NON-NLS-1$
+			databaseName = databaseLocationCombo.getText()
+					.substring(
+							databaseLocationCombo.getText().lastIndexOf(
+									File.separator) + 1);
+		}
+	}
+
+	public void setDialogPage(DialogPage parentPage) {
+		this.parentPage = parentPage;
+	}
+
+	public void setConnectionInformation() {
+		updateDatabaseName();
+		properties.setProperty(
+				IJDBCDriverDefinitionConstants.DATABASE_NAME_PROP_ID,
+				databaseName);
+		properties.setProperty(IJDBCDriverDefinitionConstants.PASSWORD_PROP_ID,
+				this.passwordText.getText());
+		properties.setProperty(
+				IJDBCConnectionProfileConstants.SAVE_PASSWORD_PROP_ID, String
+						.valueOf(savePasswordButton.getSelection()));
+		properties.setProperty(IJDBCDriverDefinitionConstants.USERNAME_PROP_ID,
+				this.usernameText.getText());
+		properties.setProperty(IJDBCDriverDefinitionConstants.URL_PROP_ID,
+				this.urlText.getText().trim());
+		properties.setProperty(
+				IJDBCConnectionProfileConstants.CONNECTION_PROPERTIES_PROP_ID,
+				this.optionalConnectionProperties.getSelection());
+		this.contributorInformation.setProperties(properties);
+	}
+
+	public void setDriverUIContributorInformation(
+			IDriverUIContributorInformation contributorInformation) {
+		this.contributorInformation = contributorInformation;
+		this.properties = contributorInformation.getProperties();
+	}
+
+	public void handleEvent(Event event) {
+		if (isReadOnly){
+			if (event.widget == savePasswordButton){
+				savePasswordButton.setSelection(!savePasswordButton.getSelection());
+			} else if (event.widget == createCheck){
+				createCheck.setSelection(!createCheck.getSelection());
+			} else if (event.widget == upgradeCheck){
+				upgradeCheck.setSelection(!upgradeCheck.getSelection());
+			}	
+		} else {
+			updateURL();
+			setConnectionInformation();
+		}
+	}
+
+	public void addListeners() {
+		databaseLocationCombo.addListener(SWT.Modify, this);
+		browseDatabaseLocation.addListener(SWT.Selection, this);
+		usernameText.addListener(SWT.Modify, this);
+		passwordText.addListener(SWT.Modify, this);
+		savePasswordButton.addListener(SWT.Selection, this);
+		createCheck.addListener(SWT.Selection, this);
+		upgradeCheck.addListener(SWT.Selection, this);
+		optionalConnectionProperties.addModifyListener(this);
+	}
+
+	protected void removeListeners() {
+		databaseLocationCombo.removeListener(SWT.Modify, this);
+		browseDatabaseLocation.removeListener(SWT.Selection, this);
+		usernameText.removeListener(SWT.Modify, this);
+		passwordText.removeListener(SWT.Modify, this);
+		savePasswordButton.removeListener(SWT.Selection, this);
+		createCheck.removeListener(SWT.Selection, this);
+		upgradeCheck.removeListener(SWT.Selection, this);
+		optionalConnectionProperties.removeModifyListener(this);
+	}
+
+	protected void updateURL() {
+		String url = "jdbc:derby:" + databaseLocationCombo.getText(); //$NON-NLS-1$
+		url += !createCheck.getSelection() ? "" : ";create=true"; //$NON-NLS-1$ //$NON-NLS-2$
+		url += !upgradeCheck.getSelection() ? "" : ";upgrade=true"; //$NON-NLS-1$ //$NON-NLS-2$
+		urlText.setText(url);
+	}
+
+	protected class DerbyEmbeddedJDBCURL {
+		protected String subprotocol = ""; //$NON-NLS-1$
+
+		protected String node = ""; //$NON-NLS-1$
+
+		protected String properties = ""; //$NON-NLS-1$
+
+		/**
+		 * @param url
+		 */
+		public DerbyEmbeddedJDBCURL(String url) {
+			parseURL(url);
+		}
+
+		/**
+		 * @return Returns the node.
+		 */
+		public String getNode() {
+			return node;
+		}
+
+		/**
+		 * @return Returns the subprotocol.
+		 */
+		public String getSubprotocol() {
+			return subprotocol;
+		}
+
+		protected void parseURL(String url) {
+			try {
+				String remainingURL = url.substring(url.indexOf(':') + 1);
+				this.subprotocol = remainingURL.substring(0, remainingURL
+						.indexOf(':'));
+				remainingURL = remainingURL
+						.substring(remainingURL.indexOf(':') + 1);
+				if (remainingURL.indexOf(';') > -1) {
+					this.node = remainingURL.substring(0, remainingURL
+							.indexOf(';'));
+					remainingURL = remainingURL.substring(remainingURL
+							.indexOf(';') + 1);
+					this.properties = remainingURL;
+				} else {
+					this.node = remainingURL;
+				}
+			} catch (Exception e) {
+			}
+		}
+
+		/**
+		 * @return Returns the properties.
+		 */
+		public String getProperties() {
+			return properties;
+		}
+	}
+
+	/**
+	 * Browse for the database folder
+	 */
+	private void browseForDBFolder() {
+		DirectoryDialog dialog = new DirectoryDialog(databaseLocationCombo
+				.getShell());
+		dialog.setText(CUI_NEWCW_FILE_BROWSER_TITLE_TEXT_); //$NON-NLS-1$
+		dialog.setMessage(CUI_NEWCW_FILE_BROWSER_MESSAGE_TEXT_); //$NON-NLS-1$
+
+		String dirName = databaseLocationCombo.getText();
+
+		File path = new File(dirName);
+		if (path.exists()) {
+			dialog.setFilterPath(new Path(dirName).toOSString());
+		}
+
+		String selectedDirectory = dialog.open();
+		if (selectedDirectory != null) {
+			databaseLocationCombo.setText(selectedDirectory);
+		}
+	}
+
+	public void modifyText(ModifyEvent e) {
+		handleEvent(new Event());
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyOtherDriverUIContributor.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyOtherDriverUIContributor.java
new file mode 100644
index 0000000..b783eff
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/DerbyOtherDriverUIContributor.java
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * 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
+ ******************************************************************************/
+package org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers;
+
+import org.eclipse.datatools.connectivity.ui.wizards.OtherDriverUIContributor;
+
+public class DerbyOtherDriverUIContributor extends OtherDriverUIContributor {
+
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/Messages.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/Messages.java
new file mode 100644
index 0000000..5b29cb4
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/Messages.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 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
+ *******************************************************************************/
+package org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+	private static final String BUNDLE_NAME = "org.eclipse.datatools.connectivity.apache.derby.internal.ui.connection.drivers.messages"; //$NON-NLS-1$
+
+	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+			.getBundle(BUNDLE_NAME);
+
+	private Messages() {
+	}
+
+	public static String getString(String key) {
+		// TODO Auto-generated method stub
+		try {
+			return RESOURCE_BUNDLE.getString(key);
+		} catch (MissingResourceException e) {
+			return '!' + key + '!';
+		}
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/messages.properties b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/messages.properties
new file mode 100644
index 0000000..514435d
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/drivers/messages.properties
@@ -0,0 +1,46 @@
+DerbyEmbeddedDriverUIContributor.0=D&atabase location\:
+DerbyEmbeddedDriverUIContributor.1=B&rowse...
+DerbyEmbeddedDriverUIContributor.2=Cr&eate database (if required)
+DerbyEmbeddedDriverUIContributor.3=U&pgrade database to current version
+DerbyEmbeddedDriverUIContributor.url.label = UR&L\:
+DerbyEmbeddedDriverUIContributor.userName.label = &User name\:
+DerbyEmbeddedDriverUIContributor.password.label = Pass&word:
+DerbyEmbeddedDriverUIContributor.persistpassword.label = Sa&ve password
+DerbyEmbeddedDriverUIContributor.optionalProps.label = Optional &properties\:
+DerbyEmbeddedDriverUIContributor.summary.driverName.label = Driver name
+DerbyEmbeddedDriverUIContributor.summary.connProps.label = Optional properties
+DerbyEmbeddedDriverUIContributor.summary.userName.label = User name
+DerbyEmbeddedDriverUIContributor.summary.password.label = Password
+DerbyEmbeddedDriverUIContributor.summary.url.label = URL
+DerbyEmbeddedDriverUIContributor.FileDialog.title.filebrowse = Browse for Database Folder
+DerbyEmbeddedDriverUIContributor.FileDialog.msg.filebrowse = Select the folder that corresponds to your Derby database.
+DerbyEmbeddedDriverUIContributor.general.tab = &General
+DerbyEmbeddedDriverUIContributor.optional.tab = &Optional
+DerbyEmbeddedDriverUIContributor.optionalproperties.label = Optional &properties:
+CUI_NEWCW_SAVE_PASSWORD_SUMMARY_DATA_TEXT_ = Save password
+CUI_NEWCW_TRUE_SUMMARY_DATA_TEXT_ = true
+CUI_NEWCW_FALSE_SUMMARY_DATA_TEXT_ = false
+CUI_NEWCW_DATABASE_LOCATION_SUMMARY_DATA_TEXT_ = Database location
+CUI_NEWCW_CREATE_DATABASE_SUMMARY_DATA_TEXT_ = Create database (if required)
+CUI_NEWCW_UPGRADE_DATABASE_SUMMARY_DATA_TEXT_ = Upgrade database to current version
+CUI_NEWCW_DATABASE_LBL_UI_ = Databa&se:
+CUI_NEWCW_HOST_LBL_UI_ = &Host:
+CUI_NEWCW_PORT_LBL_UI_ = Port nu&mber:
+CUI_NEWCW_CONNECTIONURL_LBL_UI_= UR&L:
+CUI_NEWCW_USERNAME_LBL_UI_ = User n&ame:
+CUI_NEWCW_PASSWORD_LBL_UI_ = Pass&word:
+CUI_NEWCW_SAVE_PASSWORD_LBL_UI_ = Sa&ve password
+CUI_NEWCW_DATABASE_SUMMARY_DATA_TEXT_ = Database
+CUI_NEWCW_HOST_SUMMARY_DATA_TEXT_ = Host
+CUI_NEWCW_PORT_SUMMARY_DATA_TEXT_ = Port number
+CUI_NEWCW_USERNAME_SUMMARY_DATA_TEXT_ = User name
+CUI_NEWCW_URL_SUMMARY_DATA_TEXT_ = URL
+
+CUI_NEWCW_VALIDATE_DATABASE_REQ_UI_ = Enter a database name.
+CUI_NEWCW_VALIDATE_DBLOCATION_REQ_UI_ = Enter a database location.
+CUI_NEWCW_VALIDATE_HOST_REQ_UI_= Enter the host name for the database server.
+CUI_NEWCW_VALIDATE_PORT_REQ_UI_ = Enter the connection port number for the database server.
+CUI_NEWCW_VALIDATE_USERID_REQ_UI_ = Enter a user name.
+CUI_NEWCW_VALIDATE_PASSWORD_REQ_UI_ = Enter a password.
+
+
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/messages.properties b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/messages.properties
new file mode 100644
index 0000000..a97f709
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/connection/messages.properties
@@ -0,0 +1 @@
+NewDerbyEmbeddedConnectionProfileWizard.DerbyEmbeddedDatabaseWizardTitle=New Derby Connection Profile
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/ServerExplorerContentProvider.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/ServerExplorerContentProvider.java
new file mode 100644
index 0000000..6ce149b
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/ServerExplorerContentProvider.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * 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.datatools.connectivity.apache.derby.internal.ui.explorer.providers;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.datatools.connectivity.apache.derby.internal.ui.util.ResourceLoader;
+import org.eclipse.datatools.connectivity.apache.derby.ui.explorer.providers.virtual.ISynonymFolder;
+import org.eclipse.datatools.connectivity.apache.derby.ui.explorer.providers.virtual.IVirtualNodeServiceFactory;
+import org.eclipse.datatools.connectivity.sqm.core.containment.ContainmentService;
+import org.eclipse.datatools.connectivity.sqm.core.ui.explorer.virtual.IVirtualNode;
+import org.eclipse.datatools.connectivity.sqm.internal.core.RDBCorePlugin;
+import org.eclipse.datatools.modelbase.derby.DerbySchema;
+import org.eclipse.datatools.modelbase.sql.schema.Schema;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.navigator.ICommonContentExtensionSite;
+import org.eclipse.ui.navigator.ICommonContentProvider;
+
+
+public class ServerExplorerContentProvider  implements ICommonContentProvider{
+    private static final ContainmentService containmentService = RDBCorePlugin.getDefault().getContainmentService();
+    private static final IVirtualNodeServiceFactory factory = IVirtualNodeServiceFactory.INSTANCE;
+    private static final Object[] EMPTY_ELEMENT_ARRAY = new Object[0];
+    private static final String SYNONYM_FOLDER = ResourceLoader.INSTANCE.queryString("DATATOOLS.DERBY.UI.SYNONYMS"); //$NON-NLS-1$
+
+    /**
+     * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+     */
+    public Object[] getChildren(Object parentElement)
+    {
+        if (parentElement instanceof DerbySchema)
+        {
+        	return new Object [] { factory.makeSynonymFolder(SYNONYM_FOLDER, SYNONYM_FOLDER, parentElement)};
+        }
+        else if (parentElement instanceof ISynonymFolder)
+        {
+        	Schema owningSchema = (Schema)((ISynonymFolder) parentElement).getParent();
+    	    List list = new ArrayList (owningSchema.getTables().size());
+    	    for (Iterator iterator = owningSchema.getTables().iterator(); iterator.hasNext();)
+    	    {
+    	        EObject child = (EObject) iterator.next();
+    	        if (((ISynonymFolder)parentElement).getGroupID().equals(containmentService.getGroupId(child)))
+    	        {
+    	            list.add(child);
+    	        }
+    	    }
+        	return getArrays(parentElement, list);
+        }
+        return EMPTY_ELEMENT_ARRAY;
+    }
+
+	protected Object[] getArrays (Object parent, Collection collection)
+	{
+		if (collection.isEmpty())
+		{
+			return EMPTY_ELEMENT_ARRAY;
+		}
+		else
+		{
+		    if (parent instanceof IVirtualNode)
+		    {
+		    	if (((IVirtualNode)parent).hasChildren())
+		    	{
+		    		return ((IVirtualNode)parent).getChildrenArray();
+		    	}
+		    	else
+		    	{
+		    		((IVirtualNode)parent).addChildren(collection);
+		    	}
+		    }
+			return collection.toArray(new Object[collection.size()]);
+		}
+	}
+
+    /**
+     * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+     */
+    public Object getParent(Object element)
+    {
+        if (element instanceof IVirtualNode)
+        {
+            return ((IVirtualNode) element).getParent();
+        }
+        return null;
+    }
+    /**
+     * @see org.eclipse.ui.views.navigator.INavigatorContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+     */
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+    {
+    }
+    
+    /**
+     * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+     */
+    public boolean hasChildren(Object element)
+    {
+        return true;
+    }
+    /**
+     * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+     */
+    public Object[] getElements(Object inputElement)
+    {
+        return getChildren(inputElement);
+    }
+
+    /**
+     * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+     */
+    public void dispose()
+    {
+    	//TODO
+    }
+    public void init(ICommonContentExtensionSite aConfig)
+    {
+    }
+    public void restoreState(IMemento aMemento)
+    {
+    }
+
+    public void saveState(IMemento aMemento)
+    {
+    }
+
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/label/ServerExplorerlabelProvider.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/label/ServerExplorerlabelProvider.java
new file mode 100644
index 0000000..086362a
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/label/ServerExplorerlabelProvider.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * 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.datatools.connectivity.apache.derby.internal.ui.explorer.providers.label;
+
+import org.eclipse.datatools.connectivity.sqm.core.ui.explorer.virtual.IVirtualNode;
+import org.eclipse.datatools.connectivity.sqm.core.ui.services.IDataToolsUIServiceManager;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+public class ServerExplorerlabelProvider extends LabelProvider implements ILabelProvider
+{
+	private static final IDataToolsUIServiceManager imageService = IDataToolsUIServiceManager.INSTANCE;
+
+	/**
+     * @return the Image associated with this element
+     */
+    public Image getImage(Object element)
+    {
+        return imageService.getLabelService(element).getIcon();
+    }
+
+    /**
+     * @return the Text associated with this element
+     */
+    public String getText(Object element)
+    {
+		if (element instanceof IVirtualNode)
+		{
+			return ((IVirtualNode) element).getDisplayName();
+		}
+		else if (element instanceof ENamedElement)
+		{
+		    return ((ENamedElement)element).getName();
+		}
+		else 
+		{
+		    return super.getText(element);
+		}
+    }
+
+	public void initialize(String aViewerId) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	public String getDescription(Object selection) {
+        return IDataToolsUIServiceManager.INSTANCE.getLabelService(selection).getName();
+	}
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/virtual/NodeFactory.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/virtual/NodeFactory.java
new file mode 100644
index 0000000..8edb891
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/virtual/NodeFactory.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * 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.datatools.connectivity.apache.derby.internal.ui.explorer.providers.virtual;
+
+import org.eclipse.datatools.connectivity.apache.derby.internal.ui.explorer.providers.virtual.SynonymFolder;
+import org.eclipse.datatools.connectivity.apache.derby.ui.explorer.providers.virtual.ISynonymFolder;
+import org.eclipse.datatools.connectivity.apache.derby.ui.explorer.providers.virtual.IVirtualNodeServiceFactory;
+
+public class NodeFactory implements IVirtualNodeServiceFactory
+	{
+	    public ISynonymFolder makeSynonymFolder(String name, String displayName, Object parent)
+	    {
+	        return new SynonymFolder (name, displayName, parent);
+	    }
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/virtual/SynonymFolder.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/virtual/SynonymFolder.java
new file mode 100644
index 0000000..043aed6
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/explorer/providers/virtual/SynonymFolder.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * 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.datatools.connectivity.apache.derby.internal.ui.explorer.providers.virtual;
+
+import org.eclipse.datatools.connectivity.sqm.core.ui.explorer.providers.content.virtual.VirtualNode;
+import org.eclipse.datatools.connectivity.apache.derby.ui.explorer.providers.virtual.ISynonymFolder;
+import org.eclipse.datatools.connectivity.apache.internal.derby.containment.DerbyGroupID;
+
+public class SynonymFolder extends VirtualNode implements ISynonymFolder{
+    public SynonymFolder(String name, String displayName, Object parent)
+    {
+        super(name, displayName, parent);
+    }
+
+    public String getGroupID()
+    {
+        return DerbyGroupID.SYNONYM;
+    }
+
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/l10n/derbyUI.properties b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/l10n/derbyUI.properties
new file mode 100644
index 0000000..de9d344
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/l10n/derbyUI.properties
@@ -0,0 +1,16 @@
+###############################################################################
+# 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
+###############################################################################
+##
+###
+##  !!! This property file should only contain resources that are "translatable" !!!
+###
+##
+DATATOOLS.DERBY.UI.SYNONYMS = Synonym
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/util/ResourceLoader.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/util/ResourceLoader.java
new file mode 100644
index 0000000..a918528
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/internal/ui/util/ResourceLoader.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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.datatools.connectivity.apache.derby.internal.ui.util;
+
+import java.util.ResourceBundle;
+
+/**
+ * @author ljulien
+ */
+public class ResourceLoader
+{
+	private static final String RESOURCE_PATH = "org/eclipse/datatools/connectivity/apache/derby/internal/ui/l10n/"; //$NON-NLS-1$
+	private static final String UI_RESOURCES = "derbyUI"; //$NON-NLS-1$
+	private static final String NO_RESOURCE_FOUND = "NO_RESOURCE_FOUND"; //$NON-NLS-1$
+
+	private ResourceBundle bundle;
+	
+	public static final ResourceLoader INSTANCE = new ResourceLoader ();
+	
+	private ResourceLoader()
+    {
+        this.bundle = ResourceBundle.getBundle(RESOURCE_PATH + UI_RESOURCES);
+    }
+	
+    /**
+     * @param stringID - the key to look for
+     * @return - the localized string
+     */
+    public String queryString (String stringID)
+    {
+        try
+        {
+            String resource = null;
+            resource = this.bundle.getString(stringID);
+            return (resource);
+        }
+        catch (Throwable e)
+        {
+        	return NO_RESOURCE_FOUND;
+        }
+    }
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/ui/explorer/providers/virtual/ISynonymFolder.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/ui/explorer/providers/virtual/ISynonymFolder.java
new file mode 100644
index 0000000..4713aad
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/ui/explorer/providers/virtual/ISynonymFolder.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * 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.datatools.connectivity.apache.derby.ui.explorer.providers.virtual;
+
+import org.eclipse.datatools.connectivity.sqm.core.ui.explorer.virtual.IVirtualNode;
+public interface ISynonymFolder extends IVirtualNode {
+
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/ui/explorer/providers/virtual/IVirtualNodeServiceFactory.java b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/ui/explorer/providers/virtual/IVirtualNodeServiceFactory.java
new file mode 100644
index 0000000..ec3bf0e
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby.ui/src/org/eclipse/datatools/connectivity/apache/derby/ui/explorer/providers/virtual/IVirtualNodeServiceFactory.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * 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.datatools.connectivity.apache.derby.ui.explorer.providers.virtual;
+
+import org.eclipse.datatools.connectivity.apache.derby.internal.ui.explorer.providers.virtual.NodeFactory;
+public interface IVirtualNodeServiceFactory {
+    public static final IVirtualNodeServiceFactory INSTANCE = new NodeFactory();
+    
+    public ISynonymFolder makeSynonymFolder (String name, String displayName, Object parent);
+
+}
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby/.classpath b/plugins/org.eclipse.datatools.connectivity.apache.derby/.classpath
new file mode 100644
index 0000000..751c8f2
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<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/plugins/org.eclipse.datatools.connectivity.apache.derby/.gitignore b/plugins/org.eclipse.datatools.connectivity.apache.derby/.gitignore
new file mode 100644
index 0000000..f402086
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/.gitignore
@@ -0,0 +1,4 @@
+bin
+temp.folder
+build.xml
+rdb_derby.jar
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby/.project b/plugins/org.eclipse.datatools.connectivity.apache.derby/.project
new file mode 100644
index 0000000..17a755f
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.datatools.connectivity.apache.derby</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.datatools.connectivity.apache.derby/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..73f4382
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Fri Apr 13 14:14:14 PDT 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
+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.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.4
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby/META-INF/MANIFEST.MF b/plugins/org.eclipse.datatools.connectivity.apache.derby/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b9a3121
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.datatools.connectivity.apache.derby;singleton:=true
+Bundle-Version: 1.2.1.qualifier
+Bundle-Activator: org.eclipse.datatools.connectivity.apache.internal.derby.DerbyPlugin
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Export-Package: org.eclipse.datatools.connectivity.apache.internal.derby,
+ org.eclipse.datatools.connectivity.apache.internal.derby.catalog,
+ org.eclipse.datatools.connectivity.apache.internal.derby.connection,
+ org.eclipse.datatools.connectivity.apache.internal.derby.containment,
+ org.eclipse.datatools.connectivity.apache.internal.derby.ddl,
+ org.eclipse.datatools.connectivity.apache.internal.derby.driver
+Require-Bundle: org.eclipse.emf.ecore,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.datatools.modelbase.dbdefinition,
+ org.eclipse.datatools.modelbase.sql,
+ org.eclipse.datatools.connectivity.sqm.core,
+ org.eclipse.datatools.modelbase.derby,
+ org.eclipse.datatools.connectivity
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Import-Package: com.ibm.icu.text,
+ com.ibm.icu.util
+
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby/about.html b/plugins/org.eclipse.datatools.connectivity.apache.derby/about.html
new file mode 100644
index 0000000..76a59f1
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>June 15, 2009</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>
+
+<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
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby/build.properties b/plugins/org.eclipse.datatools.connectivity.apache.derby/build.properties
new file mode 100644
index 0000000..b6ae02f
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/build.properties
@@ -0,0 +1,16 @@
+bin.includes = .,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html,\
+               META-INF/,\
+               icons/
+jars.compile.order = .
+source.. = src/
+
+src.dir			 = src/
+plugin.version =	1.0.1.200802251
+javadoc.dir =		doc/api/
+download.dir =		./download/
+javac.source =		1.4
+javac.target =		1.4
+src.includes = about.html
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby/icons/jdbc_16.gif b/plugins/org.eclipse.datatools.connectivity.apache.derby/icons/jdbc_16.gif
new file mode 100644
index 0000000..ef7809c
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/icons/jdbc_16.gif
Binary files differ
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby/plugin.properties b/plugins/org.eclipse.datatools.connectivity.apache.derby/plugin.properties
new file mode 100644
index 0000000..aa711bf
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/plugin.properties
@@ -0,0 +1,46 @@
+###############################################################################
+# Copyright (c) 2001, 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
+###############################################################################
+
+pluginName = Eclipse Data Tools Platform Derby Plug-in
+providerName = Eclipse Data Tools Platform
+
+DERBY_CONNECTION_PROFILE_NAME=Derby Embedded Database
+DERBY_JDBC_CONNECTION_FACTORY_NAME=JDBC Connection
+DERBY_PING_CONNECTION_FACTORY_NAME=Ping Connection Factory
+DERBY_SQL_MODEL_CONNECTION_FACTORY_NAME=SQL Model Connection
+DRIVER_CLASS_PROPERTY_NAME=Driver Class
+VENDOR_PROPERTY_NAME=Vendor
+VERSION_PROPERTY_NAME=Version
+DATABASE_NAME_PROPERTY_NAME=Database Name
+CONNECTION_URL_PROPERTY_NAME=Connection URL
+USER_ID_PROPERTY_NAME=User ID
+PASSWORD_PROPERTY_NAME=Password
+
+DERBY_CATEGORY_NAME=Derby
+10_0_VERSION_CATEGORY_NAME = 10.0
+10_1_VERSION_CATEGORY_NAME = 10.1
+10_2_VERSION_CATEGORY_NAME = 10.2
+
+DERBY_EMBEDDED_DRIVER_TEMPLATE_NAME=Derby Embedded JDBC Driver
+DERBY_EMBEDDED_DRIVER_DEFAULT_INSTANCE_NAME=Derby Embedded JDBC Driver 10.0
+DERBY_OTHER_DRIVER_TEMPLATE_NAME = Other Driver
+DERBY101_EMBEDDED_DRIVER_TEMPLATE_NAME=Derby Embedded JDBC Driver
+DERBY101_EMBEDDED_DRIVER_DEFAULT_INSTANCE_NAME=Derby Embedded JDBC Driver 10.1
+DERBY_NETWORK_EMBEDDED_DRIVER_TEMPLATE_NAME=IBM Data Server Driver for JDBC and SQLJ
+DERBY101_NETWORK_EMBEDDED_DRIVER_TEMPLATE_NAME=IBM Data Server Driver for JDBC and SQLJ
+DERBY101_CLIENT_DRIVER_TEMPLATE_NAME = Derby Client JDBC Driver
+DERBY101_CLIENT_DRIVER_DEFAULT_INSTANCE_NAME = Derby Client JDBC Driver 10.1
+DERBY101_OTHER_DRIVER_TEMPLATE_NAME = Other Driver
+DERBY102_EMBEDDED_DRIVER_TEMPLATE_NAME=Derby Embedded JDBC Driver
+DERBY102_EMBEDDED_DRIVER_DEFAULT_INSTANCE_NAME=Derby Embedded JDBC Driver 10.2
+DERBY102_CLIENT_DRIVER_TEMPLATE_NAME = Derby Client JDBC Driver
+DERBY102_CLIENT_DRIVER_DEFAULT_INSTANCE_NAME = Derby Client JDBC Driver 10.2
+DERBY102_OTHER_DRIVER_TEMPLATE_NAME = Other Driver
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.connectivity.apache.derby/plugin.xml b/plugins/org.eclipse.datatools.connectivity.apache.derby/plugin.xml
new file mode 100644
index 0000000..12deafc
--- /dev/null
+++ b/plugins/org.eclipse.datatools.connectivity.apache.derby/plugin.xml
@@ -0,0 +1,713 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+<!-- Containment Provider for Synonym support -->
+   <extension
+         point="org.eclipse.datatools.connectivity.sqm.core.logicalContainment">
+		<containment
+			package="http:///org/eclipse/datatools/modelbase/derby/derby.ecore"
+			class="Synonym"
+			provider="org.eclipse.datatools.connectivity.apache.internal.derby.containment.DerbySynonymContainmentProvider">
+		</containment>
+   </extension>
+   <extension
+         point="org.eclipse.datatools.connectivity.sqm.core.catalog">
+      <overrideLoader
+            provider="org.eclipse.datatools.connectivity.apache.internal.derby.catalog.DerbySchemaLoader"
+            eclass="org.eclipse.datatools.modelbase.sql.schema.Schema"
+            product="Derby"
+            version="10.0"/>
+   </extension>
+
+   <extension
+         point="org.eclipse.datatools.connectivity.sqm.core.ddlGeneration">
+      <generator
+            version="10.0"
+            product="Derby"
+            class="org.eclipse.datatools.connectivity.apache.internal.derby.ddl.DerbyDdlGenerator">
+      </generator>
+   </extension>
+
+   <extension
+         point="org.eclipse.datatools.connectivity.sqm.core.catalog">
+      <overrideLoader
+            provider="org.eclipse.datatools.connectivity.apache.internal.derby.catalog.DerbySchemaLoader"
+            eclass="org.eclipse.datatools.modelbase.sql.schema.Schema"
+            product="Derby"
+            version="10.1"/>
+   </extension>
+
+   <extension
+         point="org.eclipse.datatools.connectivity.sqm.core.ddlGeneration">
+      <generator
+            version="10.1"
+            product="Derby"
+            class="org.eclipse.datatools.connectivity.apache.internal.derby.ddl.DerbyDdlGenerator">
+      </generator>
+   </extension>
+	
+	<extension
+         point="org.eclipse.datatools.connectivity.sqm.core.catalog">
+      <overrideLoader
+           provider="org.eclipse.datatools.connectivity.apache.internal.derby.catalog.DerbySchemaLoader"
+            eclass="org.eclipse.datatools.modelbase.sql.schema.Schema"
+            product="Derby"
+            version="10.2"/>
+   </extension>
+
+   <extension
+         point="org.eclipse.datatools.connectivity.sqm.core.ddlGeneration">
+      <generator
+            version="10.2"
+            product="Derby"
+           class="org.eclipse.datatools.connectivity.apache.internal.derby.ddl.DerbyDdlGenerator">
+      </generator>
+   </extension>
+
+<extension
+         point="org.eclipse.datatools.connectivity.connectionProfile">
+      <connectionProfile
+            category="org.eclipse.datatools.connectivity.db.category"
+            icon="icons/jdbc_16.gif"
+            pingFactory="org.eclipse.datatools.connectivity.apache.internal.derby.connection.DerbyJDBCConnectionFactory"
+            id="org.eclipse.datatools.connectivity.db.derby.embedded.connectionProfile"
+            name="%DERBY_CONNECTION_PROFILE_NAME"
+            propertiesPersistenceHook="org.eclipse.datatools.connectivity.apache.internal.derby.connection.DerbyPropertiesPersistenceHook"/>
+      <connectionFactory
+            class="org.eclipse.datatools.connectivity.apache.internal.derby.connection.DerbyJDBCConnectionFactory"
+            id="java.sql.Connection"
+            name="%DERBY_JDBC_CONNECTION_FACTORY_NAME"
+            profile="org.eclipse.datatools.connectivity.db.derby.embedded.connectionProfile"/>
+   </extension>
+   
+	<extension
+         point="org.eclipse.datatools.connectivity.driverExtension">    
+      <category
+      		parentCategory="org.eclipse.datatools.connectivity.db.driverCategory"
+            id="org.eclipse.datatools.connectivity.db.derby.driverCategory"
+            name="%DERBY_CATEGORY_NAME"/>
+       <category
+      		parentCategory="org.eclipse.datatools.connectivity.db.derby.driverCategory"
+            id="org.eclipse.datatools.connectivity.db.derby.10_0.driverCategory"
+            name="%10_0_VERSION_CATEGORY_NAME"/> 
+        <category
+      		parentCategory="org.eclipse.datatools.connectivity.db.derby.driverCategory"
+            id="org.eclipse.datatools.connectivity.db.derby.10_1.driverCategory"
+            name="%10_1_VERSION_CATEGORY_NAME"/> 
+        <category
+      		parentCategory="org.eclipse.datatools.connectivity.db.derby.driverCategory"
+            id="org.eclipse.datatools.connectivity.db.derby.10_2.driverCategory"
+            name="%10_2_VERSION_CATEGORY_NAME"/> 
+            
+      <driverTemplate
+            createDefault="false"
+            defaultDefinitionName="%DERBY_EMBEDDED_DRIVER_DEFAULT_INSTANCE_NAME"
+            emptyJarListIsOK="false"
+            id="org.eclipse.datatools.connectivity.db.derby.genericDriverTemplate"
+            jarList="derby.jar"
+            name="%DERBY_EMBEDDED_DRIVER_TEMPLATE_NAME"
+            parentCategory="org.eclipse.datatools.connectivity.db.derby.10_0.driverCategory"
+            valuesProvider="org.eclipse.datatools.connectivity.apache.internal.derby.driver.DerbyDriverValuesProvider101">
+         <properties>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.driverClass"
+                  name="%DRIVER_CLASS_PROPERTY_NAME"
+                  value="org.apache.derby.jdbc.EmbeddedDriver"
+                  required="true"
+                  visible="true"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.vendor"
+                  name="%VENDOR_PROPERTY_NAME"
+                  value="Derby"
+                  required="true"
+                  visible="false"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.version"
+                  name="%VERSION_PROPERTY_NAME"
+                  value="10.0"
+                  required="true"
+                  visible="false"/>   
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.databaseName"
+                  name="%DATABASE_NAME_PROPERTY_NAME"
+                  value="SAMPLE"
+                  required="true"
+                  visible="true"/>                             
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.URL"
+                  name="%CONNECTION_URL_PROPERTY_NAME"
+                  value="jdbc:derby:C:\DerbyDatabases\MyDB;create=true"
+                  required="true"
+                  visible="true"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.username"
+                  name="%USER_ID_PROPERTY_NAME"
+                  value=""
+                  required="false"
+                  visible="true"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.password"
+                  name="%PASSWORD_PROPERTY_NAME"
+                  required="false"
+                  visible="true"/>
+         </properties>
+      </driverTemplate>
+      <driverTemplate
+            createDefault="false"
+            defaultDefinitionName="%DERBY101_EMBEDDED_DRIVER_DEFAULT_INSTANCE_NAME"
+            emptyJarListIsOK="false"
+            id="org.eclipse.datatools.connectivity.db.derby101.genericDriverTemplate"
+            jarList="derby.jar"
+            name="%DERBY101_EMBEDDED_DRIVER_TEMPLATE_NAME"
+            parentCategory="org.eclipse.datatools.connectivity.db.derby.10_1.driverCategory"
+            valuesProvider="org.eclipse.datatools.connectivity.apache.internal.derby.driver.DerbyDriverValuesProvider101">
+         <properties>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.driverClass"
+                  name="%DRIVER_CLASS_PROPERTY_NAME"
+                  value="org.apache.derby.jdbc.EmbeddedDriver"
+                  required="true"
+                  visible="false"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.vendor"
+                  name="%VENDOR_PROPERTY_NAME"
+                  value="Derby"
+                  required="true"
+                  visible="false"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.version"
+                  name="%VERSION_PROPERTY_NAME"
+                  value="10.1"
+                  required="true"
+                  visible="false"/>   
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.databaseName"
+                  name="%DATABASE_NAME_PROPERTY_NAME"
+                  value="SAMPLE"
+                  required="true"
+                  visible="true"/>                             
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.URL"
+                  name="%CONNECTION_URL_PROPERTY_NAME"
+                  value="jdbc:derby:C:\DerbyDatabases\MyDB;create=true"
+                  required="true"
+                  visible="true"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.username"
+                  name="%USER_ID_PROPERTY_NAME"
+                  value=""
+                  required="false"
+                  visible="true"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.password"
+                  name="%PASSWORD_PROPERTY_NAME"
+                  required="false"
+                  visible="true"/>
+         </properties>
+      </driverTemplate>
+      <driverTemplate
+            createDefault="false"
+            defaultDefinitionName="%DERBY102_EMBEDDED_DRIVER_DEFAULT_INSTANCE_NAME"
+            emptyJarListIsOK="false"
+            id="org.eclipse.datatools.connectivity.db.derby102.genericDriverTemplate"
+            jarList="derby.jar"
+            name="%DERBY102_EMBEDDED_DRIVER_TEMPLATE_NAME"
+            parentCategory="org.eclipse.datatools.connectivity.db.derby.10_2.driverCategory"
+            valuesProvider="org.eclipse.datatools.connectivity.apache.internal.derby.driver.DerbyDriverValuesProvider">
+         <properties>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.driverClass"
+                  name="%DRIVER_CLASS_PROPERTY_NAME"
+                  value="org.apache.derby.jdbc.EmbeddedDriver"
+                  required="true"
+                  visible="false"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.vendor"
+                  name="%VENDOR_PROPERTY_NAME"
+                  value="Derby"
+                  required="true"
+                  visible="false"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.version"
+                  name="%VERSION_PROPERTY_NAME"
+                  value="10.2"
+                  required="true"
+                  visible="false"/>   
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.databaseName"
+                  name="%DATABASE_NAME_PROPERTY_NAME"
+                  value="SAMPLE"
+                  required="true"
+                  visible="true"/>                             
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.URL"
+                  name="%CONNECTION_URL_PROPERTY_NAME"
+                  value="jdbc:derby:C:\DerbyDatabases\MyDB;create=true"
+                  required="true"
+                  visible="true"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.username"
+                  name="%USER_ID_PROPERTY_NAME"
+                  value=""
+                  required="false"
+                  visible="true"/>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.password"
+                  name="%PASSWORD_PROPERTY_NAME"
+                  required="false"
+                  visible="true"/>
+         </properties>
+      </driverTemplate>
+      <driverTemplate
+            createDefault="false"
+            emptyJarListIsOK="false"
+            id="org.eclipse.datatools.connectivity.db.derby.db2UniversalDriver"
+            jarList="db2jcc.jar;db2jcc_license_c.jar"
+            name="%DERBY_NETWORK_EMBEDDED_DRIVER_TEMPLATE_NAME"
+            parentCategory="org.eclipse.datatools.connectivity.db.derby.10_0.driverCategory">
+         <properties>
+            <property
+                  generated="false"
+                  id="org.eclipse.datatools.connectivity.db.driverClass"
+                  name="%DRIVER_CLASS_PROPERTY_NAME"
+