001    // GraphLab Project: http://graphlab.sharif.edu
002    // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
003    // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
004    
005    package graphlab.platform.extension;
006    
007    import java.lang.annotation.ElementType;
008    import java.lang.annotation.Retention;
009    import static java.lang.annotation.RetentionPolicy.RUNTIME;
010    import java.lang.annotation.Target;
011    
012    
013    /**
014     * Provides some information about the extension
015     *
016     * @author azin azadi
017     * @see Extension
018     */
019    
020    @Retention(RUNTIME)
021    @Target({ElementType.TYPE})
022    public @interface ExtensionExternalData {
023        /**
024         * a URL which locates a help for extension, the help will
025         * provide more information about what extension does and
026         * how it can be used, it also can contain some theoreticall
027         * aspects of extension, how it is implemented and so on.
028         */
029        String helpURL();
030    
031        /**
032         * a URL which locates the source code for the extension, it
033         * will be then accessible by the user.
034         * <p/>
035         * this field will be setted on extension load automatically if it hasn't been setted,
036         * on this case it will be locate the file of extension.
037         * automatically setting the sourceCodeURL will be done only when the extension source code
038         * is not a .class file.
039         *
040         * @see ExtensionLoader
041         */
042        String sourceCodeURL();
043    }