# $Id$
# Copyright 2004 The Apache Software Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Contains String contants used throughout the Tapestry framework.
# To keep things organized, each key is in two parts:  the simple class name
# and a subkey within the class name.


# Some general messages

service-no-parameters=Service {0} requires no service parameters.
service-single-parameter=Service {0} requires exactly one service parameter.
service-single-context-parameter=Service {0} requires exactly one context parameter.
service-requires-parameters=Service {0} requires at least one service parameter.
service-incorrect-parameter-count=Service {0} requires exactly {1} service parameters.
missing-resource=Could not locate resource {0}.
invalid-field-name=Invalid field name: {0}.
unable-to-resolve-class=Unable to resolve class {0}.
field-not-defined=Field {0} does not exist.
illegal-field-access=Cannot access field {0}.
field-is-instance=Field {0} is an instance variable, not a class variable.
deprecated-component-param=Parameter ''{1}'' of component {0} is deprecated, use parameter ''{2}'' instead.
must-be-wrapped-by-form={1} components must be enclosed by a Form component.
invalid-null-parameter=Parameter ''{0}'' may not be null.
null-value-for-binding=Binding value is null.
no-such-component=Component {0} does not contain a component {1}.
required-parameter=Value for parameter ''{0}'' in component {1} is null, and a non-null value is required.
render-only-property=Property ''{0}'' of {1} may only be accessed while the component is rendering.
unsupported-property=Property ''{1}'' is not supported by {0}.
must-be-contained-by-body={0} components must be contained by a Body component.
illegal-encoding=The encoding ''{0}'' is not recognized.

# org.apache.tapestry

AbstractComponent.attempt-to-change-container=Attempt to change existing container.
AbstractComponent.attempt-to-change-component-id=Attempt to change existing component id.
AbstractComponent.null-container={0} container is null.
AbstractComponent.attempt-to-change-page=Attempt to change existing containing page.
AbstractComponent.attempt-to-change-spec=Attempt to change existing component specification.

AbstractPage.attempt-to-change-locale=Attempt to change existing locale for a page.
AbstractPage.attempt-to-change-name=Attempt to change existing name for a page.

AbstractMarkupWriter.missing-constructor-parameters=Incomplete parameters to AbstractMarkupWriter constructor.
AbstractMarkupWriter.tag-not-open=A tag must be open before attributes may be set in an IMarkupWriter.

ApplicationServlet.could-not-locate-engine=Could not locate an engine to service this request.
ApplicationServlet.could-not-parse-spec=Unable to parse application specification {0}.
ApplicationServlet.get-app-path-not-overriden=Application servlet {0} does not provide an implementation of method getApplicationServletPath().
ApplicationServlet.no-application-specification=Running application without an application specification.
ApplicationServlet.engine-stateful-without-session=Engine {0} is stateful even though there is no HttpSession.  Discarding the engine. 

BaseComponent.multiple-component-references=Template for component {0} contains multiple references to embedded component {1}.
BaseComponent.unbalanced-close-tags=More closing tags the open tags in template.
BaseComponent.unbalance-open-tags=Not all tags closed in template.
BaseComponent.missing-component-spec-single=Template for component {0} does not reference embedded component:
BaseComponent.missing-component-spec-multi=Template for component {0} does not reference embedded components:
BaseComponent.and=and
BaseComponent.dupe-template-expression=An expression for parameter ''{0}'' of component {1} in the template for {2} conflicts with an existing binding in the specification.
BaseComponent.template-expression-for-informal-parameter=The template for {2} contains an expression for parameter ''{0}'' of component {1}, but {1} does not allow informal parameters.
BaseComponent.template-expression-for-reserved-parameter=The template for {2} contains an expression for parameter ''{0}'' of component {1}, but ''{0}'' is a reserved parameter name.
BaseComponent.dupe-string=A localized string reference for parameter ''{0}'' of component {1} in the template for {2} conflicts with an existing binding in the specification.

BaseComponentTemplateLoader.dupe-component-id=Component {0} (at {1}) conflicts with a prior declaration in the specification (at {2}).
BaseComponentTemplateLoader.bodyless-component=This component may not have a body.

