From ab0d0f78f4e8ddc0b9f708c7b32576a0926be129 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Tue, 1 Feb 2005 07:50:21 +0000 Subject: [PATCH] Use refelection to completely decouple Native2Ascii from Sun's implementation git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277566 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 1 - .../native2ascii/SunNative2Ascii.java | 22 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/build.xml b/build.xml index e4689e49c..041ff84d1 100644 --- a/build.xml +++ b/build.xml @@ -163,7 +163,6 @@ - diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java b/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java index e9c3ef0a4..a110ebe7f 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java @@ -16,6 +16,7 @@ */ package org.apache.tools.ant.taskdefs.optional.native2ascii; +import java.lang.reflect.Method; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.ProjectComponent; import org.apache.tools.ant.taskdefs.optional.Native2Ascii; @@ -43,7 +44,24 @@ public final class SunNative2Ascii extends DefaultNative2Ascii { protected boolean run(Commandline cmd, ProjectComponent log) throws BuildException { - sun.tools.native2ascii.Main n2a = new sun.tools.native2ascii.Main(); - return n2a.convert(cmd.getArguments()); + try { + Class n2aMain = Class.forName("sun.tools.native2ascii.Main"); + Class[] param = new Class[] {String[].class}; + Method convert = n2aMain.getMethod("convert", param); + if (convert == null) { + throw new BuildException("Could not find convert() method in " + + "sun.tools.native2ascii.Main"); + } + Object o = n2aMain.newInstance(); + return ((Boolean) convert.invoke(o, + new Object[] {cmd.getArguments()}) + ).booleanValue(); + } catch (BuildException ex) { + //rethrow + throw ex; + } catch (Exception ex) { + //wrap + throw new BuildException("Error starting Sun's native2ascii: ", ex); + } } } \ No newline at end of file