From b185502683fe794b3d2535ffb9ae022b6cdac7f4 Mon Sep 17 00:00:00 2001 From: Jamie Doornbos Date: Mon, 10 Oct 2011 19:26:43 +0000 Subject: [PATCH] Fix code generation to work with jmustache 1.4 In addition to the streamable generation, there were also issues with the receiver stuff, mostly to do with import ordering. Modernizing that code to use ImportSet and {importGroups} seems to have fixed it. NOTE: This is also broken in narya 1.9, but it not really worth the effort to fix that. It's easier just to move all the projects that need it back to trunk. Hurray bleeding edge! Testing done: gencode in orth and who, checked no diffs were generated. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6727 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../bureau/server/BureauSender.java | 5 ++- .../crowd/server/LocationSender.java | 5 ++- .../presents/tools/GenReceiverTask.java | 42 +++++++++---------- .../tools/cpp/GenCPPReceiverTask.java | 4 +- .../threerings/presents/tools/decoder.tmpl | 6 ++- .../threerings/presents/tools/decoder_as.tmpl | 6 ++- .../presents/tools/receiver_as.tmpl | 6 ++- .../com/threerings/presents/tools/sender.tmpl | 6 ++- .../presents/tools/streamable_as.tmpl | 37 ++++++++++------ 9 files changed, 67 insertions(+), 50 deletions(-) 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; }