001    /**
002     * <copyright>
003     * </copyright>
004     *
005     * $Id$
006     */
007    package com.hammurapi.config;
008    
009    import com.hammurapi.config.bootstrap.ConfigurationException;
010    import com.hammurapi.config.bootstrap.TokenExpander.TokenSource;
011    
012    
013    import java.net.URL;
014    
015    import org.eclipse.emf.common.util.EList;
016    
017    import org.eclipse.emf.ecore.EObject;
018    
019    /**
020     * <!-- begin-user-doc -->
021     * A representation of the model object '<em><b>Path</b></em>'.
022     * <!-- end-user-doc -->
023     *
024     * <!-- begin-model-doc -->
025     * Classpath. Object definitions can have their own classpaths. As a result, users don' t have to download component code and bundle if with the application - it will be downloaded by the classloader when needed. This concept is similar to applets and Java Web Start concept, but classpath is defined at the component level instead of being defined at the application level.
026     * <!-- end-model-doc -->
027     *
028     * <p>
029     * The following features are supported:
030     * <ul>
031     *   <li>{@link com.hammurapi.config.Path#getPathElement <em>Path Element</em>}</li>
032     *   <li>{@link com.hammurapi.config.Path#getPath <em>Path</em>}</li>
033     *   <li>{@link com.hammurapi.config.Path#getBaseUrl <em>Base Url</em>}</li>
034     * </ul>
035     * </p>
036     *
037     * @see com.hammurapi.config.ConfigPackage#getPath()
038     * @model
039     * @generated
040     */
041    public interface Path extends EObject {
042            /**
043             * Returns the value of the '<em><b>Path Element</b></em>' attribute list.
044             * The list contents are of type {@link java.lang.String}.
045             * <!-- begin-user-doc -->
046             * <!-- end-user-doc -->
047             * <!-- begin-model-doc -->
048             * Path element is a URL relative to the baseUri. 
049             * <!-- end-model-doc -->
050             * @return the value of the '<em>Path Element</em>' attribute list.
051             * @see com.hammurapi.config.ConfigPackage#getPath_PathElement()
052             * @model
053             * @generated
054             */
055            EList<String> getPathElement();
056    
057            /**
058             * Returns the value of the '<em><b>Path</b></em>' containment reference list.
059             * The list contents are of type {@link com.hammurapi.config.Path}.
060             * <!-- begin-user-doc -->
061             * <!-- end-user-doc -->
062             * <!-- begin-model-doc -->
063             * Paths can be nested. Child's path baseUri in this case is evaluated relative to the parent's path baseUri.
064             * <!-- end-model-doc -->
065             * @return the value of the '<em>Path</em>' containment reference list.
066             * @see com.hammurapi.config.ConfigPackage#getPath_Path()
067             * @model containment="true"
068             * @generated
069             */
070            EList<Path> getPath();
071    
072            /**
073             * Returns the value of the '<em><b>Base Url</b></em>' attribute.
074             * <!-- begin-user-doc -->
075             * <!-- end-user-doc -->
076             * <!-- begin-model-doc -->
077             * Base URL, path elements and base URI's of child paths are evaluated relative to the base URI, if it is not null or blank. This base URL is evaluated relative to baseURL parameter of getUrls method.
078             * <!-- end-model-doc -->
079             * @return the value of the '<em>Base Url</em>' attribute.
080             * @see #setBaseUrl(String)
081             * @see com.hammurapi.config.ConfigPackage#getPath_BaseUrl()
082             * @model
083             * @generated
084             */
085            String getBaseUrl();
086    
087            /**
088             * Sets the value of the '{@link com.hammurapi.config.Path#getBaseUrl <em>Base Url</em>}' attribute.
089             * <!-- begin-user-doc -->
090             * <!-- end-user-doc -->
091             * @param value the new value of the '<em>Base Url</em>' attribute.
092             * @see #getBaseUrl()
093             * @generated
094             */
095            void setBaseUrl(String value);
096    
097            /**
098             * <!-- begin-user-doc -->
099             * <!-- end-user-doc -->
100             * <!-- begin-model-doc -->
101             * Returns URL's to construct URL classloader.
102             * @param baseURL Base URL for path elements.
103             * @param tokens Token source to replace ${...} tokens in path elements. 
104             * <!-- end-model-doc -->
105             * @model dataType="com.hammurapi.config.EUrl" exceptions="com.hammurapi.config.EConfigurationException" baseURLDataType="com.hammurapi.config.EUrl" tokensDataType="com.hammurapi.config.ETokenSource"
106             * @generated
107             */
108            EList<URL> getUrls(URL baseURL, TokenSource tokens) throws ConfigurationException;
109    
110    } // Path