< prev index next >
src/java.desktop/macosx/native/libosx/CFileManager.m
Print this page
rev 54096 : 8259651: [macOS] Replace JNF_COCOA_ENTER/EXIT macros
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion
*** 23,83 ****
* questions.
*/
#import "com_apple_eio_FileManager.h"
! #import <Cocoa/Cocoa.h>
! #import <JavaNativeFoundation/JavaNativeFoundation.h>
!
#import "ThreadUtilities.h"
/*
* Class: com_apple_eio_FileManager
* Method: _setFileTypeAndCreator
* Signature: (Ljava/lang/String;II)V
*/
JNIEXPORT void JNICALL Java_com_apple_eio_FileManager__1setFileTypeAndCreator
(JNIEnv *env, jclass clz, jstring javaFilename, jint type, jint creator)
{
! JNF_COCOA_ENTER(env);
! NSString *filename = JNFNormalizedNSStringForPath(env, javaFilename);
NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:type], NSFileHFSTypeCode,
[NSNumber numberWithInt:creator], NSFileHFSCreatorCode, nil];
[[NSFileManager defaultManager] changeFileAttributes:attr atPath:filename];
! JNF_COCOA_EXIT(env);
}
/*
* Class: com_apple_eio_FileManager
* Method: _setFileType
* Signature: (Ljava/lang/String;I)V
*/
JNIEXPORT void JNICALL Java_com_apple_eio_FileManager__1setFileType
(JNIEnv *env, jclass ckz, jstring javaFilename, jint type)
{
! JNF_COCOA_ENTER(env);
! NSString *filename = JNFNormalizedNSStringForPath(env, javaFilename);
NSDictionary *attr = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:type] forKey:NSFileHFSTypeCode];
[[NSFileManager defaultManager] changeFileAttributes:attr atPath:filename];
! JNF_COCOA_EXIT(env);
}
/*
* Class: com_apple_eio_FileManager
* Method: _setFileCreator
* Signature: (Ljava/lang/String;I)V
*/
JNIEXPORT void JNICALL Java_com_apple_eio_FileManager__1setFileCreator
(JNIEnv *env, jclass clz, jstring javaFilename, jint creator)
{
! JNF_COCOA_ENTER(env);
! NSString *filename = JNFNormalizedNSStringForPath(env, javaFilename);
NSDictionary *attr = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:creator] forKey:NSFileHFSCreatorCode];
[[NSFileManager defaultManager] changeFileAttributes:attr atPath:filename];
! JNF_COCOA_EXIT(env);
}
/*
* Class: com_apple_eio_FileManager
* Method: _getFileType
--- 23,82 ----
* questions.
*/
#import "com_apple_eio_FileManager.h"
! #import "JNIUtilities.h"
#import "ThreadUtilities.h"
+ #import <Cocoa/Cocoa.h>
/*
* Class: com_apple_eio_FileManager
* Method: _setFileTypeAndCreator
* Signature: (Ljava/lang/String;II)V
*/
JNIEXPORT void JNICALL Java_com_apple_eio_FileManager__1setFileTypeAndCreator
(JNIEnv *env, jclass clz, jstring javaFilename, jint type, jint creator)
{
! JNI_COCOA_ENTER(env);
! NSString *filename = NormalizedPathNSStringFromJavaString(env, javaFilename);
NSDictionary *attr = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:type], NSFileHFSTypeCode,
[NSNumber numberWithInt:creator], NSFileHFSCreatorCode, nil];
[[NSFileManager defaultManager] changeFileAttributes:attr atPath:filename];
! JNI_COCOA_EXIT(env);
}
/*
* Class: com_apple_eio_FileManager
* Method: _setFileType
* Signature: (Ljava/lang/String;I)V
*/
JNIEXPORT void JNICALL Java_com_apple_eio_FileManager__1setFileType
(JNIEnv *env, jclass ckz, jstring javaFilename, jint type)
{
! JNI_COCOA_ENTER(env);
! NSString *filename = NormalizedPathNSStringFromJavaString(env, javaFilename);
NSDictionary *attr = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:type] forKey:NSFileHFSTypeCode];
[[NSFileManager defaultManager] changeFileAttributes:attr atPath:filename];
! JNI_COCOA_EXIT(env);
}
/*
* Class: com_apple_eio_FileManager
* Method: _setFileCreator
* Signature: (Ljava/lang/String;I)V
*/
JNIEXPORT void JNICALL Java_com_apple_eio_FileManager__1setFileCreator
(JNIEnv *env, jclass clz, jstring javaFilename, jint creator)
{
! JNI_COCOA_ENTER(env);
! NSString *filename = NormalizedPathNSStringFromJavaString(env, javaFilename);
NSDictionary *attr = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:creator] forKey:NSFileHFSCreatorCode];
[[NSFileManager defaultManager] changeFileAttributes:attr atPath:filename];
! JNI_COCOA_EXIT(env);
}
/*
* Class: com_apple_eio_FileManager
* Method: _getFileType
*** 85,100 ****
*/
JNIEXPORT jint JNICALL Java_com_apple_eio_FileManager__1getFileType
(JNIEnv *env, jclass clz, jstring javaFilename)
{
jint type = 0;
! JNF_COCOA_ENTER(env);
! NSString *filename = JNFNormalizedNSStringForPath(env, javaFilename);
NSDictionary *attributes = [[NSFileManager defaultManager] fileAttributesAtPath:filename traverseLink:YES];
NSNumber *val = [attributes objectForKey:NSFileHFSTypeCode];
type = [val intValue];
! JNF_COCOA_EXIT(env);
return type;
}
/*
* Class: com_apple_eio_FileManager
--- 84,99 ----
*/
JNIEXPORT jint JNICALL Java_com_apple_eio_FileManager__1getFileType
(JNIEnv *env, jclass clz, jstring javaFilename)
{
jint type = 0;
! JNI_COCOA_ENTER(env);
! NSString *filename = NormalizedPathNSStringFromJavaString(env, javaFilename);
NSDictionary *attributes = [[NSFileManager defaultManager] fileAttributesAtPath:filename traverseLink:YES];
NSNumber *val = [attributes objectForKey:NSFileHFSTypeCode];
type = [val intValue];
! JNI_COCOA_EXIT(env);
return type;
}
/*
* Class: com_apple_eio_FileManager
*** 103,118 ****
*/
JNIEXPORT jint JNICALL Java_com_apple_eio_FileManager__1getFileCreator
(JNIEnv *env, jclass clz, jstring javaFilename)
{
jint creator = 0;
! JNF_COCOA_ENTER(env);
! NSString *filename = JNFNormalizedNSStringForPath(env, javaFilename);
NSDictionary *attributes = [[NSFileManager defaultManager] fileAttributesAtPath:filename traverseLink:YES];
NSNumber *val = [attributes objectForKey:NSFileHFSCreatorCode];
creator = [val intValue];
! JNF_COCOA_EXIT(env);
return creator;
}
/*
* Class: com_apple_eio_FileManager
--- 102,117 ----
*/
JNIEXPORT jint JNICALL Java_com_apple_eio_FileManager__1getFileCreator
(JNIEnv *env, jclass clz, jstring javaFilename)
{
jint creator = 0;
! JNI_COCOA_ENTER(env);
! NSString *filename = NormalizedPathNSStringFromJavaString(env, javaFilename);
NSDictionary *attributes = [[NSFileManager defaultManager] fileAttributesAtPath:filename traverseLink:YES];
NSNumber *val = [attributes objectForKey:NSFileHFSCreatorCode];
creator = [val intValue];
! JNI_COCOA_EXIT(env);
return creator;
}
/*
* Class: com_apple_eio_FileManager
*** 121,143 ****
*/
JNIEXPORT jstring JNICALL Java_com_apple_eio_FileManager__1findFolder__SIZ
(JNIEnv *env, jclass clz, jshort domain, jint folderType, jboolean createIfNeeded)
{
jstring filename = nil;
! JNF_COCOA_ENTER(env);
FSRef foundRef;
createIfNeeded = createIfNeeded || (folderType == kTemporaryFolderType) || (folderType == kChewableItemsFolderType);
if (FSFindFolder((SInt16)domain, (OSType)folderType, (Boolean)createIfNeeded, &foundRef) == noErr) {
char path[PATH_MAX];
if (FSRefMakePath(&foundRef, (UInt8 *)path, sizeof(path)) == noErr) {
NSString *filenameString = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:path length:strlen(path)];
! filename = JNFNormalizedJavaStringForPath(env, filenameString);
}
}
! JNF_COCOA_EXIT(env);
return filename;
}
/*
--- 120,142 ----
*/
JNIEXPORT jstring JNICALL Java_com_apple_eio_FileManager__1findFolder__SIZ
(JNIEnv *env, jclass clz, jshort domain, jint folderType, jboolean createIfNeeded)
{
jstring filename = nil;
! JNI_COCOA_ENTER(env);
FSRef foundRef;
createIfNeeded = createIfNeeded || (folderType == kTemporaryFolderType) || (folderType == kChewableItemsFolderType);
if (FSFindFolder((SInt16)domain, (OSType)folderType, (Boolean)createIfNeeded, &foundRef) == noErr) {
char path[PATH_MAX];
if (FSRefMakePath(&foundRef, (UInt8 *)path, sizeof(path)) == noErr) {
NSString *filenameString = [[NSFileManager defaultManager] stringWithFileSystemRepresentation:path length:strlen(path)];
! filename = NormalizedPathJavaStringFromNSString(env, filenameString);
}
}
! JNI_COCOA_EXIT(env);
return filename;
}
/*
*** 146,165 ****
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_apple_eio_FileManager__1openURL
(JNIEnv *env, jclass clz, jstring urlString)
{
! JNF_COCOA_ENTER(env);
! NSURL *url = [NSURL URLWithString:JNFNormalizedNSStringForPath(env, urlString)];
// Radar 3208005: Run this on the main thread; file:// style URLs will hang otherwise.
! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
[[NSWorkspace sharedWorkspace] openURL:url];
}];
! JNF_COCOA_EXIT(env);
}
/*
* Class: com_apple_eio_FileManager
--- 145,164 ----
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_apple_eio_FileManager__1openURL
(JNIEnv *env, jclass clz, jstring urlString)
{
! JNI_COCOA_ENTER(env);
! NSURL *url = [NSURL URLWithString:NormalizedPathNSStringFromJavaString(env, urlString)];
// Radar 3208005: Run this on the main thread; file:// style URLs will hang otherwise.
! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
[[NSWorkspace sharedWorkspace] openURL:url];
}];
! JNI_COCOA_EXIT(env);
}
/*
* Class: com_apple_eio_FileManager
*** 168,190 ****
*/
JNIEXPORT jstring JNICALL Java_com_apple_eio_FileManager_getNativeResourceFromBundle
(JNIEnv *env, jclass clz, jstring javaResourceName, jstring javaSubDirName, jstring javaTypeName)
{
jstring filename = NULL;
! JNF_COCOA_ENTER(env);
! NSString *resourceName = JNFNormalizedNSStringForPath(env, javaResourceName);
! NSString *subDirectory = JNFNormalizedNSStringForPath(env, javaSubDirName);
! NSString *typeName = JNFNormalizedNSStringForPath(env, javaTypeName);
NSString *path = [[NSBundle mainBundle] pathForResource:resourceName
ofType:typeName
inDirectory:subDirectory];
! filename = JNFNormalizedJavaStringForPath(env, path);
! JNF_COCOA_EXIT(env);
return filename;
}
/*
--- 167,189 ----
*/
JNIEXPORT jstring JNICALL Java_com_apple_eio_FileManager_getNativeResourceFromBundle
(JNIEnv *env, jclass clz, jstring javaResourceName, jstring javaSubDirName, jstring javaTypeName)
{
jstring filename = NULL;
! JNI_COCOA_ENTER(env);
! NSString *resourceName = NormalizedPathNSStringFromJavaString(env, javaResourceName);
! NSString *subDirectory = NormalizedPathNSStringFromJavaString(env, javaSubDirName);
! NSString *typeName = NormalizedPathNSStringFromJavaString(env, javaTypeName);
NSString *path = [[NSBundle mainBundle] pathForResource:resourceName
ofType:typeName
inDirectory:subDirectory];
! filename = NormalizedPathJavaStringFromNSString(env, path);
! JNI_COCOA_EXIT(env);
return filename;
}
/*
*** 194,209 ****
*/
JNIEXPORT jstring JNICALL Java_com_apple_eio_FileManager_getNativePathToApplicationBundle
(JNIEnv *env, jclass clazz)
{
jstring filename = nil;
! JNF_COCOA_ENTER(env);
NSBundle *mainBundle = [NSBundle mainBundle];
! filename = JNFNormalizedJavaStringForPath(env, [mainBundle bundlePath]);
! JNF_COCOA_EXIT(env);
return filename;
}
/*
--- 193,208 ----
*/
JNIEXPORT jstring JNICALL Java_com_apple_eio_FileManager_getNativePathToApplicationBundle
(JNIEnv *env, jclass clazz)
{
jstring filename = nil;
! JNI_COCOA_ENTER(env);
NSBundle *mainBundle = [NSBundle mainBundle];
! filename = NormalizedPathJavaStringFromNSString(env, [mainBundle bundlePath]);
! JNI_COCOA_EXIT(env);
return filename;
}
/*
*** 214,235 ****
JNIEXPORT jboolean JNICALL Java_com_apple_eio_FileManager__1moveToTrash
(JNIEnv *env, jclass clz, jstring fileName)
{
__block BOOL returnValue = NO;
! JNF_COCOA_ENTER(env);
! NSString * path = JNFNormalizedNSStringForPath(env, fileName);
NSURL *url = [NSURL fileURLWithPath:path];
! [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
returnValue = [[NSFileManager defaultManager] trashItemAtURL:url
resultingItemURL:nil
error:nil];
}];
! JNF_COCOA_EXIT(env);
return returnValue ? JNI_TRUE: JNI_FALSE;
}
/*
--- 213,234 ----
JNIEXPORT jboolean JNICALL Java_com_apple_eio_FileManager__1moveToTrash
(JNIEnv *env, jclass clz, jstring fileName)
{
__block BOOL returnValue = NO;
! JNI_COCOA_ENTER(env);
! NSString * path = NormalizedPathNSStringFromJavaString(env, fileName);
NSURL *url = [NSURL fileURLWithPath:path];
! [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
returnValue = [[NSFileManager defaultManager] trashItemAtURL:url
resultingItemURL:nil
error:nil];
}];
! JNI_COCOA_EXIT(env);
return returnValue ? JNI_TRUE: JNI_FALSE;
}
/*
*** 240,255 ****
JNIEXPORT jboolean JNICALL Java_com_apple_eio_FileManager__1revealInFinder
(JNIEnv *env, jclass clz, jstring url)
{
__block jboolean returnValue = JNI_FALSE;
! JNF_COCOA_ENTER(env);
! NSString *path = JNFNormalizedNSStringForPath(env, url);
! [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
returnValue = [[NSWorkspace sharedWorkspace] selectFile:path inFileViewerRootedAtPath:@""];
}];
! JNF_COCOA_EXIT(env);
return returnValue;
}
--- 239,254 ----
JNIEXPORT jboolean JNICALL Java_com_apple_eio_FileManager__1revealInFinder
(JNIEnv *env, jclass clz, jstring url)
{
__block jboolean returnValue = JNI_FALSE;
! JNI_COCOA_ENTER(env);
! NSString *path = NormalizedPathNSStringFromJavaString(env, url);
! [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
returnValue = [[NSWorkspace sharedWorkspace] selectFile:path inFileViewerRootedAtPath:@""];
}];
! JNI_COCOA_EXIT(env);
return returnValue;
}
< prev index next >