val = fmd.getExternalValue(val, _broker);
external = false;
} else if (val instanceof Proxy) {
// shortcut change trackers; also ensures we don't
// iterate lrs fields
MapChangeTracker ct = (MapChangeTracker) ((Proxy) val).
getChangeTracker();
if (ct != null && ct.isTracking() && ct.getTrackKeys())
{
preFlushPCs(fmd.getKey(), ct.getAdded(), logical,
call);
preFlushPCs(fmd.getKey(), ct.getChanged(), logical,
call);
flushed = true;
}
}
if (!flushed && val != null)
preFlushPCs(fmd.getKey(), ((Map) val).keySet(), logical,
call);
}
if (!valEmbed && (elemType == JavaTypes.PC
|| elemType == JavaTypes.PC_UNTYPED)) {
boolean flushed = false;
if (external)
val = fmd.getExternalValue(val, _broker);
else if (val instanceof Proxy) {
// shortcut change trackers; also ensures we don't
// iterate lrs fields
MapChangeTracker ct = (MapChangeTracker) ((Proxy) val).
getChangeTracker();
if (ct != null && ct.isTracking()) {
if (ct.getTrackKeys()) {
preFlushPCs(fmd.getElement(), ct.getAdded(),
(Map) val, logical, call);
preFlushPCs(fmd.getElement(), ct.getChanged(),
(Map) val, logical, call);
} else {
preFlushPCs(fmd.getElement(), ct.getAdded(),
logical, call);
preFlushPCs(fmd.getElement(), ct.getChanged(),
logical, call);
}
flushed = true;
}
}