KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > kernel > Containable


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2003 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64 package com.jcorporate.expresso.kernel;
65
66 /**
67  * Containable is partially 'marker interface' much like
68  * <code>java.lang.Serialiable</code>. If a class implements Containable then
69  * the Expresso Runtime wraps it with a <code>ComponentContainer</code> interface.
70  * This way the Container implementation is fully pluggable without any of the
71  * components knowing about the implementation of their containers.
72  * <p>You use get/setContainerImplementation to get the container implementation
73  * that then allows you to navigate the heirarchy of components and component
74  * containers.
75  * </p>
76  *
77  * @author Michael Rimov
78  * @since Expresso 5.1
79  */

80
81 public interface Containable extends ExpressoComponent {
82
83     /**
84      * Sets the marker to the ComponentContainer (which has a 1:1 instance mapping
85      * with Containable). This is often called by the actual implementation
86      * of the ComponentContainer.
87      *
88      * @param newContainer a <code>ComponentCo
89      */

90     public void setContainerImplementation(ComponentContainer newContainer);
91
92     /**
93      * Retrieves the actual container implementation
94      *
95      * @return ComponentContainer
96      */

97     public ComponentContainer getContainerImplementation();
98
99     /**
100      * <p>Convenience method for Container clients. Recommended
101      * Implementation:</p>
102      * <p/>
103      * <code>
104      * ExpressoComponent getComponent(String componentName) {<br />
105      * &nbsp;&nbsp; return this.getContainerImplementation().getComponent(componentName);
106      * }<br />
107      * <p/>
108      * </code>
109      * </p>
110      * <h4>Typical usage from an ExpressoComponent.</h4>
111      * <p>This example gets the default Data Context for a component within the context</p>
112      * <p><code>
113      * DataContext default = (DataContext)this.getParent().locateComponent(&quot;default&quot;);
114      * </code></p>
115      *
116      * @param componentName The name of the component to retrieve
117      * @return an ExpressoComponent or null if the specified name doesn't exist
118      */

119     public ExpressoComponent locateComponent(String JavaDoc componentName);
120
121 }
Popular Tags