continue;
}
fieldType = getJavaTypeForField(field);
final JavaTypeMetadataDetails typeMetadataHolder = relatedDomainTypes
.get(fieldType);
JavaTypePersistenceMetadataDetails typePersistenceMetadataHolder = null;
if (typeMetadataHolder != null) {
typePersistenceMetadataHolder = typeMetadataHolder
.getPersistenceDetails();
}
Element fieldElement = null;
if (fieldType.getFullyQualifiedTypeName().equals(
Boolean.class.getName())
|| fieldType.getFullyQualifiedTypeName().equals(
boolean.class.getName())) {
fieldElement = document.createElement("field:checkbox");
// Handle enum fields
}
else if (typeMetadataHolder != null
&& typeMetadataHolder.isEnumType()) {
fieldElement = new XmlElementBuilder("field:select", document)
.addAttribute(
"items",
"${"
+ typeMetadataHolder.getPlural()
.toLowerCase() + "}")
.addAttribute("path", getPathForType(fieldType))
.build();
}
else if (field.getCustomData().keySet()
.contains(CustomDataKeys.ONE_TO_MANY_FIELD)) {
// OneToMany relationships are managed from the 'many' side of
// the relationship, therefore we provide a link to the relevant
// form the link URL is determined as a best effort attempt
// following Roo REST conventions, this link might be wrong if
// custom paths are used if custom paths are used the developer
// can adjust the path attribute in the field:reference tag
// accordingly
if (typePersistenceMetadataHolder != null) {
fieldElement = new XmlElementBuilder("field:simple",
document)
.addAttribute("messageCode",
"entity_reference_not_managed")
.addAttribute(
"messageCodeAttribute",
new JavaSymbolName(fieldType
.getSimpleTypeName())
.getReadableSymbolName()).build();
}
else {
continue;
}
}
else if (field.getCustomData().keySet()
.contains(CustomDataKeys.MANY_TO_ONE_FIELD)
|| field.getCustomData().keySet()
.contains(CustomDataKeys.MANY_TO_MANY_FIELD)
|| field.getCustomData().keySet()
.contains(CustomDataKeys.ONE_TO_ONE_FIELD)) {
final JavaType referenceType = getJavaTypeForField(field);
final JavaTypeMetadataDetails referenceTypeMetadata = relatedDomainTypes
.get(referenceType);
if (referenceType != null && referenceTypeMetadata != null
&& referenceTypeMetadata.isApplicationType()
&& typePersistenceMetadataHolder != null) {
fieldElement = new XmlElementBuilder("field:select",
document)
.addAttribute(
"items",
"${"
+ referenceTypeMetadata.getPlural()
.toLowerCase() + "}")
.addAttribute(
"itemValue",
typePersistenceMetadataHolder
.getIdentifierField()