From 8d6635e8e0f1a4c21c6a0e3832c2bf024329b31e Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Sun, 29 Jun 2008 12:36:21 +0000 Subject: [PATCH] Type the marshaller and associated registry methods so that we don't have to downcast every time we register an invocation service provider. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5201 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../presents/client/InvocationDirector.java | 1 - .../presents/data/TimeBaseMarshaller.java | 1 - .../presents/peer/data/PeerMarshaller.java | 1 - .../presents/peer/server/PeerDispatcher.java | 5 ++--- .../presents/server/InvocationDispatcher.java | 14 ++++++-------- .../presents/server/InvocationManager.java | 11 ++++++----- .../presents/server/TimeBaseDispatcher.java | 4 ++-- .../com/threerings/presents/tools/dispatcher.tmpl | 4 ++-- 8 files changed, 18 insertions(+), 23 deletions(-) diff --git a/src/java/com/threerings/presents/client/InvocationDirector.java b/src/java/com/threerings/presents/client/InvocationDirector.java index b8edeb3f3..e9aead617 100644 --- a/src/java/com/threerings/presents/client/InvocationDirector.java +++ b/src/java/com/threerings/presents/client/InvocationDirector.java @@ -33,7 +33,6 @@ import com.threerings.presents.data.ClientObject; import com.threerings.presents.data.InvocationMarshaller.ListenerMarshaller; import com.threerings.presents.dobj.DEvent; -import com.threerings.presents.dobj.DObject; import com.threerings.presents.dobj.DObjectManager; import com.threerings.presents.dobj.DSet; import com.threerings.presents.dobj.EventListener; diff --git a/src/java/com/threerings/presents/data/TimeBaseMarshaller.java b/src/java/com/threerings/presents/data/TimeBaseMarshaller.java index 6576f2209..2f207610e 100644 --- a/src/java/com/threerings/presents/data/TimeBaseMarshaller.java +++ b/src/java/com/threerings/presents/data/TimeBaseMarshaller.java @@ -24,7 +24,6 @@ package com.threerings.presents.data; import com.threerings.presents.client.Client; import com.threerings.presents.client.TimeBaseService; import com.threerings.presents.dobj.InvocationResponseEvent; -import com.threerings.presents.net.Transport; /** * Provides the implementation of the {@link TimeBaseService} interface diff --git a/src/java/com/threerings/presents/peer/data/PeerMarshaller.java b/src/java/com/threerings/presents/peer/data/PeerMarshaller.java index 98ad2f3c3..181500e5b 100644 --- a/src/java/com/threerings/presents/peer/data/PeerMarshaller.java +++ b/src/java/com/threerings/presents/peer/data/PeerMarshaller.java @@ -23,7 +23,6 @@ package com.threerings.presents.peer.data; import com.threerings.presents.client.Client; import com.threerings.presents.data.InvocationMarshaller; -import com.threerings.presents.net.Transport; import com.threerings.presents.peer.client.PeerService; /** diff --git a/src/java/com/threerings/presents/peer/server/PeerDispatcher.java b/src/java/com/threerings/presents/peer/server/PeerDispatcher.java index cfde33191..b7b762d5f 100644 --- a/src/java/com/threerings/presents/peer/server/PeerDispatcher.java +++ b/src/java/com/threerings/presents/peer/server/PeerDispatcher.java @@ -22,7 +22,6 @@ package com.threerings.presents.peer.server; import com.threerings.presents.data.ClientObject; -import com.threerings.presents.data.InvocationMarshaller; import com.threerings.presents.peer.data.NodeObject; import com.threerings.presents.peer.data.PeerMarshaller; import com.threerings.presents.server.InvocationDispatcher; @@ -31,7 +30,7 @@ import com.threerings.presents.server.InvocationException; /** * Dispatches requests to the {@link PeerProvider}. */ -public class PeerDispatcher extends InvocationDispatcher +public class PeerDispatcher extends InvocationDispatcher { /** * Creates a dispatcher that may be registered to dispatch invocation @@ -43,7 +42,7 @@ public class PeerDispatcher extends InvocationDispatcher } @Override // documentation inherited - public InvocationMarshaller createMarshaller () + public PeerMarshaller createMarshaller () { return new PeerMarshaller(); } diff --git a/src/java/com/threerings/presents/server/InvocationDispatcher.java b/src/java/com/threerings/presents/server/InvocationDispatcher.java index a92cb3be7..3d375fc9e 100644 --- a/src/java/com/threerings/presents/server/InvocationDispatcher.java +++ b/src/java/com/threerings/presents/server/InvocationDispatcher.java @@ -29,25 +29,23 @@ import com.threerings.presents.data.InvocationMarshaller; import static com.threerings.presents.Log.log; /** - * Provides the base class via which invocation service requests are - * dispatched. + * Provides the base class via which invocation service requests are dispatched. */ -public abstract class InvocationDispatcher +public abstract class InvocationDispatcher { /** The invocation provider for whom we're dispatching. */ public InvocationProvider provider; /** - * Creates an instance of the appropriate {@link InvocationMarshaller} - * derived class for use with this dispatcher. + * Creates an instance of the appropriate {@link InvocationMarshaller} derived class for use + * with this dispatcher. */ - public abstract InvocationMarshaller createMarshaller (); + public abstract T createMarshaller (); /** * Dispatches the specified method to our provider. */ - public void dispatchRequest ( - ClientObject source, int methodId, Object[] args) + public void dispatchRequest (ClientObject source, int methodId, Object[] args) throws InvocationException { log.warning("Requested to dispatch unknown method " + diff --git a/src/java/com/threerings/presents/server/InvocationManager.java b/src/java/com/threerings/presents/server/InvocationManager.java index f86f9b6ad..e34654f78 100644 --- a/src/java/com/threerings/presents/server/InvocationManager.java +++ b/src/java/com/threerings/presents/server/InvocationManager.java @@ -102,7 +102,7 @@ public class InvocationManager * * @param dispatcher the dispatcher to be registered. */ - public InvocationMarshaller registerDispatcher (InvocationDispatcher dispatcher) + public T registerDispatcher (InvocationDispatcher dispatcher) { return registerDispatcher(dispatcher, null); } @@ -110,8 +110,8 @@ public class InvocationManager /** * @Deprecated use {@link #registerDispatcher(InvocationDispatcher)}. */ - public InvocationMarshaller registerDispatcher ( - InvocationDispatcher dispatcher, boolean bootstrap) + public T registerDispatcher ( + InvocationDispatcher dispatcher, boolean bootstrap) { return registerDispatcher(dispatcher, null); } @@ -126,13 +126,14 @@ public class InvocationManager * groups. You must collect shared dispatchers into as fine grained a set of groups as * necessary and have different types of clients specify the list of groups they need. */ - public InvocationMarshaller registerDispatcher (InvocationDispatcher dispatcher, String group) + public T registerDispatcher ( + InvocationDispatcher dispatcher, String group) { // get the next invocation code int invCode = nextInvCode(); // create the marshaller and initialize it - InvocationMarshaller marsh = dispatcher.createMarshaller(); + T marsh = dispatcher.createMarshaller(); marsh.init(_invoid, invCode); // register the dispatcher diff --git a/src/java/com/threerings/presents/server/TimeBaseDispatcher.java b/src/java/com/threerings/presents/server/TimeBaseDispatcher.java index 378694fe6..62fbf0e7f 100644 --- a/src/java/com/threerings/presents/server/TimeBaseDispatcher.java +++ b/src/java/com/threerings/presents/server/TimeBaseDispatcher.java @@ -29,7 +29,7 @@ import com.threerings.presents.data.TimeBaseMarshaller; /** * Dispatches requests to the {@link TimeBaseProvider}. */ -public class TimeBaseDispatcher extends InvocationDispatcher +public class TimeBaseDispatcher extends InvocationDispatcher { /** * Creates a dispatcher that may be registered to dispatch invocation @@ -41,7 +41,7 @@ public class TimeBaseDispatcher extends InvocationDispatcher } @Override // documentation inherited - public InvocationMarshaller createMarshaller () + public TimeBaseMarshaller createMarshaller () { return new TimeBaseMarshaller(); } diff --git a/src/java/com/threerings/presents/tools/dispatcher.tmpl b/src/java/com/threerings/presents/tools/dispatcher.tmpl index d7e9e3def..31137eb55 100644 --- a/src/java/com/threerings/presents/tools/dispatcher.tmpl +++ b/src/java/com/threerings/presents/tools/dispatcher.tmpl @@ -7,7 +7,7 @@ import $import; /** * Dispatches requests to the {@link ${name}Provider}. */ -public class ${name}Dispatcher extends InvocationDispatcher +public class ${name}Dispatcher extends InvocationDispatcher<${name}Marshaller> { /** * Creates a dispatcher that may be registered to dispatch invocation @@ -19,7 +19,7 @@ public class ${name}Dispatcher extends InvocationDispatcher } @Override // documentation inherited - public InvocationMarshaller createMarshaller () + public ${name}Marshaller createMarshaller () { return new ${name}Marshaller(); }