/*******************************************************************************
 * Copyright (c) 2004, 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
 *******************************************************************************/
package org.eclipse.osgi.internal.messages;

import org.eclipse.osgi.util.NLS;

public class Msg extends NLS {
	private static final String BUNDLE_NAME = "org.eclipse.osgi.internal.messages.ExternalMessages"; //$NON-NLS-1$

	public static String MANIFEST_INVALID_HEADER_EXCEPTION;

	public static String SERVICE_ARGUMENT_NULL_EXCEPTION;
	public static String SERVICE_EMPTY_CLASS_LIST_EXCEPTION;
	public static String SERVICE_NOT_INSTANCEOF_CLASS_EXCEPTION;
	public static String SERVICE_FACTORY_NOT_INSTANCEOF_CLASS_EXCEPTION;
	public static String BUNDLE_ACTIVATOR_EXCEPTION;
	public static String BUNDLE_CONTEXT_INVALID_EXCEPTION;

	public static String FILTER_TERMINATED_ABRUBTLY;
	public static String FILTER_TRAILING_CHARACTERS;
	public static String FILTER_MISSING_LEFTPAREN;
	public static String FILTER_MISSING_RIGHTPAREN;
	public static String FILTER_INVALID_OPERATOR;
	public static String FILTER_MISSING_ATTR;
	public static String FILTER_INVALID_VALUE;
	public static String FILTER_MISSING_VALUE;

	public static String SERVICE_ALREADY_UNREGISTERED_EXCEPTION;

	public static String SERVICE_FACTORY_EXCEPTION;
	public static String SERVICE_OBJECT_NULL_EXCEPTION;
	public static String SERVICE_FACTORY_RECURSION;
	public static String SERVICE_USE_OVERFLOW;

	public static String SERVICE_OBJECTS_UNGET_ARGUMENT_EXCEPTION;

	public static String SystemModule_LockError;

	public static String BUNDLE_SYSTEMBUNDLE_UNINSTALL_EXCEPTION;

	public static String HEADER_DUPLICATE_KEY_EXCEPTION;
	public static String MANIFEST_INVALID_SPACE;
	public static String MANIFEST_INVALID_LINE_NOCOLON;
	public static String MANIFEST_IOEXCEPTION;

	public static String CANNOT_SET_CONTEXTFINDER;

	public static String URL_HANDLER_INCORRECT_TYPE;

	public static String HEADER_PACKAGE_DUPLICATES;
	public static String HEADER_PACKAGE_JAVA;
	public static String HEADER_VERSION_ERROR;
	public static String HEADER_EXPORT_ATTR_ERROR;
	public static String HEADER_DIRECTIVE_DUPLICATES;
	public static String HEADER_ATTRIBUTE_DUPLICATES;
	public static String HEADER_EXTENSION_ERROR;

	static {
		// initialize resource bundles
		NLS.initializeMessages(BUNDLE_NAME, Msg.class);
	}

	public static String ECLIPSE_CANNOT_CHANGE_LOCATION;
	public static String fileManager_cannotLock;
	public static String fileManager_updateFailed;
	public static String fileManager_illegalInReadOnlyMode;
	public static String fileManager_notOpen;
	public static String ECLIPSE_CLASSLOADER_CONCURRENT_STARTUP;
	public static String ECLIPSE_CLASSLOADER_ACTIVATION;
	public static String ECLIPSE_STARTUP_ALREADY_RUNNING;
	public static String ECLIPSE_STARTUP_STARTUP_ERROR;
	public static String ECLIPSE_STARTUP_SHUTDOWN_ERROR;
	public static String ECLIPSE_STARTUP_ERROR_CHECK_LOG;
	public static String ECLIPSE_STARTUP_NOT_RUNNING;
	public static String ECLIPSE_STARTUP_ERROR_NO_APPLICATION;
	public static String ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_ACTIVE;
	public static String ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_RESOLVED;
	public static String ECLIPSE_STARTUP_BUNDLE_NOT_FOUND;
	public static String ECLIPSE_STARTUP_FAILED_UNINSTALL;
	public static String ECLIPSE_STARTUP_FAILED_INSTALL;
	public static String ECLIPSE_STARTUP_FAILED_START;
	public static String ECLIPSE_STARTUP_APP_ERROR;
	public static String ECLIPSE_STARTUP_PROPS_NOT_SET;
	public static String error_badNL;
	public static String error_badNL_language;
	public static String error_badNL_language_country;
	public static String location_cannotLock;
	public static String location_cannotLockNIO;
	public static String location_folderReadOnly;
	public static String location_notSet;
	public static String location_notFileProtocol;
	public static String location_noLockFile;
	public static String ECLIPSE_PLUGIN_EXTRACTION_PROBLEM;

	public static String ADAPTER_FILEEXIST_EXCEPTION;
	public static String ADAPTOR_DIRECTORY_CREATE_EXCEPTION;
	public static String ADAPTOR_DIRECTORY_EXCEPTION;
	public static String ADAPTOR_URL_CREATE_EXCEPTION;
	public static String ADAPTOR_STORAGE_INIT_FAILED_MSG;
	public static String ADAPTOR_STORAGE_INIT_FAILED_TITLE;
	public static String ECLIPSE_STARTUP_FILEMANAGER_OPEN_ERROR;

	public static String BUNDLE_CLASSPATH_ENTRY_NOT_FOUND_EXCEPTION;
	public static String BUNDLE_READ_EXCEPTION;

	public static String RESOURCE_NOT_FOUND_EXCEPTION;

	public static String URL_INVALID_BUNDLE_ID;
	public static String URL_NO_BUNDLE_FOUND;
	public static String URL_NO_BUNDLE_ID;

	public static String EclipseStarter_InstallLocation;

	public static String Module_Fragment_InvalidOperation;
	public static String Module_LockError;
	public static String Module_LockStateError;
	public static String Module_LockTimeout;
	public static String Module_ResolveError;

	public static String Module_StartError;
	public static String Module_StopError;
	public static String Module_Transient_StartError;
	public static String Module_UninstalledError;

	public static String ModuleContainer_NameCollision;
	public static String ModuleContainer_NameCollisionWithLocation;
	public static String ModuleContainer_NegativeStartLevelError;
	public static String ModuleContainer_StateLockError;
	public static String ModuleContainer_SystemNotActiveError;
	public static String ModuleContainer_SystemStartLevelError;

	public static String ModuleResolutionReport_AnotherSingleton;
	public static String ModuleResolutionReport_FilteredByHook;
	public static String ModuleResolutionReport_NoReport;
	public static String ModuleResolutionReport_Unknown;
	public static String ModuleResolutionReport_UnresolvedReq;
	public static String ModuleResolutionReport_UsesConstraintError;

	public static String ModuleResolver_RecursiveError;
	public static String ModuleResolver_SingletonDisabledError;

	public static String OSGiManifestBuilderFactory_ExtensionNativeError;
	public static String OSGiManifestBuilderFactory_ExtensionReqBundleError;
	public static String OSGiManifestBuilderFactory_InvalidManifestError;

	public static String BundleContextImpl_LoadActivatorError;
}
