You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by jk...@apache.org on 2005/05/23 23:52:35 UTC
cvs commit: ant/src/main/org/apache/tools/ant/taskdefs/compilers CompilerAdapterFactory.java
jkf 2005/05/23 14:52:35
Modified: src/main/org/apache/tools/ant/taskdefs/email EmailTask.java
src/main/org/apache/tools/ant Main.java
src/main/org/apache/tools/ant/taskdefs/optional/javah
JavahAdapterFactory.java
src/main/org/apache/tools/ant/listener MailLogger.java
src/main/org/apache/tools/ant/taskdefs/optional/script
ScriptDef.java
src/main/org/apache/tools/ant/util ClasspathUtils.java
src/main/org/apache/tools/ant/taskdefs/rmic
RmicAdapterFactory.java
src/main/org/apache/tools/ant/taskdefs/optional/native2ascii
Native2AsciiAdapterFactory.java
src/main/org/apache/tools/ant/util/regexp
RegexpMatcherFactory.java
src/main/org/apache/tools/ant/taskdefs/compilers
CompilerAdapterFactory.java
Log:
Improved the newInstance method in ClasspathUtils, and used this method from
the places where newInstances are made and Throwable is caught.
Revision Changes Path
1.31 +18 -11 ant/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java
Index: EmailTask.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- EmailTask.java 2 Feb 2005 20:08:57 -0000 1.30
+++ EmailTask.java 23 May 2005 21:52:35 -0000 1.31
@@ -25,8 +25,10 @@
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
+import org.apache.tools.ant.listener.MailLogger;
import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.util.ClasspathUtils;
/**
* A task to send SMTP email. This is a refactoring of the SendMail and
@@ -399,14 +401,16 @@
if (encoding.equals(MIME)
|| (encoding.equals(AUTO) && !autoFound)) {
try {
- mailer = (Mailer) Class.forName(
- "org.apache.tools.ant.taskdefs.email.MimeMailer")
- .newInstance();
+ mailer = (Mailer) ClasspathUtils.newInstance(
+ "org.apache.tools.ant.taskdefs.email.MimeMailer",
+ EmailTask.class.getClassLoader(), Mailer.class);
autoFound = true;
log("Using MIME mail", Project.MSG_VERBOSE);
- } catch (Throwable e) {
- log("Failed to initialise MIME mail: "
- + e.getMessage(), Project.MSG_WARN);
+ } catch (BuildException e) {
+ Throwable t = e.getCause() == null ? e : e.getCause();
+ log("Failed to initialise MIME mail: " + t.getMessage(),
+ Project.MSG_WARN);
+ return;
}
}
// SMTP auth only allowed with MIME mail
@@ -423,13 +427,16 @@
if (encoding.equals(UU)
|| (encoding.equals(AUTO) && !autoFound)) {
try {
- mailer =
- (Mailer) Class.forName("org.apache.tools.ant.taskdefs.email.UUMailer")
- .newInstance();
+ mailer = (Mailer) ClasspathUtils.newInstance(
+ "org.apache.tools.ant.taskdefs.email.UUMailer",
+ EmailTask.class.getClassLoader(), Mailer.class);
autoFound = true;
log("Using UU mail", Project.MSG_VERBOSE);
- } catch (Throwable e) {
- log("Failed to initialise UU mail", Project.MSG_WARN);
+ } catch (BuildException e) {
+ Throwable t = e.getCause() == null ? e : e.getCause();
+ log("Failed to initialise UU mail: " + t.getMessage(),
+ Project.MSG_WARN);
+ return;
}
}
// try plain format
1.119 +17 -35 ant/src/main/org/apache/tools/ant/Main.java
Index: Main.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/Main.java,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -r1.118 -r1.119
--- Main.java 13 May 2005 21:57:23 -0000 1.118
+++ Main.java 23 May 2005 21:52:35 -0000 1.119
@@ -29,6 +29,7 @@
import org.apache.tools.ant.input.DefaultInputHandler;
import org.apache.tools.ant.input.InputHandler;
import org.apache.tools.ant.launch.AntMain;
+import org.apache.tools.ant.util.ClasspathUtils;
import org.apache.tools.ant.util.FileUtils;
@@ -698,17 +699,13 @@
for (int i = 0; i < listeners.size(); i++) {
String className = (String) listeners.elementAt(i);
- try {
- BuildListener listener =
- (BuildListener) Class.forName(className).newInstance();
- if (project != null) {
- project.setProjectReference(listener);
- }
- project.addBuildListener(listener);
- } catch (Throwable exc) {
- throw new BuildException("Unable to instantiate listener "
- + className, exc);
+ BuildListener listener =
+ (BuildListener) ClasspathUtils.newInstance(className,
+ Main.class.getClassLoader(), BuildListener.class);
+ if (project != null) {
+ project.setProjectReference(listener);
}
+ project.addBuildListener(listener);
}
}
@@ -725,22 +722,11 @@
if (inputHandlerClassname == null) {
handler = new DefaultInputHandler();
} else {
- try {
- handler = (InputHandler)
- (Class.forName(inputHandlerClassname).newInstance());
- if (project != null) {
- project.setProjectReference(handler);
- }
- } catch (ClassCastException e) {
- String msg = "The specified input handler class "
- + inputHandlerClassname
- + " does not implement the InputHandler interface";
- throw new BuildException(msg);
- } catch (Exception e) {
- String msg = "Unable to instantiate specified input handler "
- + "class " + inputHandlerClassname + " : "
- + e.getClass().getName();
- throw new BuildException(msg);
+ handler = (InputHandler) ClasspathUtils.newInstance(
+ inputHandlerClassname, Main.class.getClassLoader(),
+ InputHandler.class);
+ if (project != null) {
+ project.setProjectReference(handler);
}
}
project.setInputHandler(handler);
@@ -760,17 +746,13 @@
BuildLogger logger = null;
if (loggerClassname != null) {
try {
- Class loggerClass = Class.forName(loggerClassname);
- logger = (BuildLogger) (loggerClass.newInstance());
- } catch (ClassCastException e) {
+ logger = (BuildLogger) ClasspathUtils.newInstance(
+ loggerClassname, Main.class.getClassLoader(),
+ BuildLogger.class);
+ } catch (BuildException e) {
System.err.println("The specified logger class "
+ loggerClassname
- + " does not implement the BuildLogger interface");
- throw new RuntimeException();
- } catch (Exception e) {
- System.err.println("Unable to instantiate specified logger "
- + "class " + loggerClassname + " : "
- + e.getClass().getName());
+ + " could not be used because " + e.getMessage());
throw new RuntimeException();
}
} else {
1.3 +4 -15 ant/src/main/org/apache/tools/ant/taskdefs/optional/javah/JavahAdapterFactory.java
Index: JavahAdapterFactory.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/javah/JavahAdapterFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- JavahAdapterFactory.java 7 Feb 2005 18:38:07 -0000 1.2
+++ JavahAdapterFactory.java 23 May 2005 21:52:35 -0000 1.3
@@ -18,6 +18,7 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.ProjectComponent;
+import org.apache.tools.ant.util.ClasspathUtils;
import org.apache.tools.ant.util.JavaEnvUtils;
/**
@@ -77,20 +78,8 @@
* isn't an instance of JavahAdapter.
*/
private static JavahAdapter resolveClassName(String className)
- throws BuildException {
- try {
- Class c = Class.forName(className);
- Object o = c.newInstance();
- return (JavahAdapter) o;
- } catch (ClassNotFoundException cnfe) {
- throw new BuildException("Can't load " + className, cnfe);
- } catch (ClassCastException cce) {
- throw new BuildException(className
- + " is not a Javah adapter", cce);
- } catch (Throwable t) {
- // for all other possibilities
- throw new BuildException(className + " caused an interesting "
- + "exception.", t);
- }
+ throws BuildException {
+ return (JavahAdapter) ClasspathUtils.newInstance(className,
+ JavahAdapterFactory.class.getClassLoader(), JavahAdapter.class);
}
}
1.27 +11 -8 ant/src/main/org/apache/tools/ant/listener/MailLogger.java
Index: MailLogger.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/listener/MailLogger.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- MailLogger.java 9 Mar 2004 16:48:03 -0000 1.26
+++ MailLogger.java 23 May 2005 21:52:35 -0000 1.27
@@ -27,11 +27,13 @@
import java.util.StringTokenizer;
import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.email.EmailAddress;
import org.apache.tools.ant.taskdefs.email.Message;
import org.apache.tools.ant.taskdefs.email.Mailer;
+import org.apache.tools.ant.util.ClasspathUtils;
import org.apache.tools.ant.util.DateUtils;
import org.apache.tools.ant.util.StringUtils;
import org.apache.tools.mail.MailMessage;
@@ -239,14 +241,15 @@
String message) {
// convert the replyTo string into a vector of emailaddresses
Mailer mailer = null;
- try {
- mailer =
- (Mailer) Class.forName("org.apache.tools.ant.taskdefs.email.MimeMailer")
- .newInstance();
- } catch (Throwable e) {
- log("Failed to initialise MIME mail: " + e.getMessage());
- return;
- }
+ try {
+ mailer = (Mailer) ClasspathUtils.newInstance(
+ "org.apache.tools.ant.taskdefs.email.MimeMailer",
+ MailLogger.class.getClassLoader(), Mailer.class);
+ } catch (BuildException e) {
+ Throwable t = e.getCause() == null ? e : e.getCause();
+ log("Failed to initialise MIME mail: " + t.getMessage());
+ return;
+ }
Vector replyToList = vectorizeEmailAddresses(replyToString);
mailer.setHost(host);
mailer.setPort(port);
1.19 +6 -19 ant/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java
Index: ScriptDef.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/script/ScriptDef.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- ScriptDef.java 17 May 2005 10:45:29 -0000 1.18
+++ ScriptDef.java 23 May 2005 21:52:35 -0000 1.19
@@ -34,6 +34,7 @@
import java.util.HashSet;
import java.io.File;
+import org.apache.tools.ant.util.ClasspathUtils;
import org.apache.tools.ant.util.ScriptRunner;
/**
@@ -272,27 +273,13 @@
*/
ClassLoader loader = createLoader();
- Class instanceClass = null;
- try {
- instanceClass = Class.forName(classname, true, loader);
- } catch (Throwable e) {
- // try normal method
- try {
- instanceClass = Class.forName(classname);
- } catch (Throwable e2) {
- throw new BuildException("scriptdef: Unable to load "
- + "class " + classname + " for nested element <"
- + elementName + ">", e2);
- }
+ try
+ {
+ instance = ClasspathUtils.newInstance(classname, loader);
+ } catch (BuildException e) {
+ instance = ClasspathUtils.newInstance(classname, ScriptDef.class.getClassLoader());
}
- try {
- instance = instanceClass.newInstance();
- } catch (Throwable e) {
- throw new BuildException("scriptdef: Unable to create "
- + "element of class " + classname + " for nested "
- + "element <" + elementName + ">", e);
- }
getProject().setProjectReference(instance);
}
1.16 +60 -5 ant/src/main/org/apache/tools/ant/util/ClasspathUtils.java
Index: ClasspathUtils.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/ClasspathUtils.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ClasspathUtils.java 20 May 2005 22:51:37 -0000 1.15
+++ ClasspathUtils.java 23 May 2005 21:52:35 -0000 1.16
@@ -236,17 +236,49 @@
* @throws BuildException when loading or instantiation failed.
*/
public static Object newInstance(
+ String className,
+ ClassLoader userDefinedLoader) {
+ return newInstance(className, userDefinedLoader, Object.class);
+ }
+
+
+
+ /**
+ * Creates a fresh object instance of the specified classname.
+ *
+ * <p> This uses the userDefinedLoader to load the specified class,
+ * and then makes an instance using the default no-argument constructor.
+ * </p>
+ *
+ * @param className the full qualified class name to load.
+ * @param userDefinedLoader the classloader to use.
+ * @param expectedType the Class that the result should be assignment
+ * compatible with. (No ClassCastException will be thrown in case
+ * the result of this method is casted to the expectedType)
+ * @return The fresh object instance
+ * @throws BuildException when loading or instantiation failed.
+ * @since Ant 1.7
+ */
+ public static Object newInstance(
String className,
- ClassLoader userDefinedLoader) {
+ ClassLoader userDefinedLoader,
+ Class expectedType) {
try {
- Class clazz = userDefinedLoader.loadClass(className);
+ Class clazz = Class.forName(className, true, userDefinedLoader);
Object o = clazz.newInstance();
+ if (!expectedType.isInstance(o))
+ {
+ throw new BuildException(
+ "Class of unexpected Type: "
+ + className
+ + " expected :"
+ + expectedType);
+ }
return o;
} catch (ClassNotFoundException e) {
throw new BuildException(
- "Class "
- + className
- + " not found by the specific classLoader.",
+ "Class not found: "
+ + className,
e);
} catch (InstantiationException e) {
throw new BuildException(
@@ -262,10 +294,33 @@
+ ". Specified class should have a "
+ "public constructor.",
e);
+ } catch (LinkageError e) {
+ throw new BuildException(
+ "Class "
+ + className
+ + " could not be loaded because of an invalid dependency.",
+ e);
}
}
/**
+ * Creates a fresh object instance of the specified classname.
+ *
+ * <p> This uses the userDefinedLoader to load the specified class,
+ * and then makes an instance using the default no-argument constructor.
+ * </p>
+ *
+ * @param className the full qualified class name to load.
+ * @param userDefinedLoader the classloader to use.
+ * @param expectedType the Class that the result should be assignment
+ * compatible with. (No ClassCastException will be thrown in case
+ * the result of this method is casted to the expectedType)
+ * @return The fresh object instance
+ * @throws BuildException when loading or instantiation failed.
+ */
+
+
+ /**
* Obtains a delegate that helps out with classic classpath configuration.
*
* @param component your projectComponent that needs the assistence
1.18 +5 -17 ant/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java
Index: RmicAdapterFactory.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- RmicAdapterFactory.java 14 Mar 2005 18:36:44 -0000 1.17
+++ RmicAdapterFactory.java 23 May 2005 21:52:35 -0000 1.18
@@ -19,6 +19,7 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
+import org.apache.tools.ant.util.ClasspathUtils;
/**
@@ -28,10 +29,10 @@
*/
public final class RmicAdapterFactory {
/** The error message to be used when the compiler cannot be found. */
- public static final String ERROR_UNKNOWN_COMPILER = "Cannot find the compiler or class: ";
+ public static final String ERROR_UNKNOWN_COMPILER = "Class not found: ";
/** The error message to be used when the class is not an rmic adapter. */
- public static final String ERROR_NOT_RMIC_ADAPTER = "Not an rmic adapter: ";
+ public static final String ERROR_NOT_RMIC_ADAPTER = "Class of unexpected Type: ";
/** If the compiler has this name use a default compiler. */
public static final String DEFAULT_COMPILER = "default";
@@ -93,20 +94,7 @@
*/
private static RmicAdapter resolveClassName(String className)
throws BuildException {
- try {
- Class c = Class.forName(className);
- Object o = c.newInstance();
- return (RmicAdapter) o;
- } catch (ClassNotFoundException cnfe) {
- throw new BuildException(ERROR_UNKNOWN_COMPILER + className,
- cnfe);
- } catch (ClassCastException cce) {
- throw new BuildException(ERROR_NOT_RMIC_ADAPTER + className,
- cce);
- } catch (Throwable t) {
- // for all other possibilities
- throw new BuildException(className + " caused an interesting "
- + "exception.", t);
- }
+ return (RmicAdapter) ClasspathUtils.newInstance(className,
+ RmicAdapterFactory.class.getClassLoader(), RmicAdapter.class);
}
}
1.2 +6 -15 ant/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/Native2AsciiAdapterFactory.java
Index: Native2AsciiAdapterFactory.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/Native2AsciiAdapterFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Native2AsciiAdapterFactory.java 31 Jan 2005 11:48:25 -0000 1.1
+++ Native2AsciiAdapterFactory.java 23 May 2005 21:52:35 -0000 1.2
@@ -18,6 +18,7 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.ProjectComponent;
+import org.apache.tools.ant.util.ClasspathUtils;
import org.apache.tools.ant.util.JavaEnvUtils;
/**
@@ -77,20 +78,10 @@
* isn't an instance of Native2AsciiAdapter.
*/
private static Native2AsciiAdapter resolveClassName(String className)
- throws BuildException {
- try {
- Class c = Class.forName(className);
- Object o = c.newInstance();
- return (Native2AsciiAdapter) o;
- } catch (ClassNotFoundException cnfe) {
- throw new BuildException("Can't load " + className, cnfe);
- } catch (ClassCastException cce) {
- throw new BuildException(className
- + " is not a Native2Ascii adapter", cce);
- } catch (Throwable t) {
- // for all other possibilities
- throw new BuildException(className + " caused an interesting "
- + "exception.", t);
- }
+ throws BuildException
+ {
+ return (Native2AsciiAdapter) ClasspathUtils.newInstance(className,
+ Native2AsciiAdapterFactory.class.getClassLoader(),
+ Native2AsciiAdapter.class);
}
}
\ No newline at end of file
1.18 +5 -7 ant/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java
Index: RegexpMatcherFactory.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/util/regexp/RegexpMatcherFactory.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- RegexpMatcherFactory.java 17 Dec 2004 19:46:04 -0000 1.17
+++ RegexpMatcherFactory.java 23 May 2005 21:52:35 -0000 1.18
@@ -19,6 +19,7 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.ClasspathUtils;
/**
* Simple Factory Class that produces an implementation of
@@ -99,13 +100,10 @@
* @exception BuildException if an error occurs
*/
protected RegexpMatcher createInstance(String className)
- throws BuildException {
- try {
- Class implClass = Class.forName(className);
- return (RegexpMatcher) implClass.newInstance();
- } catch (Throwable t) {
- throw new BuildException(t);
- }
+ throws BuildException
+ {
+ return (RegexpMatcher) ClasspathUtils.newInstance(className,
+ RegexpMatcherFactory.class.getClassLoader(), RegexpMatcher .class);
}
/**
1.31 +4 -15 ant/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java
Index: CompilerAdapterFactory.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- CompilerAdapterFactory.java 13 May 2005 16:58:55 -0000 1.30
+++ CompilerAdapterFactory.java 23 May 2005 21:52:35 -0000 1.31
@@ -20,6 +20,7 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
+import org.apache.tools.ant.util.ClasspathUtils;
import org.apache.tools.ant.util.JavaEnvUtils;
/**
@@ -162,21 +163,9 @@
*/
private static CompilerAdapter resolveClassName(String className)
throws BuildException {
- try {
- Class c = Class.forName(className);
- Object o = c.newInstance();
- return (CompilerAdapter) o;
- } catch (ClassNotFoundException cnfe) {
- throw new BuildException("Compiler Adapter '" + className
- + "' can\'t be found.", cnfe);
- } catch (ClassCastException cce) {
- throw new BuildException(className + " isn\'t the classname of "
- + "a compiler adapter.", cce);
- } catch (Throwable t) {
- // for all other possibilities
- throw new BuildException("Compiler Adapter " + className
- + " caused an interesting exception.", t);
- }
+ return (CompilerAdapter) ClasspathUtils.newInstance(className,
+ CompilerAdapterFactory.class.getClassLoader(),
+ CompilerAdapter.class);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: cvs commit: ant/src/main/org/apache/tools/ant/taskdefs/compilers
CompilerAdapterFactory.java
Posted by Martijn Kruithof <jm...@kruithof.xs4all.nl>.
Steve Loughran wrote:
> jkf@apache.org wrote:
>
>> jkf 2005/05/23 14:52:35
>>
>> Modified: src/main/org/apache/tools/ant/taskdefs/email
>> EmailTask.java
>> src/main/org/apache/tools/ant Main.java
>> src/main/org/apache/tools/ant/taskdefs/optional/javah
>> JavahAdapterFactory.java
>> src/main/org/apache/tools/ant/listener MailLogger.java
>> src/main/org/apache/tools/ant/taskdefs/optional/script
>> ScriptDef.java
>> src/main/org/apache/tools/ant/util ClasspathUtils.java
>> src/main/org/apache/tools/ant/taskdefs/rmic
>> RmicAdapterFactory.java
>>
>> src/main/org/apache/tools/ant/taskdefs/optional/native2ascii
>> Native2AsciiAdapterFactory.java
>> src/main/org/apache/tools/ant/util/regexp
>> RegexpMatcherFactory.java
>> src/main/org/apache/tools/ant/taskdefs/compilers
>> CompilerAdapterFactory.java
>> Log:
>> Improved the newInstance method in ClasspathUtils, and used this
>> method from
>> the places where newInstances are made and Throwable is caught.
>
>
> nice bit of refactoring.
>
> Does this change how the ProjectHelper diagnostics stuff works, or is
> that self-contained enough to be unaffected.
Unless some unexpected throwable (unexpected RuntimeException or Error)
was actually thrown while creating the class, nothing outside the
changed scope should notice anything (apart from some error strings in
output in case the class could not be created). For this even the
LinkageError is considered expected in this situation. (Wherever a
buildexception was thrown, a buildexeception is still thrown, in case of
logging still only logging applies.)
If for instance an VirtualMachineError / ThreadDeath occurs however
things may go different. (If no layer above catches the Error though.)
Ideally those would leak all the way up, at least when thrown so that
appropriate action can be taken by the VM (in case of a
VirualMachineError exit, printing an error report).
Currently those errors are sometime caught and converted to
buildexceptions (Sometimes making clear OutOfMemoryErrors
incomprehensible (e.g. 25086)) And sometimes not (e.g. 34342)
See also discussion in 32941 (only party solved).
So currently I am looking into getting as many catch Throwables out as
possible, in small steps.
Martijn
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: cvs commit: ant/src/main/org/apache/tools/ant/taskdefs/compilers
CompilerAdapterFactory.java
Posted by Steve Loughran <st...@apache.org>.
jkf@apache.org wrote:
> jkf 2005/05/23 14:52:35
>
> Modified: src/main/org/apache/tools/ant/taskdefs/email EmailTask.java
> src/main/org/apache/tools/ant Main.java
> src/main/org/apache/tools/ant/taskdefs/optional/javah
> JavahAdapterFactory.java
> src/main/org/apache/tools/ant/listener MailLogger.java
> src/main/org/apache/tools/ant/taskdefs/optional/script
> ScriptDef.java
> src/main/org/apache/tools/ant/util ClasspathUtils.java
> src/main/org/apache/tools/ant/taskdefs/rmic
> RmicAdapterFactory.java
> src/main/org/apache/tools/ant/taskdefs/optional/native2ascii
> Native2AsciiAdapterFactory.java
> src/main/org/apache/tools/ant/util/regexp
> RegexpMatcherFactory.java
> src/main/org/apache/tools/ant/taskdefs/compilers
> CompilerAdapterFactory.java
> Log:
> Improved the newInstance method in ClasspathUtils, and used this method from
> the places where newInstances are made and Throwable is caught.
nice bit of refactoring.
Does this change how the ProjectHelper diagnostics stuff works, or is
that self-contained enough to be unaffected.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org