package com.ca.wcc.reporting.shared;

import org.restlet.client.data.MediaType;
import org.restlet.client.data.Preference;
import org.restlet.client.resource.ClientProxy;
import org.restlet.client.resource.Delete;
import org.restlet.client.resource.Get;
import org.restlet.client.resource.Post;
import org.restlet.client.resource.Result;

import com.google.gwt.core.client.GWT;

public interface ReportAsyncRestlet extends ClientProxy {
	static final LazyInit lazyInit=new LazyInit();
	static class LazyInit{
		static  ReportAsyncRestlet singleton;
		public ReportAsyncRestlet get(){
			if (singleton==null) {
				singleton= GWT.create(ReportAsyncRestlet.class);
		
				// Set up the contact resource
				singleton.getClientResource().setReference("/jersey/report");
				singleton.getClientResource().getClientInfo().getAcceptedMediaTypes().add(
						new Preference<MediaType>(MediaType.APPLICATION_JSON));
			}
			return singleton;
		}
	}
	
    @Get("json") // the content type seems to be used only for content negotiation of the response
    public void get(String id,Result<ReportHandle> callback);
    @Post
    public void postReport(ReportHandle contact, Result<Void> callback);
    @Delete
    public void remove(Result<Void> callback);
}