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 * <?xml version="1.0" encoding="UTF-8"?><br/>
85 * <!DOCTYPE component-metadata PUBLIC "-//Jcorporate Ltd//
86 * DTD Expresso Component Metadata Configuration 5.1//EN" "http://www.jcorporate.com/dtds/expresso-metadata_5_1.dtd">
87 * <component-metadata name="ExpressoServiceWriter">
88 * <description>Sample Component Description</description>
89 * <version-info>
90 * <major-version>1</major-version>
91 * <minor-version>0</minor-version>
92 * <micro-version>0</micro-version>
93 * </version-info>
94 * </component-metadata><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("metadataname");</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 }