restored UserResource.java

git-svn-id: svn://anubis/gvsu@277 45c1a28c-8058-47b2-ae61-ca45b979098e
This commit is contained in:
josh 2008-11-29 16:55:10 +00:00
parent fe87ea7e8f
commit 3a2b1ab9b9

View File

@ -1,177 +1,94 @@
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// //
// Filename: BookResource.java // Filename: UserResource.java
// Description: // Description:
// //
// $Id:$ // $Id:$
// //
//---------------------------------------------------------------------- //----------------------------------------------------------------------
package edu.gvsu.cis.rest.example;
import java.io.IOException;
import java.io.IOException;
import org.restlet.Context;
import org.restlet.Context; import org.restlet.data.Form;
import org.restlet.data.Form; import org.restlet.data.MediaType;
import org.restlet.data.MediaType; import org.restlet.data.Request;
import org.restlet.data.Request; import org.restlet.data.Response;
import org.restlet.data.Response; import org.restlet.resource.Resource;
import org.restlet.data.Status; import org.restlet.data.Status;
import org.restlet.resource.DomRepresentation; import org.restlet.resource.DomRepresentation;
import org.restlet.resource.Representation; import org.restlet.resource.Representation;
import org.restlet.resource.Variant; import org.restlet.resource.Variant;
public class UserResource extends Resource
/** {
*
* Book Resource. This handles HTTP requests against a specific Book resource. public UserResource(Context context, Request request, Response response)
* e.g. URIs of the form /v1/books/{id} {
* super(context, request, response);
* @author Jonathan Engelsma String id = (String) request.getAttributes().get("id");
* getVariants().add(new Variant(MediaType.TEXT_XML));
*/ }
public class BookResource extends BaseResource {
/**
private Book book; * handle HTTP GET requests.
*/
/** @Override
* Load up the book resource data that is being called on. public Representation getRepresentation(Variant variant)
* @param context Context of the HTTP request. {
* @param request The HTTP request. DomRepresentation rep = null;
* @param response The HTTP response that will be returned to the caller. if (variant.getMediaType().equals(MediaType.TEXT_XML))
*/ {
public BookResource(Context context, Request request, Response response) try
{ {
super(context, request, response); rep = new DomRepresentation(MediaType.TEXT_XML);
System.out.println("In BookResource"); getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND);
String id = (String) request.getAttributes().get("id"); rep.getDocument().normalizeDocument();
this.book = findBook(id); }
if(this.book != null) { catch (IOException e)
getVariants().add(new Variant(MediaType.TEXT_XML)); {
} e.printStackTrace();
} }
}
/** return rep;
* handle HTTP GET requests. Return an XML representation of the book resource. }
*/
@Override @Override
public Representation getRepresentation(Variant variant) public boolean allowDelete()
{ {
DomRepresentation rep=null; return true;
if (variant.getMediaType().equals(MediaType.TEXT_XML)){ }
try {
if (book!=null){ @Override
rep = book.getDomRepresentation(); public void delete()
} {
else{ /*
rep = new DomRepresentation(MediaType.TEXT_XML); if (this.book != null)
getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND); {
//TODO: we need to return a 404 here. getContainer().delete(this.book);
//Error.embedErrorInResponse(rep.getDocument(),MediaType.TEXT_XML,Error.ErrorCode.RESOURCE_UNDEFINED); getContainer().commit();
} getResponse().setStatus(Status.SUCCESS_OK);
rep.getDocument().normalizeDocument(); } else {
getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND);
} catch (IOException e){ }
e.printStackTrace(); */
} }
}
return rep; /**
} * PUT is implemented.
*/
@Override
@Override public boolean allowPut()
public boolean allowDelete() { {
return true; return true;
} }
/** /**
* Handle an HTTP DELETE request. Delete the book resource. * Update a resource in response to an HTTP PUT call.
*/ */
@Override @Override
public void delete() public void put(Representation entity)
{ {
if (this.book != null) { }
getContainer().delete(this.book); }
// TODO: need to delete the book reviews here as well.
getContainer().commit();
getResponse().setStatus(Status.SUCCESS_OK);
} else {
getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND);
}
}
/**
* PUT is implemented.
*/
@Override
public boolean allowPut() {
// TODO Auto-generated method stub
return true;
}
/**
* Update a resource in response to an HTTP PUT call.
*/
@Override
public void put(Representation entity)
{
try {
if (entity.getMediaType().equals(MediaType.APPLICATION_WWW_FORM, true) && (this.book != null)) {
// Parse the entity as a web form
Form form = new Form(entity);
// update the loaded Book object
String value = form.getFirstValue("book[authors]");
if (value != null) {
book.setAuthors(value);
}
value = form.getFirstValue("book[isbn]");
if(value != null) {
book.setIsbn(value);
}
value = form.getFirstValue("book[title]");
if(value != null) {
book.setTitle(value);
}
value = form.getFirstValue("book[publisher]");
if(value != null) {
book.setPublisher(value);
}
value = form.getFirstValue("book[year]");
if (value != null ) {
book.setYear(value);
}
// commit the changes.
getContainer().set(book);
getContainer().commit();
getResponse().setStatus(Status.SUCCESS_OK);
getResponse().setEntity(this.book.getDomRepresentation());
} else {
// Intentionnally hide the bookmark existence
getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND);
}
} catch (IOException e) {
getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
e.printStackTrace();
}
}
/**
* Returns the book instance.
* @return a reference to a Book instance.
*/
public Book getBook() {
return this.book;
}
}