RedirectServlet.redirect-path=Redirecting to servlet at path {0}.
RedirectServlet.redirecting=Redirecting servlet context URL to {0}.

ResponseOutputStream.content-type-not-set=Content type of response never set.

StaleLinkException.action-mismatch=Action id {0} matched component {1}, not {2}.
StaleLinkException.component-mismatch=Action id {0} does not match component {1}.

Tapestry.even-sized-array=An even-sized array of keys and values is required.
Tapestry.missing-method-invocation=Class {0} overrides method ''{1}'' but does not invoke the super-class implementation.

# org.apache.tapestry.asset

AssetExternalizer.externalize-failure=Could not externalize asset {0} to {1}.
AssetService.exception-report-title=Failure to export asset {0}.
AssetService.checksum-failure=Checksum {0} does not match that of resource {1}.
AssetService.checksum-compute-failure=Failed to compute checksum for resource {1}.

ExternalAsset.resource-missing=Could not access external asset {0}.

# org.apache.tapestry.bean

BeanProvider.bean-not-defined=Component {0} does not define a bean name {1}.
BeanProvider.instantiation-error=Unable to instantiate bean ''{0}'' (for component {1}) as class {2}: {3}
AbstractBeanInitializer.unable-to-set-property=Unable to set property ''{0}'' of {1} to {2}.

# org.apache.tapestry.binding

AbstractBinding.wrong-type=Parameter {0} ({1}) is an instance of {2}, which does not inherit from {3}.
AbstractBinding.wrong-interface=Parameter {0} ({1}) is an instance of {2}, which does not implement interface {3}.
AbstractBinding.read-only-binding=Binding value may not be updated.

ExpressionBinding.unable-to-resolve-expression=Unable to resolve expression ''{0}'' for {1}.
ExpressionBinding.unable-to-update-expression=Unable to update expression ''{0}'' for {1} to {2}.

ListenerBinding.invalid-access=Inappropriate invocation of {0} on instance of ListenerBinding.
ListenerBinding.bsf-exception=Unable to execute listener script "{0}": {1}
ListenerBinding.unable-to-undeclare-bean=Unable to undeclare bean ''{0}'' after executing "{0}".

# org.apache.tapestry.callback

DirectCallback.wrong-type=Component {0} does not implement the IDirect interface.

# org.apache.tapestry.component

Insert.unable-to-format=Unable to format object {0}.
Any.element-not-defined=The Any component is not used in a template and the 'element' property is not bound.

# org.apache.tapestry.param

ParameterManager.no-accessor=Component {0} does not have accessor methods for property {1}.
ParameterManager.property-not-read-write=Property {1} of component {0} is not read-write.
ParameterManager.java-type-not-specified=No Java type was specified for parameter {0} of component {1}.
ParameterManager.type-mismatch=Parameter {0} of component {1} is declared as {2}, but the property is {3}.
ParameterManager.static-initialization-failure=Unable to set property {0} of component {1} from {2}.
ParameterManager.incompatible-direction-and-binding=Parameter {0} of component {1} is direction {2} which is incompatible with {3}.

# org.apache.tapestry.engine

AbstractEngine.unable-to-process-client-request=Unable to process client request.
AbstractEngine.unable-to-present-exception-page=Unable to present exception page.
AbstractEngine.unknown-specification=<Unknown specification>
AbstractEngine.unknown-service=Engine does not implement a service named ''{0}''.
AbstractEngine.unable-to-begin-request=Tapestry unable to begin processing request.
AbstractEngine.unable-to-cleanup-page=Unable to cleanup page {0}.
AbstractEngine.unable-to-instantiate-visit=Unable to instantiate visit object from class {0}.
AbstractEngine.unable-to-instantiate-global=Unable to instantiate global object from class {0}.
AbstractEngine.unable-to-redirect=Unable to redirect to {0}.
AbstractEngine.service-name-mismatch=Class {1} is registered as service {0} but provides service {2} instead.
AbstractEngine.unable-to-instantiate-service=Unable to instantiate class {1} as service {0}.
AbstractEngine.unable-to-find-dispatcher=Unable to find a request dispatcher for local resource ''{0}''.
AbstractEngine.unable-to-forward=Unable to forward to local resource ''{0}''.
AbstractEngine.unable-to-create-cleanup-context=Unable to create an instance of RequestContext to process end-of-session page cleanups.
AbstractEngine.exception-during-cleanup=Exception during post-request cleanup.
AbstractEngine.exception-during-cache-clear=Exception while clearing caches after request.
AbstractEngine.validate-cycle=A validate cycle during page activation was detected: {0}.

