##
#  Copyright (c) 2009-2010 Thales Corporate Services S.A.S.
#
#  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:
#      Thales Corporate Services S.A.S - initial API and implementation
##

URI_errorInstance= Error while creating an URI instance ''{0}''.
Exception_unexpectedException= Unexpected Exception.
JavaProject_AnalysisFailure= Unexpected exception while analysing the Java project ''{0}''.
TypeClassHelper_classHierachy_JobName= Processing EGF Class Hierarchy

Wrong_Class_Message= Wrong Class ''{0}''.
Wrong_Class_Sub_Type_Message= This Class should be a sub-type of ''{0}''.
Bundle_Message= Bundle ''{0}''.
Extension_Point_Message= Extension-point ''{0}''.
Attribute_Message= Attribute ''{0}''.   
Duplicate_Element_Message= Duplicate element ''{0}''.             
Type_mismatch_Message= Type mismatch ''{0}''.
Missing_Element_Message= Missing Element ''{0}''.

No_associated_project = Cannot find associated project in workspace for ''{0}''
