KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > idaremedia > antx > condition > solo > Preference


1 /**
2  * $Id: Preference.java 180 2007-03-15 12:56:38Z ssmc $
3  * Copyright 2002-2004 iDare Media, Inc. All rights reserved.
4  *
5  * Originally written by iDare Media, Inc. for release into the public domain. This
6  * library, source form and binary form, is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public License as published by the
8  * Free Software Foundation; either version 2.1 of the License, or (at your option) any
9  * later version.<p>
10  *
11  * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13  * See the GNU LGPL (GNU Lesser General Public License) for more details.<p>
14  *
15  * You should have received a copy of the GNU Lesser General Public License along with this
16  * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite
17  * 330, Boston, MA 02111-1307 USA. The LGPL can be found online at
18  * http://www.fsf.org/copyleft/lesser.html<p>
19  *
20  * This product has been influenced by several projects within the open-source community.
21  * The JWare developers wish to acknowledge the open-source community's support. For more
22  * information regarding the open-source products used within JWare, please visit the
23  * JWare website.
24  *----------------------------------------------------------------------------------------*
25  * WEBSITE- http://www.jware.info EMAIL- inquiries@jware.info
26  *----------------------------------------------------------------------------------------*
27  **/

28
29 package com.idaremedia.antx.condition.solo;
30
31 import org.apache.tools.ant.BuildException;
32 import org.apache.tools.ant.Project;
33
34 import com.idaremedia.antx.AntX;
35 import com.idaremedia.antx.starters.Quiet;
36 import com.idaremedia.antx.starters.StrictInnerTask;
37 import com.idaremedia.antx.starters.StrictOuterTask;
38
39 /**
40  * A {@linkplain BuildRule} item that checks if some requirement would be violated in
41  * the current project's state and tries to adjust the project to prevent a subsequent
42  * check of that same requirement from evaluating negatively. A build rule
43  * will never fail because of a <i>false</i> preference.
44  *
45  * @since JWare/AntX 0.2
46  * @author ssmc, &copy;2002-2004 <a HREF="http://www.jware.info">iDare&nbsp;Media,&nbsp;Inc.</a>
47  * @version 0.5
48  * @.safety guarded
49  * @.group api,infra
50  * @see BuildRule
51  * @see Requirement
52  **/

53
54 final class Preference extends PreferTask implements StrictInnerTask,Quiet
55 {
56     /**
57      * Initializes a new build rule preference instance.
58      **/

59     Preference()
60     {
61         super(AntX.rules+"prefer",true);
62     }
63
64
65     /**
66      * Associates this preference with its enclosing build rule.
67      * @param enclosingTask enclosing {@linkplain BuildRule build rule} (non-null)
68      **/

69     public void setEnclosingTask(StrictOuterTask enclosingTask)
70     {
71         require_((enclosingTask instanceof BuildRule), "setEnclTsk- only buildrule");
72         m_owningRule = enclosingTask;
73     }
74
75
76     /**
77      * Returns the {@linkplain BuildRule build rule} in which this
78      * preference is nested. Returns <i>null</i> if never set.
79      **/

80     public StrictOuterTask getEnclosingTask()
81     {
82         return m_owningRule;
83     }
84
85
86     /**
87      * Verifies in a valid project and nested within a build rule.
88      * @throws BuildException if not in project and/or build rule
89      **/

90     protected void verifyCanExecute_(String JavaDoc calr)
91     {
92         verifyInProject_(calr);
93         if (getEnclosingTask()==null) {
94             String JavaDoc ermsg = uistrs().get("task.only.in.outer",getTaskName(),"rule");
95             log(ermsg,Project.MSG_ERR);
96             throw new BuildException(ermsg);
97         }
98     }
99
100     private StrictOuterTask m_owningRule;
101 }
102
103 /* end-of-Preference.java */
104
Popular Tags