Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/jcorporate/expresso/kernel/Describable.java


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  import com.jcorporate.expresso.kernel.metadata.ComponentMetadata;
67  
68  import java.net.URL;
69  
70  /**
71   * This interface represents an object that can have it's metadata described
72   * by an XML file.  The Describable interface returns the URL that contains the
73   * xml file that is the metadata for the component.  This could event potentially be
74   * located in a central server for metadata distribution.
75   * <p>Note that the default component implementations (<code>NonContainercomponentBase</code>
76   * and <code>ContainerComponentBase</code>) implement Describable in
77   * such a way that it looks for an xml file by the name of: <i>[className]</i>.xml
78   * in the same package as the Component class itself is located</p>
79   * <h4>Minimal Metadata</h4>
80   * <p>The minimal xml file to be associated with the Expresso component is:</p>
81   * <p/>
82   * <code>
83   * <pre>
84   * &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br/>
85   * &lt;!DOCTYPE component-metadata PUBLIC &quot;-//Jcorporate Ltd//
86   * DTD Expresso Component Metadata Configuration 5.1//EN&quot; &quot;http://www.jcorporate.com/dtds/expresso-metadata_5_1.dtd&quot;&gt;
87   * &lt;component-metadata name=&quot;ExpressoServiceWriter&quot;&gt;
88   *     &lt;description&gt;Sample Component Description&lt;/description&gt;
89   *     &lt;version-info&gt;
90   *         &lt;major-version&gt;1&lt;/major-version&gt;
91   *         &lt;minor-version&gt;0&lt;/minor-version&gt;
92   *         &lt;micro-version&gt;0&lt;/micro-version&gt;
93   *     &lt;/version-info&gt;
94   * &lt;/component-metadata&gt;<br/>
95   * </pre>
96   * </code>
97   * </p>
98   *
99   * @author Michael Rimov
100  */
101 public interface Describable {
102 
103     /**
104      * Get the location of the metadata.  The URL is usually retrieved via a
105      * <code>this.getClass().loadResource(&quot;metadataname&quot;);</code> call.
106      * NonContainerComponentBase implements a default method.
107      *
108      * @return the URL for the metadata
109      */
110     public URL getMetadataLocation();
111 
112     /**
113      * Sets the component metadata for component.  Usually the external
114      * 'factory class' that parsed the metadata would then set a ComponentMetadata
115      * object for this component.
116      *
117      * @param metadata the component metadata
118      */
119     public void setMetaData(ComponentMetadata metadata);
120 
121 
122 }