Life Cycle Task : Custom Task « Ant « Java

Home
Java
1.2D Graphics GUI
2.3D
3.Advanced Graphics
4.Ant
5.Apache Common
6.Chart
7.Class
8.Collections Data Structure
9.Data Type
10.Database SQL JDBC
11.Design Pattern
12.Development Class
13.EJB3
14.Email
15.Event
16.File Input Output
17.Game
18.Generics
19.GWT
20.Hibernate
21.I18N
22.J2EE
23.J2ME
24.JDK 6
25.JNDI LDAP
26.JPA
27.JSP
28.JSTL
29.Language Basics
30.Network Protocol
31.PDF RTF
32.Reflection
33.Regular Expressions
34.Scripting
35.Security
36.Servlets
37.Spring
38.Swing Components
39.Swing JFC
40.SWT JFace Eclipse
41.Threads
42.Tiny Application
43.Velocity
44.Web Services SOA
45.XML
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
SCJP
Java » Ant » Custom TaskScreenshots 
Life Cycle Task


/*
 *
 *  Licensed 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.mwrm.ant.tasks;

import java.util.Hashtable;
import java.util.Enumeration;

import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;

/**
 * <p>At each stage in a task's life cycle, this class displays information
 * to show the internal state of the task and its position with in the project.
 * It takes a <code>name</code> attribute.</p>
 */
public class LifeCycleTask extends Task {

    /** The <code>name</code> attribute of this task. */
    private String name;

    /** The body text of this task. */
    private String text;

    /**
     * <p>The constructor displays the state of the task
     * as it is instantiated.</p>
     */
    public LifeCycleTask() {
        System.out.println("---------------");
        System.out.println("Constructor called");
        System.out.println("Value of name attribute: " + name);
        System.out.println("Value of the body text: " + text);
        System.out.println("Project: " + getProject());
        System.out.println("Location: " + getLocation());
        System.out.println("Target: " + getOwningTarget());
        System.out.println("---------------");
    }

    /**
     * <p>Displays the state of the task at initialization.</p>
     @see #logAll(String method)
     */
    public final void init() {
        logAll("init()");
    }

    /**
     * <p>Displays the state of the task when Ant runs it.
     * This method also runs some usage checks
     * to ensure the task is being used properly.</p>
     */
    public final void execute() {
        if (name == null) {
            throw new BuildException("You must specify a name attribute in "
                                     + getTaskName() ".");
        }
        logAll("execute()");

        // Write the name to output
        log(name, Project.MSG_INFO);
    }

    /**
     * <p>Sets the name to display
     * and shows the state of the task afterwards.</p>
     @param aName The name to display
     */
    public final void setName(final String aName) {
        // The value of the name attribute
        this.name = aName;
        logAll("setName()");
    }

    /**
     * <p>Sets the body text of the task
     * and shows the state of the task afterwards.</p>
     @param bodyText The body text
     */
    public final void addText(final String bodyText) {
        // If the body text is just whitespace, it might as well be null
        if (bodyText.trim().equals("")) {
            this.text = null;
        else {
            this.text = bodyText.trim();
        }
        logAll("addText()");
    }

    /** <p>Checks for task references.</p>
     @return String
     * A string that tells us details of the reference check
     */
    private String referenceCheck() {

        // The default setting
        String setString = "Reference not found.";

        // We need the references that have been set in this project
        Hashtable refs = getProject().getReferences();
        Enumeration e = refs.elements();

        // Let's iterate over them
        while (e.hasMoreElements()) {
            // We want to work with each object, so we'll instantiate an object
            Object obj = e.nextElement();

            // Check to see whether this object is a task
            // If it is, we'll build a string that contains its name and type
            if (obj.getClass().getName().
                equals("org.apache.tools.ant.UnknownElement")
                ||
                obj.getClass().getName().
                equals(this.getClass().getName())) {

                Task aTask = (Taskobj;

                setString =
                    "Reference to " + aTask.getTaskName() " found, of type "
                    + aTask.getClass().getName() ". ";
                setString = setString + "Its id is "
                    + aTask.getRuntimeConfigurableWrapper().
            getAttributeMap().get("id"".";
            }
        }
        return setString;
    }

    /**
     * <p>A central logging method that all the life-cycle methods call
     * to display the state of the task.
     * It displays the value of the <code>name</code> attribute
     * and other information about the task,
     * including the name of its project and its location in the build file.</p>
     @param method The name of the method that issued the logging call
     */
    public final void logAll(final String method) {
        log("---------------", Project.MSG_VERBOSE);
        log(method + " called", Project.MSG_VERBOSE);
        log("Value of name attribute: " + name, Project.MSG_VERBOSE);
        log("Value of the body text: " + text, Project.MSG_VERBOSE);
        log("Project: " + getProject().getName(), Project.MSG_VERBOSE);

        // Here we build some information on the location
        // within the build file
        String locationString = getLocation().getFileName();
        locationString = locationString + " at line "
            + getLocation().getLineNumber();

        // Location.getColumnNumber() is for Ant 1.7+
        // Comment it out if you are using Ant 1.6.x
        //locationString = locationString + " and column "
        // + getLocation().getColumnNumber();

        log("Location: " + locationString, Project.MSG_VERBOSE);

        // We could use the Location.toString() method
        //log("Location: " + getLocation(), Project.MSG_VERBOSE);

        log("Target: " + getOwningTarget(), Project.MSG_VERBOSE);

        // referenceCheck() returns a string with information
        // on any references to custom tasks
        log(referenceCheck(), Project.MSG_VERBOSE);

        // If the configuration wrapper is null, we use its
        // run-time equivalent
        if (getWrapper() == null) {
            log("Reference id: "
                + getRuntimeConfigurableWrapper().getAttributeMap().get("id"),
                Project.MSG_VERBOSE);
        else {
            // This time we use the protected getWrapper() method
            log("Reference id: " + getWrapper().getAttributeMap().get("id"),
                Project.MSG_VERBOSE);
        }

        log("---------------", Project.MSG_VERBOSE);
    }
}


           
       
AntWriteOurOwnTask.zip( 157 k)
Related examples in the same category
1.Create your own Ant task
2.The third-party tasks
3.Ant Write Our Own Task
4.Extend Javadoc Task
5.How to use a Class argument in a custom class attribute
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.