diff --git a/src/main/java/com/threerings/bureau/server/BureauSender.java b/src/main/java/com/threerings/bureau/server/BureauSender.java index 19ead30f4..633fc8564 100644 --- a/src/main/java/com/threerings/bureau/server/BureauSender.java +++ b/src/main/java/com/threerings/bureau/server/BureauSender.java @@ -21,11 +21,12 @@ package com.threerings.bureau.server; -import com.threerings.bureau.client.BureauDecoder; -import com.threerings.bureau.client.BureauReceiver; import com.threerings.presents.data.ClientObject; import com.threerings.presents.server.InvocationSender; +import com.threerings.bureau.client.BureauDecoder; +import com.threerings.bureau.client.BureauReceiver; + /** * Used to issue notifications to a {@link BureauReceiver} instance on a * client. diff --git a/src/main/java/com/threerings/crowd/server/LocationSender.java b/src/main/java/com/threerings/crowd/server/LocationSender.java index fa70a0b6e..36f4b7ba8 100644 --- a/src/main/java/com/threerings/crowd/server/LocationSender.java +++ b/src/main/java/com/threerings/crowd/server/LocationSender.java @@ -21,11 +21,12 @@ package com.threerings.crowd.server; -import com.threerings.crowd.client.LocationDecoder; -import com.threerings.crowd.client.LocationReceiver; import com.threerings.presents.data.ClientObject; import com.threerings.presents.server.InvocationSender; +import com.threerings.crowd.client.LocationDecoder; +import com.threerings.crowd.client.LocationReceiver; + /** * Used to issue notifications to a {@link LocationReceiver} instance on a * client. diff --git a/src/main/java/com/threerings/presents/tools/GenReceiverTask.java b/src/main/java/com/threerings/presents/tools/GenReceiverTask.java index d31522b9b..cb46da466 100644 --- a/src/main/java/com/threerings/presents/tools/GenReceiverTask.java +++ b/src/main/java/com/threerings/presents/tools/GenReceiverTask.java @@ -24,13 +24,11 @@ package com.threerings.presents.tools; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.util.Iterator; import java.util.List; import java.io.File; import com.google.common.base.Preconditions; -import com.google.common.collect.Iterators; import com.samskivert.util.ComparableArrayList; import com.samskivert.util.StringUtil; @@ -95,27 +93,26 @@ public class GenReceiverTask extends InvocationTask // get rid of primitives and java.lang types imports.removeGlobals(); - generateSender(source, rname, rpackage, methods, imports.toList().iterator()); - generateDecoder(receiver, source, rname, rpackage, methods, imports.toList().iterator(), + generateSender(source, rname, rpackage, methods, imports); + generateDecoder(receiver, source, rname, rpackage, methods, imports, StringUtil.md5hex(rpackage + "." + rname)); } protected void generateSender (File source, String rname, String rpackage, - List methods, Iterator imports) + List methods, ImportSet imports) throws Exception { String name = rname.replace("Receiver", ""); String spackage = rpackage.replace(".client", ".server"); // construct our imports list - ComparableArrayList implist = new ComparableArrayList(); - Iterators.addAll(implist, imports); - checkedAdd(implist, ClientObject.class.getName()); - checkedAdd(implist, InvocationSender.class.getName()); + ImportSet impset = new ImportSet(); + impset.addAll(imports); + impset.add(ClientObject.class); + impset.add(InvocationSender.class); String dname = rname.replace("Receiver", "Decoder"); - checkedAdd(implist, rpackage + "." + dname); - checkedAdd(implist, rpackage + "." + rname); - implist.sort(); + impset.add(rpackage + "." + dname); + impset.add(rpackage + "." + rname); // determine the path to our sender file String mpath = source.getPath(); @@ -125,20 +122,19 @@ public class GenReceiverTask extends InvocationTask "name", name, "package", spackage, "methods", methods, - "imports", implist); + "importGroups", impset.toGroups()); } protected void generateDecoder (Class receiver, File source, String rname, String rpackage, - List methods, Iterator imports, + List methods, ImportSet imports, String rcode) throws Exception { String name = rname.replace("Receiver", ""); // construct our imports list - ComparableArrayList implist = new ComparableArrayList(); - Iterators.addAll(implist, imports); - checkedAdd(implist, InvocationDecoder.class.getName()); - implist.sort(); + ImportSet impset = new ImportSet(); + impset.addAll(imports); + impset.add(InvocationDecoder.class); // determine the path to our sender file String mpath = source.getPath(); @@ -148,7 +144,7 @@ public class GenReceiverTask extends InvocationTask "receiver_code", rcode, "package", rpackage, "methods", methods, - "imports", implist); + "importGroups", impset.toGroups()); if (_asroot == null) { return; } @@ -160,17 +156,17 @@ public class GenReceiverTask extends InvocationTask "receiver_code", rcode, "package", rpackage, "methods", methods, - "imports", implist); + "importGroups", impset.toGroups()); // ... and an ActionScript receiver aspath = _asroot + File.separator + sppath + File.separator + rname + ".as"; - implist.remove(InvocationDecoder.class.getName()); - checkedAdd(implist, InvocationReceiver.class.getName()); + impset.remove(InvocationDecoder.class); + impset.add(InvocationReceiver.class); writeTemplate(AS_RECEIVER_TMPL, aspath, "name", name, "package", rpackage, "methods", methods, - "imports", implist); + "importGroups", impset.toGroups()); } /** The path to our ActionScript source files. */ diff --git a/src/main/java/com/threerings/presents/tools/cpp/GenCPPReceiverTask.java b/src/main/java/com/threerings/presents/tools/cpp/GenCPPReceiverTask.java index 12bc35311..b9ca0e1ee 100644 --- a/src/main/java/com/threerings/presents/tools/cpp/GenCPPReceiverTask.java +++ b/src/main/java/com/threerings/presents/tools/cpp/GenCPPReceiverTask.java @@ -25,7 +25,6 @@ import static com.threerings.presents.tools.cpp.CPPUtil.makePath; import java.lang.reflect.Type; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -36,6 +35,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.threerings.presents.tools.GenReceiverTask; +import com.threerings.presents.tools.ImportSet; public class GenCPPReceiverTask extends GenReceiverTask { @@ -46,7 +46,7 @@ public class GenCPPReceiverTask extends GenReceiverTask @Override protected void generateDecoder (Class receiver, File source, String rname, String rpackage, - List methods, Iterator imports, String rcode) + List methods, ImportSet imports, String rcode) throws Exception { String dname = rname.replace("Receiver", "Decoder"); diff --git a/src/main/resources/com/threerings/presents/tools/decoder.tmpl b/src/main/resources/com/threerings/presents/tools/decoder.tmpl index 54c99f008..3b93f7e3b 100644 --- a/src/main/resources/com/threerings/presents/tools/decoder.tmpl +++ b/src/main/resources/com/threerings/presents/tools/decoder.tmpl @@ -1,9 +1,11 @@ package {{package}}; -{{#imports}} +{{#importGroups}} +{{#this}} import {{this}}; -{{/imports}} +{{/this}} +{{/importGroups}} /** * Dispatches calls to a {@link {{name}}Receiver} instance. */ diff --git a/src/main/resources/com/threerings/presents/tools/decoder_as.tmpl b/src/main/resources/com/threerings/presents/tools/decoder_as.tmpl index 56ed55e5e..6dc316b89 100644 --- a/src/main/resources/com/threerings/presents/tools/decoder_as.tmpl +++ b/src/main/resources/com/threerings/presents/tools/decoder_as.tmpl @@ -1,9 +1,11 @@ package {{package}} { -{{#imports}} +{{#importGroups}} +{{#this}} import {{this}}; -{{/imports}} +{{/this}} +{{/importGroups}} /** * Dispatches calls to a {@link {{name}}Receiver} instance. */ diff --git a/src/main/resources/com/threerings/presents/tools/receiver_as.tmpl b/src/main/resources/com/threerings/presents/tools/receiver_as.tmpl index e06e41074..2b065315a 100644 --- a/src/main/resources/com/threerings/presents/tools/receiver_as.tmpl +++ b/src/main/resources/com/threerings/presents/tools/receiver_as.tmpl @@ -1,9 +1,11 @@ package {{package}} { -{{#imports}} +{{#importGroups}} +{{#this}} import {{this}}; -{{/imports}} +{{/this}} +{{/importGroups}} public interface {{name}}Receiver extends InvocationReceiver { {{#methods}} diff --git a/src/main/resources/com/threerings/presents/tools/sender.tmpl b/src/main/resources/com/threerings/presents/tools/sender.tmpl index 304b4bc6e..c8d4b5fd9 100644 --- a/src/main/resources/com/threerings/presents/tools/sender.tmpl +++ b/src/main/resources/com/threerings/presents/tools/sender.tmpl @@ -1,9 +1,11 @@ package {{package}}; -{{#imports}} +{{#importGroups}} +{{#this}} import {{this}}; -{{/imports}} +{{/this}} +{{/importGroups}} /** * Used to issue notifications to a {@link {{name}}Receiver} instance on a * client. diff --git a/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl b/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl index b1c50d29e..bc628c699 100644 --- a/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl +++ b/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl @@ -21,7 +21,6 @@ public class {{classname}} {{^extends.isEmpty}}extends {{extends}} {{#pubFields}} public var {{name}} :{{simpleType}};{{#hasTypeParameters}} /* of */ {{parameterTypes}};{{/hasTypeParameters}} - {{/pubFields}} {{#dobject}} {{#pubFields}} @@ -139,11 +138,13 @@ class Signaller { var signal :Signal; switch (event.getName()) { -{{#pubFields}}{{#dset}} +{{#pubFields}} +{{#dset}} case "{{name}}": signal = _obj.{{name}}EntryAdded; break; -{{/dset}}{{/pubFields}} +{{/dset}} +{{/pubFields}} default: return; } @@ -154,11 +155,13 @@ class Signaller { var signal :Signal; switch (event.getName()) { -{{#pubFields}}{{#dset}} +{{#pubFields}} +{{#dset}} case "{{name}}": signal = _obj.{{name}}EntryRemoved; break; -{{/dset}}{{/pubFields}} +{{/dset}} +{{/pubFields}} default: return; } @@ -169,11 +172,13 @@ class Signaller { var signal :Signal; switch (event.getName()) { -{{#pubFields}}{{#dset}} +{{#pubFields}} +{{#dset}} case "{{name}}": signal = _obj.{{name}}EntryUpdated; break; -{{/dset}}{{/pubFields}} +{{/dset}} +{{/pubFields}} default: return; } @@ -184,11 +189,13 @@ class Signaller { var signal :Signal; switch (event.getName()) { -{{#pubFields}}{{#array}} +{{#pubFields}} +{{#array}} case "{{name}}": signal = _obj.{{name}}ElementUpdated; break; -{{/array}}{{/pubFields}} +{{/array}} +{{/pubFields}} default: return; } @@ -199,11 +206,13 @@ class Signaller { var signal :Signal; switch (event.getName()) { -{{#pubFields}}{{#oidList}} +{{#pubFields}} +{{#oidList}} case "{{name}}": signal = _obj.{{name}}ObjectAdded; break; -{{/oidList}}{{/pubFields}} +{{/oidList}} +{{/pubFields}} default: return; } @@ -214,11 +223,13 @@ class Signaller { var signal :Signal; switch (event.getName()) { -{{#pubFields}}{{#oidList}} +{{#pubFields}} +{{#oidList}} case "{{name}}": signal = _obj.{{name}}ObjectRemoved; break; -{{/oidList}}{{/pubFields}} +{{/oidList}} +{{/pubFields}} default: return; }