# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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.  

copy-no-oid: Cannot copy identity for abstract type "{0}".
no-meta: No registered metadata for type "{0}".
bad-getter: Missing getter for property "{1}" in type "{0}". 
bad-setter: Missing setter for property "{1}" in type "{0}". 
bad-field: Missing field for property "{1}" in type "{0}".
reflect-security: Unable to access "{0}" via reflection.  Make sure OpenJPA \
    has the "suppressAccessChecks" permission.
needs-runtime-enhance: "{0}" requires runtime enhancement: {1}
runtime-enhance-pcclasses: You have enabled runtime enhancement, but have not \
	specified the set of persistent classes.  OpenJPA must look for metadata \
    for every loaded class, which might increase class load times significantly.
running-all-classes: No targets were given.  Running on all classes in your \
    persistent classes list, or all metadata files in classpath directories if \
	you have not listed your persistent classes.  Use -help to display tool \
    usage information.
no-class-to-enhance: Found no class to enhance.
detach-custom-ser: Type "{0}" is set to detach on serialize, but implements \
	a custom readObject and/or writeObject method.  You cannot use custom \
	serialization with detachment. 
detach-custom-extern: Type "{0}" is set to detach on serialize, but implements \
	a custom readExternal and/or writeExternal method.  You cannot use custom \
	serialization with detachment. 
enhance-start: Enhancing type "{0}".
runtime-optimization-disabled: This configuration disallows runtime \
    optimization, but the following listed types were not enhanced at build \
    time or at class load time with a javaagent: "{0}".
enhance-and-subclass-and-redef-start: Creating subclass and redefining methods \
    for "{0}". This means that your application will be less efficient \
    than it would if you ran the OpenJPA enhancer.
enhance-and-subclass-no-redef-start: Creating subclass for "{0}". \
    This means that your application will be less efficient and will consume \
    more memory than it would if you ran the OpenJPA enhancer. Additionally, \
    lazy loading will not be available for one-to-one and many-to-one \
    persistent attributes in types using field access; they will be loaded \
    eagerly instead.
redefine-types: Redefining {0} using Java 5 type redefinition.
retransform-types: Redefining {0} using Java 6 type retransformation.
pc-type: Type "{0}" is already persistence capable; skipping.
pers-aware: Type "{0}" has no metadata; enhancing as persistence aware. \
	If you intended for "{0}" to be persistence-capable, then this means that \
	OpenJPA could not find any metadata for "{0}". This can happen if the \
	directory containing your metadata is not in your CLASSPATH, or if your \
	metadata files are not named properly. See the documentation on metadata \
	placement for more information.
enhance-running: Enhancer running on type "{0}".
enhance-aware: The class does not have metadata - enhanced as persistence-aware.
enhance-norun: The class is already persistence capable - no enhancement \
	performed.
enhance-interface: The class is a managed interface - no enhancement performed.
enhance-usage: Usage: java org.apache.openjpa.enhance.PCEnhancer\n\
	\t[-properties/-p <properties file or resource>]\n\
	\t[-<property name> <property value>]*\n\
	\t[-directory/-d <output directory>]\n\
	\t[-addDefaultConstructor/-adc <true/t | false/f>]\n\
	\t[-jdoEnhance/-jdo <true/t | false/f>]\n\
	\t[-enforcePropertyRestrictions/-epr <true/t | false/f>]\n\
	\t[-tmpClassLoader/-tcl <true/t | false/f>]\n\
	\t<class name | .java file | .class file | .jdo file>+ 
enhance-defaultconst: The type "{0}" must have a no-args constructor.
enhance-adddefaultconst: The type "{0}" must have a no-args constructor. \
	Adding a {1} no-args constructor.
enhance-cloneable:The type "{0}" implements Cloneable but does not call \
	super.clone ().  Adding protected super.clone () invocation.
enhance-uid-access: An IllegalAccessException occured when trying to \
	obtain the serialVersionUID field for the class "{0}". This is a known \
	bug in JDK 1.4+ when using a custom ClassLoader to enhance a \
	class that implements java.io.Serializable. If compatibility with \
	non-enhanced versions of "{0}" is not needed, this warning can be ignored.
enhance-defcons-extern: Type "{0}" requires a public constructor to support \
    detach on serialize.  Making default constructor public.
cons-access: An error occurred trying to instantiate a custom storage class.
pcdata-generate: Generating dynamic PCData for type: "{0}"
pcdata-created: Dynamic PCData created: name="{0}", for type="{1}"
factory-not-oidloader: Attempt to run the application id tool under metadata \
	configuration that does not support it.  The application id tool can only \
	run under certain metadata factory settings.
str-cons: The id type "{0}" specfied by persistent type "{1}" \  
	does not have a public {0}(String) or {0}(Class, String) constructor.
appid-start: Generating an application id for type "{0}".
appid-invalid: Type "{0}" does not have metadata, does not use application \
	identity, uses a built-in identity type, or inherits the identity class \
	from its superclass. 
appid-warn: Type "{0}" does not have metadata, does not use application \
	identity, or inherits the identity class from its superclass; skipping.
name-mult-args: When you supply the -name option, you must run the tool on \
	exactly one class.  Attempt to run on multiple classes: {0}
