package org.drools.guvnor.server.jaxrs;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.ws.rs.core.MediaType;
import org.apache.abdera.Abdera;
import org.apache.abdera.model.Document;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.ExtensibleElement;
import org.apache.abdera.model.Feed;
import org.apache.abdera.model.Link;
import org.drools.repository.utils.IOUtils;
import org.drools.util.codec.Base64;
public class RESTClientExample {
private URL baseURL;
private Abdera abdera = new Abdera();
public RESTClientExample(URL baseURL) {
this.baseURL = baseURL;
}
public void testGetPackagesForAtom() throws MalformedURLException, IOException {
URL url = new URL(baseURL, "rest/packages");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("Authorization",
"Basic " + new Base64().encodeToString(( "admin:admin".getBytes() )));
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML);
connection.connect();
//System.out.println(IOUtils.toString(connection.getInputStream()));
InputStream in = connection.getInputStream();
Document<Feed> doc = abdera.getParser().parse(in);
Feed feed = doc.getRoot();
System.out.println("BaseUriPath: " + feed.getBaseUri().getPath());
System.out.println("Title: " + feed.getTitle());
Iterator<Entry> it = feed.getEntries().iterator();
while (it.hasNext()) {
Entry entry = it.next();
System.out.println("Title: " + entry.getTitle());
List<Link> links = entry.getLinks();
System.out.println("Href: " + links.get(0).getHref().getPath());
}
}
public void testGetPackageForAtom() throws MalformedURLException, IOException {
URL url =new URL(baseURL, "rest/packages/mortgages");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("Authorization",
"Basic " + new Base64().encodeToString(( "admin:admin".getBytes() )));
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML);
InputStream in = connection.getInputStream();
//System.out.println(IOUtils.toString(connection.getInputStream()));
Document<Entry> doc = abdera.getParser().parse(in);
Entry entry = doc.getRoot();
System.out.println("BaseUri: " + entry.getBaseUri().getPath());
System.out.println("Title: " + entry.getTitle());
System.out.println("Published: " + entry.getPublished());
System.out.println("Author: " + entry.getAuthor().getName());
System.out.println("Summary: " + entry.getSummary());
System.out.println("ContentSrcPath: " + entry.getContentSrc().getPath());
List<Link> links = entry.getLinks();
Map<String, Link> linksMap = new HashMap<String, Link>();
for(Link link : links){
System.out.println("Link Title: " + link.getTitle());
System.out.println("Link Path: " + link.getHref().getPath());
linksMap.put(link.getTitle(), link);
}
ExtensibleElement metadataExtension = entry.getExtension(Translator.METADATA);
ExtensibleElement archivedExtension = metadataExtension.getExtension(Translator.ARCHIVED);
System.out.println("ARCHIVED: " + archivedExtension.getSimpleExtension(Translator.VALUE));
ExtensibleElement uuidExtension = metadataExtension.getExtension(Translator.UUID);
System.out.println("UUID: " + uuidExtension.getSimpleExtension(Translator.VALUE));
ExtensibleElement checkinCommentExtension = metadataExtension.getExtension(Translator.CHECKIN_COMMENT);
System.out.println("CHECKIN_COMMENT: " + checkinCommentExtension.getSimpleExtension(Translator.VALUE));
ExtensibleElement versionNumberExtension = metadataExtension.getExtension(Translator.VERSION_NUMBER);
System.out.println("VERSION_NUMBER: " + versionNumberExtension.getSimpleExtension(Translator.VALUE));
}
public void testGetPackageSource() throws Exception {
URL url = new URL(baseURL, "rest/packages/mortgages/source");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Authorization",
"Basic " + new Base64().encodeToString(( "admin:admin".getBytes() )));
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", MediaType.WILDCARD);
connection.connect();
System.out.println("ResponseCode: " + connection.getResponseCode());
System.out.println("MediaType: " + connection.getContentType());
//String result = IOUtils.toString(connection.getInputStream());
}
public void testGetPackageBinary () throws Exception {
URL url = new URL(baseURL, "rest/packages/mortgages/binary");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Authorization",
"Basic " + new Base64().encodeToString(( "admin:admin".getBytes() )));
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", MediaType.APPLICATION_OCTET_STREAM);
connection.connect();
System.out.println("ResponseCode: " + connection.getResponseCode());
System.out.println("MediaType: " + connection.getContentType());
InputStream is = connection.getInputStream();
}
public void testGetPackageVersionsForAtom() throws MalformedURLException, IOException {
URL url = new URL(baseURL, "rest/packages/mortgages/versions");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("Authorization",
"Basic " + new Base64().encodeToString(( "admin:admin".getBytes() )));
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML);
connection.connect();
//System.out.println(IOUtils.toString(connection.getInputStream()));
InputStream in = connection.getInputStream();
Document<Feed> doc = abdera.getParser().parse(in);
Feed feed = doc.getRoot();
List<Entry> entries = feed.getEntries();
for(Entry entry : entries){
System.out.println("Version title: " + entry.getTitle());
System.out.println("Href: " + entry.getLinks().get(0).getHref().getPath());
}
}
public void testGetHistoricalPackageForAtom() throws MalformedURLException, IOException {
URL url = new URL(baseURL, "rest/packages/mortgages/versions/5");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("Authorization",
"Basic " + new Base64().encodeToString(( "admin:admin".getBytes() )));
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", MediaType.APPLICATION_ATOM_XML);
connection.connect();
//System.out.println(IOUtils.toString(connection.getInputStream()));
InputStream in = connection.getInputStream();
Document<Entry> doc = abdera.getParser().parse(in);
Entry entry = doc.getRoot();
System.out.println("BaseUri: " + entry.getBaseUri().getPath());
System.out.println("Title: " + entry.getTitle());
System.out.println("Summary: " + entry.getSummary());
System.out.println("ContentSrc: " + entry.getContentSrc().getPath());
List<Link> links = entry.getLinks();
Map<String, Link> linksMap = new HashMap<String, Link>();
for(Link link : links){
System.out.println("Link Title: " + link.getTitle());
System.out.println("Link Path: " + link.getHref().getPath());
linksMap.put(link.getTitle(), link);
}
ExtensibleElement metadataExtension = entry.getExtension(Translator.METADATA);
ExtensibleElement archivedExtension = metadataExtension.getExtension(Translator.ARCHIVED);
System.out.println("ARCHIVED: " + archivedExtension.getSimpleExtension(Translator.VALUE));
ExtensibleElement uuidExtension = metadataExtension.getExtension(Translator.UUID);
System.out.println("UUID: " + uuidExtension.getSimpleExtension(Translator.VALUE));
ExtensibleElement checkinCommentExtension = metadataExtension.getExtension(Translator.CHECKIN_COMMENT);
System.out.println("CHECKIN_COMMENT: " + checkinCommentExtension.getSimpleExtension(Translator.VALUE));
ExtensibleElement versionNumberExtension = metadataExtension.getExtension(Translator.VERSION_NUMBER);
System.out.println("VERSION_NUMBER: " + versionNumberExtension.getSimpleExtension(Translator.VALUE));
}
public static void main(String[] args) throws Exception {
String baseURL = "http://127.0.0.1:8080/guvnor-5.4.0-SNAPSHOT-jboss-as-7.0/";
RESTClientExample client = new RESTClientExample(new URL(baseURL));
client.testGetHistoricalPackageForAtom();
}
}