blob: a01295211091c425ed9d141077f1be0fd4f6577e [file] [log] [blame]
package myPackage;
import java.util.Date;
import java.util.List;
import javax.ws.rs.core.MediaType;
import org.apache.wink.client.ClientResponse;
import org.apache.wink.client.Resource;
import org.apache.wink.client.RestClient;
import org.apache.wink.common.internal.utils.MediaTypeUtils;
import org.apache.wink.common.model.app.AppCollection;
import org.apache.wink.common.model.app.AppService;
import org.apache.wink.common.model.app.AppWorkspace;
import org.apache.wink.common.model.atom.AtomEntry;
import org.apache.wink.common.model.atom.AtomFeed;
import org.apache.wink.common.model.atom.AtomLink;
import org.apache.wink.common.model.atom.AtomPerson;
import org.apache.wink.common.model.atom.AtomText;
public class APP_Client_Wink {
private static String SERVICE_URL = "http://localhost:8080/APP_Server_Wink/blog/";
private static String FEED_URL = "http://localhost:8080/APP_Server_Wink/blog/entries/";
private static String ENTRY_URL = "http://localhost:8080/APP_Server_Wink/blog/entries/kan_ocr";
private static RestClient restClient = new RestClient();
public static void main(String[] args) {
System.out.println("--- I. Contents of Service Document at " + SERVICE_URL + " ---");
getServiceDocument();
System.out.println("--- II. Contents of Feed Document at " + FEED_URL + " ---");
getEntries();
AtomEntry newEntry = createNewEntry();
System.out.println("--- III. Posting a new entry into the Feed ---");
postEntry(newEntry);
System.out.println("--- IV. Contents of Feed Document after Post ---");
getEntries();
AtomEntry changedEntry = changeEntry(newEntry);
System.out.println("--- V. Changing the last entry posted ---");
putEntry(changedEntry);
System.out.println("--- VI. Entry content after change ---");
getEntry();
System.out.println("--- VII. Deleting the last entry posted ---");
deleteEntry();
System.out.println("--- VIII. Contents of Feed Document after Delete ---");
getEntries();
}
private static void getServiceDocument() {
Resource resource = restClient.resource(SERVICE_URL);
AppService service =
resource.accept(MediaTypeUtils.ATOM_SERVICE_DOCUMENT).get(AppService.class);
List<AppWorkspace> workspaces = service.getWorkspace();
for (AppWorkspace workspace : workspaces) {
System.out.println("\t" + workspace.getTitle().getValue());
List<AppCollection> collections = workspace.getCollection();
for (AppCollection collection : collections) {
System.out.println("\t" + collection.getTitle().getValue()
+ "\t:\t"
+ collection.getHref());
}
System.out.print("\n");
}
}
private static void getEntries() {
Resource feedResource = restClient.resource(FEED_URL);
AtomFeed feed = feedResource.accept(MediaType.APPLICATION_ATOM_XML).get(AtomFeed.class);
int counter = 1;
System.out.println("\t" + feed.getTitle().getValue() + "\n");
List<AtomEntry> entries = feed.getEntries();
for (AtomEntry atomEntry : entries) {
System.out.print("\t" + counter++ + ") ");
displayEntry(atomEntry);
}
}
private static AtomEntry createNewEntry() {
AtomEntry entry = new AtomEntry();
entry.setId("kan_ocr");
entry.setTitle(new AtomText("New algorithm to detect and split merged characters in Kannada OCR"));
AtomLink link = new AtomLink();
link.setHref(FEED_URL + "/" + entry.getId());
entry.getLinks().add(link);
entry.setUpdated(new Date());
entry.setPublished(new Date());
entry.setSummary(new AtomText("The new algorithm to detect and split merged characters in " +
"Kannada OCR is yeilding good results. We will soon be publishing the " +
"algorithm and results in one of the upcoming conferences."));
AtomPerson person = new AtomPerson();
person.setName("ShivaHR");
entry.getAuthors().add(person);
return entry;
}
private static AtomEntry changeEntry(AtomEntry curEntry) {
curEntry.setTitle(new AtomText("A new algorithm to detect and split merged characters in Kannada OCR will be published soon!"));
return curEntry;
}
private static void postEntry(AtomEntry newEntry) {
Resource feedResource = restClient.resource(FEED_URL);
ClientResponse response =
feedResource.contentType(MediaType.APPLICATION_ATOM_XML).post(newEntry);
if (response.getStatusCode() == 201) {
System.out.println("\t" + "Post successful\n");
} else {
System.out.println("\t" + "Response code received from server = "
+ response.getStatusCode()
+ "\n");
}
}
private static void putEntry(AtomEntry changedEntry) {
Resource feedResource = restClient.resource(ENTRY_URL);
ClientResponse response =
feedResource.contentType(MediaType.APPLICATION_ATOM_XML).put(changedEntry);
if (response.getStatusCode() == 200) {
System.out.println("\t" + "Change successful\n");
} else {
System.out.println("\t" + "Response code received from server = "
+ response.getStatusCode()
+ "\n");
}
}
private static void getEntry() {
Resource feedResource = restClient.resource(ENTRY_URL);
AtomEntry atomEntry = feedResource.accept(MediaType.APPLICATION_ATOM_XML).get(AtomEntry.class);
System.out.print("\t");
displayEntry(atomEntry);
}
private static void deleteEntry() {
Resource feedResource = restClient.resource(ENTRY_URL);
ClientResponse response = feedResource.delete();
if (response.getStatusCode() == 204) {
System.out.println("\t" + "Delete successful\n");
} else {
System.out.println("\t" + "Response code received from server = "
+ response.getStatusCode()
+ "\n");
}
}
private static void displayEntry(AtomEntry atomEntry) {
System.out.println(atomEntry.getTitle().getValue());
System.out.println("\t" + atomEntry.getUpdated().toString());
System.out.println("\t" + atomEntry.getSummary().getValue() + "\n");
}
}