no-id-class: Type "{0}" does not declare an id class.
no-pks: Type "{0}" does not declare any primary key fields.
appid-running: Application identity tool running on type "{0}".
appid-output: Writing application identity class to file "{0}". 
appid-norun: No identity class was generated for this type.
appid-usage: Usage: java org.apache.openjpa.enhance.ApplicationIdTool\n\
	\t[-properties/-p <properties file or resource>]\n\
	\t[-<property name> <property value>]*\n\
	\t[-ignoreErrors/-i <true/t | false/f>]*\n\
	\t[-directory/-d <output directory>]\n\
	\t[-name/-n <id class name>]\n\
	\t[-suffix/-s <id class suffix>]\n\
	\t[-token/-t <token>]\n\
	\t[-codeFormat/-cf.<property name> <property value>]*\n\
	\t<class name | .java file | .class file | .jdo file>+ 
appid-comment-for: Application identity class for: {0}
appid-comment-gen: Auto-generated by:
property-violations: Detected the following possible violations of the \
	restrictions placed on property access persistent types:\n{0}
property-field-access: "{1}" uses property access, but its field "{2}" is \
	accessed directly in method "{3}" defined in "{0}".
property-bad-member: The member for for persistent property "{0}" was not \
	a method: "{1}".
property-no-getter: No getter method found for persistent property "{0}".  All \
	persistent properties must have getter methods.
property-no-setter: No setter method found for persistent property "{0}", and \
	bytecode analysis of the getter did not reveal a clear backing field. \
	Please create a setter method for this property (it may be private). 
property-setter-getter-mismatch: Bytecode analysis of the setter and getter \
	methods for persistent property "{0}" indicates that the two methods \
	might be acting on different backing fields.  The setter method assigns to \
	field "{1}", while the getter method returns field "{2}".
cft-exception-thrown: An exception was thrown while attempting to perform \
	class file transformation on "{0}":
subclasser-error-field: Error while processing persistent field {1}, declared \
	in {2}. Error details: {0}
subclasser-error-meta: Error while processing persistent type {1}, declared \
	in {2}. Error details: {0}
subclasser-contract-violation-field: Possible violation of subclassing contract\
	detected while processing persistent field {1}, declared in {2}. Are you \
	sure you are obeying the OpenJPA requirements? Details: {0}
subclasser-setter-getter-field-mismatch: Mismatch between getter and setter.
subclasser-no-ifaces: OpenJPA does not currently support automatic handling of \
    interface types. Failed type: {0}
subclasser-no-final-classes: OpenJPA cannot dynamically subclass final types. \
    To use final types, you must run the OpenJPA enhancer after compilation, \
    or deploy to an environment that supports deploy-time enhancement, such as \
    a Java EE 5 application server. Failed type: {0}
subclasser-no-private-classes: OpenJPA cannot dynamically subclass final types.\
    To use final types, you must run the OpenJPA enhancer after compilation, \
    or deploy to an environment that supports deploy-time enhancement, such as \
    a Java EE 5 application server. Failed type: {0}
subclasser-super-already-pc: The superclass for type {0} implements \
    org.apache.openjpa.enhance.PersistenceCapable, which means that it was \
    processed by the OpenJPA enhancer. If you are enhancing some of your \
    persistent types, you must enhance all of them.
subclasser-private-ctor: Unenhanced classes must have a public or protected \
    no-args constructor. Type {0}'s no-args constructor is private or \
    package-visible. If you do not want to add such a constructor, you must\
    run the OpenJPA enhancer after compilation, \
    or deploy to an environment that supports deploy-time enhancement, such as \
    a Java EE 5 application server.
subclasser-no-void-ctor: Unenhanced classes must have a public or protected \
    no-args constructor. Type {0} does not have any no-args constructors. \
    If you do not want to add such a constructor, you must \
    run the OpenJPA enhancer after compilation, \
    or deploy to an environment that supports deploy-time enhancement, such as \
    a Java EE 5 application server.
subclasser-class-already-pc: Type {0} is already persistence-capable. Please \
    report this problem to the OpenJPA team at dev@openjpa.apache.org.
subclasser-no-getter: No getter exists for field {0}.
subclasser-no-setter: No setter exists for field {0}.
subclasser-invalid-getter: The getter for field {0} does not obey OpenJPA's \
    subclassing restrictions. Getters must return a single non-computed field.
subclasser-invalid-setter: The setter for field {0} does not obey OpenJPA's \
    subclassing restrictions. Setters must assign the passed-in parameter to a \
    single field in the object.
subclasser-private-accessors-unsupported: The accessor for field {1} in type \
    {0} is private or package-visible. OpenJPA requires accessors in \
    unenhanced instances to be public or protected. \
    If you do not want to add such an accessor, you must run the OpenJPA \
    enhancer after compilation, or deploy to an environment that supports \
    deploy-time enhancement, such as a Java EE 5 application server.
subclasser-final-methods-not-allowed: The method {1} in type {0} is final. \
    OpenJPA requires methods in unenhanced instances to be non-final.
subclasser-native-methods-not-allowed: The method {1} in type {0} is native. \
    OpenJPA requires methods in unenhanced instances to be non-native.
subclasser-static-methods-not-supported: The method {1} in type {0} is static. \
    OpenJPA requires methods in unenhanced instances to be non-static.
subclasser-fetch-group-override: The field {1} in type {0} is configured to be \
    lazily loaded, but lazy loading is not available for classes that use field\
    access when not running the OpenJPA enhancer or when dynamic class \
    redefinition is not available.
no-accessor: Could not find method called {0} in type {1}.
unspecified-unenhanced-types: One or more of the types in {0} have relations \
    to other unenhanced types that were not specified. These unspecified types \
    are: {1}