/* * 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 final Project project; /** Target which emitted the event, if specified. */ private final Target target; /** Task which emitted the event, if specified. */ private final 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; } }