提交 dd4dd186 authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 e299cfc2
......@@ -161,7 +161,7 @@
<fileset dir="src/docsrc" includes="index.html"/>
<fileset dir="src/docsrc" includes="html/**/*" excludes="**/*.jsp" />
</copy>
<java classname="org.h2.tools.code.CheckPackageHtml" classpath="bin"/>
<java classname="org.h2.tools.code.CheckJavadoc" classpath="bin"/>
<java classname="org.h2.tools.code.CheckTextFiles" classpath="bin"/>
<java classname="org.h2.tools.doc.GenerateDoc" classpath="bin">
<arg line="-in src/docsrc/html -out docs/html"/>
......
......@@ -126,4 +126,6 @@ public class SysProperties {
public static String getBaseDir() {
return baseDir;
}
public static final int CACHE_SIZE_INDEX_DEFAULT = CACHE_SIZE_DEFAULT >> CACHE_SIZE_INDEX_SHIFT;
}
......@@ -4,7 +4,6 @@
*/
package org.h2.engine;
import org.h2.constant.SysProperties;
/*
* Release checklist
......@@ -176,5 +175,4 @@ public class Constants {
public static final int ENCRYPTION_KEY_HASH_ITERATIONS = 1024;
public static final String SCRIPT_SQL = "script.sql";
public static final int CACHE_MIN_RECORDS = 16;
public static final int CACHE_SIZE_INDEX_DEFAULT = SysProperties.CACHE_SIZE_DEFAULT >> SysProperties.CACHE_SIZE_INDEX_SHIFT;
}
......@@ -390,7 +390,7 @@ public class Database implements DataHandler {
private void openFileIndex() throws SQLException {
fileIndex = new DiskFile(this, databaseName + Constants.SUFFIX_INDEX_FILE, accessModeData, false,
logIndexChanges, Constants.CACHE_SIZE_INDEX_DEFAULT);
logIndexChanges, SysProperties.CACHE_SIZE_INDEX_DEFAULT);
}
public DataPage getDataPage() {
......
......@@ -9,6 +9,9 @@ import java.io.PrintWriter;
import java.sql.BatchUpdateException;
import java.sql.SQLException;
/**
* Represents a batch update database exception.
*/
public class JdbcBatchUpdateException extends BatchUpdateException {
private static final long serialVersionUID = 9006432914018679675L;
......
......@@ -11,7 +11,7 @@ import java.sql.SQLException;
import org.h2.engine.Constants;
/**
* Represents an exception.
* Represents a database exception.
*/
public class JdbcSQLException extends SQLException {
......
......@@ -7,7 +7,7 @@ package org.h2.store.fs;
import java.io.IOException;
/**
* This interface represents a RandomAccessFile.
* This interface represents a random access file.
*/
public interface FileObject {
......
......@@ -11,7 +11,7 @@ import java.io.RandomAccessFile;
import org.h2.util.FileUtils;
/**
* This class is extends a RandomAccessFile.
* This class is extends a java.io.RandomAccessFile.
*/
public class FileObjectDisk extends RandomAccessFile implements FileObject {
......
......@@ -74,10 +74,10 @@ import org.h2.test.synth.TestCrashAPI;
import org.h2.test.synth.TestHaltApp;
import org.h2.test.synth.TestJoin;
import org.h2.test.synth.TestKill;
import org.h2.test.synth.TestMulti;
import org.h2.test.synth.TestRandomSQL;
import org.h2.test.synth.TestSynth;
import org.h2.test.synth.TestTimer;
import org.h2.test.synth.sql.TestSynth;
import org.h2.test.synth.thread.TestMulti;
import org.h2.test.unit.TestBitField;
import org.h2.test.unit.TestCache;
import org.h2.test.unit.TestCompress;
......@@ -149,7 +149,6 @@ java org.h2.test.TestAll timer
/*
check no more @author
staging.trace.db.gz
......@@ -160,7 +159,8 @@ http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/callablestatement.html#1
-Djboss.bind.address=<ip_address>
-Dh2.bindAddress=...
documentation: package.html: write test (enforce one package.html where there is a .java file)
[echo] Java version is 1.6 but source code is switched to 1.4.
[echo] Run ant codeswitchJdk... first.
write to the db file what version was used to create a database
......
......@@ -11,6 +11,9 @@ import java.sql.Statement;
import org.h2.test.TestBase;
/**
* Tests for the CallableStatement class.
*/
public class TestCallableStatement extends TestBase {
public void test() throws Exception {
......
......@@ -12,10 +12,10 @@ import java.sql.Statement;
import org.h2.test.TestBase;
/**
* @author Thomas
* Tests Statement.cancel
*/
public class TestCancel extends TestBase {
class CancelThread extends Thread {
......
......@@ -16,6 +16,9 @@ import javax.transaction.xa.Xid;
import org.h2.jdbcx.JdbcDataSource;
import org.h2.test.TestBase;
/**
* Tests DataSource and XAConnection.
*/
public class TestDataSource extends TestBase {
// public static void main(String[] args) throws Exception {
......
......@@ -13,6 +13,9 @@ import java.util.Properties;
import org.h2.api.DatabaseEventListener;
import org.h2.test.TestBase;
/**
* Tests the DatabaseEventListener interface.
*/
public class TestDatabaseEventListener extends TestBase implements DatabaseEventListener {
private boolean calledOpened, calledClosingDatabase, calledScan;
......
......@@ -13,6 +13,9 @@ import java.sql.Statement;
import org.h2.constant.SysProperties;
import org.h2.test.TestBase;
/**
* Tests the server by creating many JDBC objects (result sets and so on).
*/
public class TestManyJdbcObjects extends TestBase {
public void test() throws Exception {
......
......@@ -15,6 +15,9 @@ import org.h2.engine.Constants;
import org.h2.test.TestBase;
import org.h2.value.DataType;
/**
* Test for the DatabaseMetaData implementation.
*/
public class TestMetaData extends TestBase {
Connection conn;
......
......@@ -11,9 +11,8 @@ import java.sql.Statement;
import org.h2.test.TestBase;
/**
* @author Thomas
* Tests the Connection.nativeSQL method.
*/
public class TestNativeSQL extends TestBase {
public void test() throws Exception {
......
......@@ -20,6 +20,9 @@ import java.sql.Types;
import org.h2.test.TestBase;
/**
* Tests for the PreparedStatement implementation.
*/
public class TestPreparedStatement extends TestBase {
static final int LOB_SIZE = 4000, LOB_SIZE_BIG = 512 * 1024;
......
......@@ -25,6 +25,9 @@ import java.util.TimeZone;
import org.h2.test.TestBase;
/**
* Tests for the ResultSet implementation.
*/
public class TestResultSet extends TestBase {
Connection conn;
Statement stat;
......
......@@ -14,6 +14,9 @@ import org.h2.constant.SysProperties;
import org.h2.jdbc.JdbcStatement;
import org.h2.test.TestBase;
/**
* Tests for the Statement implementation.
*/
public class TestStatement extends TestBase {
Connection conn;
......
......@@ -9,6 +9,9 @@ import java.sql.SQLException;
import org.h2.test.TestBase;
/**
* Transaction isolation level tests.
*/
public class TestTransactionIsolation extends TestBase {
Connection conn1, conn2;
......
......@@ -19,6 +19,9 @@ import java.sql.Timestamp;
import org.h2.test.TestBase;
/**
* Updatable result set tests.
*/
public class TestUpdatableResultSet extends TestBase {
public void test() throws Exception {
......
......@@ -8,9 +8,12 @@ import java.sql.Connection;
import org.h2.jdbcx.JdbcDataSource;
/**
* A simple XA test.
*/
public class TestXASimple {
int notYetImplemented;
private int notYetImplemented;
public static void main(String[] args) throws Exception {
Class.forName("org.h2.Driver");
......
......@@ -12,6 +12,10 @@ import java.sql.SQLException;
import org.h2.test.TestBase;
/**
* Tests a custom BigDecimal implementation, as well
* as direct modification of a byte in a byte array.
*/
public class TestZloty extends TestBase {
public void test() throws Exception {
......
......@@ -16,6 +16,9 @@ import org.h2.jdbcx.JdbcDataSource;
import org.h2.test.TestBase;
import org.h2.util.JdbcUtils;
/**
* Basic XA tests.
*/
public class TestXA extends TestBase {
private static final String DB_NAME1 = "xadb1";
private static final String DB_NAME2 = "xadb2";
......
......@@ -9,6 +9,9 @@ import java.net.UnknownHostException;
import java.text.NumberFormat;
import javax.transaction.xa.Xid;
/**
* A utility class for the basic XA test.
*/
public class TestXid implements Xid {
private static final NumberFormat NF;
......
......@@ -11,6 +11,10 @@ import java.sql.Statement;
import org.h2.test.TestBase;
/**
* Tests remote JDBC access with nested loops.
* This is not allowed in some databases.
*/
public class TestNestedLoop extends TestBase {
public void test() throws Exception {
......
......@@ -16,6 +16,9 @@ import java.sql.Statement;
import org.h2.test.TestBase;
import org.h2.tools.Server;
/**
* Tests the PostgreSQL server protocol compliant implementation.
*/
public class TestPgServer extends TestBase {
public void test() throws Exception {
......
......@@ -7,6 +7,9 @@ package org.h2.test.server;
import org.h2.test.TestBase;
import org.h2.tools.Server;
/**
* Tests the H2 Console application.
*/
public class TestWeb extends TestBase {
public void test() throws Exception {
......
......@@ -12,6 +12,9 @@ import java.net.URL;
import org.h2.util.IOUtils;
/**
* A simple web browser simulator.
*/
public class WebClient {
private String sessionId;
......
......@@ -10,6 +10,9 @@ import java.util.LinkedList;
import org.h2.util.IOUtils;
/**
* Catches the output of another process.
*/
class OutputCatcher extends Thread {
private InputStream in;
private LinkedList list = new LinkedList();
......
......@@ -15,6 +15,9 @@ import java.util.Random;
import org.h2.test.TestBase;
import org.h2.tools.DeleteDbFiles;
/**
* A b-tree index test.
*/
public class TestBtreeIndex extends TestBase {
public void test() throws Exception {
......
......@@ -31,10 +31,12 @@ import org.h2.jdbc.JdbcConnection;
import org.h2.test.TestAll;
import org.h2.test.TestBase;
import org.h2.test.db.TestScript;
import org.h2.test.synth.sql.RandomGen;
import org.h2.util.RandomUtils;
/**
* This is sometimes called 'Fuzz Testing'
* A test that calls random methods with random parameters from JDBC objects.
* This is sometimes called 'Fuzz Testing'.
*/
public class TestCrashAPI extends TestBase {
public static final Class[] INTERFACES = { Connection.class, PreparedStatement.class, Statement.class,
......
......@@ -22,6 +22,9 @@ import org.h2.tools.Backup;
import org.h2.tools.DeleteDbFiles;
import org.h2.util.IOUtils;
/**
* Tests database recovery by destroying a process that writes to the database.
*/
public abstract class TestHalt extends TestBase {
private SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss ");
......
......@@ -9,6 +9,9 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* The application code for the {@link TestHalt} application.
*/
public class TestHaltApp extends TestHalt {
private int rowCount;
......
......@@ -18,6 +18,9 @@ import java.util.Random;
import org.h2.test.TestBase;
import org.h2.util.StringUtils;
/**
* A test that runs random join statements against two databases and compares the results.
*/
public class TestJoin extends TestBase {
private ArrayList connections = new ArrayList();
......
......@@ -13,6 +13,10 @@ import java.util.Random;
import org.h2.test.TestBase;
/**
* A random recovery test. This test starts a process that executes random operations
* against a database, then kills this process. Afterwards recovery is tested.
*/
public class TestKill extends TestBase {
Connection conn;
......
......@@ -13,6 +13,9 @@ import java.util.Random;
import org.h2.store.FileLister;
import org.h2.test.TestBase;
/**
* Test application for {@link TestKill}.
*/
public class TestKillProcess {
public static void main(String[] args) throws Exception {
try {
......
......@@ -14,6 +14,10 @@ import java.util.Random;
import org.h2.test.TestBase;
/**
* Standalone recovery test. A new process is started and then killed while it
* executes random statements.
*/
public class TestKillRestart extends TestBase {
public void test() throws Exception {
......
......@@ -18,6 +18,9 @@ import org.h2.test.TestBase;
import org.h2.tools.DeleteDbFiles;
import org.h2.util.RandomUtils;
/**
* This test executes random SQL statements generated using the BNF tool.
*/
public class TestRandomSQL extends TestBase {
private int dbId;
......
......@@ -10,7 +10,11 @@ import java.sql.SQLException;
import java.sql.Statement;
import org.h2.test.TestBase;
import org.h2.test.synth.sql.RandomGen;
/**
* A test that runs random operations against a table to test the various index implementations.
*/
public class TestSimpleIndex extends TestBase {
Connection conn;
......
......@@ -12,10 +12,12 @@ import java.util.Random;
import org.h2.test.TestBase;
/**
* This test starts multiple threads and executes random operations in each thread.
*/
public class TestThreads extends TestBase implements Runnable {
public TestThreads() {
}
public void test() throws Exception {
......
......@@ -15,6 +15,11 @@ import org.h2.test.TestBase;
import org.h2.tools.Backup;
import org.h2.tools.DeleteDbFiles;
/**
* A recovery test that checks the consistency of a database (if it exists),
* then deletes everything and runs in an endless loop executing random operations.
* This loop is usually stopped by turning off the computer.
*/
public class TestTimer extends TestBase {
public void test() throws Exception {
......
......@@ -2,7 +2,7 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
......@@ -10,6 +10,9 @@ import java.sql.Types;
import org.h2.value.DataType;
/**
* A column of a table.
*/
class Column {
private TestSynth config;
private String name;
......
......@@ -2,11 +2,14 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.sql.SQLException;
import java.util.HashMap;
/**
* Represents a statement.
*/
class Command {
TestSynth config;
static final int CONNECT = 0, RESET = 1, DISCONNECT = 2, CREATE_TABLE = 3, INSERT = 4, DROP_TABLE = 5, SELECT = 6,
......
......@@ -2,7 +2,7 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
......@@ -12,6 +12,9 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
/**
* Represents a connection to a real database.
*/
class DbConnection implements DbInterface {
private TestSynth config;
private int id;
......
......@@ -2,10 +2,13 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.sql.SQLException;
/**
* Represents a connection to a (real or simulated) database.
*/
public interface DbInterface {
void reset() throws SQLException;
......
......@@ -2,11 +2,14 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.sql.SQLException;
import java.util.ArrayList;
/**
* Represents a connection to a simulated database.
*/
public class DbState implements DbInterface {
private TestSynth config;
......
......@@ -2,11 +2,14 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.sql.Types;
import java.util.ArrayList;
/**
* Represents an expression.
*/
public class Expression {
boolean isCondition;
......
......@@ -2,8 +2,11 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
/**
* Represents an index.
*/
public class Index {
Table table;
String name;
......
......@@ -2,13 +2,16 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Random;
/**
* A random data generator class.
*/
public class RandomGen {
private Random random = new Random();
......
......@@ -2,7 +2,7 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.io.PrintWriter;
import java.io.StringWriter;
......@@ -14,6 +14,9 @@ import java.util.Collections;
import org.h2.test.TestBase;
/**
* Represents an in-memory result.
*/
class Result implements Comparable {
static final int SUCCESS = 0, BOOLEAN = 1, INT = 2, EXCEPTION = 3, RESULT_SET = 4;
private int type;
......
......@@ -2,11 +2,14 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Represents a row.
*/
class Row implements Comparable {
private Value[] data;
......
......@@ -2,10 +2,13 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.util.ArrayList;
/**
* Represents a table.
*/
class Table {
private TestSynth config;
private String name;
......
......@@ -2,7 +2,7 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.util.ArrayList;
......@@ -10,10 +10,15 @@ import org.h2.test.TestAll;
import org.h2.test.TestBase;
import org.h2.util.RandomUtils;
// TODO hsqldb: call 1||null should return 1 but returns null
// TODO hsqldb: call mod(1) should return invalid parameter count but returns null
/**
* A test that generates random SQL statements against a number of databases
* and compares the results.
*/
public class TestSynth extends TestBase {
// TODO hsqldb: call 1||null should return 1 but returns null
// TODO hsqldb: call mod(1) should return invalid parameter count but returns null
static final int H2 = 0, H2_MEM = 1, HSQLDB = 2, MYSQL = 3, POSTGRESQL = 4;
private DbState db = new DbState(this);
......
......@@ -2,7 +2,7 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.sql;
import java.math.BigDecimal;
import java.sql.Date;
......@@ -15,6 +15,9 @@ import java.sql.Types;
import org.h2.value.DataType;
/**
* Represents a simple value.
*/
public class Value {
private int type;
private Object data;
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Javadoc package documentation
</title></head><body style="font: 8pt/130% Tahoma, Arial, Helvetica, sans-serif; font-weight: normal;">
A synthetic test using random SQL statements executed against multiple databases.
</body></html>
\ No newline at end of file
......@@ -2,7 +2,7 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.thread;
import java.sql.Connection;
import java.sql.DriverManager;
......@@ -10,6 +10,9 @@ import java.sql.SQLException;
import org.h2.test.TestBase;
/**
* Starts multiple threads and performs random operations on each thread.
*/
public class TestMulti extends TestBase {
public volatile boolean stop;
......
......@@ -2,7 +2,7 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.thread;
import java.sql.Connection;
import java.sql.PreparedStatement;
......@@ -10,6 +10,10 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* The operation part of {@link TestMulti}.
* Queries and updates a table.
*/
public class TestMultiNews extends TestMultiThread {
private static final String PREFIX_URL = "http://feeds.wizbangblog.com/WizbangFullFeed?m=";
......
......@@ -2,13 +2,17 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.thread;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* The operation part of {@link TestMulti}.
* Executes simple queries and updates in a table.
*/
public class TestMultiNewsSimple extends TestMultiThread {
Connection conn;
......
......@@ -2,7 +2,7 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.thread;
import java.math.BigDecimal;
import java.sql.Connection;
......@@ -11,6 +11,10 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Random;
/**
* The operation part of {@link TestMulti}.
* Queries and updates two tables.
*/
public class TestMultiOrder extends TestMultiThread {
Connection conn;
......
......@@ -2,13 +2,16 @@
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.synth;
package org.h2.test.synth.thread;
import java.sql.SQLException;
import java.util.Random;
import org.h2.test.TestBase;
/**
* The is an abstract operation for {@link TestMulti}.
*/
abstract class TestMultiThread extends Thread {
TestMulti base;
......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
Initial Developer: H2 Group
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>
Javadoc package documentation
</title></head><body style="font: 8pt/130% Tahoma, Arial, Helvetica, sans-serif; font-weight: normal;">
Synthetic tests using random operations in multiple threads.
</body></html>
\ No newline at end of file
/*
* Copyright 2004-2007 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.tools.code;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* This tool checks that for each .java file there is a package.html file.
* This tool checks that for each .java file there is a package.html file,
* and that for each .java file there is at least one (class level) javadoc comment.
*/
public class CheckPackageHtml {
public class CheckJavadoc {
private boolean hasError;
public static void main(String[] args) throws Exception {
new CheckPackageHtml().run();
new CheckJavadoc().run();
}
void run() throws Exception {
......@@ -43,6 +50,7 @@ public class CheckPackageHtml {
}
} else {
if (name.endsWith(".java")) {
checkJavadoc(file);
return 1;
} else if (name.equals("package.html")) {
return 2;
......@@ -51,4 +59,22 @@ public class CheckPackageHtml {
return 0;
}
private void checkJavadoc(File file) throws IOException {
RandomAccessFile in = new RandomAccessFile(file, "r");
byte[] data = new byte[(int) file.length()];
in.readFully(data);
in.close();
String text = new String(data);
int comment = text.indexOf("/**");
if (comment < 0) {
System.out.println("No Javadoc comment: " + file.getAbsolutePath());
hasError = true;
}
int open = text.indexOf('{');
if (open < 0 || open < comment) {
System.out.println("No '{' or '{' before the first Javadoc comment: " + file.getAbsolutePath());
hasError = true;
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论