jdk annotations for some java.sql methods, related cleanup in stdlib & tests

This commit is contained in:
Alex Tkachman
2012-09-27 12:00:57 +02:00
parent c8e711f84b
commit 57c27bdd37
8 changed files with 147 additions and 20 deletions
@@ -0,0 +1,33 @@
import java.sql.DriverManager
fun getConnection(url: String?) {
DriverManager.<!NONE_APPLICABLE!>getConnection<!>(url)
DriverManager.getConnection(url!!) : java.sql.Connection
}
fun getConnection(url: String?, props: java.util.Properties?) {
DriverManager.<!NONE_APPLICABLE!>getConnection<!>(url, props)
DriverManager.getConnection(url!!, props) : java.sql.Connection
}
fun getConnection(url: String?, user: String?, password: String?) {
DriverManager.<!NONE_APPLICABLE!>getConnection<!>(url, user!!, password!!)
DriverManager.<!NONE_APPLICABLE!>getConnection<!>(url!!, user, password!!)
DriverManager.<!NONE_APPLICABLE!>getConnection<!>(url!!, user!!, password)
DriverManager.getConnection(url!!, user!!, password!!) : java.sql.Connection
}
fun getDriver(url: String?) {
DriverManager.getDriver(<!TYPE_MISMATCH!>url<!>)
DriverManager.getDriver(url!!) : java.sql.Driver
}
fun registerDriver(driver: java.sql.Driver?) {
DriverManager.registerDriver(<!TYPE_MISMATCH!>driver<!>)
DriverManager.registerDriver(driver!!)
}
fun getDrivers() {
// todo fix to java.util.Enumeration<java.sql.Driver> bug in compiler fixed
DriverManager.getDrivers() : java.util.Enumeration<*>
}
@@ -0,0 +1,3 @@
fun getMetaData(rs: java.sql.ResultSet) {
rs.getMetaData() : java.sql.ResultSetMetaData
}
@@ -0,0 +1,13 @@
fun executeQuery(statement: java.sql.Statement, cmd: String?) {
statement.executeQuery(<!TYPE_MISMATCH!>cmd<!>)
statement.executeQuery(cmd!!) : java.sql.ResultSet
}
fun executeQuery(statement: java.sql.PreparedStatement) {
statement.executeQuery() : java.sql.ResultSet
}
fun executeUpdate(statement: java.sql.Statement, cmd: String?) {
statement.<!NONE_APPLICABLE!>executeUpdate<!>(cmd)
statement.executeUpdate(cmd!!)
}
@@ -13,18 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.jet.checkers;
import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestSuite;
import java.io.File;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.test.InnerTestClasses;
import org.jetbrains.jet.test.TestMetadata;
import org.jetbrains.jet.checkers.AbstractDiagnosticsTestWithEagerResolve;
import java.io.File;
/** This class is generated by {@link org.jetbrains.jet.checkers.AbstractDiagnosticsTestWithEagerResolve}. DO NOT MODIFY MANUALLY */
@InnerTestClasses({JetDiagnosticsTestGenerated.Tests.class, JetDiagnosticsTestGenerated.Script.class})
@@ -2047,6 +2045,7 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
}
@TestMetadata("compiler/testData/diagnostics/tests/jdk-annotations")
@InnerTestClasses({Jdk_annotations.Sql.class})
public static class Jdk_annotations extends AbstractDiagnosticsTestWithEagerResolve {
public void testAllFilesPresentInJdk_annotations() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.checkers.AbstractDiagnosticsTestWithEagerResolve", new File("compiler/testData/diagnostics/tests/jdk-annotations"), "kt", true);
@@ -2067,6 +2066,35 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
doTest("compiler/testData/diagnostics/tests/jdk-annotations/ArrayListToArray.kt");
}
@TestMetadata("compiler/testData/diagnostics/tests/jdk-annotations/sql")
public static class Sql extends AbstractDiagnosticsTestWithEagerResolve {
public void testAllFilesPresentInSql() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.checkers.AbstractDiagnosticsTestWithEagerResolve", new File("compiler/testData/diagnostics/tests/jdk-annotations/sql"), "kt", true);
}
@TestMetadata("DriverManager.kt")
public void testDriverManager() throws Exception {
doTest("compiler/testData/diagnostics/tests/jdk-annotations/sql/DriverManager.kt");
}
@TestMetadata("ResultSet.kt")
public void testResultSet() throws Exception {
doTest("compiler/testData/diagnostics/tests/jdk-annotations/sql/ResultSet.kt");
}
@TestMetadata("Statement.kt")
public void testStatement() throws Exception {
doTest("compiler/testData/diagnostics/tests/jdk-annotations/sql/Statement.kt");
}
}
public static Test innerSuite() {
TestSuite suite = new TestSuite("Jdk_annotations");
suite.addTestSuite(Jdk_annotations.class);
suite.addTestSuite(Sql.class);
return suite;
}
}
@TestMetadata("compiler/testData/diagnostics/tests/library")
@@ -3446,7 +3474,7 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
suite.addTest(Inference.innerSuite());
suite.addTestSuite(Infos.class);
suite.addTestSuite(J_k.class);
suite.addTestSuite(Jdk_annotations.class);
suite.addTest(Jdk_annotations.innerSuite());
suite.addTestSuite(Library.class);
suite.addTestSuite(NullabilityAndAutoCasts.class);
suite.addTestSuite(Objects.class);
+58
View File
@@ -0,0 +1,58 @@
<root>
<!-- java.sql.DriverManager -->
<item name='java.sql.DriverManager java.sql.Connection getConnection(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager java.sql.Connection getConnection(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager java.sql.Driver getDriver(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager java.sql.Driver getDriver(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager java.sql.Connection getConnection(java.lang.String, java.util.Properties)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager java.sql.Connection getConnection(java.lang.String, java.util.Properties) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager java.sql.Connection getConnection(java.lang.String, java.lang.String, java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager java.sql.Connection getConnection(java.lang.String, java.lang.String, java.lang.String) 1'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager java.sql.Connection getConnection(java.lang.String, java.lang.String, java.lang.String) 2'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager java.sql.Connection getConnection(java.lang.String, java.lang.String, java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.DriverManager void registerDriver(java.sql.Driver) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<!-- TODO: provide correct signature after bug in compiler fixed-->
<item name='java.sql.DriverManager java.util.Enumeration getDrivers()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<!-- java.sql.ResultSet -->
<item name='java.sql.ResultSet java.sql.ResultSetMetaData getMetaData()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<!-- java.sql.Statement -->
<item name='java.sql.Statement java.sql.ResultSet executeQuery(java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.Statement java.sql.ResultSet executeQuery(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='java.sql.Statement int executeUpdate(java.lang.String) 0'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<!-- java.sql.PreparedStatement -->
<item name='java.sql.PreparedStatement java.sql.ResultSet executeQuery()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -8,17 +8,17 @@ import java.util.Properties
/**
* create connection for the specified jdbc url with no credentials
*/
fun getConnection(url : String) : Connection = DriverManager.getConnection(url)!!
fun getConnection(url : String) : Connection = DriverManager.getConnection(url)
/**
* create connection for the specified jdbc url and properties
*/
fun getConnection(url : String, info : Map<String, String>) : Connection = DriverManager.getConnection(url, info.toProperties())!!
fun getConnection(url : String, info : Map<String, String>) : Connection = DriverManager.getConnection(url, info.toProperties())
/**
* create connection for the specified jdbc url and credentials
*/
fun getConnection(url : String, user : String, password : String) : Connection = DriverManager.getConnection(url, user, password)!!
fun getConnection(url : String, user : String, password : String) : Connection = DriverManager.getConnection(url, user, password)
/**
* Executes specified block with connection and close connection after this
@@ -65,11 +65,7 @@ fun Connection.update(template : StringTemplate) : Int {
fun <T> Connection.query(sql: String, block: (ResultSet) -> T): T {
return statement{
val rs = it.executeQuery(sql)
if (rs != null) {
block(rs)
} else {
throw IllegalStateException("No ResultSet returned executeQuery($sql) on $this")
}
block(rs)
}
}
@@ -222,7 +218,7 @@ class PreparedStatementBuilder(val template : StringTemplate, val connection : C
out.append(if (constantText) it else "?")
constantText = !constantText
}
return out.toString() ?: ""
return out.toString()
}
}
@@ -17,11 +17,7 @@ fun PreparedStatement.update(): Int {
fun <T> PreparedStatement.query(block: (ResultSet) -> T): T {
try {
val resultSet = this.executeQuery()
if (resultSet == null) {
throw IllegalStateException("No ResultSet returned from $this")
} else {
return block(resultSet)
}
return block(resultSet)
} finally {
close()
}
@@ -47,7 +47,7 @@ fun <T> ResultSet.map(fn : (ResultSet) -> T) : jet.Iterable<T> {
* Returns array with column names
*/
fun ResultSet.getColumnNames() : jet.Array<String> {
val meta = getMetaData()!!
val meta = getMetaData()
return jet.Array<String>(meta.getColumnCount(), {meta.getColumnName(it + 1) ?: it.toString()})
}