From 7e6a58014864ddafe534ed7a08ecca75fa4e4860 Mon Sep 17 00:00:00 2001
From: Michael Stahl <mstahl@redhat.com>
Date: Thu, 17 May 2012 22:50:25 +0000
Subject: codemaker: write version 49 (1.5) class files

The trick of writing generic types into class files of versions < 49
does no longer work with javac from OpenJDK 7:

/comphelper/qa/complex/comphelper/Map.java:154: error: type Pair does
not take parameters
  Pair< ?, ? >[] initialMappings = new Pair< ?, ? >[ _keys.length ];

There appears to be a related JDK bug for this, at some time javac had
an undocumented option to produce similar class files that are also
rejected now, this has been closed as "Not a Defect":

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7078419

Change-Id: I8a504f6cbb3bb58cd914aebb88637cc6feb0bd48
(cherry picked from commit 26643fb59e0005f0bc83708b785d20d62d8e7411)

Signed-off-by: Michael Stahl <mstahl@redhat.com>
Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
---
diff --git a/codemaker/source/javamaker/classfile.cxx b/codemaker/source/javamaker/classfile.cxx
index 4f74781..59d386e 100644
--- a/codemaker/source/javamaker/classfile.cxx
+++ b/codemaker/source/javamaker/classfile.cxx
@@ -693,7 +693,7 @@ void ClassFile::addMethod(
 void ClassFile::write(FileStream & file) const {
     writeU4(file, 0xCAFEBABE);
     writeU2(file, 0);
-    writeU2(file, 46);
+    writeU2(file, 49); // class file version of JRE 1.5
     writeU2(file, m_constantPoolCount);
     writeStream(file, m_constantPool);
     writeU2(file, static_cast< sal_uInt16 >(m_accessFlags));
--
cgit v0.9.0.2-2-gbebe
diff --git a/hsqldb/makefile.mk b/hsqldb/makefile.mk
index 8b3d5b1..2e9fa8a 100755
--- a/hsqldb/makefile.mk
+++ b/hsqldb/makefile.mk
@@ -56,7 +56,8 @@ CONVERTFILES=build$/build.xml \
 PATCH_FILES=patches$/i96823.patch \
             patches$/i97032.patch \
             patches$/i103528.patch \
-            patches$/i104901.patch
+            patches$/i104901.patch \
+            patches$/jdbc-4.1.patch
 
 .IF "$(JAVACISGCJ)"=="yes"
 JAVA_HOME=
diff --git a/hsqldb/patches/jdbc-4.1.patch b/hsqldb/patches/jdbc-4.1.patch
new file mode 100644
index 0000000..89149c4
--- /dev/null
+++ b/hsqldb/patches/jdbc-4.1.patch
@@ -0,0 +1,267 @@
+--- misc/hsqldb/build/build.xml	2012-02-08 15:14:42.827123541 +0000
++++ misc/build/hsqldb/build/build.xml	2012-02-08 15:21:43.827722388 +0000
+@@ -98,7 +98,11 @@
+       <echo message="ant.java.hasjsse=${ant.java.hasjsse}" />
+    </target>
+ 
+-   <target name="javaversion6">
++   <target name="javaversion7">
++      <available classname="java.util.Objects" property="ant.java.iscjava17"/>
++   </target>
++
++   <target name="javaversion6" depends="javaversion7" unless="ant.java.iscjava17">
+       <available classname="java.net.IDN" property="ant.java.iscjava16"/>
+    </target>
+ 
+@@ -210,6 +214,7 @@
+         <arg value="+JAVA2FULL"/>
+         <arg value="-JAVA4"/>
+         <arg value="-JAVA6"/>
++        <arg value="-JAVA7"/>
+        </java>
+     </target>
+ 
+@@ -244,6 +249,7 @@
+         <arg value="+JAVA2FULL"/>
+         <arg value="+JAVA4"/>
+         <arg value="-JAVA6"/>
++        <arg value="-JAVA7"/>
+        </java>
+     </target>
+ 
+@@ -279,10 +285,47 @@
+         <arg value="+JAVA2FULL"/>
+         <arg value="+JAVA4"/>
+         <arg value="+JAVA6"/>
++        <arg value="+JAVA7"/>
++      </java>
++    </target>
++
++    <target name="switchtojdk17" depends="switchtojdk16"
++            description="self explanatory" if="ant.java.iscjava17">
++      <java classname="org.hsqldb.util.CodeSwitcher" classpath="classes" >
++        <arg file="${src}/org/hsqldb/lib/java/JavaSystem.java"/>
++        <arg file="${src}/org/hsqldb/lib/HsqlTimer.java"/>
++        <arg file="${src}/org/hsqldb/jdbcDriver.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcBlob.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcDatabaseMetaData.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcDataSource.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcCallableStatement.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcClob.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcConnection.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcParameterMetaData.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcPreparedStatement.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcResultSet.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcResultSetMetaData.java"/>
++        <arg file="${src}/org/hsqldb/jdbc/jdbcStatement.java"/>
++        <arg file="${src}/org/hsqldb/persist/LockFile.java"/>
++        <arg file="${src}/org/hsqldb/persist/Logger.java"/>
++        <arg file="${src}/org/hsqldb/persist/ScaledRAFile.java"/>
++        <arg file="${src}/org/hsqldb/rowio/RowInputTextLog.java"/>
++        <arg file="${src}/org/hsqldb/util/DatabaseManager.java"/>
++        <arg file="${src}/org/hsqldb/util/ConnectionDialogCommon.java"/>
++        <arg file="${src}/org/hsqldb/lib/SimpleLog.java"/>
++        <arg file="${src}/org/hsqldb/rowio/RowInputTextLog.java"/>
++        <arg file="${src}/org/hsqldb/lib/SimpleLog.java"/>
++        <arg file="${src}/org/hsqldb/rowio/RowInputTextLog.java"/>
++        <arg file="${src}/org/hsqldb/HsqlDateTime.java"/>
++        <arg value="+JAVA2"/>
++        <arg value="+JAVA2FULL"/>
++        <arg value="+JAVA4"/>
++        <arg value="+JAVA6"/>
++        <arg value="+JAVA7"/>
+       </java>
+     </target>
+ 
+-    <target name="store" depends="switchtojdk16"
++    <target name="store" depends="switchtojdk17"
+             description="compiles the /store folder">
+       <javac srcdir="${src}"
+              destdir="classes"
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcCallableStatement.java	2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcCallableStatement.java	2012-02-08 15:47:35.842635642 +0000
+@@ -3375,4 +3375,18 @@
+     }
+ 
+ //#endif JAVA6
++
++//#ifdef JAVA7
++    public <T> T getObject(String columnLabel, Class<T> type) throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++    public <T> T getObject(int ColumnIndex, Class<T> type) throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++
++//#endif JAVA7
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcConnection.java	2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcConnection.java	2012-02-08 15:47:35.851635628 +0000
+@@ -48,6 +48,12 @@
+ import java.sql.SQLXML;
+ 
+ //#endif JAVA6
++
++//#ifdef JAVA7
++import java.util.concurrent.Executor;
++
++//#endif JAVA7
++
+ import java.sql.PreparedStatement;
+ import java.sql.SQLException;
+ import java.sql.SQLWarning;
+@@ -2793,4 +2799,31 @@
+     }
+ 
+ //#endif JAVA6
++
++//#ifdef JAVA7
++    public int getNetworkTimeout() throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++    public void setNetworkTimeout(Executor executor, int millis) throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++    public void abort(Executor executor) throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++    
++    public String getSchema() throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++    public void setSchema(String schema) throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++//#endif JAVA7
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcDatabaseMetaData.java	2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcDatabaseMetaData.java	2012-02-08 15:47:35.835635654 +0000
+@@ -5693,4 +5693,21 @@
+     }
+ 
+ //#endif JAVA6
++
++
++//#ifdef JAVA7
++    public boolean generatedKeyAlwaysReturned() throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++    public ResultSet getPseudoColumns(String catalog, String schemaPattern,
++                                      String tableNamePattern, String columnNamePattern) throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++
++//#endif JAVA7
++
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcDataSource.java	2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcDataSource.java	2012-02-08 15:47:35.836635653 +0000
+@@ -47,6 +47,11 @@
+ //#endif JAVA4
+ import org.hsqldb.jdbcDriver;
+ 
++//#ifdef JAVA7
++import java.sql.SQLFeatureNotSupportedException;
++import java.util.logging.Logger;
++//#endif JAVA7
++
+ // boucherb@users 20040411 - doc 1.7.2 - javadoc updates toward 1.7.2 final
+ 
+ /**
+@@ -323,4 +328,12 @@
+     }
+ 
+ //#endif JAVA6
++
++//#ifdef JAVA7
++    public Logger getParentLogger() throws SQLFeatureNotSupportedException
++    {
++        throw new SQLFeatureNotSupportedException("Not supported yet.");
++    }
++
++//#endif JAVA7
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcResultSet.java	2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcResultSet.java	2012-02-08 15:47:35.866635606 +0000
+@@ -5324,4 +5324,19 @@
+     }
+ 
+ //#endif JAVA6
++
++//#ifdef JAVA7
++
++    public <T> T getObject(String columnLabel, Class<T> type) throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++    public <T> T getObject(int columnNum, Class<T> type) throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++//#endif JAVA7
++
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbc/jdbcStatement.java	2012-02-08 15:14:42.802123563 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbc/jdbcStatement.java	2012-02-08 15:47:35.872635595 +0000
+@@ -1608,4 +1608,16 @@
+         throw new UnsupportedOperationException("Not supported yet.");
+     }
+ //#endif JAVA6
++
++//#ifdef JAVA7
++    public boolean isCloseOnCompletion() throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++
++    public void closeOnCompletion() throws SQLException
++    {
++        throw new UnsupportedOperationException("Not supported yet.");
++    }
++//#endif JAVA7
+ }
+--- misc/hsqldb/src/org/hsqldb/jdbcDriver.java	2012-02-08 15:14:42.800123566 +0000
++++ misc/build/hsqldb/src/org/hsqldb/jdbcDriver.java	2012-02-08 15:47:35.826635667 +0000
+@@ -42,6 +42,11 @@
+ import org.hsqldb.persist.HsqlDatabaseProperties;
+ import org.hsqldb.persist.HsqlProperties;
+ 
++//#ifdef JAVA7
++import java.sql.SQLFeatureNotSupportedException;
++import java.util.logging.Logger;
++//#endif JAVA7
++
+ // fredt@users 20011220 - patch 1.7.0 by fredt
+ // new version numbering scheme
+ // fredt@users 20020320 - patch 1.7.0 - JDBC 2 support and error trapping
+@@ -321,4 +326,12 @@
+             DriverManager.registerDriver(new jdbcDriver());
+         } catch (Exception e) {}
+     }
++
++//#ifdef JAVA7
++    public Logger getParentLogger() throws SQLFeatureNotSupportedException
++    {
++        throw new SQLFeatureNotSupportedException("Not supported yet.");
++    }
++
++//#endif JAVA7
+ }
