4239752: FileSystem should be a platform-specific class to avoid native code

Reviewed-by: alanb, dholmes, erikj, jgish
This commit is contained in:
Dan Xu 2012-10-26 11:21:02 +01:00
parent 020472d122
commit ed483ab38b
10 changed files with 39 additions and 34 deletions

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -66,6 +66,7 @@ FILES_export = \
java/util/prefs/FileSystemPreferences.java \
java/io/Console.java \
java/io/FileDescriptor.java \
java/io/DefaultFileSystem.java \
java/io/InputStream.java \
java/io/FileInputStream.java \
java/io/FileOutputStream.java \
@ -142,6 +143,7 @@ FILES_export = \
java/io/Console.java \
java/io/FileSystem.java \
java/io/FileDescriptor.java \
java/io/DefaultFileSystem.java \
java/io/InputStream.java \
java/io/FileInputStream.java \
java/io/FileOutputStream.java \

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -32,7 +32,6 @@ FILES_c = \
Compiler.c \
Console_md.c \
Double.c \
FileSystem_md.c \
FileDescriptor_md.c \
FileInputStream.c \
FileInputStream_md.c \

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -438,6 +438,7 @@ JAVA_JAVA_java = \
java/io/File.java \
java/io/FileSystem.java \
java/io/FileDescriptor.java \
java/io/DefaultFileSystem.java \
java/io/FilenameFilter.java \
java/io/FileFilter.java \
java/io/FilePermission.java \

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -87,7 +87,6 @@ SUNWprivate_1.1 {
Java_java_io_FileOutputStream_open;
Java_java_io_FileOutputStream_write;
Java_java_io_FileOutputStream_writeBytes;
Java_java_io_FileSystem_getFileSystem;
Java_java_io_ObjectInputStream_bytesToDoubles;
Java_java_io_ObjectInputStream_bytesToFloats;
Java_java_io_ObjectOutputStream_doublesToBytes;

View File

@ -312,7 +312,8 @@ $(eval $(call SetupJavaCompilation,BUILD_JDK,\
JDK_BASE_HEADER_CLASSES:=java.lang.Integer \
java.lang.Long \
java.net.SocketOptions \
sun.nio.ch.IOStatus
sun.nio.ch.IOStatus \
java.io.FileSystem
JDK_BASE_HEADER_JAVA_FILES:=$(patsubst %,$(JDK_TOPDIR)/src/share/classes/%.java,\
$(subst .,/,$(JDK_BASE_HEADER_CLASSES)))

View File

@ -1,5 +1,5 @@
#
# Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -87,7 +87,6 @@ SUNWprivate_1.1 {
Java_java_io_FileOutputStream_open;
Java_java_io_FileOutputStream_write;
Java_java_io_FileOutputStream_writeBytes;
Java_java_io_FileSystem_getFileSystem;
Java_java_io_ObjectInputStream_bytesToDoubles;
Java_java_io_ObjectInputStream_bytesToFloats;
Java_java_io_ObjectOutputStream_doublesToBytes;

View File

@ -153,7 +153,7 @@ public class File
/**
* The FileSystem object representing the platform's local file system.
*/
private static final FileSystem fs = FileSystem.getFileSystem();
private static final FileSystem fs = DefaultFileSystem.getFileSystem();
/**
* This abstract pathname's normalized pathname string. A normalized

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -32,13 +32,6 @@ package java.io;
abstract class FileSystem {
/**
* Return the FileSystem object representing this platform's local
* filesystem.
*/
public static native FileSystem getFileSystem();
/* -- Normalization and construction -- */
/**

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -23,13 +23,18 @@
* questions.
*/
#include "jni.h"
#include "jni_util.h"
#include "java_io_FileSystem.h"
package java.io;
/**
*
* @since 1.8
*/
class DefaultFileSystem {
JNIEXPORT jobject JNICALL
Java_java_io_FileSystem_getFileSystem(JNIEnv *env, jclass ignored)
{
return JNU_NewObjectByName(env, "java/io/UnixFileSystem", "()V");
/**
* Return the FileSystem object for Unix-based platform.
*/
public static FileSystem getFileSystem() {
return new UnixFileSystem();
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -23,12 +23,18 @@
* questions.
*/
#include <windows.h>
#include "jni.h"
#include "jni_util.h"
package java.io;
JNIEXPORT jobject JNICALL
Java_java_io_FileSystem_getFileSystem(JNIEnv *env, jclass ignored)
{
return JNU_NewObjectByName(env, "java/io/WinNTFileSystem", "()V");
/**
*
* @since 1.8
*/
class DefaultFileSystem {
/**
* Return the FileSystem object for Windows platform.
*/
public static FileSystem getFileSystem() {
return new WinNTFileSystem();
}
}