public void AddAdapter(INakedObjectAdapter nakedObjectAdapter)
        {
            Assert.AssertNotNull("Cannot add null adapter to IdentityAdapterMap", nakedObjectAdapter);
            object obj = nakedObjectAdapter.Object;

            Assert.AssertFalse("POCO Map already contains object", obj, nakedObjectAdapterMap.ContainsObject(obj));

            if (unloadedObjects.ContainsKey(obj))
            {
                string msg = string.Format(Resources.NakedObjects.TransientReferenceMessage, obj);
                throw new TransientReferenceException(msg);
            }

            if (nakedObjectAdapter.Spec.IsObject)
            {
                nakedObjectAdapterMap.Add(obj, nakedObjectAdapter);
            }
            // order is important - add to identity map after poco map
            identityAdapterMap.Add(nakedObjectAdapter.Oid, nakedObjectAdapter);

            // log at end so that if ToString needs adapters they're in maps.
            Log.DebugFormat("Adding identity for {0}", nakedObjectAdapter);

            nakedObjectAdapter.LoadAnyComplexTypes();
        }
        public void AddAdapter(INakedObjectAdapter nakedObjectAdapter)
        {
            if (nakedObjectAdapter == null)
            {
                throw new NakedObjectSystemException("Cannot add null adapter to IdentityAdapterMap");
            }

            var obj = nakedObjectAdapter.Object;

            if (nakedObjectAdapterMap.ContainsObject(obj))
            {
                throw new NakedObjectSystemException("POCO Map already contains object");
            }

            if (unloadedObjects.ContainsKey(obj))
            {
                var msg = string.Format(Resources.NakedObjects.TransientReferenceMessage, obj);
                throw new TransientReferenceException(logger.LogAndReturn(msg));
            }

            if (nakedObjectAdapter.Spec.IsObject)
            {
                nakedObjectAdapterMap.Add(obj, nakedObjectAdapter);
            }

            // order is important - add to identity map after poco map
            identityAdapterMap.Add(nakedObjectAdapter.Oid, nakedObjectAdapter);

            nakedObjectAdapter.LoadAnyComplexTypes();
        }
        public void AddAdapter(INakedObjectAdapter nakedObjectAdapter) {
            Assert.AssertNotNull("Cannot add null adapter to IdentityAdapterMap", nakedObjectAdapter);
            object obj = nakedObjectAdapter.Object;
            Assert.AssertFalse("POCO Map already contains object", obj, nakedObjectAdapterMap.ContainsObject(obj));

            if (unloadedObjects.ContainsKey(obj)) {
                string msg = string.Format(Resources.NakedObjects.TransientReferenceMessage, obj);
                throw new TransientReferenceException(Log.LogAndReturn(msg));
            }

            if (nakedObjectAdapter.Spec.IsObject) {
                nakedObjectAdapterMap.Add(obj, nakedObjectAdapter);
            }
            // order is important - add to identity map after poco map 
            identityAdapterMap.Add(nakedObjectAdapter.Oid, nakedObjectAdapter);
            
            nakedObjectAdapter.LoadAnyComplexTypes();
        }