private boolean resolveGroupReferences() { for (T obj : getAllObjects()) { if (allRef != null) { allRef.addResolution(obj); } for (Map.Entry<FixedStringList, WeakReference<CDOMGroupRef<T>>> me : typeReferences.entrySet()) { CDOMGroupRef<T> trt = me.getValue().get(); if (trt != null) { boolean typeOkay = true; for (String type : me.getKey()) { if (!obj.isType(type)) { typeOkay = false; break; } } if (typeOkay) { trt.addResolution(obj); } } } } if (allRef != null && allRef.getObjectCount() == 0) { Logging.errorPrint( "Error: No " + factory.getReferenceDescription() + " objects were loaded but were referred to in the data"); fireUnconstuctedEvent(allRef); return false; } return true; }
/** * Resolves the references that have been requested from this AbstractReferenceManufacturer, using * the objects contained within this AbstractReferenceManufacturer. * * <p>This method guarantees that all references are resolved. * * <p>Note: Implementations of AbstractReferenceManufacturer may place limits on the number of * times resolveReferences() can be called. The reason for this is that some references may only * be resolved once, and the AbstractReferenceManufacturer is not required to maintain a list of * references that have been resolved and those which have not been resolved. */ @Override public boolean resolveReferences(UnconstructedValidator validator) { boolean resolutionSuccessful = resolvePrimitiveReferences(validator); resolutionSuccessful &= resolveGroupReferences(); for (WeakReference<CDOMGroupRef<T>> ref : typeReferences.values()) { CDOMGroupRef<T> trt = ref.get(); if (trt != null && trt.getObjectCount() == 0) { Logging.errorPrint( "Error: No " + factory.getReferenceDescription() + " objects of " + trt.getLSTformat(false) + " were loaded but were referred to in the data"); fireUnconstuctedEvent(trt); resolutionSuccessful = false; } } isResolved = true; return resolutionSuccessful; }