throws EnhancerMetaDataUserException, EnhancerMetaDataFatalError
{
affirm(classPath);
affirm(fieldName);
try {
final JDOClass clazz = getJDOClass(classPath);
JavaType javaClass = clazz.getJavaType();
affirm(javaClass != null,
"cannot find class file for class: " + classPath);
JavaField javaField = javaClass.getJavaField(fieldName);
affirm(javaField != null,
"cannot find java field " + classPath + "." + fieldName);
JavaType fieldType = javaField.getType();
JDOField field = clazz.getField(fieldName);
// if field not known by JDOClass (not specified in JDO XML),
// create the field only if the model's method of default
// calculation would yield a persistent field. We must not
// change the models state by newly created fields with
// a persistence-modifier "none", because this would lead to
// in a different annotation by isKnownNonManagedField().
if (field == null
&& TypeSupport.isPersistenceFieldType(fieldType)) {
field = clazz.createJDOField(fieldName);
affirm(field != null,
"cannot create JDO field: "
+ classPath + "." + fieldName);
}
field.setJavaField(javaField);