From b2df3a1fb6462153791cf2f0ebc217c8056e15b8 Mon Sep 17 00:00:00 2001 From: Charlie Groves Date: Tue, 21 Jun 2011 22:14:22 +0000 Subject: [PATCH] Only set the default access controller when registering dobjects without an access controller git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6663 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../presents/server/PresentsDObjectMgr.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/threerings/presents/server/PresentsDObjectMgr.java b/src/main/java/com/threerings/presents/server/PresentsDObjectMgr.java index a56a7fbe2..716601451 100644 --- a/src/main/java/com/threerings/presents/server/PresentsDObjectMgr.java +++ b/src/main/java/com/threerings/presents/server/PresentsDObjectMgr.java @@ -252,8 +252,12 @@ public class PresentsDObjectMgr // initialize this object object.setOid(oid); - object.setManager(PresentsDObjectMgr.this); - object.setAccessController(_defaultController); + object.setManager(this); + + // set the default access controller if a controller hasn't already been specified + if (object.getAccessController() == null) { + object.setAccessController(_defaultController); + } // insert it into the table _objects.put(oid, object); @@ -472,9 +476,15 @@ public class PresentsDObjectMgr // remove the object from the table _objects.remove(oid); - // inactivate the object + // deactivate the object target.setManager(null); + // if it's using the default access controller, clear it out so it'll get the current + // default controller if it's reactivated. + if (target.getAccessController() == _defaultController) { + target.setAccessController(null); + } + // deal with any remaining oid lists that reference this object Reference[] refs = _refs.remove(oid); if (refs != null) {