diff --git a/src/main/java/com/threerings/presents/tools/GenActionScriptStreamableTask.java b/src/main/java/com/threerings/presents/tools/GenActionScriptStreamableTask.java index 776f03b0d..5e9b45da2 100644 --- a/src/main/java/com/threerings/presents/tools/GenActionScriptStreamableTask.java +++ b/src/main/java/com/threerings/presents/tools/GenActionScriptStreamableTask.java @@ -34,6 +34,7 @@ import org.apache.tools.ant.Project; import com.google.common.base.Charsets; import com.google.common.base.Joiner; +import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.common.io.Files; @@ -91,9 +92,18 @@ public class GenActionScriptStreamableTask extends GenTask for (Class iface : sclass.getInterfaces()) { implemented.add(ActionScriptUtils.addImportAndGetShortType(iface, false, imports)); } - List fields = Lists.newArrayList(); + List pubFields = Lists.newArrayList(); + List protFields = Lists.newArrayList(); for (Field f : reqs.streamedFields) { - fields.add(new ASField(f, imports)); + int mods = f.getModifiers(); + if (Modifier.isPublic(mods)) { + pubFields.add(new ASField(f, imports)); + } else if (Modifier.isProtected(mods)) { + protFields.add(new ASField(f, imports)); + } else { + // don't care about private + continue; + } } String output = mergeTemplate("com/threerings/presents/tools/streamable_as.tmpl", @@ -104,7 +114,8 @@ public class GenActionScriptStreamableTask extends GenTask "extends", extendsName, "implements", Joiner.on(", ").join(implemented), "superclassStreamable", reqs.superclassStreamable, - "fields", fields, + "pubFields", pubFields, + "protFields", protFields, "dobject", isDObject); File outputLocation = ActionScriptUtils.createActionScriptPath(_asroot, sclass); 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 a30da00db..17ee70002 100644 --- a/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl +++ b/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl @@ -16,12 +16,12 @@ public class {{classname}} {{^extends.isEmpty}}extends {{extends}} // GENERATED CLASSDECL END // GENERATED STREAMING START -{{#fields}} +{{#pubFields}} public var {{name}} :{{simpleType}}; -{{/fields}} +{{/pubFields}} {{#dobject}} -{{#fields}} +{{#pubFields}} public var set{{capitalName}} :Signal = new Signal({{simpleType}}, {{simpleType}}); {{#dset}} public var addedTo{{capitalName}} :Signal = new Signal(DSet_Entry); @@ -31,21 +31,24 @@ public class {{classname}} {{^extends.isEmpty}}extends {{extends}} {{#array}} public var updated{{capitalName}} :Signal = new Signal(int, Object, Object); {{/array}} -{{/fields}} +{{/pubFields}} -{{#fields}} +{{#pubFields}} public static const {{dobjectField}} :String = "{{name}}"; -{{/fields}} +{{/pubFields}} {{/dobject}} {{#superclassStreamable}}override {{/superclassStreamable}}public function readObject (ins :ObjectInputStream) :void { {{#superclassStreamable}} super.readObject(ins); {{/superclassStreamable}} -{{#fields}} +{{#pubFields}} {{name}} = ins.{{reader}}; -{{/fields}} +{{/pubFields}} +{{#protFields}} + {{name}} = ins.{{reader}}; +{{/protFields}} } {{^dobject}} @@ -54,9 +57,12 @@ public class {{classname}} {{^extends.isEmpty}}extends {{extends}} {{#superclassStreamable}} super.writeObject(out); {{/superclassStreamable}} -{{#fields}} +{{#pubFields}} out.{{writer}}; -{{/fields}} +{{/pubFields}} +{{#protFields}} + out.{{writer}}; +{{/protFields}} } {{/dobject}} @@ -66,6 +72,9 @@ public class {{classname}} {{^extends.isEmpty}}extends {{extends}} new Signaller(this); } {{/dobject}} +{{#protFields}} + protected var {{name}} :{{simpleType}}; +{{/protFields}} // GENERATED STREAMING END // GENERATED CLASSFINISH START