Name things a bit more clearly to indicate that we're manipulating field
definitions, not necessarily field overrides. git-svn-id: https://samskivert.googlecode.com/svn/trunk@2428 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -500,13 +500,12 @@ public abstract class BuildVisitor implements ExpressionVisitor
|
|||||||
"Unknown field on persistent record [record=" + type + ", field=" + field + "]");
|
"Unknown field on persistent record [record=" + type + ", field=" + field + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// first, see if there's a field definition
|
||||||
FieldMarshaller<?> fm = dm.getFieldMarshaller(field);
|
FieldMarshaller<?> fm = dm.getFieldMarshaller(field);
|
||||||
Map<String, FieldDefinition> fieldOverrides = _definitions.get(type);
|
Map<String, FieldDefinition> fieldDefs = _definitions.get(type);
|
||||||
if (fieldOverrides != null) {
|
if (fieldDefs != null) {
|
||||||
// first, see if there's a field override
|
FieldDefinition fieldDef = fieldDefs.get(field);
|
||||||
FieldDefinition override = fieldOverrides.get(field);
|
if (fieldDef != null) {
|
||||||
|
|
||||||
if (override != null) {
|
|
||||||
boolean useOverride;
|
boolean useOverride;
|
||||||
if (override instanceof FieldOverride) {
|
if (override instanceof FieldOverride) {
|
||||||
if (fm.getComputed() != null && dm.getComputed() != null) {
|
if (fm.getComputed() != null && dm.getComputed() != null) {
|
||||||
@@ -522,14 +521,13 @@ public abstract class BuildVisitor implements ExpressionVisitor
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (useOverride) {
|
if (useOverride) {
|
||||||
// If a FieldOverride's target is in turn another FieldOverride, the second
|
// If a FieldOverride's target is in turn another FieldOverride, the second one
|
||||||
// one is ignored. As an example, when creating ItemRecords from CloneRecords,
|
// is ignored. As an example, when creating ItemRecords from CloneRecords, we
|
||||||
// we make Item.itemId = Clone.itemId. We also make Item.parentId = Item.itemId
|
// make Item.itemId = Clone.itemId. We also make Item.parentId = Item.itemId
|
||||||
// and would be dismayed to find Item.parentID = Item.itemId = Clone.itemId.
|
// and would be dismayed to find Item.parentID = Item.itemId = Clone.itemId.
|
||||||
|
|
||||||
boolean saved = _enableOverrides;
|
boolean saved = _enableOverrides;
|
||||||
_enableOverrides = false;
|
_enableOverrides = false;
|
||||||
override.accept(this);
|
fieldDef.accept(this);
|
||||||
_enableOverrides = saved;
|
_enableOverrides = saved;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -544,10 +542,8 @@ public abstract class BuildVisitor implements ExpressionVisitor
|
|||||||
Class<? extends PersistentRecord> tableClass;
|
Class<? extends PersistentRecord> tableClass;
|
||||||
if (entityComputed == null) {
|
if (entityComputed == null) {
|
||||||
tableClass = type;
|
tableClass = type;
|
||||||
|
|
||||||
} else if (!PersistentRecord.class.equals(entityComputed.shadowOf())) {
|
} else if (!PersistentRecord.class.equals(entityComputed.shadowOf())) {
|
||||||
tableClass = entityComputed.shadowOf();
|
tableClass = entityComputed.shadowOf();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
tableClass = null;
|
tableClass = null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user