/*******************************************************************************
 * Copyright (c) 2001, 2008 Oracle Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     Oracle Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.jst.jsf.common.runtime.internal.view.model.common;

import java.io.Serializable;
import java.util.Collection;

/**
 * Abstracts an xml namespace used to define a set of view tags
 * 
 */
public abstract class Namespace implements Serializable
{
    /**
     * 
     */
    private static final long serialVersionUID = 6386464282396970948L;

    /**
     * @return the namespace uri. MUST NOT BE NULL
     */
    public abstract String getNSUri();

    /**
     * This call may be long running.  Call isInitialized to determine if all 
     * information is already cached, or if calling this method is likely
     * to take a long time.
     * 
     * @return the view elements in this namespace. May be empty but MUST NOT BE
     *         NULL.
     */
    public abstract Collection getViewElements();
    
    /**
     * This method should be light weight if possible.  Unlike calling
     * getViewElements().isEmpty, this call should not require that all
     * view element children of this namespace be analyzed and constructed in
     * order to succeed.
     * 
     * @return true if this name space has view element children
     */
    public abstract boolean hasViewElements();

    /**
     * If calculating all view elements is expensive, a Namespace implementation
     * may defer calculation until a specific element is requested.  A caller of
     * getViewElements (such as a UI that shows all tags), may wish to know if
     * the entire namespace has been initialized before calling it, since it may
     * be long running.
     * 
     * @return true if the namespace's elements have been fully initialized.  If this
     * method returns false, care should be taken in calling getViewElements() and
     * getViewElement() since they may be very long running.
     */
    public abstract boolean isInitialized();
    
    /**
     * @param name
     * @return the tag element called 'name' or null if none.
     */
    public abstract ITagElement getViewElement(final String name);

    /**
     * @return a user readable display name for this namespace or null if none.
     */
    public abstract String getDisplayName();

    public String toString()
    {
        return getNSUri();
    }
}