ActionService.context-parameters=Service action requires either three or four service contect parameters.
ActionService.action-component-wrong-type=Component {0} does not implement the IAction interface.

DefaultScriptSource.unable-to-parse-script=Unable to parse script {0}.

DefaultSpecificationSource.no-match-for-alias=Could not find a component matching alias {0}.
DefaultSpecificationSource.unable-to-locate-specification=Could not locate resource {0} in the classpath.
DefaultSpecificationSource.unable-to-open-specification=Could not open specification {0}.
DefaultSpecificationSource.unable-to-parse-specification=Could not parse specification {0}.

DefaultTemplateSource.no-template-for-component=Could not find template for component {0} in locale {1}.
DefaultTemplateSource.no-template-for-page=Could not find template for page {0} in locale {1}.
DefaultTemplateSource.unable-to-parse-template=Could not parse template {0}.
DefaultTemplateSource.unable-to-read-template=Could not read template {0}.

DirectService.context-parameters=Service direct requires either three or four service context parameters.
DirectService.component-wrong-type=Component {0} does not implement the IDirect interface.
DirectService.stale-session-exception=Component {0} is stateful, but the HttpSession has expired (or has not yet been created).

EngineServiceLink.unknown-parameter-name=Unknown parameter name ''{0}''.

Namespace.no-such-page=Page ''{0}'' not found in {1}.
Namespace.no-such-component-type=Component ''{0}'' not found in {1}.
Namespace.application-namespace=application namespace
Namespace.framework-namespace=framework namespace
Namespace.nested-namespace=namespace ''{0}''
Namespace.library-id-not-found=Library ''{0}'' not found in {1}.

RequestCycle.invalid-null-name=Parameter name may not be null in RequestCycle.getPage(String).
RequestCycle.form-rewind-failure=Failure to rewind form {0}.

ResourceResolver.unable-to-load-class=Could not load class {0} from {1}: {2}

TagSupportService.service-only=The tagsupport service does not support tag generation.
TagSupportService.null-attribute=Request attribute ''{0}'' is required by the tagsupport service, but the value is null.
TagSupportService.attribute-not-string=Request attribute ''{0}'' is an instance of {1}, not a string.
TagSupportService.attribute-not-array=Request attribute ''{0}'' is an instance of {0}, not an object array.
BaseEngine.recorder-has-uncommited-changes=Could not forget changes to page {0} because the page's recorder has uncommitted changes.
BaseEngine.duplicate-page-recorder=Could not create a second page recorder for page {0}.

ExternalService.page-not-compatible=Page {0} does not implement the IExternalPage interface.

# org.apache.tapestry.enhance

ComponentClassFactory.bad-property-type=Unable to convert ''{0}'' to a property type.
ComponentClassFactory.property-type-mismatch=Unable to enhance class {0} because it contains property ''{1}'' of type {2}, not the expected type {3}.
ComponentClassFactory.non-abstract-read=Unable to enhance class {0} because it implements a non-abstract read method for property ''{1}''.
ComponentClassFactory.non-abstract-write=Unable to enhance class {0} because it implements a non-abstract write method for property ''{1}''.
ComponentClassFactory.unable-to-introspect-class=Unable to introspect properties of class {0}.
ComponentClassFactory.auto-must-be-required=Parameter ''{0}'' must be required or have a default value as it uses direction ''auto''.
ComponentClassFactory.code-generation-error=A code generation error occured while enhancing class {0}.


EnhancedClassLoader.unable-to-define-class=Unable to define class {0}: {1}

MethodFabricator.no-more-arguments=No more arguments may be added once any local variables are added.

