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 }