Author: krispopat
Date: Mon Mar 26 12:46:22 2012
New Revision: 1305336

URL: http://svn.apache.org/viewvc?rev=1305336&view=rev
Log:
Added api key and policies functions to the java connector framework.

Added:
    
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/ApiKey.java
    
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/Policy.java
Modified:
    
incubator/wookie/trunk/connector/java/src-test/org/apache/wookie/tests/connector/framework/impl/WookieConnectorService.java
    
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java
    
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieConnectorService.java
    
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieServerConnection.java

Modified: 
incubator/wookie/trunk/connector/java/src-test/org/apache/wookie/tests/connector/framework/impl/WookieConnectorService.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/java/src-test/org/apache/wookie/tests/connector/framework/impl/WookieConnectorService.java?rev=1305336&r1=1305335&r2=1305336&view=diff
==============================================================================
--- 
incubator/wookie/trunk/connector/java/src-test/org/apache/wookie/tests/connector/framework/impl/WookieConnectorService.java
 (original)
+++ 
incubator/wookie/trunk/connector/java/src-test/org/apache/wookie/tests/connector/framework/impl/WookieConnectorService.java
 Mon Mar 26 12:46:22 2012
@@ -19,7 +19,11 @@ import static org.junit.Assert.assertTru
 
 import java.io.IOException;
 import java.util.HashMap;
+import java.util.List;
+import java.util.ListIterator;
 
+import org.apache.wookie.connector.framework.ApiKey;
+import org.apache.wookie.connector.framework.Policy;
 import org.apache.wookie.connector.framework.User;
 import org.apache.wookie.connector.framework.Widget;
 import org.apache.wookie.connector.framework.WidgetInstance;
@@ -129,6 +133,48 @@ public class WookieConnectorService {
   }
   
   
- 
+  @Test
+  public void apikeys() throws IOException, WookieConnectorException {
+         String adminPassword = "java";
+         String adminUsername = "java";
+         
+         List<ApiKey> apikeys = service.getAPIKeys(adminUsername, 
adminPassword);
+         int apikeysLength = apikeys.size();
+         assertTrue ( "Unable to get api keys", ( apikeysLength > 0));
+         ApiKey newKey = new ApiKey ( null, "tester", "[email protected]" );
+         service.createApiKey(newKey, adminUsername, adminPassword);
+         
+         apikeys = service.getAPIKeys(adminUsername, adminPassword);
+         
+         boolean foundKey = false;
+         ListIterator<ApiKey> li = apikeys.listIterator();
+         while (li.hasNext()) {
+                 ApiKey akey = li.next();
+                 if ( akey.getEmail().equals("[email protected]") && 
akey.getKey().equals("tester")) {
+                         newKey.setId(akey.getId());
+                         foundKey = true;
+                 }
+         }
+         assertTrue ( "New key not created", foundKey );
+         
+         service.removeApiKey(newKey, adminUsername, adminPassword);
+         assertEquals ( service.getAPIKeys(adminUsername, 
adminPassword).size(), apikeysLength);
+  }
+  
   
+  @Test
+  public void policyTest ( ) throws IOException, WookieConnectorException {
+         String adminPassword = "java";
+         String adminUsername = "java";
+         
+         List<Policy> policies = service.getPolicies(adminUsername, 
adminPassword, null);
+         int policyListSize = policies.size();
+         assertTrue ( "Unable to get policies", (policyListSize > 0) );
+         String scope = "http://test.scope/8475374";;
+         Policy policy = new Policy ( scope, "http://nowhere.com";, "ALLOW" );
+         service.createPolicy(policy, adminUsername, adminPassword);
+         assertTrue ( "New policy not created", 
service.getPolicies(adminUsername, adminPassword, scope).size() > 0);
+         service.deletePolicy(policy, adminUsername, adminPassword);
+         assertEquals ( service.getPolicies(adminUsername, adminPassword, 
null).size(), policyListSize);
+  }
 }

Modified: 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java?rev=1305336&r1=1305335&r2=1305336&view=diff
==============================================================================
--- 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java
 (original)
