Copyright (c) 2007, 2015 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
/******************************************************************************* * Copyright (c) 2007, 2015 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 *******************************************************************************/
package org.eclipse.core.internal.filesystem; import java.io.File; import java.net.URL; import java.util.Collection; import java.util.Enumeration; import org.eclipse.core.runtime.*; import org.eclipse.osgi.service.datalocation.Location; import org.osgi.framework.*;
This class abstracts away implementation details of the filesystem bundle that depend on the OSGi framework being started. All file system bundle functionality is enabled regardless of whether OSGi is running.
Since:org.eclipse.core.filesystem 1.1
/** * This class abstracts away implementation details of the filesystem * bundle that depend on the OSGi framework being started. All * file system bundle functionality is enabled regardless of whether * OSGi is running. * @since org.eclipse.core.filesystem 1.1 */
public class FileSystemAccess { private static BundleContext context = FrameworkUtil.getBundle(FileSystemAccess.class).getBundleContext();
Returns the local file system location that should be used for caching file data.
/** * Returns the local file system location that should be used for * caching file data. */
public static IPath getCacheLocation() { //try to put the cache in the instance location if possible (3.2 behaviour) try { if (context != null) { Collection<ServiceReference<Location>> refs = context.getServiceReferences(Location.class, Location.INSTANCE_FILTER); if (refs != null && refs.size() == 1) { ServiceReference<Location> ref = refs.iterator().next(); Location location = context.getService(ref); if (location != null) { IPath instancePath = new Path(new File(location.getURL().getFile()).toString()); context.ungetService(ref); return instancePath.append(".metadata/.plugins").append(Policy.PI_FILE_SYSTEM); //$NON-NLS-1$ } } } } catch (InvalidSyntaxException e) { Policy.log(IStatus.INFO, null, e); //fall through below and use user home } //just put the cache in the user home directory return Path.fromOSString(System.getProperty("user.home")); //$NON-NLS-1$ // Platform.getStateLocation(Platform.getBundle(Policy.PI_FILE_SYSTEM)); } public static Enumeration<URL> findEntries(String path, String filePattern, boolean recurse) { if (context != null) return context.getBundle().findEntries(path, filePattern, recurse); return null; } }