diff --git a/derby/org.apache.derby/.classpath b/derby/org.apache.derby/.classpath
index 1284234..09fc6f1 100644
--- a/derby/org.apache.derby/.classpath
+++ b/derby/org.apache.derby/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry exported="true" kind="lib" path="derby.jar"/>
 	<classpathentry exported="true" kind="lib" path="derbyclient.jar"/>
diff --git a/derby/org.apache.derby/.settings/org.eclipse.jdt.core.prefs b/derby/org.apache.derby/.settings/org.eclipse.jdt.core.prefs
index c86df58..f287d53 100644
--- a/derby/org.apache.derby/.settings/org.eclipse.jdt.core.prefs
+++ b/derby/org.apache.derby/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,7 @@
-#Fri May 28 16:04:10 EDT 2010
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/derby/org.apache.derby/META-INF/MANIFEST.MF b/derby/org.apache.derby/META-INF/MANIFEST.MF
index 257aa33..3f8bda8 100644
--- a/derby/org.apache.derby/META-INF/MANIFEST.MF
+++ b/derby/org.apache.derby/META-INF/MANIFEST.MF
@@ -9,7 +9,7 @@
  javax.transaction,javax.transaction.xa,
  org.osgi.framework;version="1.3.0"
 DynamicImport-Package: *
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ClassPath: .,
  derby.jar,
  derbyclient.jar
diff --git a/derby/org.eclipse.gemini.dbaccess.derby/.classpath b/derby/org.eclipse.gemini.dbaccess.derby/.classpath
index 335ba65..c51c113 100644
--- a/derby/org.eclipse.gemini.dbaccess.derby/.classpath
+++ b/derby/org.eclipse.gemini.dbaccess.derby/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry excluding="**/.svn/*" kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/derby/org.eclipse.gemini.dbaccess.derby/.settings/org.eclipse.jdt.core.prefs b/derby/org.eclipse.gemini.dbaccess.derby/.settings/org.eclipse.jdt.core.prefs
index 44217f8..f287d53 100644
--- a/derby/org.eclipse.gemini.dbaccess.derby/.settings/org.eclipse.jdt.core.prefs
+++ b/derby/org.eclipse.gemini.dbaccess.derby/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,7 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/derby/org.eclipse.gemini.dbaccess.derby/META-INF/MANIFEST.MF b/derby/org.eclipse.gemini.dbaccess.derby/META-INF/MANIFEST.MF
index 0b08acd..cbe7d01 100644
--- a/derby/org.eclipse.gemini.dbaccess.derby/META-INF/MANIFEST.MF
+++ b/derby/org.eclipse.gemini.dbaccess.derby/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@
 Bundle-Version: 1.1.0.qualifier
 Bundle-Activator: org.eclipse.gemini.dbaccess.derby.Activator
 Bundle-Vendor: Eclipse Gemini
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: javax.sql,
  org.apache.derby.client.am,
  org.apache.derby.jdbc,
