#
# Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0, which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# This Source Code may also be made available under the following Secondary
# Licenses when the conditions for such availability set forth in the
# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
# version 2 with the GNU Classpath Exception, which is available at
# https://www.gnu.org/software/classpath/license.html.
#
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
#


appnamenotunique=Application name {0} is already in use. Please pick a different name.
unknownmoduletpe=Module type not recognized for module {0}
unknownarchivetype=Archive type of {0} was not recognized
unknowncontainertype=There is no installed container capable of handling this application {0}
deploy.unknowncontainer={0} is not a recognized container
deploy.isolationerror=Container {0} does not support other components containers to be turned off, --type {0} is forbidden
invalidarchivepackaging=Sniffers with type [{0}] and type [{1}] should not claim the archive at the same time. Please check the packaging of your archive [{2}]
internal_error=Internal Error: {0}
bad_config_dir=The domain''s config directory does not exist: {0}
cant_delete_pid_file=Unable to delete the process id file ({0}).  Please delete it.
application.alreadyreg.redeploy=Application with name {0} is already registered. Either specify that redeployment must be forced, or redeploy the application. Or if this is a new deployment, pick a different name
use.create_app_ref=Application {0} is already deployed on other targets. Please use create-application-ref command to create application reference on target {1}
use.create_app_ref_2=Application {0} is already deployed in this domain. Please use create-application-ref command to create application reference on target {1}
redeploy_on_multiple_targets=Application {0} is referenced by more than one targets. Please remove other references or specify all targets (or domain target if using asadmin command line) before attempting redeploy operation
undeploy_on_multiple_targets=Application {0} is referenced by more than one targets. Please remove other references or specify all targets (or domain target if using asadmin command line) before attempting undeploy operation.
delete_lifecycle_on_multiple_targets=Lifecycle module {0} is referenced by more than one targets. Please remove other references before attempting delete operation.
cannot_specify_managed_target=Cannot specify target {0} for the operation. Target {0} is a managed target

application.deploy_domain=Application with name {0} is already referenced by other target(s). Please specify force option to redeploy to domain.
error.deploying.app=Exception while deploying the app [{0}]

cannotCreateLockFile=Cannot create lock file at {0}, configuration changes will not be persisted
InvalidLocation=Cannot obtain lockfile location {0}, configuration changes will not be persisted
NoLocation=domain.xml cannot be persisted, null destination
Timeout=Timed out when waiting for write lock on configuration file
NoTmpFile=Cannot create temporary file when saving domain.xml
TmpFileNotSaved=Configuration could not be saved to temporary file
CloseFailed=Cannot close configuration writer stream
ioexception=IOException while saving the configuration, changes not persisted
RenameFailed=Could not rename backup to {0}
TmpRenameFailed=Could not rename {0} to {1}
BackupDeleteFailed=Could not delete previous backup file at {0}

lifecyclemodule.loadExceptionIsFatal=Treating failure loading the lifecycle module [{0}] as fatal; please check your classpath and the is-failure-fatal property.
lifecyclemodule.preInvoke_exception=Exception lifecycle module [{0}] during pre-invocation.
lifecyclemodule.postInvoke_exception=Exception lifecycle module [{0}] during post-invocation.
lifecyclemodule.event_exceptionIsFatal=Treating the exception from lifecycle module event handler as fatal; please check the is-failure-fatal property.


fnf=File not found {0}
