提交 1226e747 authored 作者: Thomas Mueller's avatar Thomas Mueller

Fix test cases

上级 75604676
......@@ -22,7 +22,7 @@ import org.h2.store.fs.FilePathNio;
*/
public class FileStore {
private final String fileName;
private String fileName;
private boolean readOnly;
private FileChannel file;
private FileLock fileLock;
......@@ -30,17 +30,6 @@ public class FileStore {
private long readCount;
private long writeCount;
public FileStore(String fileName, boolean readOnly) {
if (fileName != null && fileName.indexOf(':') < 0) {
// NIO is used, unless a different file system is specified
// the following line is to ensure the NIO file system is compiled
FilePathNio.class.getName();
fileName = "nio:" + fileName;
}
this.fileName = fileName;
this.readOnly = readOnly;
}
@Override
public String toString() {
return fileName;
......@@ -67,7 +56,14 @@ public class FileStore {
}
public void open(char[] encryptionKey) {
public void open(String fileName, boolean readOnly, char[] encryptionKey) {
if (fileName != null && fileName.indexOf(':') < 0) {
// NIO is used, unless a different file system is specified
// the following line is to ensure the NIO file system is compiled
FilePathNio.class.getName();
fileName = "nio:" + fileName;
}
this.fileName = fileName;
FilePath f = FilePath.get(fileName);
FilePath parent = f.getParent();
if (!parent.exists()) {
......@@ -76,6 +72,7 @@ public class FileStore {
if (f.exists() && !f.canWrite()) {
readOnly = true;
}
this.readOnly = readOnly;
try {
file = f.open(readOnly ? "r" : "rw");
if (encryptionKey != null) {
......
......@@ -267,8 +267,8 @@ public class MVStore {
cache = null;
return;
}
fileStore = new FileStore();
boolean readOnly = config.containsKey("readOnly");
fileStore = new FileStore(f, readOnly);
o = config.get("cacheSize");
int mb = o == null ? 16 : (Integer) o;
int maxMemoryBytes = mb * 1024 * 1024;
......@@ -284,7 +284,7 @@ public class MVStore {
unsavedPageCountMax = writeBufferSize / (div == 0 ? 1 : div);
char[] encryptionKey = (char[]) config.get("encryptionKey");
try {
fileStore.open(encryptionKey);
fileStore.open(f, readOnly, encryptionKey);
if (fileStore.size() == 0) {
creationTime = 0;
creationTime = getTime();
......
......@@ -59,6 +59,8 @@ public class SourceCompiler {
*/
final HashMap<String, Class<?>> compiled = New.hashMap();
boolean useJavaSystemCompiler = true;
static {
JavaCompiler c;
try {
......@@ -89,6 +91,15 @@ public class SourceCompiler {
compiled.clear();
}
/**
* Enable or disable the usage of the Java system compiler.
*
* @param enabled true to enable
*/
public void setJavaSystemCompiler(boolean enabled) {
this.useJavaSystemCompiler = enabled;
}
/**
* Get the class object for the given name.
*
......@@ -125,7 +136,7 @@ public class SourceCompiler {
className = name;
}
String s = getCompleteSourceCode(packageName, className, source);
if (JAVA_COMPILER != null) {
if (JAVA_COMPILER != null && useJavaSystemCompiler) {
classInstance = javaxToolsJavac(packageName, className, s);
} else {
byte[] data = javacCompile(packageName, className, s);
......
......@@ -398,6 +398,7 @@ public class TestMVStore extends TestBase {
fileName(fileName).
encryptionKey(passwordChars).open();
assertTrue(s.getFileStore().isReadOnly());
s.close();
FileUtils.delete(fileName);
assertFalse(FileUtils.exists(fileName));
......
......@@ -64,6 +64,7 @@ public class ProxyCodeGenerator {
cg.write(new PrintWriter(sw));
String code = sw.toString();
String proxy = "bytecode."+ c.getSimpleName() + "Proxy";
compiler.setJavaSystemCompiler(false);
compiler.setSource(proxy, code);
// System.out.println(code);
Class<?> px = compiler.getClass(proxy);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论