#
# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

# Wrapped into an Exception. {0} - localizable exception message of another exception
nestedModelerError=errore del modeler di runtime: {0}

runtime.modeler.no.webservice.annotation=Annotazione WebService non presente sulla classe: {0}
runtime.modeler.endpoint.interface.no.webservice=L''interfaccia Endpoint: {0} non dispone dell''annotazione WebService
# Wrapped into an Exception. Not concatenated with any other string.
runtime.modeler.class.not.found=impossibile trovare la classe: {0}
# APT - Annotation Processing Tool. Should not be translated.
runtime.modeler.wrapper.not.found=Classe wrapper {0} non trovata. \u00C8 stata eseguita l''elaborazione dell''annotazione per generarla?
# Wrapped into an Exception. Not concatenated with any other string.
runtime.modeler.method.not.found=impossibile trovare il metodo: {0} sulla classe: {1}
runtime.modeler.webmethod.must.be.public=@WebMethod non \u00E8 consentito su un metodo non pubblico {0}
runtime.modeler.webmethod.must.be.nonstatic=@WebMethod non \u00E8 consentito su un metodo statico {0}
runtime.modeler.webmethod.must.be.nonstaticfinal=@WebMethod non \u00E8 consentito su un metodo statico o finale {0}
runtime.modeler.oneway.operation.no.out.parameters=l''operazione unidirezionale non deve avere parametri OUT. Classe: {0} metodo: {1}
runtime.modeler.oneway.operation.no.checked.exceptions=L''operazione unidirezionale non deve restituire eccezioni verificate. Classe: {0} metodo: {1} restituzioni: {2}
runtime.modeler.cannot.get.serviceName.from.interface=Impossibile recuperare il serviceName da un''interfaccia. Classe {0}
runtime.modeler.portname.servicename.namespace.mismatch=Lo spazio di nomi del serviceName \"{0}\" e quello del portName \"{1}\" devono corrispondere
runtime.modeler.no.package=\u00C8 necessario specificare un @WebService.targetNamespace sulle classi senza package. Classe: {0}
runtime.modeler.no.operations=Il servizio Web definito dalla classe {0} non contiene alcun WebMethods valido.
runtime.modeler.mtom.conflict = Errore in @BindingType: la configurazione MTOM nell''identificativo di associazione {0} \u00E8 in conflitto con la funzione @MTOM {1}
# {0} - feature class name, {1} - feature class name
runtime.modeler.feature.conflict= La funzione {0} nell''implementazione \u00E8 in conflitto con {1} nella configurazione WSDL
# {0} - absolute class location
runtime.modeler.addressing.responses.nosuchmethod = L''API JAX-WS 2.1 viene caricata da {0} ma il runtime JAX-WS richiede l''API JAX-WS 2.2. Usare il meccanismo Endorsed Standards Override Mechanism per caricare l''API JAX-WS 2.2
runtime.modeler.wsfeature.no.ftrconstructor=L''annotazione {0} non \u00E8 riconoscibile. Almeno un costruttore di {1} deve essere contrassegnato con @FeatureConstructor
runtime.modeler.wsfeature.morethanone.ftrconstructor=L''annotazione {0} non \u00E8 valida. Solo un costruttore di {1} pu\u00F2 essere contrassegnato come @FeatureConstructor
runtime.modeler.wsfeature.illegal.ftrconstructor=L''annotazione {0} non \u00E8 valida. Il valore {1} @FeatureConstructor non corrisponde ai parametri del costruttore
# WRAPPED is a member of enumeration and should not be translated. {0} - SoapBinding annotation, {1} - class name
runtime.modeler.invalid.soapbinding.parameterstyle= Uso errato dell''annotazione {0} su {1}. ParameterStyle pu\u00F2 essere solo WRAPPED con il servizio Web dello stile RPC.
runtime.modeler.soapbinding.conflict= Lo stile SOAPBinding {0} per il metodo {1} \u00E8 in conflitto con lo stile SOAPBinding globale {2}
runtimemodeler.invalid.soapbindingOnMethod=Annotazione non valida: {0} sul metodo {1} nella classe {2}. Un metodo non pu\u00F2 essere annotato con @SOAPBinding con lo stile \"RPC\"
unable.to.create.JAXBContext=Impossibile creare JAXBContext
# BARE is a member of enumeration and should not be translated.
not.a.valid.bare.method=SEI {0} ha il metodo {1} annotato come BARE ma ha pi\u00F9 parametri associati al corpo. Questo non \u00E8 valido. Annotare il metodo con l''annotazione: @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
