@Override public void resolveAllReferences() { TCClass tcc = getTCClass(); if (tcc.isIndexed()) { if (!hasReferences()) return; Object[] po = (Object[]) getPeerObject(); for (Iterator iter = references.entrySet().iterator(); iter.hasNext();) { Map.Entry entry = (Entry) iter.next(); int index = Integer.parseInt((String) entry.getKey()); ObjectID id = (ObjectID) entry.getValue(); setArrayReference(po, index, id); iter.remove(); } } else { while (tcc != null) { TCField[] fields = tcc.getPortableFields(); for (TCField field : fields) { if (field.canBeReference()) resolveReference(field.getName()); } tcc = tcc.getSuperclass(); } } }
@Override public void resolveAllReferences() { TCClass tcc = getTCClass(); if (tcc.isIndexed()) { if (!hasReferences()) return; Object[] po = (Object[]) getPeerObject(); for (Iterator iter = references.entrySet().iterator(); iter.hasNext();) { Map.Entry entry = (Entry) iter.next(); int index = Integer.parseInt((String) entry.getKey()); ObjectID id = (ObjectID) entry.getValue(); setArrayReference(po, index, id); iter.remove(); } } else { while (tcc != null) { TCField[] fields = tcc.getPortableFields(); for (TCField field : fields) { if (field.canBeReference()) resolveReference(field.getName()); } tcc = tcc.getSuperclass(); } } }
@Override public final void resolveReference(String fieldName) { synchronized (getResolveLock()) { this.markAccessed(); if (!hasReferences()) return; Object po = getPeerObject(); TCClass tcClass = getTCClass(); Assert.eval(tcClass != null); TCField field = tcClass.getField(fieldName); if (!field.canBeReference()) { return; } final ObjectID id = (ObjectID) getReferences().get(fieldName); // Already resolved if (id == null) { return; } Object setObject = null; if (!id.isNull()) { try { setObject = getObjectManager().lookupObject(id); } catch (ClassNotFoundException e) { throw new TCClassNotFoundException(e); } catch (AbortedOperationException e) { throw new TCRuntimeException(e); } } removeReference(fieldName); ((TransparentAccess) po).__tc_setfield(field.getName(), setObject); } }
@Override public final void resolveReference(String fieldName) { synchronized (getResolveLock()) { this.markAccessed(); if (!hasReferences()) return; Object po = getPeerObject(); TCClass tcClass = getTCClass(); Assert.eval(tcClass != null); TCField field = tcClass.getField(fieldName); if (!field.canBeReference()) { return; } final ObjectID id = (ObjectID) getReferences().get(fieldName); // Already resolved if (id == null) { return; } Object setObject = null; if (!id.isNull()) { try { setObject = getObjectManager().lookupObject(id); } catch (ClassNotFoundException e) { throw new TCClassNotFoundException(e); } catch (AbortedOperationException e) { throw new TCRuntimeException(e); } } removeReference(fieldName); ((TransparentAccess) po).__tc_setfield(field.getName(), setObject); } }