// Path: src/main/java/com/plexobject/rbac/domain/Tuple.java
// public class Tuple {
// 	final Object[] objects;
// 
// 	public Tuple(Object... objects) {
// 		if (null == objects) {
// 			throw new NullPointerException("no objects");
// 		}
// 
// 		this.objects = objects;
// 	}
// 
// 	public int size() {
// 		return objects.length;
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T get(int i) {
// 		return (T) objects[i];
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T first() {
// 		return (T) get(0);
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T second() {
// 		return (T) get(1);
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T third() {
// 		return (T) get(2);
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T last() {
// 		return (T) get(objects.length - 1);
// 	}
// 
// 	/**
// 	 * @see java.lang.Object#equals(Object)
// 	 */
// 	@Override
// 	public boolean equals(Object object) {
// 		if (!(object instanceof Tuple)) {
// 			return false;
// 		}
// 		Tuple rhs = (Tuple) object;
// 		if (objects.length != rhs.objects.length) {
// 			return false;
// 		}
// 		EqualsBuilder eqBuilder = new EqualsBuilder();
// 		for (int i = 0; i < objects.length; i++) {
// 			eqBuilder.append(objects[i], rhs.objects[i]);
// 		}
// 		return eqBuilder.isEquals();
// 	}
// 
// 	/**
// 	 * @see java.lang.Object#hashCode()
// 	 */
// 	@Override
// 	public int hashCode() {
// 		HashCodeBuilder hashBuilder = new HashCodeBuilder(786529047, 1924536713);
// 		for (int i = 0; i < objects.length; i++) {
// 			hashBuilder.append(objects[i]);
// 		}
// 		return hashBuilder.toHashCode();
// 	}
// 
// 	/**
// 	 * @see java.lang.Object#toString()
// 	 */
// 	@Override
// 	public String toString() {
// 		ToStringBuilder strBuilder = new ToStringBuilder(this);
// 		for (int i = 0; i < objects.length; i++) {
// 			strBuilder.append(objects[i]);
// 		}
// 		return strBuilder.toString();
// 	}
// }


import java.io.IOException;
import com.plexobject.rbac.domain.Tuple;
package com.plexobject.rbac.http;



public interface RestClient {
	public static int OK = 200;
	public static int OK_MIN = 200;
	public static int OK_MAX = 299;
	public static int OK_CREATED = 201;
	public static int OK_ACCEPTED = 202;
	public static int REDIRECT_PERMANENTLY = 301;
	public static int REDIRECT_FOUND = 302;
	public static int CLIENT_ERROR_BAD_REQUEST = 400;
	public static int CLIENT_ERROR_UNAUTHORIZED = 401;
	public static int CLIENT_ERROR_FORBIDDEN = 403;
	public static int CLIENT_ERROR_NOT_FOUND = 404;
	public static int CLIENT_ERROR_TIMEOUT = 408;
	public static int CLIENT_ERROR_CONFLICT = 409;
	public static int CLIENT_ERROR_PRECONDITION = 412;
	public static int SERVER_INTERNAL_ERROR = 500;
	public static int SERVICE_UNAVAILABLE = 503;

// Path: src/main/java/com/plexobject/rbac/domain/Tuple.java
// public class Tuple {
// 	final Object[] objects;
// 
// 	public Tuple(Object... objects) {
// 		if (null == objects) {
// 			throw new NullPointerException("no objects");
// 		}
// 
// 		this.objects = objects;
// 	}
// 
// 	public int size() {
// 		return objects.length;
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T get(int i) {
// 		return (T) objects[i];
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T first() {
// 		return (T) get(0);
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T second() {
// 		return (T) get(1);
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T third() {
// 		return (T) get(2);
// 	}
// 
// 	@SuppressWarnings("unchecked")
// 	public <T> T last() {
// 		return (T) get(objects.length - 1);
// 	}
// 
// 	/**
// 	 * @see java.lang.Object#equals(Object)
// 	 */
// 	@Override
// 	public boolean equals(Object object) {
// 		if (!(object instanceof Tuple)) {
// 			return false;
// 		}
// 		Tuple rhs = (Tuple) object;
// 		if (objects.length != rhs.objects.length) {
// 			return false;
// 		}
// 		EqualsBuilder eqBuilder = new EqualsBuilder();
// 		for (int i = 0; i < objects.length; i++) {
// 			eqBuilder.append(objects[i], rhs.objects[i]);
// 		}
// 		return eqBuilder.isEquals();
// 	}
// 
// 	/**
// 	 * @see java.lang.Object#hashCode()
// 	 */
// 	@Override
// 	public int hashCode() {
// 		HashCodeBuilder hashBuilder = new HashCodeBuilder(786529047, 1924536713);
// 		for (int i = 0; i < objects.length; i++) {
// 			hashBuilder.append(objects[i]);
// 		}
// 		return hashBuilder.toHashCode();
// 	}
// 
// 	/**
// 	 * @see java.lang.Object#toString()
// 	 */
// 	@Override
// 	public String toString() {
// 		ToStringBuilder strBuilder = new ToStringBuilder(this);
// 		for (int i = 0; i < objects.length; i++) {
// 			strBuilder.append(objects[i]);
// 		}
// 		return strBuilder.toString();
// 	}
// }


// Path: src/main/java/com/plexobject/rbac/http/RestClient.java
import java.io.IOException;
import com.plexobject.rbac.domain.Tuple;

package com.plexobject.rbac.http;



public interface RestClient {
	public static int OK = 200;
	public static int OK_MIN = 200;
	public static int OK_MAX = 299;
	public static int OK_CREATED = 201;
	public static int OK_ACCEPTED = 202;
	public static int REDIRECT_PERMANENTLY = 301;
	public static int REDIRECT_FOUND = 302;
	public static int CLIENT_ERROR_BAD_REQUEST = 400;
	public static int CLIENT_ERROR_UNAUTHORIZED = 401;
	public static int CLIENT_ERROR_FORBIDDEN = 403;
	public static int CLIENT_ERROR_NOT_FOUND = 404;
	public static int CLIENT_ERROR_TIMEOUT = 408;
	public static int CLIENT_ERROR_CONFLICT = 409;
	public static int CLIENT_ERROR_PRECONDITION = 412;
	public static int SERVER_INTERNAL_ERROR = 500;
	public static int SERVICE_UNAVAILABLE = 503;

	Tuple get(final String path) throws IOException;