DefaultComponentClassEnhancer.no-impl-for-abstract-method=Method ''{0}'' (declared in {1}) has no implementation in class {2} (or enhanced subclass {3}).


# org.apache.tapestry.event

ObservedChangeEvent.null-property-name=Must specify a non-null propertyName when creating ObservedChangeEvent for {0}.
ObservedChangeEvent.must-be-serializable=Must specify a serializable object as the new value of property when creating an ObservedChangeEvent.

# org.apache.tapestry.form

AbstractFormComponent.must-be-contained-by-form=This component must be contained within a Form.

Form.forms-may-not-nest=Forms may not be nested.
Form.needs-body-for-event-handlers=A Form with event handlers must be enclosed by a Body component.
Form.too-many-ids=Rewind of form {0} expected only {1} form elements, but an additional id was requested by component {2}.
Form.too-few-ids=Rewind of form {0} expected {1} more form elements, starting with id ''{2}''.
Form.id-mismatch=Rewind of form {0} expected allocated id #{1} to be ''{2}'', but was ''{3}'' (requested by component {4}).
Form.encoding-type-contention=Components within Form {0} have requested conflicting encoding types ''{1}'' and ''{2}''.

ListEdit.unable-to-convert-value=Unable to convert {0} to an external string in ListEdit component.
ListEdit.unable-to-convert-string=Unable to convert {0} back into an object in ListEdit component.

FormConditional.unable-to-convert-value=Unable to convert {0} to an external string in FormConditional component.
FormConditional.unable-to-convert-string=Unable to convert {0} back into an object in FormConditional component.

Option.must-be-contained-by-select=Option component must be contained within a Select.

Radio.must-be-contained-by-group=Radio component must be contained within a RadioGroup.

RadioGroup.may-not-nest=RadioGroup components may not be nested.

Select.may-not-nest=Select components may not be nested.

LinkSubmit.may-not-nest=LinkSubmit components may not be nested.

# org.apache.tapestry.html

Body.may-not-nest=Body components may not be nested.
Body.include-classpath-script-only=Unable to include external script {0}: only classpath resources are supported.

InsertText.conversion-error=Error converting text to lines (for InsertText component).

Rollover.must-be-contained-by-body=Rollover components must be contained within a Body component.
Rollover.must-be-contained-by-link=Rollover components must be contained within an ILinkComponent.

Script.must-be-contained-by-body=Script components must be contained within a Body component.

# org.apache.tapestry.contrib.inspector

ShowEngine.could-not-serialize=Could not serialize the application engine.

InspectorButton.must-be-contained-by-body=InspectorButton component must be contained within a Body component.

# org.apache.tapestry.jsp

URLRetriever.unable-to-find-dispatcher=Unable to find request dispatcher for servlet at ''{0}''.
URLRetriever.io-exception=I/O exception messaging servlet {0}: {1}
URLRetriever.servlet-exception=Servlet exception messaging servlet {0}: {1}

AbstractLinkTag.io-exception=I/O exception writing output: {1}

AbstractTapestryTag.unable-to-evaluate-expression=Unable to evaluate OGNL expression ''{0}'': {1}

# org.apache.tapestry.link

GestureLink.missing-service=No engine service name {0}.

AbstractLinkComponent.no-nesting=ILinkComponents may not be nested.
AbstractLinkComponent.events-need-body=A link component with multiple functions for a single event type must be contained within a Body.

# org.apache.tapestry.listener

ListenerMap.object-missing-method=Object {0} does not implement a listener method named ''{1}''.
ListenerMap.unable-to-invoke-method=Unable to invoke method {0} on {1}: {2}

# org.apache.tapestry.multipart

UploadPart.unable-to-open-content-file=Unable to open uploaded file ''{0}''.
UploadPart.write-failure=Error writing uploaded content to {0}: {1}

DefaultMultipartDecoder.unable-to-decode=Unable to decode request: {0}
DefaultMultipartDecoder.encoding-not-set=No encoding has been set for this request.

# org.apache.tapestry.pageload

