// Path: reference/src/main/java/me/doubledutch/stroom/client/StreamConnection.java
// public interface StreamConnection{
// 	public final static int LINEAR=0;
// 	public final static int SYNC=1;
// 	public final static int FLUSH=2;
// 	public final static int NONE=3;
// 
// 	public List<String> get(long index,long endIndex) throws IOException;
// 	public String get(long index) throws IOException;
// 	public String getLast() throws IOException;
// 	public long getCount() throws IOException;
// 	
// 	public long append(JSONObject data) throws IOException,JSONException;
// 	public long append(String data) throws IOException,JSONException;
// 	public List<Long> append(List<String> data) throws IOException,JSONException;
// 	
// 	public long append(JSONObject data,int hint) throws IOException,JSONException;
// 	public long append(String data,int hint) throws IOException,JSONException;
// 	public List<Long> append(List<String> data,int hint) throws IOException,JSONException;
// 
// 	public void truncate(long index) throws IOException;
// }
// 
// Path: reference/src/main/java/me/doubledutch/stroom/client/KVStoreConnection.java
// public interface KVStoreConnection{
// 	public String get(String key) throws IOException;
// 	public List<String> list() throws IOException;
// 	public List<String> search(String pattern) throws IOException;
// }


import java.io.*;
import java.net.*;
import me.doubledutch.stroom.streams.*;
import me.doubledutch.stroom.client.StreamConnection;
import me.doubledutch.stroom.client.KVStoreConnection;
package me.doubledutch.stroom;



public class ScriptAPI{
	private StreamHandler streamHandler;

	public ScriptAPI(StreamHandler handler){
		this.streamHandler=handler;
	}

	private String getStreamName(URI stream){
		String path=stream.getPath();
		if(!path.startsWith("/stream/"))return null;
		return path.substring(path.lastIndexOf("/")+1); // TODO: possibly make smarter and less breakable
	}

// Path: reference/src/main/java/me/doubledutch/stroom/client/StreamConnection.java
// public interface StreamConnection{
// 	public final static int LINEAR=0;
// 	public final static int SYNC=1;
// 	public final static int FLUSH=2;
// 	public final static int NONE=3;
// 
// 	public List<String> get(long index,long endIndex) throws IOException;
// 	public String get(long index) throws IOException;
// 	public String getLast() throws IOException;
// 	public long getCount() throws IOException;
// 	
// 	public long append(JSONObject data) throws IOException,JSONException;
// 	public long append(String data) throws IOException,JSONException;
// 	public List<Long> append(List<String> data) throws IOException,JSONException;
// 	
// 	public long append(JSONObject data,int hint) throws IOException,JSONException;
// 	public long append(String data,int hint) throws IOException,JSONException;
// 	public List<Long> append(List<String> data,int hint) throws IOException,JSONException;
// 
// 	public void truncate(long index) throws IOException;
// }
// 
// Path: reference/src/main/java/me/doubledutch/stroom/client/KVStoreConnection.java
// public interface KVStoreConnection{
// 	public String get(String key) throws IOException;
// 	public List<String> list() throws IOException;
// 	public List<String> search(String pattern) throws IOException;
// }


// Path: reference/src/main/java/me/doubledutch/stroom/ScriptAPI.java
import java.io.*;
import java.net.*;
import me.doubledutch.stroom.streams.*;
import me.doubledutch.stroom.client.StreamConnection;
import me.doubledutch.stroom.client.KVStoreConnection;

package me.doubledutch.stroom;



public class ScriptAPI{
	private StreamHandler streamHandler;

	public ScriptAPI(StreamHandler handler){
		this.streamHandler=handler;
	}

	private String getStreamName(URI stream){
		String path=stream.getPath();
		if(!path.startsWith("/stream/"))return null;
		return path.substring(path.lastIndexOf("/")+1); // TODO: possibly make smarter and less breakable
	}

	public StreamConnection openStream(String name) throws Exception{