+++ 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/AbstractWookieConnectorService.java
 Mon Mar 26 12:46:22 2012
@@ -24,19 +24,16 @@ import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
-import java.net.ProtocolException;
 import java.net.URL;
-import java.net.URLConnection;
 import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
-//import org.apache.commons.httpclient.HttpClient;
-//import org.apache.commons.httpclient.HttpException;
-//import org.apache.commons.httpclient.methods.DeleteMethod;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -45,6 +42,7 @@ import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 import org.xml.sax.SAXException;
 
+
 public abstract class AbstractWookieConnectorService implements 
IWookieConnectorService {
        
        private static final Logger logger = 
LoggerFactory.getLogger(AbstractWookieConnectorService.class);
@@ -99,10 +97,6 @@ public abstract class AbstractWookieConn
                String queryString;
                try {
                        queryString = createInstanceParams(instance);
-                       //queryString = "id_key=";
-                       //queryString += URLEncoder.encode(instance.getIdKey(), 
"UTF-8");
-                       //queryString += "&api_key=";
-                       //queryString += 
(URLEncoder.encode(getConnection().getApiKey(), "UTF-8"));
                        queryString += "&is_public=";
                        if ( is_public ) {
                                queryString += "true";
@@ -158,7 +152,6 @@ public abstract class AbstractWookieConn
                        String property = convertISToString(s);
                        if ( urlConn.getResponseCode() == 
HttpURLConnection.HTTP_NOT_FOUND) {
                                // should mean the property isn't there so just 
return null
-                               // TODO - do we need to throw an exception here?
                                return null;
                        }
                        return property;
@@ -195,19 +188,11 @@ public abstract class AbstractWookieConn
                }
                URL url = null;
                try {
-                       //url = new URL(conn.getURL() + 
"/properties?api_key="+URLEncoder.encode(conn.getApiKey(), "UTF-8"));
                        url = new URL(conn.getURL() + "/properties?"+putString);
-                       //url = new URL(conn.getURL() + "/WidgetServiceServlet" 
+ queryString);
                        HttpURLConnection urlConn = (HttpURLConnection) 
url.openConnection();
                        urlConn.setRequestMethod("PUT");
                        urlConn.connect();
-                       //urlConn.setRequestProperty("Content-Type", 
"application/x-www-form-urlencoded");
-
-                       //urlConn.setDoOutput(true);
-                       
-                       //OutputStreamWriter out = new 
OutputStreamWriter(urlConn.getOutputStream());
-                       //out.write(putString);
-                       //out.close();          
+       
                        if (urlConn.getResponseCode() > 201) {
                                throw new 
IOException(urlConn.getResponseMessage());
                        }
@@ -300,29 +285,7 @@ public abstract class AbstractWookieConn
                return instance;
        }
 