PageLoader.formal-parameters-only=Component {0} allows only formal parameters, binding {1} is not allowed.
PageLoader.required-parameter-not-bound=Required parameter {0} of component {1} is not bound.
PageLoader.unable-to-load-specification=Unable to load component specification.
PageLoader.class-not-component=Class {0} does not implement the IComponent interface.
PageLoader.unable-to-instantiate=Unable to instantiate an instance of class {0}.
PageLoader.page-not-allowed=Component {0} may not implement the IPage interface.
PageLoader.class-not-page=Class {0} does not implement the IPage interface.
PageLoader.unable-to-instantiate-component=Unable to instantiate component {0}: {1}
PageLoader.missing-asset=Unable to locate asset ''{0}'' of component {1} as {2}.
PageLoader.unable-to-initialize-property=Unable to initialize property {0} of {1}: {2}
PageLoader.inherit-informal-invalid-component-formal-only=Component {0} allows only formal parameters, but has inherit-informal-parameters set.
PageLoader.inherit-informal-invalid-container-formal-only=Component {0} allows only formal parameters, but it contains component {1} that has inherit-informal-parameters set.

EstablishDefaultParameterValuesVisitor.parameter-must-have-no-default-value=Parameter {1} of component {0} is required and must not have a default value.

# org.apache.tapestry.parse

TextToken.error-trimming={0}: Failure trimming leading and trailing whitespace.

SpecificationParser.fail-convert-boolean=Could not convert ''{0}'' to boolean.
SpecificationParser.fail-convert-int=Could not convert ''{0}'' to integer.
SpecificationParser.fail-convert-double=Could not convert ''{0}'' to double.
SpecificationParser.fail-convert-long=Could not convert ''{0}'' to long.
SpecificationParser.unexpected-component-public-id=Unexpected component specification with public identifier {0}.
SpecificationParser.unexpected-application-public-id=Unexpected application specification with public identifier {0}.
SpecificationParser.both-type-and-copy-of=Contained component {0} contains both type and copy-of attributes.
SpecificationParser.missing-type-or-copy-of=Contained component {0} does not specify attribute type or copy-of.
SpecificationParser.unable-to-copy=Unable to copy component {0}, which does not exist.
SpecificationParser.invalid-parameter-name=Parameter ''{0}'' is an invalid name.  Parameter names should be valid Java identifiers.
SpecificationParser.invalid-page-name=''{0}'' is not a valid page name.  Page names must start with a letter and consist only of letters, numbers, period, dash and underscore.
SpecificationParser.invalid-component-type=''{0}'' is not a valid component type.  Types must be valid Java identifiers.
SpecificationParser.invalid-property-name=''{0}'' is not a valid JavaBean property name.  Property names must be valid Java identifiers.
SpecificationParser.invalid-bean-name=''{0}'' is not a valid helper bean name.  Helper bean names must be valid Java identifiers.
SpecificationParser.unknown-static-value-type=Unknown <static-value> type: ''{0}''.
SpecificationParser.invalid-component-id=''{0}'' is not a valid component id.  Component ids must be valid Java identifiers.
SpecificationParser.invalid-asset-name=''{0}'' is not a valid asset name.  Asset names must be valid Java identifiers.
SpecificationParser.invalid-service-name=''{0}'' is not a valid service name.  Service names must start with a letter, and contain only letters, numbers, dash, underscore and period.
SpecificationParser.invalid-library-id=''{0}'' is not a valid library id.  Library ids must be valid Java identifiers.
SpecificationParser.invalid-extension-name=''{0}'' is not a valid extension name.  Extension names must start with a letter, and contain only letters, numbers, dash and underscore.
SpecificationParser.invalid-component-type=''{0}'' is not a valid component type.
SpecificationParser.framework-library-id-is-reserved=The library id ''{0}'' is reserved and may not be used.
SpecificationParser.no-attribute-and-body=It is not valid to specify a value for attribute ''{0}'' of <{1}> and provide a value in the body of the element.
SpecificationParser.required-extended-attribute=Element <{0}> does not specify a value for attribute ''{1}'', or contain a body value.
SpecificationParser.error-reading-resource=Unable to read {0}: {1}

ValidatePublicIdRule.no-public-id=Document {0} does not define a public id.

