001    // Copyright 2007 Waterken Inc. under the terms of the MIT X license
002    // found at http://www.opensource.org/licenses/mit-license.html
003    package org.web_send.graph;
004    
005    /**
006     * A case-insensitive, well-known name publisher.
007     */
008    public interface
009    Publisher {
010        
011        /**
012         * set of disallowed name characters: {@value}
013         */
014        String disallowed = ";\\/:*?<>|\"=#";
015    
016        /**
017         * Creates a new binding.
018         * @param name  name to bind
019         * @param value value to bind
020         * @throws Collision    <code>name</code> is unavailable
021         */
022        void
023        bind(String name, Object value) throws Collision;
024    
025        /**
026         * Creates a named vat.
027         * @param <T> exported object type
028         * @param name  vat name
029         * @param maker object maker, same requirements as in {@link Spawn#run}
030         * @return promise for the object returned by the <code>maker</code>
031         * @throws Collision    <code>name</code> is unavailable
032         */
033        <T> T
034        spawn(String name, Class<?> maker) throws Collision;
035    }