typeNameKey = typeName.substring( 0, arrayIndex );
}
String fullFieldType = generatedTypes.contains( typeNameKey ) ? BuildUtils.resolveDeclaredType(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 && annotation.isAnnotation()) {
try {
AnnotationDefinition annotationDefinition = AnnotationDefinition.build(annotation,
field.getAnnotations().get(annotationName).getValueMap(),
pkgRegistry.getTypeResolver());
fieldDef.addAnnotation(annotationDefinition);
} catch (NoSuchMethodException nsme) {
kbuilder.addBuilderResult(new TypeDeclarationError(field,
"Annotated field " + field.getFieldName() +
" - undefined property in @annotation " +
annotationName + ": " + nsme.getMessage() + ";"));
}
}
if (annotation == null || annotation == Key.class || annotation == Position.class) {
fieldDef.addMetaData(annotationName, field.getAnnotation(annotationName).getSingleValue());
}
}
queue.add(fieldDef);
} catch (ClassNotFoundException cnfe) {