TemplateParser.comment-not-ended=Comment on line {0} did not end.
TemplateParser.unclosed-tag=Tag <{0}> on line {1} is never closed.
TemplateParser.unclosed-unknown-tag=Tag on line {1} is never closed.
TemplateParser.missing-attribute-value=Tag <{0}> on line {1} is missing a value for attribute {2}.
TemplateParser.content-block-may-not-be-ignored=Tag <{0}> on line {1} is the template content, and may not be in an ignored block.
TemplateParser.content-block-may-not-be-empty=Tag <{0}> on line {1} is the template content, and may not be empty.
TemplateParser.unknown-component-id=Tag <{0}> on line {1} references unknown component id ''{2}''.
TemplateParser.component-may-not-be-ignored=Tag <{0}> on line {1} is a dynamic component, and may not appear inside an ignored block.
TemplateParser.nested-ignore=Tag <{0}> on line {1} should be ignored, but is already inside an ignored block (ignored blocks may not be nested).
TemplateParser.incomplete-close-tag=Incomplete close tag on line {0}.
TemplateParser.improperly-nested-close-tag=Closing tag </{0}> on line {1} is improperly nested with tag <{2}> on line {3}.
TemplateParser.unmatched-close-tag=Closing tag </{0}> on line {1} does not have a matching open tag.
TemplateParser.component-id-invalid=Tag <{0}> on line {1} contains an invalid jwcid ''{2}''.
TemplateParser.duplicate-tag-attribute=Tag <{0}> on line {1} contains more than one ''{2}'' attribute.


TextToken.range-error={0}: out of range for template length {1}.
TemplateToken.may-not-render={0} tokens may not render.

# org.apache.tapestry.record

PageRecorder.change-after-lock=Page recorder for page {0} is locked after a commit(), but received a change to property {1} of component {2}.
PageRecorder.unable-to-persist=Unable to persist property {0} of component {1} as {2}.
PageRecorder.null-property-name=A change event for component {0} failed to specify the name of the updated property.
PageRecorder.unable-to-rollback=Unable to set property {0} of component {1} to {2}: {3}

# org.apache.tapestry.resource

ContextResourceLocation.unable-to-reference-context-path=Unable to reference context path ''{0}''.


# org.apache.tapestry.script

ScriptParser.unknown-public-id=Script uses unknown public indentifier {0}.
ScriptParser.invalid-key=''{0}'' is not a valid key.  Symbol keys must be valid Java identifiers.
ScriptParser.unable-to-resolve-class=''{0}'' is not a resolvable class name.

InputSymbolToken.required=Script symbol ''{0}'' is required, but not specified.
InputSymbolToken.wrong-type=Script symbol ''{0}'' is {1}, not {2}.

# org.apache.tapestry.spec

LibrarySpecification.duplicate-child-namespace-id=A child namespace with id ''{0}'' already exists.
LibrarySpecification.duplicate-page-name=A page named ''{0}'' already exists in this namespace.
LibrarySpecification.duplicate-component-alias=A component alias ''{0}'' already exists in this namespace.
LibrarySpecification.duplicate-service-name=A service named ''{0}'' already exists in this namespace.
LibrarySpecification.duplicate-extension-name=An extension named ''{0}'' already exists in this namespace.
LibrarySpecification.no-such-extension=No extension named ''{0}'' exists in this namespace.
LibrarySpecification.extension-does-not-implement-interface=Extension ''{0}'' (class {1}) does not implement interface {2}.
LibrarySpecification.extension-not-a-subclass=Extension ''{0}'' (class {1}) does not inherit from class {2}.

ComponentSpecification.duplicate-asset={0}: already contains asset ''{1}''.
ComponentSpecification.duplicate-component={0}: already contains component ''{1}''.
ComponentSpecification.duplicate-parameter={0}: already contains parameter ''{1}''.
ComponentSpecification.duplicate-bean={0}: already contains bean definition for ''{1}''.
ComponentSpecification.duplicate-property-specification={0}: already contains property specification for property ''{1}''.

ExtensionSpecification.duplicate-property={0}: already contains property configuration for ''{1}''.
ExtensionSpecification.bad-class=Unable to locate class {0}.

