From c42281ce7a3e7210c9cef27f1b16a69226448d34 Mon Sep 17 00:00:00 2001 From: Mike Thomas Date: Fri, 9 May 2008 23:06:43 +0000 Subject: [PATCH] Patch from Jamie to ensure GenService still finds all the array parameters for importing. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@5069 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../presents/tools/GenServiceTask.java | 9 +++++++++ .../threerings/presents/tools/ImportSet.java | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/java/com/threerings/presents/tools/GenServiceTask.java b/src/java/com/threerings/presents/tools/GenServiceTask.java index 009bf15f0..0a5b5b0ed 100644 --- a/src/java/com/threerings/presents/tools/GenServiceTask.java +++ b/src/java/com/threerings/presents/tools/GenServiceTask.java @@ -181,6 +181,9 @@ public class GenServiceTask extends InvocationTask imports.add(InvocationResponseEvent.class); } + // import classes contained in arrays + imports.translateClassArrays(); + // get rid of java.lang stuff and primitives imports.removeGlobals(); @@ -453,6 +456,9 @@ public class GenServiceTask extends InvocationTask imports.add(InvocationDispatcher.class); imports.add(InvocationException.class); + // import classes contained in arrays + imports.translateClassArrays(); + // get rid of primitives and java.lang types imports.removeGlobals(); @@ -518,6 +524,9 @@ public class GenServiceTask extends InvocationTask imports.add(InvocationException.class); } + // import classes contained in arrays + imports.translateClassArrays(); + // get rid of primitives and java.lang types imports.removeGlobals(); diff --git a/src/java/com/threerings/presents/tools/ImportSet.java b/src/java/com/threerings/presents/tools/ImportSet.java index 42321019e..a4e105d25 100644 --- a/src/java/com/threerings/presents/tools/ImportSet.java +++ b/src/java/com/threerings/presents/tools/ImportSet.java @@ -180,6 +180,25 @@ public class ImportSet addAll(inner); } + + /** + * Inserts imports for the non-primitive classes contained in all array imports. + */ + public void translateClassArrays () + { + ImportSet arrayTypes = new ImportSet(); + Iterator i = _imports.iterator(); + while (i.hasNext()) { + String name = i.next(); + int bracket = name.lastIndexOf('['); + if (bracket != -1 && + name.charAt(bracket + 1) == 'L') { + arrayTypes.add(name.substring(bracket + 2, name.length() - 1)); + } + } + + addAll(arrayTypes); + } /** * Temporarily remove one import matching the given pattern. The most recently pushed pattern