-       /**
-        * Parse an XML document returned from the Wookie server that describes 
a
-        * widget instance.
-        * 
-        * @param widgetId
-        *            the identifier of the widget this document represents
-        * @param xml
-        *            description of the instance as returned by the widget 
server
-        *            when the widget was instantiated.
-        * 
-        * @return the identifier for this instance
-        */
-       public WidgetInstance parseInstance(String widgetId, Document xml) {
-               Element rootEl = xml.getDocumentElement();
-               String url = getNodeTextContent(rootEl, "url");
-               String title = getNodeTextContent(rootEl, "title");
-               String height = getNodeTextContent(rootEl, "height");
-               String width = getNodeTextContent(rootEl, "width");
-               String idKey = getNodeTextContent(rootEl, "identifier");
-               WidgetInstance instance = new WidgetInstance(url, widgetId, 
title, height, width, idKey);
-               logger.debug(instance.toString());
-               return instance;
-       }
+
 
        /**
         * @refactor At time of writing the REST API for adding a participant is
@@ -377,6 +340,46 @@ public abstract class AbstractWookieConn
                }
        }
        
+       
+       
+       /**
+        * Removes a user as a participant from a particular widget instance
+        * @param instance
+        * @param user
+        * @throws WookieConnectorException
+        */
+       public void removeParticipantFromWidget ( WidgetInstance instance, User 
user ) throws WookieConnectorException {
+               StringBuilder queryString = new 
StringBuilder(createInstanceParams(instance));
+               try {
+                       queryString.append("&participant_id=");
+                       
queryString.append(URLEncoder.encode(user.getLoginName(), "UTF-8"));
+               }
+               catch (UnsupportedEncodingException e) {
+                               throw new WookieConnectorException ( "UTF-8 
must be supported", e);
+               }
+               URL url = null;
+               try {
+                       url = new URL(conn.getURL() + 
"/participants?"+queryString);
+                       HttpURLConnection urlConn = (HttpURLConnection) 
url.openConnection();
+                       urlConn.setRequestMethod("DELETE");
+                       urlConn.connect();
+               }
+               catch (MalformedURLException e) {
+                       throw new WookieConnectorException( "Participants rest 
URL is incorrect: " + url, e);
+               }
+               catch (IOException e) {
+                       StringBuilder sb = new StringBuilder( "Problem adding a 
participant. ");
+                       sb.append("URL: ");
+                       sb.append(url);
+                       sb.append(" data: ");
+                       sb.append(queryString);
+                       throw new WookieConnectorException(sb.toString(), e);
+               }
+                       
+       
+
+       }
+       
 
        /**
         * Get a set of all the available widgets in the server. If there is an
@@ -551,8 +554,246 @@ public abstract class AbstractWookieConn
        }
        
        
+       // 
-----------------------------------------------------------------------------------
+       // admin functions requiring basic authentication
+       
+
+       /**
+        * Gets a list of all the api keys registered in wookie
+        * @param adminUsername
+        * @param adminPassword
+        * @return
+        * @throws WookieConnectorException
+        * @throws IOException
+        */
+       public List<ApiKey> getAPIKeys(String adminUsername, String 
adminPassword) throws WookieConnectorException, IOException {
+               
+               URL url;
+               ArrayList<ApiKey> keys =  new ArrayList<ApiKey>();
+               try {
+                       url = new URL ( conn.getURL() + "/keys" );
+                       HttpURLConnection httpConnection = (HttpURLConnection) 
url.openConnection();
+                       addBasicAuthToConnection (httpConnection, 
adminUsername, adminPassword );
+                       InputStream is = httpConnection.getInputStream();
+                       if (httpConnection.getResponseCode() > 200) {
+                               throw new 
IOException(httpConnection.getResponseMessage());
+                       }
+                       Document doc = parseInputStreamAsDocument ( is );
+                       Element rootElement = doc.getDocumentElement();
+                       NodeList keyNodes = 
rootElement.getElementsByTagName("key");
+                       for ( int i = 0; i < keyNodes.getLength(); i++ ) {
+                               Element keyElement = (Element) keyNodes.item(i);
+                               ApiKey key = new ApiKey ( 
keyElement.getAttribute("id"),
+                                               
keyElement.getAttribute("value"),
+                                               
keyElement.getAttribute("email"));
+                               keys.add(key);
+                       }
+               }
+               catch ( MalformedURLException e ) {
+                       throw new WookieConnectorException ( "Bad url: ", e);
+               } 
+               catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+                       throw new WookieConnectorException ( "Problem parsing 
data returned by Wookie: ", e);
+               } 
+               catch (SAXException e) {
+                       e.printStackTrace();
+                       throw new WookieConnectorException ( "Problem parsing 
data returned by Wookie: ", e);
+               }
+               return keys;
+       }
+       
+       
+       /**
+        * Creates a new api key
+        * @param newKey
+        * @param adminUsername
+        * @param adminPassword
+        * @throws WookieConnectorException
+        */
+       public void createApiKey ( ApiKey newKey, String adminUsername, String 
adminPassword ) throws WookieConnectorException {
+               String paramString = "";
+               try{
+                       paramString += "apikey=";
+                       paramString += URLEncoder.encode(newKey.getKey(), 
"UTF-8");
+                       paramString += "&email=";
+                       paramString += URLEncoder.encode(newKey.getEmail(), 
"UTF-8");
+               }
+               catch (UnsupportedEncodingException e) {
+                       throw new WookieConnectorException ( "Must support 
UTF-8", e );
+               }
+               URL url = null;
+               try {
+                       url = new URL ( conn.getURL() + "/keys" );
+                       HttpURLConnection urlConn = (HttpURLConnection) 
url.openConnection();
+                       addBasicAuthToConnection(urlConn, adminUsername, 
adminPassword);
+                       urlConn.setDoOutput(true);
+                       OutputStreamWriter wr = new 
OutputStreamWriter(urlConn.getOutputStream());
+                       wr.write(paramString);
+                       wr.flush();
+                       if (urlConn.getResponseCode() > 201) {
+                               throw new 
IOException(urlConn.getResponseMessage());
+                       }
+               }
+               catch (MalformedURLException e) {
+                       throw new WookieConnectorException( "ApiKeys rest URL 
is incorrect: " + url, e);
+               }
+               catch (IOException e) {
+                       StringBuilder sb = new StringBuilder( "Problem adding 
an apikey. ");
+                       sb.append("URL: ");
+                       sb.append(url);
+                       sb.append(" data: ");
+                       sb.append(paramString);
+                       throw new WookieConnectorException(sb.toString(), e);
+               }
+       }
+       
+       
+       /**
+        * Deletes a specified key
+        * @param key
+        * @throws IOException
+        * @throws WookieConnectorException
+        */
+       public void removeApiKey ( ApiKey key, String adminUsername, String 
adminPassword ) throws IOException, WookieConnectorException {
+               URL url = null;
+               try {
+                       url = new URL ( conn.getURL() + "/keys/"+key.getId());
+                       HttpURLConnection urlConn = (HttpURLConnection) 
url.openConnection();
+                       addBasicAuthToConnection ( urlConn, adminUsername, 
adminPassword );
+                       urlConn.setRequestMethod("DELETE");
+                       urlConn.connect();
+                       if ( urlConn.getResponseCode() > 201 ) {
+                               throw new IOException ( 
urlConn.getResponseMessage());
+                       }
+               }
+               catch ( MalformedURLException e ) {
+                       throw new WookieConnectorException ( "ApiKeys rest URL 
is incorect: " + url, e );
+               }
+       }
+       
        
        
+       /**
+        * Returns a full list of policies
+        * @param adminUsername
+        * @param adminPassword
+        * @param scope - use to define the scope of the search for policies, 
if empty or null all are returned
+        * @return
+        * @throws IOException
+        * @throws WookieConnectorException
+        */
+       public List<Policy> getPolicies( String adminUsername, String 
adminPassword, String scope ) throws IOException, WookieConnectorException {
+               URL url;
+               ArrayList<Policy> policies = new ArrayList<Policy>();
+               try {
+                       String urlString = conn.getURL() + "/policies";
+                       if ( scope != null && scope != "" ) {
+                               urlString += "/" + URLEncoder.encode(scope, 
"UTF-8" );
+                       }
+                       url = new URL ( urlString );
+
+                       HttpURLConnection urlConn = (HttpURLConnection) 
url.openConnection();
+                       addBasicAuthToConnection ( urlConn, adminUsername, 
adminPassword );
+                       urlConn.setRequestProperty("Accept", "text/xml");
+                       if (urlConn.getResponseCode() > 200) {
+                               throw new 
IOException(urlConn.getResponseMessage());
+                       }
+                       Document doc = parseInputStreamAsDocument ( 
urlConn.getInputStream() );
+                       Element rootElement = doc.getDocumentElement();
+                       NodeList policyNodes = 
rootElement.getElementsByTagName("policy");
+                       for ( int i = 0; i < policyNodes.getLength(); i++ ) {
+                               Element keyElement = (Element) 
policyNodes.item(i);
+                               Policy policy = new Policy ( 
keyElement.getAttribute("scope"),
+                                               
keyElement.getAttribute("origin"),
+                                               
keyElement.getAttribute("directive"));
+                               policies.add(policy);
+                       }
+               }
+               catch ( MalformedURLException e ) {
+                       throw new WookieConnectorException ( "Bad url: ", e);
+               } 
+               catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+                       throw new WookieConnectorException ( "Problem parsing 
data returned by Wookie: ", e);
+               } 
+               catch (SAXException e) {
+                       e.printStackTrace();
+                       throw new WookieConnectorException ( "Problem parsing 
data returned by Wookie: ", e);
+               }
+
+               return policies;
+       }
+       
+       
+       /**
+        * Create a new policy
+        * @param newPolicy
+        * @param adminUsername
+        * @param adminPassword
+        * @throws WookieConnectorException
+        */
+       public void createPolicy ( Policy newPolicy, String adminUsername, 
String adminPassword ) throws WookieConnectorException {
+               URL url = null;
+               try {
+                       url = new URL ( conn.getURL() + "/policies" );
+                       HttpURLConnection urlConn = (HttpURLConnection) 
url.openConnection();
+                       addBasicAuthToConnection ( urlConn, adminUsername, 
adminPassword );
+                       urlConn.setDoOutput(true);
+                       OutputStreamWriter wr = new 
OutputStreamWriter(urlConn.getOutputStream());
+                       wr.write(newPolicy.toString());
+                       wr.flush();
+                       if (urlConn.getResponseCode() > 201) {
+                               throw new 
IOException(urlConn.getResponseMessage());
+                       }
+               }
+               catch (MalformedURLException e) {
+                       throw new WookieConnectorException( "Policies rest URL 
is incorrect: " + url, e);
+               }
+               catch (IOException e) {
+                       StringBuilder sb = new StringBuilder( "Problem adding a 
policy. ");
+                       sb.append("URL: ");
+                       sb.append(url);
+                       sb.append(" data: ");
+                       sb.append(newPolicy.toString());
+                       throw new WookieConnectorException(sb.toString(), e);
+               }
+
+       }
+       
+       /**
+        * Deletes a policy
+        * @param policy
+        * @param adminUsername
+        * @param adminPassword
+        * @throws WookieConnectorException
+        * @throws IOException
+        */
+       public void deletePolicy ( Policy policy, String adminUsername, String 
adminPassword ) throws WookieConnectorException, IOException {
+               URL url = null;
+               try {
+                       url = new URL ( conn.getURL() + 
"/policies/"+URLEncoder.encode(policy.toString(), "UTF-8"));
+                       HttpURLConnection urlConn = (HttpURLConnection) 
url.openConnection();
+                       addBasicAuthToConnection ( urlConn, adminUsername, 
adminPassword );
+                       urlConn.setRequestMethod("DELETE");
+                       urlConn.connect();
+                       if ( urlConn.getResponseCode() > 201 ) {
+                               throw new IOException ( 
urlConn.getResponseMessage());
+                       }
+               }
+               catch ( MalformedURLException e ) {
+                       throw new WookieConnectorException ( "Properties rest 
URL is incorect: " + url, e );
+               } 
+               catch (UnsupportedEncodingException e) {
+                       throw new WookieConnectorException ( "Must support 
UTF-8 encoding", e );
+               }
+       }
+       
+       
+       
+       // 
-----------------------------------------------------------------------------------
+       // private functions
+       
        private String getNodeTextContent(Element e, String subElementName ) {
                NodeList nl = e.getElementsByTagName(subElementName);
                if ( nl.getLength() > 0 ) {
@@ -566,28 +807,33 @@ public abstract class AbstractWookieConn
 
        
        
-       
-       /**
-        * Gets the input stream and parses it to a document
-        * 
-        * @param url
-        * @return Document
-        * @throws IOException
-        * @throws ParserConfigurationException
-        * @throws SAXException
-        */
        private Document getURLDoc(URL url) throws IOException, 
ParserConfigurationException, SAXException {
+               InputStream is = getURLInputStream ( url );
+               return parseInputStreamAsDocument ( is );
+       }
+       
+       
+       
+       private InputStream getURLInputStream ( URL url ) throws IOException {
                HttpURLConnection httpConnection = (HttpURLConnection) 
url.openConnection();
                InputStream is = httpConnection.getInputStream();
                if (httpConnection.getResponseCode() > 200) {
                        throw new 
IOException(httpConnection.getResponseMessage());
                }
+               return is;
+       }
+       
+       
+       
+       private Document parseInputStreamAsDocument ( InputStream in ) throws 
ParserConfigurationException, SAXException, IOException {
                DocumentBuilderFactory dbf = 
DocumentBuilderFactory.newInstance();
                DocumentBuilder docb = dbf.newDocumentBuilder();
-               Document parsedDoc = docb.parse(is);
+               Document parsedDoc = docb.parse(in);
                return parsedDoc;
        }
        
+       
+       
        private String createInstanceParams ( WidgetInstance instance ) throws 
WookieConnectorException {
                String queryString;
                try {
@@ -606,6 +852,8 @@ public abstract class AbstractWookieConn
                return queryString;
        }
        
+       
+       
        private String convertISToString (InputStream is ) throws IOException {
                StringWriter writer = new StringWriter();
                
@@ -618,6 +866,77 @@ public abstract class AbstractWookieConn
                }
                writer.close();
                return writer.toString();
-               
+       }
+       
+       
+       /**
+        * Parse an XML document returned from the Wookie server that describes 
a
+        * widget instance.
+        * 
+        * @param widgetId
+        *            the identifier of the widget this document represents
+        * @param xml
+        *            description of the instance as returned by the widget 
server
+        *            when the widget was instantiated.
+        * 
+        * @return the identifier for this instance
+        */
+       private WidgetInstance parseInstance(String widgetId, Document xml) {
+               Element rootEl = xml.getDocumentElement();
+               String url = getNodeTextContent(rootEl, "url");
+               String title = getNodeTextContent(rootEl, "title");
+               String height = getNodeTextContent(rootEl, "height");
+               String width = getNodeTextContent(rootEl, "width");
+               String idKey = getNodeTextContent(rootEl, "identifier");
+               WidgetInstance instance = new WidgetInstance(url, widgetId, 
title, height, width, idKey);
+               logger.debug(instance.toString());
+               return instance;
+       }
+       
+       
+       
+       
+       private void addBasicAuthToConnection ( HttpURLConnection 
urlConnection, String username, String password ){
+               String authString = username + ":" + password;
+               String encodedAuth = encodeBase64String ( authString );
+               urlConnection.setRequestProperty("Authorization", "Basic " + 
encodedAuth );
+       }
+       
+       
+       
+       
+       private String encodeBase64String ( String input ) {
+               String charMap = 
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+               String encodedString = "";
+
+               byte[] inputBytes;
+               try {
+                       inputBytes = input.getBytes("UTF-8");
+               }
+               catch (Exception ignore ) {
+                       inputBytes = input.getBytes();
+               }
+               // pad out so we don't get index out of bounds on input when we 
index at 3 bytes each time
+               if ( inputBytes.length % 3 != 0 ) {
+                       byte[] paddedInput = new byte[inputBytes.length + 
(inputBytes.length % 3)];
+                       System.arraycopy(inputBytes, 0, paddedInput, 0, 
inputBytes.length);
+                       inputBytes = paddedInput;
+               }
+               int encodedStringBoundaryIndex = 0;
+
+               for (int i = 0; i < inputBytes.length; i += 3 ) {
+                       int packed = ((inputBytes[i] & 0xff) << 16) + 
((inputBytes[i+1] & 0xff) << 8) + (inputBytes[i+2] & 0xff);
+                       encodedString = encodedString + charMap.charAt((packed 
>> 18) & 0x3f) + 
+                                                                               
        charMap.charAt((packed >> 12) & 0x3f) + 
+                                                                               
        charMap.charAt((packed >> 6) & 0x3f) + 
+                                                                               
        charMap.charAt(packed & 0x3f);
+                       encodedStringBoundaryIndex += 4;
+                       if ( encodedStringBoundaryIndex == 76 ) {
+                               // we should do a carriage return and line feed 
after 76 bytes for some reason
+                               encodedString += "\r\n";
+                               encodedStringBoundaryIndex = 0;
+                       }
+               }
+               return encodedString;
        }
 }

Added: 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/ApiKey.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/ApiKey.java?rev=1305336&view=auto
==============================================================================
--- 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/ApiKey.java
 (added)
+++ 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/ApiKey.java
 Mon Mar 26 12:46:22 2012
@@ -0,0 +1,57 @@
+package org.apache.wookie.connector.framework;
+
+public class ApiKey {
+       
+       private String id;
+       private String key;
+       private String email;
+
+       
+       
+       public ApiKey ( String id, String key, String email ) {
+               this.id = id;
+               this.key = key;
+               this.email = email;
+       }
+       
+       
+       /**
+        * @return the id
+        */
+       public String getId() {
+               return id;
+       }
+       /**
+        * @param id the id to set
+        */
+       public void setId(String id) {
+               this.id = id;
+       }
+       /**
+        * @return the key
+        */
+       public String getKey() {
+               return key;
+       }
+       /**
+        * @param key the key to set
+        */
+       public void setKey(String key) {
+               this.key = key;
+       }
+       /**
+        * @return the email
+        */
+       public String getEmail() {
+               return email;
+       }
+       /**
+        * @param email the email to set
+        */
+       public void setEmail(String email) {
+               this.email = email;
+       }
+       
+       
+
+}

Added: 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/Policy.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/Policy.java?rev=1305336&view=auto
==============================================================================
--- 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/Policy.java
 (added)
+++ 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/Policy.java
 Mon Mar 26 12:46:22 2012
@@ -0,0 +1,67 @@
+package org.apache.wookie.connector.framework;
+
+public class Policy {
+         private String scope;
+         private String origin;
+         private String directive;
+         
+         public Policy ( String inScope, String inOrigin, String inDirective ) 
{
+                 this.scope = inScope;
+                 this.origin = inOrigin;
+                 this.directive = inDirective;
+         }
+
+       /**
+        * @return the scope
+        */
+       public String getScope() {
+               return scope;
+       }
+
+       /**
+        * @param scope the scope to set
+        */
+       public void setScope(String scope) {
+               this.scope = scope;
+       }
+
+       /**
+        * @return the origin
+        */
+       public String getOrigin() {
+               return origin;
+       }
+
+       /**
+        * @param origin the origin to set
+        */
+       public void setOrigin(String origin) {
+               this.origin = origin;
+       }
+
+       /**
+        * @return the directive
+        */
+       public String getDirective() {
+               return directive;
+       }
+
+       /**
+        * @param directive the directive to set
+        */
+       public void setDirective(String directive) {
+               this.directive = directive;
+       }
+
+       /* (non-Javadoc)
+        * @see java.lang.Object#toString()
+        */
+       @Override
+       public String toString() {
+               return scope + " " + origin + " " + directive;
+       }
+       
+       
+         
+         
+}

Modified: 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieConnectorService.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieConnectorService.java?rev=1305336&r1=1305335&r2=1305336&view=diff
==============================================================================
--- 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieConnectorService.java
 (original)
+++ 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieConnectorService.java
 Mon Mar 26 12:46:22 2012
@@ -13,7 +13,6 @@
  */
 package org.apache.wookie.connector.framework;
 
-import java.util.HashMap;
 
 
 /**

Modified: 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieServerConnection.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieServerConnection.java?rev=1305336&r1=1305335&r2=1305336&view=diff
==============================================================================
--- 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieServerConnection.java
 (original)
+++ 
incubator/wookie/trunk/connector/java/src/org/apache/wookie/connector/framework/WookieServerConnection.java
 Mon Mar 26 12:46:22 2012
@@ -15,9 +15,6 @@ package org.apache.wookie.connector.fram
 
 import java.io.Serializable;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * A connection to a Wookie server. This maintains the necessary data for
  * connecting to the server and provides utility methods for making common 
calls


Reply via email to