Direction.IN=in
Direction.FORM=form
Direction.CUSTOM=custom
Direction.AUTO=auto

# org.apache.tapestry.util

AdaptorRegistry.duplicate-registration=A registration for class {0} already exists.
AdaptorRegistry.adaptor-not-found=Could not find an adaptor for class {0}.

JanitorThread.interval-locked=The interval for this janitor thread is locked.
JanitorThread.illegal-interval=The interval for a janitor thread may not be less than 1 millisecond.

MultiKey.null-keys=Must pass in non-empty array of keys.
MultiKey.first-element-may-not-be-null=First element of keys may not be null.
MultiKey.no-keys=No keys for this MultiKey.

Pool.unable-to-instantiate-instance=Unable to instantiate new instance of class {0}.


# org.apache.tapestry.util.io

DataSqueezer.short-prefix=The adaptor prefix must contain at least one character.
DataSqueezer.null-class=The dataClass may not be null.
DataSqueezer.null-adaptor=The adaptor may not be null.
DataSqueezer.prefix-out-of-range=DataSqueezer prefix must be in the range ''!'' to ''z''.
DataSqueezer.adaptor-prefix-taken=An adaptor for prefix ''{0}'' is already registered.

SerializableAdaptor.class-not-found=Class {0} not found.
SerializableAdaptor.unable-to-convert=Cannot convert {0} into a modified Base64 character.
SerializableAdaptor.unable-to-interpret-char=Cannot interpret ''{0}'' as a modified Base64 character.

ComponentAddressAdaptor.no-separator=Invalid ComponentAddress encoding -- separator not present

# org.apache.tapestry.util.prop

PropertyFinder.unable-to-introspect-class=Unable to instrospect properties of class {0}.

OgnlUtils.unable-to-update-expression=Unable to update expression ''{0}'' of {1} to {2}.
OgnlUtils.unable-to-read-expression=Unable to read expression ''{0}'' of {1}.
OgnlUtils.unable-to-parse-expression=Unable to parse expression ''{0}''.

# org.apache.tapestry.util.xml

AbstractDocumentParser.incorrect-document-type=Incorrect document type; expected {0} but received {1}.
AbstractDocumentParser.unable-to-parse=Unable to parse {0}: {1}
AbstractDocumentParser.unable-to-read=Error reading {0}: {1}
AbstractDocumentParser.unable-to-construct-builder=Unable to construct DocumentBuilder: {0}
AbstractDocumentParser.invalid-identifier={0} is not a valid identifier (in element {1}).
AbstractDocumentParser.missing-resource=Resource at {0} does not exist.
AbstractDocumentParser.unknown-public-id=Document {0} has an unexpected public id of ''{1}''.

RuleDrivenParser.no-rule-for-element=No rule is defined for parsing element ''{0}''.
RuleDrivenParser.resource-missing=Unable to find resource {0}.
RuleDrivenParser.unable-to-open-resource=Unable to open resource {0}.
RuleDrivenParser.parse-error=Unable to parse {0}: {1}

# org.apache.tapestry.valid

FieldLabel.no-display-name=Display name not specified and not provided by field {0}.
FieldLabel.must-be-contained-by-form=This component must be contained within a Form.
FieldLabel.no-delegate=No IValidationDelegate is available to ValidField {0}; it is specified as the delegate parameter of Form {1}.

ValidField.no-delegate=No IValidationDelegate is available to ValidField {0}; it is specified as the delegate parameter of Form {1}.
ValidField.must-be-contained-by-body=A ValidField using client-side validation must be enclosed by a Body component.

NumberValidator.unknown-type=Unknown value type {0}.
NumberValidator.no-adaptor-for-field=Unable to provide validation for field {0} (value type {1}).

PatternValidator.pattern-match-error=Unable to match pattern {0} for field {1}.

# org.apache.tapestry.wml

Card.cards-may-not-nest=Cards may not be nested.
Postfield.must-be-contained-by-go=This postfield must be contained within a Go.

# org.apache.tapestry.contrib.components

When.must-be-contained-by-choose=When component must be contained within a Choose.