diff --git a/derby/org.eclipse.gemini.dbaccess.derby/src/org/eclipse/gemini/dbaccess/derby/UrlBasedDriverDataSource.java b/derby/org.eclipse.gemini.dbaccess.derby/src/org/eclipse/gemini/dbaccess/derby/UrlBasedDriverDataSource.java
deleted file mode 100644
index c951290..0000000
--- a/derby/org.eclipse.gemini.dbaccess.derby/src/org/eclipse/gemini/dbaccess/derby/UrlBasedDriverDataSource.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 Oracle.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * and Apache License v2.0 which accompanies this distribution. 
- * The Eclipse Public License is available at
- *     http://www.eclipse.org/legal/epl-v10.html
- * and the Apache License v2.0 is available at 
- *     http://www.opensource.org/licenses/apache2.0.php.
- * You may elect to redistribute this code under either of these licenses.
- *
- * Contributors:
- *     mkeith - CLient/Server Derby JDBC support 
- ******************************************************************************/
-
-package org.eclipse.gemini.dbaccess.derby;
-
-import java.io.PrintWriter;
-import java.util.Properties;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.sql.Driver;
-
-import org.apache.derby.jdbc.ClientDriver;
-import org.apache.derby.jdbc.EmbeddedDriver;
-
-import static org.osgi.service.jdbc.DataSourceFactory.*;
-
-/** 
- * An abbreviated/simplified DataSource impl that takes a URL from the client
- * and just returns a thin data source wrapper around the basic JDBC driver.
- */
-class UrlBasedDriverDataSource implements javax.sql.DataSource {
-
-    boolean embedded;
-    Driver driver;
-    Properties properties = null;
-    String url = null;
-
-    /**
-     * @param properties The properties to use for operations on the driver
-     * @param embedded Whether to wrap an embedded or a client driver
-     */
-    public UrlBasedDriverDataSource(Properties properties, boolean embedded) {
-        this.embedded = embedded;
-        this.driver = embedded ? new EmbeddedDriver() : new ClientDriver();
-        this.properties = (Properties) properties.clone();
-        this.url = properties.getProperty(JDBC_URL);
-    }
-
-    public UrlBasedDriverDataSource(Properties properties) {
-        this(properties, true);
-    }
-
-    public Connection getConnection() throws java.sql.SQLException {
-        return driver.connect(url, properties);
-    }
-
-    public Connection getConnection(String user, String password) throws java.sql.SQLException {
-        Properties localProps = (Properties) properties.clone();
-        localProps.put(JDBC_USER, user);
-        localProps.put(JDBC_PASSWORD, password);
-        return driver.connect(url, localProps);
-    }
- 
-    public boolean isWrapperFor(Class<?> cls) { 
-        return embedded 
-            ? (cls == EmbeddedDriver.class)
-            : (cls == ClientDriver.class);
-    }
-    
-    public <T> T unwrap(Class<T> cls) { 
-        return (isWrapperFor(cls)) 
-            ? (T) driver 
-            : null;
-    }
-
-    public PrintWriter getLogWriter() throws SQLException { 
-        return DriverManager.getLogWriter(); 
-    }
-
-    public int getLoginTimeout() throws SQLException { 
-        return DriverManager.getLoginTimeout(); 
-    }
-
-    // Don't support setting log writer or timeout 
-
-    public void setLogWriter(PrintWriter writer) throws SQLException {
-        throw new SQLException("Can't set Log Writer on URL data source");
-    }
-    
-    public void setLoginTimeout(int timeout) throws SQLException {
-        throw new SQLException("Can't set Login Timeout on URL data source");
-    }
-}
\ No newline at end of file
diff --git a/mysql/com.mysql.jdbc/.settings/org.eclipse.jdt.core.prefs b/mysql/com.mysql.jdbc/.settings/org.eclipse.jdt.core.prefs
index 9b423b4..f287d53 100644
--- a/mysql/com.mysql.jdbc/.settings/org.eclipse.jdt.core.prefs
+++ b/mysql/com.mysql.jdbc/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,3 @@
-#Sun Oct 23 22:54:43 CEST 2011
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
diff --git a/mysql/com.mysql.jdbc/src/com/mysql/jdbc/Driver.java b/mysql/com.mysql.jdbc/src/com/mysql/jdbc/Driver.java
index 484a718..3750391 100644
--- a/mysql/com.mysql.jdbc/src/com/mysql/jdbc/Driver.java
+++ b/mysql/com.mysql.jdbc/src/com/mysql/jdbc/Driver.java
@@ -3,7 +3,9 @@
 import java.sql.Connection;
 import java.sql.DriverPropertyInfo;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
 import java.util.Properties;
+import java.util.logging.Logger;
 
 public class Driver implements java.sql.Driver {
 
@@ -44,4 +46,9 @@
 		return false;
 	}
 
+	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 }
diff --git a/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlConnectionPoolDataSource.java b/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlConnectionPoolDataSource.java
index ae5d529..b3a9393 100644
--- a/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlConnectionPoolDataSource.java
+++ b/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlConnectionPoolDataSource.java
@@ -2,6 +2,8 @@
 
 import java.io.PrintWriter;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.logging.Logger;
 
 import javax.sql.ConnectionPoolDataSource;
 import javax.sql.PooledConnection;
@@ -45,4 +47,9 @@
 		return null;
 	}
 
