All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.core.internal.filesystem.local.LocalFileNativesManager Maven / Gradle / Ivy

Go to download

AspectJ tools most notably contains the AspectJ compiler (AJC). AJC applies aspects to Java classes during compilation, fully replacing Javac for plain Java classes and also compiling native AspectJ or annotation-based @AspectJ syntax. Furthermore, AJC can weave aspects into existing class files in a post-compile binary weaving step. This library is a superset of AspectJ weaver and hence also of AspectJ runtime.

There is a newer version: 1.9.22.1
Show newest version
/*******************************************************************************
 * Copyright (c) 2010, 2016 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Sergey Prigogin (Google) - ongoing development
 *******************************************************************************/
package org.eclipse.core.internal.filesystem.local;

import java.nio.file.FileSystems;
import java.util.Set;
import org.eclipse.core.filesystem.IFileInfo;
import org.eclipse.core.filesystem.provider.FileInfo;
import org.eclipse.core.internal.filesystem.local.nio.*;
import org.eclipse.core.internal.filesystem.local.unix.UnixFileHandler;
import org.eclipse.core.internal.filesystem.local.unix.UnixFileNatives;
import org.eclipse.osgi.service.environment.Constants;

/**
 * 

Dispatches methods backed by native code to the appropriate platform specific * implementation depending on a library provided by a fragment. Failing this it tries * to use Java 7 NIO/2 API's.

* *

Use of native libraries can be disabled by adding -Declipse.filesystem.useNatives=false * to VM arguments.

* *

Please notice that the native implementation is significantly faster than the non-native * one. The BenchFileStore test runs 3.1 times faster on Linux with the native code than * without it.

*/ public class LocalFileNativesManager { public static final boolean PROPERTY_USE_NATIVE_DEFAULT = true; public static final String PROPERTY_USE_NATIVES = "eclipse.filesystem.useNatives"; //$NON-NLS-1$ private static NativeHandler HANDLER; static { reset(); } /** * reset the usage of native to the system default */ public static void reset() { setUsingNative(Boolean.parseBoolean(System.getProperty(PROPERTY_USE_NATIVES, String.valueOf(PROPERTY_USE_NATIVE_DEFAULT)))); } /** * Try to set the usage of natives to the provided value * @return true if natives are used as result of this call false otherwhise */ public static boolean setUsingNative(boolean useNatives) { boolean nativesAreUsed; boolean isWindowsOS = Constants.OS_WIN32.equals(LocalFileSystem.getOS()); if (useNatives && !isWindowsOS && UnixFileNatives.isUsingNatives()) { HANDLER = new UnixFileHandler(); nativesAreUsed = true; } else if (useNatives && isWindowsOS && LocalFileNatives.isUsingNatives()) { HANDLER = new LocalFileHandler(); nativesAreUsed = true; } else { nativesAreUsed = false; Set views = FileSystems.getDefault().supportedFileAttributeViews(); if (views.contains("posix")) { //$NON-NLS-1$ HANDLER = new PosixHandler(); } else if (views.contains("dos")) { //$NON-NLS-1$ HANDLER = new DosHandler(); } else { HANDLER = new DefaultHandler(); } } return nativesAreUsed; } public static int getSupportedAttributes() { return HANDLER.getSupportedAttributes(); } public static FileInfo fetchFileInfo(String fileName) { return HANDLER.fetchFileInfo(fileName); } public static boolean putFileInfo(String fileName, IFileInfo info, int options) { return HANDLER.putFileInfo(fileName, info, options); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy