###############################################################################
# Copyright (c) 2010, 2019 Mia-Software and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v20.html
#
# Contributors:
#    Fabien Giquel (Mia-Software) - initial API and implementation
#    Nicolas Bros (Mia-Software) - Bug 338702 - [Discovery] specify initial value for Parameters
###############################################################################
AbstractDiscoverer_CannotCheck=Could not retrieve a discoverer parameter value. We skip its check.
AbstractDiscoverer_CannotLaunch_2=Cannot launch a discovery because the following required parameter has no value : 
AbstractDiscoverer_checkingParamValues=Checking discoverer parameter values
AbstractDiscoverer_discovering=Discovering model...
AbstractDiscoverer_refreshingSource=Refreshing discovery source
AbstractDiscoverer_testingApplicability=Testing discoverer applicability
AbstractModelDiscoverer_savingModel=Saving discovered model
DiscoveryAnnotationControls_0=A method annotated as a Discovery parameter must be a getter or setter.
DiscoveryAnnotationControls_1=A getter annotated as a Discovery parameter indicates some output value and must not declare the parameter as a required input.
DiscoveryAnnotationControls_2=A field or member annotated as a Discovery parameter must be public.
DiscoveryAnnotationControls_3=A field or member annotated as a Discovery parameter must not be static.
DiscoveryAnnotationControls_4=Field and getter method annotated as discovery parameter with a same id must declare the same Java type.
DiscoveryAnnotationControls_5=Field and setter method annotated as discovery parameter with a same id must declare the same Java type.
DiscoveryAnnotationControls_6=Setter and getter method annotated as discovery parameter with a same id must declare the same Java type.
DiscoveryAnnotationControls_7=No more than one field can be annotated with a same Discovery parameter id.
DiscoveryAnnotationControls_8=No more than one getter can be annotated with a same Discovery parameter id.
DiscoveryAnnotationControls_9=No more than one setter can be annotated with a same Discovery parameter id.
DiscoveryAnnotationControls_initializerMethodMustHaveNonVoidReturnType=Initializer method must have a non-void return type
DiscoveryAnnotationControls_initializerMethodMustHaveOneParameter=Initializer method must have one parameter
DiscoveryAnnotationControls_initializerTypeMatchesFieldType=The initializer return type must be the same as the corresponding field type
DiscoveryAnnotationControls_initializerTypeMatchesGetterType=The initializer return type must be the same as the corresponding getter type
DiscoveryAnnotationControls_initializerTypeMatchesSetterType=The initializer return type must be the same as the corresponding setter type
DiscoveryAnnotationControls_methodMustBePublic=A method annotated with ParameterInitialValue must be public.
DiscoveryAnnotationControls_noMoreThanOneInitializer=Must not have more than one initializer for the same parameter
