#
# Copyright 2005 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.

# ResourceBundle properties file for JDO
ERR_AbstractClassNoIdentity=Abstract class {0} does not implement key field helper methods
ERR_CannotInitCause=The initCause method cannot be used. To set the cause of this exception, \
use a constructor with a Throwable[] argument.
ERR_StateManagerClassCast=An element of the parameter collection is of class {0}.  \
The parameter collection must contain only elements that are instances of java.lang.Class.
ERR_NoMetadata=No metadata has been registered for class {0}.
EXC_GetPMFNoSuchMethod=Method getPersistenceManagerFactory(Properties) does not exist or is not public.
EXC_GetPMFUnexpectedException=Unexpected exception caught.
EXC_GetPMFClassNotFound=Class {0} was not found.
EXC_GetPMFIllegalAccess=Illegal Access for class {0}.
EXC_GetPMFNoClassNameProperty=A property named javax.jdo.PersistenceManagerFactoryClass must be specified.
MSG_FailedObject=FailedObject:
MSG_NestedThrowables=NestedThrowables:
MSG_NestedThrowablesStackTrace=NestedThrowablesStackTrace:
MSG_ExceptionGettingFailedToString=Exception getting failed.toString(): ''{0}''.
MSG_ExceptionGettingFailedToStringObjectId=Exception getting failed.toString(): ''{0}''. ObjectId of failed instance: ''{1}''. 
ERR_NullClass=JDO implementation error: the parameter class object must not be null.
EXC_GetPMFNullResource: The resource name argument to this method cannot be null.
EXC_GetPMFNullLoader: The class loader argument to this method cannot be null.
EXC_GetPMFNullPropsLoader: The class loader argument to this method cannot be null.
EXC_GetPMFNullPMFLoader: The class loader argument to this method cannot be null.
EXC_GetPMFNullStream: The stream argument to this method cannot be null.
EXC_GetPMFNoResource: The resource named "{0}" could not be found in the class loader "{1}".
EXC_GetPMFIOExceptionRsrc: An IOException was thrown while loading the resource \
named "{0}" into a java.util.Properties object.
EXC_GetPMFIOExceptionStream: An IOException was thrown while loading the stream \
into a java.util.Properties object.
EXC_GetPMFNullFile: The file argument to this method cannot be null.
EXC_GetPMFNoFile: The file named "{0}" could not be found.
EXC_GetPMFIOExceptionFile: An IOException was thrown while loading the file \
named "{0}" into a java.util.Properties object.
EXC_GetPMFNullJndiLoc: The JNDI location argument to this method cannot be null.
EXC_GetPMFNamingException: A NamingException was thrown while obtaining the \
PersistenceManagerFactory at "{0}" from JNDI.
EXC_GetPMFNullPointerException: The PersistenceManagerFactory class must define a static \
method \nPersistenceManagerFactory getPersistenceManagerFactory(Map props). \nThe class "{0}"\n\
defines a non-static getPersistenceManagerFactory(Map props) method.
EXC_GetPMFClassCastException: The PersistenceManagerFactory class must define a static \
method \nPersistenceManagerFactory getPersistenceManagerFactory(Map props). \nThe class "{0}"\n\
has the wrong return type for the getPersistenceManagerFactory(Map props) method.
EXC_StringWrongLength: There must be exactly one character in the id in the input String for CharIdentity.
EXC_IllegalEventType:The event type is outside the range of valid event types.
EXC_SingleFieldIdentityNullParameter: The identity must not be null.
EXC_ObjectIdentityStringConstruction: The identity instance could not be constructed. \
\nThe exception thrown was: "{0}". \
\nParsed the class name as "{1}" and key as "{2}".
EXC_ObjectIdentityStringConstructionNoDelimiter: Missing delimiter ":".
EXC_ObjectIdentityStringConstructionTooShort: Parameter is too short.
EXC_ObjectIdentityStringConstructionUsage: The instance could not be constructed \
from the parameter String "{0}". \
\nThe parameter String is of the form "<className>:<keyString>".
EXC_CreateKeyAsObjectMustNotBeCalled: The method createKeyAsObject must not be called \
because the keyAsObject field must never be null for this class.
EXC_CurrencyStringConstructorIllegalArgument: The instance could not be constructed \
with the argument "{0}". Try "USD".
EXC_CurrencyStringConstructorException: An exception was thrown during construction \
of the Currency instance.
EXC_LocaleStringConstructorException: An exception was thrown during construction \
of the Locale instance.
EXC_DateStringConstructor: Error parsing Date string "{0}" at position {1} \
using date format "{2}".
MSG_unknown: unknown
