Assemble all the ad-hoc translations of primitive (and other) Java types to AS3 variants in one method and call that method. This should hopefully end us up with generated service listeners that compile.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6484 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Par Winzell
2011-02-08 22:02:17 +00:00
parent f08f8158f0
commit 9a985c0629
@@ -308,13 +308,7 @@ public class GenServiceTask extends InvocationTask
// replace inner classes with action script equivalents // replace inner classes with action script equivalents
imports.translateInnerClasses(); imports.translateInnerClasses();
// replace primitive types with OOO types (required for unboxing) translateImportsToActionScript(imports);
imports.replace("byte", "com.threerings.util.Byte");
imports.replace("int", "com.threerings.util.Integer");
imports.replace("boolean", "com.threerings.util.langBoolean");
imports.replace("[B", "flash.utils.ByteArray");
imports.replace("float", "com.threerings.util.Float");
imports.replace("[I", "com.threerings.io.TypedArray");
// ye olde special case - any method that uses a default listener // ye olde special case - any method that uses a default listener
// causes the need for the default listener marshaller // causes the need for the default listener marshaller
@@ -331,9 +325,6 @@ public class GenServiceTask extends InvocationTask
".client.", ".data."); ".client.", ".data.");
imports.popIn(); imports.popIn();
// convert java primitive types to ooo util types
imports.replace(Integer.class, "com.threerings.util.Integer");
// get rid of java.lang stuff and any remaining primitives // get rid of java.lang stuff and any remaining primitives
imports.removeGlobals(); imports.removeGlobals();
@@ -376,13 +367,7 @@ public class GenServiceTask extends InvocationTask
// replace '$' with '_' for action script naming convention // replace '$' with '_' for action script naming convention
imports.translateInnerClasses(); imports.translateInnerClasses();
// convert primitive java types to ooo util types translateImportsToActionScript(imports);
imports.replace("long", "com.threerings.util.Long");
// convert object arrays to typed arrays
if (imports.removeAll("[L*") > 0) {
imports.add("com.threerings.io.TypedArray");
}
// get rid of remaining primitives and java.lang types // get rid of remaining primitives and java.lang types
imports.removeGlobals(); imports.removeGlobals();
@@ -409,16 +394,7 @@ public class GenServiceTask extends InvocationTask
imports.add(Client.class); imports.add(Client.class);
imports.add(InvocationService.class); imports.add(InvocationService.class);
// allow primitive types in service methods translateImportsToActionScript(imports);
imports.replace("[B", "flash.utils.ByteArray");
imports.replace("[I", "com.threerings.io.TypedArray");
// convert java primitive types to ooo util types
imports.replace("java.lang.Integer", "com.threerings.util.Integer");
if (imports.removeAll("[L*") > 0) {
imports.add("com.threerings.io.TypedArray");
}
// get rid of primitives and java.lang classes // get rid of primitives and java.lang classes
imports.removeGlobals(); imports.removeGlobals();
@@ -459,13 +435,8 @@ public class GenServiceTask extends InvocationTask
// change Foo$Bar to Foo_Bar // change Foo$Bar to Foo_Bar
imports.translateInnerClasses(); imports.translateInnerClasses();
// use a typed array for any arrays of objects // convert Java type names to ActionScript ones
if (imports.removeAll("[L*") > 0) { translateImportsToActionScript(imports);
imports.add("com.threerings.io.TypedArray");
}
// convert java primitive types to ooo util types
imports.replace("long", "com.threerings.util.Long");
// get rid of remaining primitives and java.lang types // get rid of remaining primitives and java.lang types
imports.removeGlobals(); imports.removeGlobals();
@@ -609,6 +580,31 @@ public class GenServiceTask extends InvocationTask
"Derived from " + name + "Service.java."); "Derived from " + name + "Service.java.");
} }
protected static void translateImportsToActionScript (ImportSet imports)
{
// convert java primitive types to ooo util types
imports.replace("boolean", "com.threerings.util.langBoolean");
imports.replace(Boolean.class, "com.threerings.util.langBoolean");
imports.replace("float", "com.threerings.util.Float");
imports.replace(Float.class, "com.threerings.util.Float");
imports.replace("byte", "com.threerings.util.Byte");
imports.replace(Byte.class, "com.threerings.util.Byte");
imports.replace("long", "com.threerings.util.Long");
imports.replace(Long.class, "com.threerings.util.Long");
imports.replace("int", "com.threerings.util.Integer");
imports.replace(Integer.class, "com.threerings.util.Integer");
imports.replace("[B", "flash.utils.ByteArray");
if (imports.removeAll("[*") > 0) {
imports.add("com.threerings.io.TypedArray");
}
}
/** Rolls up everything needed for the generate* methods. */ /** Rolls up everything needed for the generate* methods. */
protected class ServiceDescription protected class ServiceDescription
{ {