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 }