aboutsummaryrefslogtreecommitdiffstats
path: root/org.aspectj.ajdt.core/src
diff options
context:
space:
mode:
authoracolyer <acolyer>2006-01-30 17:34:58 +0000
committeracolyer <acolyer>2006-01-30 17:34:58 +0000
commitc24aaf00c7ef2691ca498d5891899084d788c041 (patch)
tree9f4455b6eb3fe37e9143d94e430f93895717affa /org.aspectj.ajdt.core/src
parent96014baf1aefae6f7925fc66fd490ec80662a80f (diff)
downloadaspectj-c24aaf00c7ef2691ca498d5891899084d788c041.tar.gz
aspectj-c24aaf00c7ef2691ca498d5891899084d788c041.zip
support for -messageHolder command-line option. This is needed by the forking iajc ant task to support use of a custom message handler when forking.
Diffstat (limited to 'org.aspectj.ajdt.core/src')
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/tools/ajc/Main.java36
1 files changed, 32 insertions, 4 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/tools/ajc/Main.java b/org.aspectj.ajdt.core/src/org/aspectj/tools/ajc/Main.java
index e34ec6ce1..99843a3b9 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/tools/ajc/Main.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/tools/ajc/Main.java
@@ -77,7 +77,9 @@ public class Main {
+ "should be increased from 64M (default) to 128M or even 256M." + LangUtil.EOL + LangUtil.EOL
+ "See the AspectJ FAQ available from the documentation link" + LangUtil.EOL
+ "on the AspectJ home page at http://www.eclipse.org/aspectj";
-
+
+ private static final String MESSAGE_HOLDER_OPTION = "-messageHolder";
+
/** @param args the String[] of command-line arguments */
public static void main(String[] args) throws IOException {
new Main().runMain(args, true);
@@ -195,7 +197,7 @@ public class Main {
/** if not null, run this synchronously after each compile completes */
private Runnable completionRunner;
-
+
public Main() {
controller = new CommandController();
commandName = ReflectionFactory.ECLIPSE;
@@ -223,16 +225,19 @@ public class Main {
*/
public void runMain(String[] args, boolean useSystemExit) {
final boolean verbose = flagInArgs("-verbose", args);
+ if (null == this.clientHolder) {
+ this.clientHolder = checkForCustomMessageHolder(args);
+ }
IMessageHolder holder = clientHolder;
if (null == holder) {
- holder = ourHandler;
+ holder = ourHandler;
if (verbose) {
ourHandler.setInterceptor(MessagePrinter.VERBOSE);
} else {
ourHandler.ignore(IMessage.INFO);
ourHandler.setInterceptor(MessagePrinter.TERSE);
}
- }
+ }
// make sure we handle out of memory gracefully...
try {
@@ -258,6 +263,25 @@ public class Main {
}
}
+ /**
+ * @param args
+ */
+ private IMessageHolder checkForCustomMessageHolder(String[] args) {
+ IMessageHolder holder = null;
+ final String customMessageHolder = parmInArgs(MESSAGE_HOLDER_OPTION, args);
+ if (customMessageHolder != null) {
+ try {
+ holder = (IMessageHolder) Class.forName(customMessageHolder).newInstance();
+ }
+ catch(Exception ex) {
+ holder = ourHandler;
+ throw new AbortException("Failed to create custom message holder of class '" +
+ customMessageHolder + "' : " + ex);
+ }
+ }
+ return holder;
+ }
+
/**
* Run without using System.exit(..), putting all messages in holder:
* <ul>
@@ -391,6 +415,10 @@ public class Main {
clientHolder = holder;
}
+ public IMessageHolder getHolder() {
+ return clientHolder;
+ }
+
/**
* Install a Runnable to be invoked synchronously
* after each compile completes.