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