#
#
# Copyright (c) 2004, 2005, 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.
#

# 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}
