/* *******************************************************************
 * Copyright (c) 1999-2001 Xerox Corporation, 
 *               2002 Palo Alto Research Center, Incorporated (PARC).
 * All rights reserved. 
 * This program and the accompanying materials are made available 
 * under the terms of the Eclipse Public License v1.0 
 * which accompanies this distribution and is available at 
 * http://www.eclipse.org/legal/epl-v10.html 
 *  
 * Contributors: 
 *     Xerox/PARC     initial implementation 
 * ******************************************************************/


package org.aspectj.bridge;

import java.io.PrintWriter;

Handle messages, logging and/or aborting as appropriate. Implementations define which messages are logged and whether the handler aborts the process. For messages that are costly to construct, clients may query isIgnoring(Kind) to avoid construction if the message will be ignored. Clients passing messages to an IMessageHandler should not interfere with aborts by catching AbortException unless otherwise required by their logic or the message handler.
/** * Handle messages, logging and/or aborting as appropriate. * Implementations define which messages are logged and whether * the handler aborts the process. * For messages that are costly to construct, clients may query * {@link #isIgnoring(IMessage.Kind)} * to avoid construction if the message will be ignored. * Clients passing messages to an IMessageHandler should not * interfere with aborts by catching AbortException unless * otherwise required by their logic or the message handler. */
public interface IMessageHandler {
print all to System.err and throw AbortException on failure or abort messages
/** print all to System.err and throw AbortException on failure or abort messages */
public static final IMessageHandler SYSTEM_ERR = new MessageWriter(new PrintWriter(System.err, true), true);
print all to System.out but do not throw AbortException on failure or abort messages
/** print all to System.out but do not throw AbortException on failure or abort messages */
public static final IMessageHandler SYSTEM_OUT = new MessageWriter(new PrintWriter(System.out, true), false);
Throw exceptions for anything with ERROR or greater severity
/** Throw exceptions for anything with ERROR or greater severity */
public static final IMessageHandler THROW = new IMessageHandler() { public boolean handleMessage(IMessage message) { if (message.getKind().compareTo(IMessage.ERROR) >= 0) { throw new AbortException(message); } else { return SYSTEM_OUT.handleMessage(message); } } public boolean isIgnoring(IMessage.Kind kind) { return false; } public void dontIgnore(IMessage.Kind kind) { } public void ignore(IMessage.Kind kind) { } };
Handle message, by reporting and/or throwing an AbortException.
Params:
  • message – the IMessage to handle - never null
Throws:
Returns:true if this message was handled by this handler
/** * Handle message, by reporting and/or throwing an AbortException. * @param message the IMessage to handle - never null * @return true if this message was handled by this handler * @throws IllegalArgumentException if message is null * @throws AbortException depending on handler logic. */
boolean handleMessage(IMessage message) throws AbortException;
Signal clients whether this will ignore messages of a given type. Clients may use this to avoid constructing or sending certain messages.
Returns:true if this handler is ignoring all messages of this type
/** * Signal clients whether this will ignore messages of a given type. * Clients may use this to avoid constructing or sending certain messages. * @return true if this handler is ignoring all messages of this type */
boolean isIgnoring(IMessage.Kind kind);
Allow fine grained configuration after initialization. Minaly used in LTW. Most of the implementation can have this method be a no-op.
Params:
  • kind –
/** * Allow fine grained configuration after initialization. Minaly used in LTW. Most of the * implementation can have this method be a no-op. * * @param kind */
void dontIgnore(IMessage.Kind kind);
Allow fine grained configuration after initialization.
Params:
  • kind –
/** * Allow fine grained configuration after initialization. * * @param kind */
void ignore(IMessage.Kind kind); }