org.eclipse.core.runtime.RegistryFactory Maven / Gradle / Ivy
Show all versions of aspectjtools Show documentation
/*******************************************************************************
* Copyright (c) 2005, 2014 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.runtime;
import java.io.File;
import org.eclipse.core.internal.registry.ExtensionRegistry;
import org.eclipse.core.internal.registry.RegistryProviderFactory;
import org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI;
import org.eclipse.core.runtime.spi.IRegistryProvider;
import org.eclipse.core.runtime.spi.RegistryStrategy;
/**
* Use this class to create or obtain an extension registry.
*
* The following methods can be used without OSGi running:
*
* - {@link #createRegistry(RegistryStrategy, Object, Object)}
* - {@link #getRegistry()}
* - {@link #setDefaultRegistryProvider(IRegistryProvider)}
*
* This class is not intended to be subclassed or instantiated.
*
* @since org.eclipse.equinox.registry 3.2
* @noinstantiate This class is not intended to be instantiated by clients.
*/
public final class RegistryFactory {
/**
* Creates a new extension registry based on the given set of parameters.
*
* The strategy is an optional collection of methods that supply additional registry
* functionality. Users may pass in null
for the strategy if default
* behavior is sufficient.
*
* The master token is stored by the registry and later used as an identifier of callers
* who are allowed full control over the registry functionality. Users may pass in
* null
as a master token.
*
* The user token is stored by the registry and later used as an identifier of callers
* who are allowed to control registry at the user level. For instance, users attempting to
* modify dynamic contributions to the registry have to use the user token. Users may pass
* in null
as a user token.
*
* @param strategy registry strategy or null
* @param masterToken the token used for master control of the registry or null
* @param userToken the token used for user control of the registry or null
* @return the new extension registry
*/
public static IExtensionRegistry createRegistry(RegistryStrategy strategy, Object masterToken, Object userToken) {
return new ExtensionRegistry(strategy, masterToken, userToken);
}
/**
* Returns the default extension registry specified by the registry provider.
* May return null
if the provider has not been set or if the
* registry has not been created.
*
* @return existing extension registry or null
*/
public static IExtensionRegistry getRegistry() {
IRegistryProvider defaultRegistryProvider = RegistryProviderFactory.getDefault();
if (defaultRegistryProvider == null)
return null;
return defaultRegistryProvider.getRegistry();
}
/**
* Creates a registry strategy that can be used in an OSGi container. The strategy uses
* OSGi contributions and contributors for the registry processing and takes advantage of
* additional mechanisms available through the OSGi library.
*
* The OSGi registry strategy sequentially checks the array of storage directories to
* discover the location of the registry cache formed by previous invocations of the extension
* registry. Once found, the location is used to store registry cache. If this value
* is null
then caching of the registry content is disabled.
*
* The cache read-only array is an array the same length as the storage directory array.
* It contains boolean values indicating whether or not each storage directory is read-only.
* If the value at an index is true
then the location at the corresponding index
* in the storage directories array is read-only; if false
then the cache location
* is read-write. The array can be null
if the storageDirs
parameter
* is null
.
*
* The master token should be passed to the OSGi registry strategy to permit it to perform
* contributions to the registry.
*
* @param storageDirs array of file system directories or null
* @param cacheReadOnly array of read only attributes or null
* @param token control token for the registry
* @return registry strategy that can be used in an OSGi container
* @see #createRegistry(RegistryStrategy, Object, Object)
*/
public static RegistryStrategy createOSGiStrategy(File[] storageDirs, boolean[] cacheReadOnly, Object token) {
return new RegistryStrategyOSGI(storageDirs, cacheReadOnly, token);
}
/**
* Use this method to specify the default registry provider. The default registry provider
* is immutable in the sense that it can be set only once during the application runtime.
* Attempts to change the default registry provider will cause an exception to be thrown.
*
* The given registry provider must not be null
.
*
* @see RegistryFactory#getRegistry()
* @param provider extension registry provider
* @throws CoreException if a default registry provider was already set for this application
*/
public static void setDefaultRegistryProvider(IRegistryProvider provider) throws CoreException {
RegistryProviderFactory.setDefault(provider);
}
}