+	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 }
diff --git a/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlDataSource.java b/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlDataSource.java
index 47582a3..33079f3 100644
--- a/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlDataSource.java
+++ b/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlDataSource.java
@@ -3,6 +3,8 @@
 import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.logging.Logger;
 
 import javax.sql.DataSource;
 
@@ -57,4 +59,9 @@
 		return null;
 	}
 
+	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 }
diff --git a/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlXADataSource.java b/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlXADataSource.java
index abcbe4e..f92d81c 100644
--- a/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlXADataSource.java
+++ b/mysql/com.mysql.jdbc/src/com/mysql/jdbc/jdbc2/optional/MysqlXADataSource.java
@@ -2,6 +2,8 @@
 
 import java.io.PrintWriter;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.logging.Logger;
 
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
@@ -45,4 +47,9 @@
 		return null;
 	}
 
+	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
 }
diff --git a/org.eclipse.gemini.dbaccess.util/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.gemini.dbaccess.util/.settings/org.eclipse.jdt.core.prefs
index ec9e8a7..f287d53 100644
--- a/org.eclipse.gemini.dbaccess.util/.settings/org.eclipse.jdt.core.prefs
+++ b/org.eclipse.gemini.dbaccess.util/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,3 @@
-#Wed Oct 19 21:10:28 CEST 2011
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
diff --git a/org.eclipse.gemini.dbaccess.util/src/org/eclipse/gemini/dbaccess/UrlBasedDriverDataSource.java b/org.eclipse.gemini.dbaccess.util/src/org/eclipse/gemini/dbaccess/UrlBasedDriverDataSource.java
index 611f00e..c8cdbe9 100644
--- a/org.eclipse.gemini.dbaccess.util/src/org/eclipse/gemini/dbaccess/UrlBasedDriverDataSource.java
+++ b/org.eclipse.gemini.dbaccess.util/src/org/eclipse/gemini/dbaccess/UrlBasedDriverDataSource.java
@@ -17,10 +17,12 @@
 
 import java.io.PrintWriter;
 import java.util.Properties;
+import java.util.logging.Logger;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.SQLException;
 import java.sql.Driver;
+import java.sql.SQLFeatureNotSupportedException;
 
 import static org.osgi.service.jdbc.DataSourceFactory.*;
 
@@ -82,4 +84,9 @@
     public void setLoginTimeout(int timeout) throws SQLException {
         throw new SQLException("Can't set Login Timeout on URL data source");
     }
+
+	
+	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+        return this.driver.getParentLogger();
+	}
 }
\ No newline at end of file
diff --git a/samples/org.eclipse.gemini.dbaccess.samples/.classpath b/samples/org.eclipse.gemini.dbaccess.samples/.classpath
index 335ba65..c51c113 100644
--- a/samples/org.eclipse.gemini.dbaccess.samples/.classpath
+++ b/samples/org.eclipse.gemini.dbaccess.samples/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry excluding="**/.svn/*" kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/samples/org.eclipse.gemini.dbaccess.samples/.settings/org.eclipse.jdt.core.prefs b/samples/org.eclipse.gemini.dbaccess.samples/.settings/org.eclipse.jdt.core.prefs
index 25aa1a6..f287d53 100644
--- a/samples/org.eclipse.gemini.dbaccess.samples/.settings/org.eclipse.jdt.core.prefs
+++ b/samples/org.eclipse.gemini.dbaccess.samples/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,7 @@
-#Fri May 28 16:33:44 EDT 2010
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/samples/org.eclipse.gemini.dbaccess.samples/META-INF/MANIFEST.MF b/samples/org.eclipse.gemini.dbaccess.samples/META-INF/MANIFEST.MF
index cfaaa8e..16b649c 100644
--- a/samples/org.eclipse.gemini.dbaccess.samples/META-INF/MANIFEST.MF
+++ b/samples/org.eclipse.gemini.dbaccess.samples/META-INF/MANIFEST.MF
@@ -9,6 +9,6 @@
  org.osgi.framework;version="1.3.0",
  org.osgi.service.jdbc;version="1.0.0",
  org.osgi.util.tracker;version="1.4"
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 
 
