From bdadd2377e91293c3ae32467e69c37ab520fa577 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 5 Jul 2006 00:56:16 +0000 Subject: [PATCH] Behold, TAPOAFTSM! The Awesome Power Of A Fully Type-Safe Mothership. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4246 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- build.xml | 2 +- .../crowd/chat/client/ChatDirector.java | 11 ++-- .../crowd/chat/client/MuteDirector.java | 14 ++--- .../crowd/client/LocationDirector.java | 40 ++++++------- .../crowd/client/OccupantDirector.java | 22 +++---- .../crowd/client/PlaceController.java | 11 ++-- .../threerings/crowd/data/PlaceObject.java | 4 +- .../crowd/server/CrowdClientResolver.java | 2 +- .../threerings/crowd/server/PlaceManager.java | 19 +++--- .../crowd/server/PlaceRegistry.java | 60 +++++++++---------- 10 files changed, 91 insertions(+), 94 deletions(-) diff --git a/build.xml b/build.xml index f6b71f1c7..238cf798d 100644 --- a/build.xml +++ b/build.xml @@ -108,7 +108,7 @@ debug="on" optimize="{$build.optimize}" deprecation="on" source="1.5" target="1.5"> - + diff --git a/src/java/com/threerings/crowd/chat/client/ChatDirector.java b/src/java/com/threerings/crowd/chat/client/ChatDirector.java index 4cb54c7f2..beabe3478 100644 --- a/src/java/com/threerings/crowd/chat/client/ChatDirector.java +++ b/src/java/com/threerings/crowd/chat/client/ChatDirector.java @@ -504,7 +504,7 @@ public class ChatDirector extends BasicDirector * of success or failure. */ public void requestTell (final Name target, String msg, - final ResultListener rl) + final ResultListener rl) { // make sure they can say what they want to say final String message = filter(msg, target, true); @@ -1263,13 +1263,14 @@ public class ChatDirector extends BasicDirector history[0] = histEntry; // request to send this text as a tell message - requestTell(target, escapeMessage(message), new ResultListener() { - public void requestCompleted (Object result) { + requestTell(target, escapeMessage(message), + new ResultListener() { + public void requestCompleted (Name target) { // replace the full one in the history with just: // /tell "" String newEntry = "/" + command + " " + - (useQuotes ? ("\"" + result + "\"") - : String.valueOf(result)) + " "; + (useQuotes ? ("\"" + target + "\"") + : String.valueOf(target)) + " "; _history.remove(newEntry); int dex = _history.lastIndexOf("/" + histEntry); if (dex >= 0) { diff --git a/src/java/com/threerings/crowd/chat/client/MuteDirector.java b/src/java/com/threerings/crowd/chat/client/MuteDirector.java index e569291a4..906da6bc7 100644 --- a/src/java/com/threerings/crowd/chat/client/MuteDirector.java +++ b/src/java/com/threerings/crowd/chat/client/MuteDirector.java @@ -150,7 +150,7 @@ public class MuteDirector extends BasicDirector */ public Name[] getMuted () { - return (Name[]) _mutelist.toArray(new Name[_mutelist.size()]); + return _mutelist.toArray(new Name[_mutelist.size()]); } // documentation inherited from interface ChatFilter @@ -175,9 +175,9 @@ public class MuteDirector extends BasicDirector */ protected void notifyObservers (final Name username, final boolean muted) { - _observers.apply(new ObserverList.ObserverOp() { - public boolean apply (Object observer) { - ((MuteObserver)observer).muteChanged(username, muted); + _observers.apply(new ObserverList.ObserverOp() { + public boolean apply (MuteObserver observer) { + observer.muteChanged(username, muted); return true; } }); @@ -187,9 +187,9 @@ public class MuteDirector extends BasicDirector protected ChatDirector _chatdir; /** The mutelist. */ - protected HashSet _mutelist = new HashSet(); + protected HashSet _mutelist = new HashSet(); /** List of mutelist observers. */ - protected ObserverList _observers = - new ObserverList(ObserverList.FAST_UNSAFE_NOTIFY); + protected ObserverList _observers = + new ObserverList(ObserverList.FAST_UNSAFE_NOTIFY); } diff --git a/src/java/com/threerings/crowd/client/LocationDirector.java b/src/java/com/threerings/crowd/client/LocationDirector.java index 3a2154122..44e0cc6d6 100644 --- a/src/java/com/threerings/crowd/client/LocationDirector.java +++ b/src/java/com/threerings/crowd/client/LocationDirector.java @@ -47,7 +47,7 @@ import com.threerings.crowd.util.CrowdContext; * before actually issuing the request. */ public class LocationDirector extends BasicDirector - implements LocationCodes, Subscriber, LocationReceiver, + implements LocationCodes, Subscriber, LocationReceiver, LocationService.MoveListener { /** @@ -217,13 +217,12 @@ public class LocationDirector extends BasicDirector * @return true if everyone is happy with the move, false if it was * vetoed by one of the location observers. */ - public boolean mayMoveTo (final int placeId, ResultListener rl) + public boolean mayMoveTo (final int placeId, ResultListener rl) { final boolean[] vetoed = new boolean[1]; - _observers.apply(new ObserverOp() { - public boolean apply (Object obs) { - LocationObserver lobs = (LocationObserver)obs; - vetoed[0] = (vetoed[0] || !lobs.locationMayChange(placeId)); + _observers.apply(new ObserverOp() { + public boolean apply (LocationObserver obs) { + vetoed[0] = (vetoed[0] || !obs.locationMayChange(placeId)); return true; } }); @@ -380,10 +379,10 @@ public class LocationDirector extends BasicDirector super.clientDidLogon(client); // subscribe to our body object - Subscriber sub = new Subscriber() { - public void objectAvailable (DObject object) + Subscriber sub = new Subscriber() { + public void objectAvailable (BodyObject object) { - gotBodyObject((BodyObject)object); + gotBodyObject(object); } public void requestFailed (int oid, ObjectAccessException cause) @@ -474,10 +473,10 @@ public class LocationDirector extends BasicDirector * Called when we receive the place object to which we subscribed * after a successful moveTo request. */ - public void objectAvailable (DObject object) + public void objectAvailable (PlaceObject object) { // yay, we have our new place object - _plobj = (PlaceObject)object; + _plobj = object; // let the place controller know that we're ready to roll if (_controller != null) { @@ -559,9 +558,9 @@ public class LocationDirector extends BasicDirector protected void notifyFailure (final int placeId, final String reason) { - _observers.apply(new ObserverOp() { - public boolean apply (Object obs) { - ((LocationObserver)obs).locationChangeFailed(placeId, reason); + _observers.apply(new ObserverOp() { + public boolean apply (LocationObserver obs) { + obs.locationChangeFailed(placeId, reason); return true; } }); @@ -585,8 +584,8 @@ public class LocationDirector extends BasicDirector protected LocationService _lservice; /** Our location observer list. */ - protected ObserverList _observers = - new ObserverList(ObserverList.SAFE_IN_ORDER_NOTIFY); + protected ObserverList _observers = + new ObserverList(ObserverList.SAFE_IN_ORDER_NOTIFY); /** The oid of the place we currently occupy. */ protected int _placeId = -1; @@ -615,12 +614,13 @@ public class LocationDirector extends BasicDirector /** A listener that wants to know if we succeeded or * how we failed to move. */ - protected ResultListener _moveListener; + protected ResultListener _moveListener; /** The operation used to inform observers that the location changed. */ - protected ObserverOp _didChangeOp = new ObserverOp() { - public boolean apply (Object obs) { - ((LocationObserver)obs).locationDidChange(_plobj); + protected ObserverOp _didChangeOp = + new ObserverOp() { + public boolean apply (LocationObserver obs) { + obs.locationDidChange(_plobj); return true; } }; diff --git a/src/java/com/threerings/crowd/client/OccupantDirector.java b/src/java/com/threerings/crowd/client/OccupantDirector.java index eb26471f7..3af69f0d1 100644 --- a/src/java/com/threerings/crowd/client/OccupantDirector.java +++ b/src/java/com/threerings/crowd/client/OccupantDirector.java @@ -161,9 +161,9 @@ public class OccupantDirector extends BasicDirector // now let the occupant observers know what's up final OccupantInfo info = (OccupantInfo)event.getEntry(); - _observers.apply(new ObserverList.ObserverOp() { - public boolean apply (Object observer) { - ((OccupantObserver)observer).occupantEntered(info); + _observers.apply(new ObserverList.ObserverOp() { + public boolean apply (OccupantObserver observer) { + observer.occupantEntered(info); return true; } }); @@ -182,9 +182,9 @@ public class OccupantDirector extends BasicDirector // now let the occupant observers know what's up final OccupantInfo info = (OccupantInfo) event.getEntry(); final OccupantInfo oinfo = (OccupantInfo) event.getOldEntry(); - _observers.apply(new ObserverList.ObserverOp() { - public boolean apply (Object observer) { - ((OccupantObserver)observer).occupantUpdated(oinfo, info); + _observers.apply(new ObserverList.ObserverOp() { + public boolean apply (OccupantObserver observer) { + observer.occupantUpdated(oinfo, info); return true; } }); @@ -202,17 +202,17 @@ public class OccupantDirector extends BasicDirector // let the occupant observers know what's up final OccupantInfo oinfo = (OccupantInfo) event.getOldEntry(); - _observers.apply(new ObserverList.ObserverOp() { - public boolean apply (Object observer) { - ((OccupantObserver)observer).occupantLeft(oinfo); + _observers.apply(new ObserverList.ObserverOp() { + public boolean apply (OccupantObserver observer) { + observer.occupantLeft(oinfo); return true; } }); } /** The occupant observers to keep abreast of occupant antics. */ - protected ObserverList _observers = - new ObserverList(ObserverList.SAFE_IN_ORDER_NOTIFY); + protected ObserverList _observers = + new ObserverList(ObserverList.SAFE_IN_ORDER_NOTIFY); /** The user's current location. */ protected PlaceObject _place; diff --git a/src/java/com/threerings/crowd/client/PlaceController.java b/src/java/com/threerings/crowd/client/PlaceController.java index 5fa167bf8..10326234e 100644 --- a/src/java/com/threerings/crowd/client/PlaceController.java +++ b/src/java/com/threerings/crowd/client/PlaceController.java @@ -222,7 +222,7 @@ public abstract class PlaceController extends Controller protected void addDelegate (PlaceControllerDelegate delegate) { if (_delegates == null) { - _delegates = new ArrayList(); + _delegates = new ArrayList(); } _delegates.add(delegate); } @@ -243,7 +243,7 @@ public abstract class PlaceController extends Controller if (_delegates != null) { int dcount = _delegates.size(); for (int i = 0; i < dcount; i++) { - op.apply((PlaceControllerDelegate)_delegates.get(i)); + op.apply(_delegates.get(i)); } } } @@ -252,13 +252,12 @@ public abstract class PlaceController extends Controller * Applies the supplied operation to the registered delegates that * derive from the specified class. */ - protected void applyToDelegates (Class dclass, DelegateOp op) + protected void applyToDelegates (Class dclass, DelegateOp op) { if (_delegates != null) { int dcount = _delegates.size(); for (int i = 0; i < dcount; i++) { - PlaceControllerDelegate delegate = - (PlaceControllerDelegate)_delegates.get(i); + PlaceControllerDelegate delegate = _delegates.get(i); if (dclass.isAssignableFrom(delegate.getClass())) { op.apply(delegate); } @@ -280,5 +279,5 @@ public abstract class PlaceController extends Controller protected PlaceView _view; /** A list of the delegates in use by this controller. */ - protected ArrayList _delegates; + protected ArrayList _delegates; } diff --git a/src/java/com/threerings/crowd/data/PlaceObject.java b/src/java/com/threerings/crowd/data/PlaceObject.java index fb4ed2306..b7feefba2 100644 --- a/src/java/com/threerings/crowd/data/PlaceObject.java +++ b/src/java/com/threerings/crowd/data/PlaceObject.java @@ -141,7 +141,7 @@ public class PlaceObject extends DObject * occupantInfo set. The set will not change until the event is * actually propagated through the system. */ - public void addToOccupantInfo (DSet.Entry elem) + public void addToOccupantInfo (OccupantInfo elem) { requestEntryAdd(OCCUPANT_INFO, occupantInfo, elem); } @@ -161,7 +161,7 @@ public class PlaceObject extends DObject * occupantInfo set. The set will not change until the event is * actually propagated through the system. */ - public void updateOccupantInfo (DSet.Entry elem) + public void updateOccupantInfo (OccupantInfo elem) { requestEntryUpdate(OCCUPANT_INFO, occupantInfo, elem); } diff --git a/src/java/com/threerings/crowd/server/CrowdClientResolver.java b/src/java/com/threerings/crowd/server/CrowdClientResolver.java index 69bc34513..9e0c75b60 100644 --- a/src/java/com/threerings/crowd/server/CrowdClientResolver.java +++ b/src/java/com/threerings/crowd/server/CrowdClientResolver.java @@ -32,7 +32,7 @@ import com.threerings.crowd.data.BodyObject; public class CrowdClientResolver extends ClientResolver { // documentation inherited - public Class getClientObjectClass () + public Class getClientObjectClass () { return BodyObject.class; } diff --git a/src/java/com/threerings/crowd/server/PlaceManager.java b/src/java/com/threerings/crowd/server/PlaceManager.java index 01471673c..ac853c311 100644 --- a/src/java/com/threerings/crowd/server/PlaceManager.java +++ b/src/java/com/threerings/crowd/server/PlaceManager.java @@ -121,7 +121,7 @@ public class PlaceManager */ public OccupantInfo getOccupantInfo (int bodyOid) { - return (OccupantInfo)_occInfo.get(bodyOid); + return _occInfo.get(bodyOid); } /** @@ -173,7 +173,7 @@ public class PlaceManager * * @see PlaceRegistry#createPlace */ - protected Class getPlaceObjectClass () + protected Class getPlaceObjectClass () { return PlaceObject.class; } @@ -217,7 +217,7 @@ public class PlaceManager public void addDelegate (PlaceManagerDelegate delegate) { if (_delegates == null) { - _delegates = new ArrayList(); + _delegates = new ArrayList(); } _delegates.add(delegate); } @@ -551,7 +551,7 @@ public class PlaceManager { // create our handler map if necessary if (_msghandlers == null) { - _msghandlers = new HashMap(); + _msghandlers = new HashMap(); } _msghandlers.put(name, handler); } @@ -565,7 +565,7 @@ public class PlaceManager { MessageHandler handler = null; if (_msghandlers != null) { - handler = (MessageHandler)_msghandlers.get(event.getName()); + handler = _msghandlers.get(event.getName()); } if (handler != null) { handler.handleEvent(event, this); @@ -682,7 +682,7 @@ public class PlaceManager if (_delegates != null) { int dcount = _delegates.size(); for (int i = 0; i < dcount; i++) { - op.apply((PlaceManagerDelegate)_delegates.get(i)); + op.apply(_delegates.get(i)); } } } @@ -704,13 +704,14 @@ public class PlaceManager protected PlaceConfig _config; /** Message handlers are used to process message events. */ - protected HashMap _msghandlers; + protected HashMap _msghandlers; /** A list of the delegates in use by this manager. */ - protected ArrayList _delegates; + protected ArrayList _delegates; /** Used to keep a canonical copy of the occupant info records. */ - protected HashIntMap _occInfo = new HashIntMap(); + protected HashIntMap _occInfo = + new HashIntMap(); /** The interval currently registered to shut this place * down after a certain period of idility, or null if no diff --git a/src/java/com/threerings/crowd/server/PlaceRegistry.java b/src/java/com/threerings/crowd/server/PlaceRegistry.java index 1d65590b6..815de071c 100644 --- a/src/java/com/threerings/crowd/server/PlaceRegistry.java +++ b/src/java/com/threerings/crowd/server/PlaceRegistry.java @@ -45,7 +45,7 @@ import com.threerings.crowd.data.PlaceObject; * places. */ public class PlaceRegistry - implements Subscriber + implements Subscriber { /** * Used to receive a callback when the place object associated with a @@ -156,10 +156,13 @@ public class PlaceRegistry // stick the manager on the creation queue because we know // we'll get our calls to objectAvailable()/requestFailed() in // the order that we call createObject() - _createq.append(new Tuple(pmgr, observer)); + _createq.append( + new Tuple(pmgr, observer)); // and request to create the place object - _omgr.createObject(pmgr.getPlaceObjectClass(), this); + @SuppressWarnings("unchecked") Class pclass = + (Class)pmgr.getPlaceObjectClass(); + _omgr.createObject(pclass, this); return pmgr; } @@ -170,7 +173,7 @@ public class PlaceRegistry */ public PlaceManager getPlaceManager (int placeOid) { - return (PlaceManager)_pmgrs.get(placeOid); + return _pmgrs.get(placeOid); } /** @@ -178,18 +181,18 @@ public class PlaceRegistry * should only be accessed on the dobjmgr thread and shouldn't be kept * around across event dispatches. */ - public Iterator enumeratePlaces () + public Iterator enumeratePlaces () { - final Iterator itr = _pmgrs.elements(); - return new Iterator() { + final Iterator itr = _pmgrs.values().iterator(); + return new Iterator() { public boolean hasNext () { return itr.hasNext(); } - public Object next () + public PlaceObject next () { - PlaceManager plmgr = (PlaceManager)itr.next(); + PlaceManager plmgr = itr.next(); return (plmgr == null) ? null : plmgr.getPlaceObject(); } @@ -205,33 +208,25 @@ public class PlaceRegistry * This should only be accessed on the dobjmgr thread and shouldn't be * kept around across event dispatches. */ - public Iterator enumeratePlaceManagers () + public Iterator enumeratePlaceManagers () { - return _pmgrs.elements(); + return _pmgrs.values().iterator(); } // documentation inherited - public void objectAvailable (DObject object) + public void objectAvailable (PlaceObject plobj) { // pop the next place manager off of the queue and let it know // that everything went swimmingly - Tuple tuple = (Tuple)_createq.getNonBlocking(); + Tuple tuple = _createq.getNonBlocking(); if (tuple == null) { Log.warning("Place created but no manager queued up to hear " + - "about it!? [pobj=" + object + "]."); + "about it!? [pobj=" + plobj + "]."); return; } - // make sure it's the right kind of object - if (!(object instanceof PlaceObject)) { - Log.warning("Place registry notified of the creation of " + - "non-place object!? [obj=" + object + "]."); - return; - } - - PlaceManager pmgr = (PlaceManager)tuple.left; - CreationObserver observer = (CreationObserver)tuple.right; - PlaceObject plobj = (PlaceObject)object; + PlaceManager pmgr = tuple.left; + CreationObserver observer = tuple.right; // stick the manager into our table _pmgrs.put(plobj.getOid(), pmgr); @@ -240,7 +235,7 @@ public class PlaceRegistry try { pmgr.startup(plobj); } catch (Exception e) { - Log.warning("Error starting place manager [obj=" + object + + Log.warning("Error starting place manager [obj=" + plobj + ", pmgr=" + pmgr + "]."); Log.logStackTrace(e); } @@ -252,8 +247,8 @@ public class PlaceRegistry observer.placeCreated(plobj, pmgr); } catch (Exception e) { Log.warning("Error informing CreationObserver of place " + - "[obj=" + object + ", pmgr=" + pmgr + ", obs=" + observer + - "]."); + "[obj=" + plobj + ", pmgr=" + pmgr + + ", obs=" + observer + "]."); Log.logStackTrace(e); } } @@ -264,14 +259,14 @@ public class PlaceRegistry { // pop a place manager off the queue since it is queued up to // manage the failed place object - PlaceManager pmgr = (PlaceManager)_createq.getNonBlocking(); - if (pmgr == null) { + Tuple tuple = _createq.getNonBlocking(); + if (tuple == null) { Log.warning("Place creation failed but no manager queued " + "up to hear about it!? [cause=" + cause + "]."); return; } - Log.warning("Failed to create place object [mgr=" + pmgr + + Log.warning("Failed to create place object [mgr=" + tuple.left + ", cause=" + cause + "]."); } @@ -300,8 +295,9 @@ public class PlaceRegistry protected RootDObjectManager _omgr; /** A queue of place managers waiting for their place objects. */ - protected Queue _createq = new Queue(); + protected Queue> _createq = + new Queue>(); /** A mapping from place object id to place manager. */ - protected HashIntMap _pmgrs = new HashIntMap(); + protected HashIntMap _pmgrs = new HashIntMap(); }