KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > idaremedia > antx > ownhelpers > DefinitionLoader


1 /**
2  * $Id: DefinitionLoader.java 180 2007-03-15 12:56:38Z ssmc $
3  * Copyright 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 (LGPL) as published
8  * by the Free Software Foundation; either version 2.1 of the License, or (at your option)
9  * any 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 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 GNU 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.ownhelpers;
30
31 import org.apache.tools.ant.taskdefs.AntlibDefinition;
32 import com.idaremedia.antx.AntX;
33
34 /**
35  * Default implementation of a ClassLoader factory method for AntX Antlib definitions.
36  * We assume that AntX definitions do not load tasks or types directly (only resources).
37  *
38  * @since JWare/AntX 0.4
39  * @author ssmc, &copy;2004 <a HREF="http://www.jware.info">iDare&nbsp;Media,&nbsp;Inc.</a>
40  * @version 0.5
41  * @.safety single
42  * @.group impl,infra
43  **/

44
45 public final class DefinitionLoader implements CustomLoaderFactoryMethod
46 {
47     private static final String JavaDoc IAM_= "DefnLoader:";
48
49
50     /**
51      * Initializes this adapter for an existing definition.
52      * @param defn existing Antlib definition (non-null)
53      **/

54     public DefinitionLoader(AntlibDefinition defn)
55     {
56         AntX.require_(defn!=null,IAM_,"ctor- nonzro definition");
57         m_def= defn;
58         m_spi= null;
59     }
60
61
62
63     /**
64      * Initializes this adapter for an existing definition that also
65      * supports instance-level customization.
66      * @param defn existing Antlib definition (non-null)
67      * @param next next loader after definitions (non-null)
68      **/

69     public DefinitionLoader(AntlibDefinition defn, CustomLoaderFactoryMethod next)
70     {
71         AntX.require_(defn!=null,IAM_,"ctor- nonzro definition");
72         AntX.require_(next!=null,IAM_,"ctor- nonzro delegate");
73         m_def= defn;
74         m_spi= next;
75     }
76
77
78
79     /**
80      * Returns the underlying definitions class loader. Can return
81      * <i>null</i>.
82      * @.safety single
83      **/

84     public ClassLoader JavaDoc getClassLoader()
85     {
86         if (m_cL==null) {
87             ClassLoader JavaDoc cL= m_def.getAntlibClassLoader();
88             if (cL==null && m_spi!=null) {
89                 cL = m_spi.getClassLoader();
90             }
91             m_cL = cL;
92         }
93         return m_cL;
94     }
95
96
97     private ClassLoader JavaDoc m_cL;//cached
98
private final AntlibDefinition m_def;//NB:required
99
private final CustomLoaderFactoryMethod m_spi;//NB:optional
100
}
101
102 /* end-of-DefinitionLoader.java */
103
Popular Tags