#
#
# Copyright 2004-2005 Sun Microsystems, Inc.  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.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#

# Localizations for Level names.  For the US locale
# these are the same as the non-localized level name.

agent.err.error			   = Error
agent.err.exception                = Exception thrown by the agent 
agent.err.warning		   = Warning

agent.err.configfile.notfound      = Config file not found
agent.err.configfile.failed        = Failed in reading the config file
agent.err.configfile.closed.failed = Failed in closing the config file
agent.err.configfile.access.denied = Access to the config file is denied

agent.err.exportaddress.failed	   = Export of JMX connector address to instrumentation buffer failed

agent.err.agentclass.notfound      = Management agent class not found
agent.err.agentclass.failed        = Management agent class failed 
agent.err.premain.notfound         = premain(String) does not exist in agent class
agent.err.agentclass.access.denied = Access to premain(String) is denied
agent.err.invalid.agentclass       = Invalid com.sun.management.agent.class property value

agent.err.invalid.jmxremote.port   = Invalid com.sun.management.jmxremote.port number

agent.err.file.not.set               = File not specified
agent.err.file.not.readable          = File not readable
agent.err.file.read.failed           = Failed in reading the file
agent.err.file.not.found             = File not found
agent.err.file.access.not.restricted = File read access must be restricted

agent.err.password.file.notset     = Password file is not specified but com.sun.management.jmxremote.authenticate=true
agent.err.password.file.not.readable = Password file not readable
agent.err.password.file.read.failed = Failed in reading the password file
agent.err.password.file.notfound   = Password file not found
agent.err.password.file.access.notrestricted = Password file read access must be restricted

agent.err.access.file.notset       = Access file is not specified but com.sun.management.jmxremote.authenticate=true
agent.err.access.file.not.readable = Access file not readable
agent.err.access.file.read.failed  = Failed in reading the access file
agent.err.access.file.notfound     = Access file not found

agent.err.connector.server.io.error = JMX connector server communication error

agent.err.invalid.option	   = Invalid option specified
agent.err.invalid.snmp.port        = Invalid com.sun.management.snmp.port number
agent.err.invalid.snmp.trap.port   = Invalid com.sun.management.snmp.trap number
agent.err.unknown.snmp.interface   = Unknown SNMP interface
agent.err.acl.file.notset          = No SNMP ACL file is specified but com.sun.management.snmp.acl=true
agent.err.acl.file.notfound        = SNMP ACL file not found
agent.err.acl.file.not.readable    = SNMP ACL file not readable
agent.err.acl.file.read.failed     = Failed in reading SNMP ACL file
agent.err.acl.file.access.notrestricted = Password file read access must be restricted

agent.err.snmp.adaptor.start.failed = Failed to start SNMP adaptor with address
agent.err.snmp.mib.init.failed     = Failed to initialize SNMP MIB with error

jmxremote.ConnectorBootstrap.initialize = Starting JMX Connector Server:
jmxremote.ConnectorBootstrap.initialize.noAuthentication = No Authentication
jmxremote.ConnectorBootstrap.initialize.ready = JMX Connector ready at: {0}
jmxremote.ConnectorBootstrap.initialize.password.readonly = Password file read access must be restricted: {0}
jmxremote.ConnectorBootstrap.initialize.file.readonly = File read access must be restricted: {0}

jmxremote.AdaptorBootstrap.getTargetList.processing = Processing ACL
jmxremote.AdaptorBootstrap.getTargetList.adding = Adding target: {0}
jmxremote.AdaptorBootstrap.getTargetList.starting = Starting Adaptor Server:
jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptor ready.
jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP Adaptor ready on: {0}:{1}
jmxremote.AdaptorBootstrap.getTargetList.terminate = terminate {0}
