blob: 65c927e13d2e2ba736afd392b52c854abbb262bb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.tools.ant;
import java.util.EventObject;
/**
* Class representing an event occurring during a build. An
* event is built by specifying either a project, a task or a target.
* A project level event will only have a project reference;
* a target level event will have project and target references;
* a task level event will have project, target and task references.
*
*/
public class BuildEvent extends EventObject {
private static final long serialVersionUID = 4538050075952288486L;
/** Project which emitted the event. */
private Project project;
/** Target which emitted the event, if specified. */
private Target target;
/** Task which emitted the event, if specified. */
private Task task;
/**
* Message associated with the event. This is only used for
* "messageLogged" events.
*/
private String message;
/**
* The priority of the message, for "messageLogged" events.
*/
private int priority = Project.MSG_VERBOSE;
/**
* The exception associated with this event, if any.
* This is only used for "messageLogged", "taskFinished", "targetFinished",
* and "buildFinished" events.
*/
private Throwable exception;
/**
* Construct a BuildEvent for a project level event.
*
* @param project the project that emitted the event.
* Should not be <code>null</code>.
*/
public BuildEvent(Project project) {
super(project);
this.project = project;
this.target = null;
this.task = null;
}
/**
* Construct a BuildEvent for a target level event.
* The project associated with the event is derived
* from the given target.
*
* @param target the target that emitted the event.
* Must not be <code>null</code>.
*/
public BuildEvent(Target target) {
super(target);
this.project = target.getProject();
this.target = target;
this.task = null;
}
/**
* Construct a BuildEvent for a task level event.
* The project and target associated with the event
* are derived from the given task.
*
* @param task the task that emitted the event.
* Must not be <code>null</code>.
*/
public BuildEvent(Task task) {
super(task);
this.project = task.getProject();
this.target = task.getOwningTarget();
this.task = task;
}
/**
* Sets the message and priority associated with this event.
* This is used for "messageLogged" events.
*
* @param message the message to be associated with this event.
* Should not be <code>null</code>.
* @param priority the priority to be associated with this event,
* as defined in the {@link Project Project} class.
*
* @see BuildListener#messageLogged(BuildEvent)
*/
public void setMessage(String message, int priority) {
this.message = message;
this.priority = priority;
}
/**
* Sets the exception associated with this event. This is used
* for "messageLogged", "taskFinished", "targetFinished", and "buildFinished"
* events.
*
* @param exception The exception to be associated with this event.
* May be <code>null</code>.
*
* @see BuildListener#messageLogged(BuildEvent)
* @see BuildListener#taskFinished(BuildEvent)
* @see BuildListener#targetFinished(BuildEvent)
* @see BuildListener#buildFinished(BuildEvent)
*/
public void setException(Throwable exception) {
this.exception = exception;
}
/**
* Returns the project that fired this event.
*
* @return the project that fired this event
*/
public Project getProject() {
return project;
}
/**
* Returns the target that fired this event.
*
* @return the project that fired this event, or <code>null</code>
* if this event is a project level event.
*/
public Target getTarget() {
return target;
}
/**
* Returns the task that fired this event.
*
* @return the task that fired this event, or <code>null</code>
* if this event is a project or target level event.
*/
public Task getTask() {
return task;
}
/**
* Returns the logging message. This field will only be set
* for "messageLogged" events.
*
* @return the message associated with this event, or <code>null</code>
* if no message has been set.
*
* @see BuildListener#messageLogged(BuildEvent)
*/
public String getMessage() {
return message;
}
/**
* Returns the priority of the logging message. This field will only
* be set for "messageLogged" events. The meaning of this priority
* is as specified by the constants in the {@link Project Project} class.
*
* @return the priority associated with this event.
*
* @see BuildListener#messageLogged(BuildEvent)
*/
public int getPriority() {
return priority;
}
/**
* Returns the exception that was thrown, if any. This field will only
* be set for "messageLogged", "taskFinished", "targetFinished", and "buildFinished"
* events.
*
* @return the exception associated with this exception, or
* <code>null</code> if no exception has been set.
*
* @see BuildListener#messageLogged(BuildEvent)
* @see BuildListener#taskFinished(BuildEvent)
* @see BuildListener#targetFinished(BuildEvent)
* @see BuildListener#buildFinished(BuildEvent)
*/
public Throwable getException() {
return exception;
}
}