try {
String typeName = field.getPattern().getObjectType();
String fullFieldType = generatedTypes.contains(typeName) ? typeName : pkgRegistry.getTypeResolver().resolveType(typeName).getName();
FieldDefinition fieldDef = new FieldDefinition( field.getFieldName(),
fullFieldType );
// field is marked as PK
boolean isKey = field.getAnnotation( TypeDeclaration.ATTR_KEY ) != null;
fieldDef.setKey( isKey );
fieldDef.setDeclIndex( field.getIndex() );
if ( field.getIndex() < 0 ) {
int freePos = occupiedPositions.nextClearBit( 0 );
if ( freePos < maxDeclaredPos ) {
occupiedPositions.set( freePos );
} else {
freePos = maxDeclaredPos + 1;
}
fieldDef.setPriority( freePos * 256 + curr++ );
} else {
fieldDef.setPriority( field.getIndex() * 256 + curr++ );
}
fieldDef.setInherited( field.isInherited() );
fieldDef.setInitExpr( field.getInitExpr() );
for (String annotationName : field.getAnnotationNames()) {
Class annotation = resolveAnnotation( annotationName,
pkgRegistry.getTypeResolver() );
if (annotation != null) {
try {
AnnotationDefinition annotationDefinition = AnnotationDefinition.build( annotation,
field.getAnnotations().get( annotationName ).getValueMap(),
pkgRegistry.getTypeResolver() );
fieldDef.addAnnotation( annotationDefinition );
} catch (NoSuchMethodException nsme) {
this.results.add( new TypeDeclarationError( field,
"Annotated field " + field.getFieldName() +
" - undefined property in @annotation " +
annotationName + ": " + nsme.getMessage() + ";" ) );
}
} else {
fieldDef.addMetaData( annotationName, field.getAnnotation( annotationName ).getSingleValue() );
}
}
queue.add( fieldDef );
} catch (ClassNotFoundException cnfe) {