You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by do...@apache.org on 2008/03/14 13:11:41 UTC

svn commit: r637074 - in /incubator/shindig/trunk: java/gadgets/src/main/java/org/apache/shindig/social/opensocial/model/ java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/ java/gadgets/src/test/java/org/apache/shindig/social/ javasc...

Author: doll
Date: Fri Mar 14 05:11:39 2008
New Revision: 637074

URL: http://svn.apache.org/viewvc?rev=637074&view=rev
Log:
The evil bit now works again in the samplecontainer, this brings the samplecontainer back up to where it was in terms of features.

Also switched the person fields from Arrays to Lists.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/opensocial/model/Person.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/StateFileDataHandler.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/social/GadgetDataTest.java
    incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/opensocial/model/Person.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/opensocial/model/Person.java?rev=637074&r1=637073&r2=637074&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/opensocial/model/Person.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/opensocial/model/Person.java Fri Mar 14 05:11:39 2008
@@ -21,6 +21,7 @@
 import org.apache.shindig.social.Mandatory;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * see
@@ -29,64 +30,62 @@
  */
 public class Person extends AbstractGadgetData {
   // TODO: Create the rest of the person fields and objects
-  // TODO: Change all of the array objects to list objects for easier
-  // manipulation
   private String aboutMe;
-  private String[] activities;
-  private Address[] addresses;
+  private List<String> activities;
+  private List<Address> addresses;
   private Integer age;
   private BodyType bodyType;
-  private String[] books;
-  private String[] cars;
+  private List<String> books;
+  private List<String> cars;
   private String children;
   private Address currentLocation;
   private Date dateOfBirth;
   // drinker : Person's drinking status, specified as an opensocial.Enum with
   // the enum's key referencing opensocial.Enum.Drinker.
-  private Email[] emails;
+  private List<Email> emails;
   private String ethnicity;
   private String fashion;
-  private String[] food;
+  private List<String> food;
   // gender : Person's gender, specified as an opensocial.Enum with the enum's
   // key referencing opensocial.Enum.Gender.
   private String happiestWhen;
-  private String[] hereos;
+  private List<String> hereos;
   private String humor;
   @Mandatory private String id;
-  private String[] interests;
+  private List<String> interests;
   private String jobInterests;
-  private Organization[] jobs;
-  private String[] languagesSpoken;
+  private List<Organization> jobs;
+  private List<String> languagesSpoken;
   private String livingArrangement;
   private String lookingFor;
-  private String[] movies;
-  private String[] music;
+  private List<String> movies;
+  private List<String> music;
   @Mandatory private Name name;
   private String nickname;
   private String pets;
-  private Phone[] phoneNumbers;
+  private List<Phone> phoneNumbers;
   private String politicalViews;
   private Url profileSong;
   private String profileUrl;
   private Url profileVideo;
-  private String[] quotes;
+  private List<String> quotes;
   private String relationshipStatus;
   private String religion;
   private String romance;
   private String scaredOf;
-  private Organization[] schools;
+  private List<Organization> schools;
   private String sexualOrientation;
   // smoker Person's smoking status, specified as an opensocial.Enum with the
   // enum's key referencing opensocial.Enum.Smoker.
-  private String[] sports;
+  private List<String> sports;
   private String status;
-  private String[] tags;
+  private List<String> tags;
   private String thumbnailUrl;
   private Long timeZone;
-  private String[] turnOffs;
-  private String[] turnOns;
-  private String[] tvShows;
-  private Url[] urls;
+  private List<String> turnOffs;
+  private List<String> turnOns;
+  private List<String> tvShows;
+  private List<Url> urls;
 
   public Person(String id, Name name) {
     this.id = id;
@@ -101,19 +100,19 @@
     this.aboutMe = aboutMe;
   }
 
-  public String[] getActivities() {
+  public List<String> getActivities() {
     return activities;
   }
 
-  public void setActivities(String[] activities) {
+  public void setActivities(List<String> activities) {
     this.activities = activities;
   }
 
-  public Address[] getAddresses() {
+  public List<Address> getAddresses() {
     return addresses;
   }
 
-  public void setAddresses(Address[] addresses) {
+  public void setAddresses(List<Address> addresses) {
     this.addresses = addresses;
   }
 
@@ -133,19 +132,19 @@
     this.bodyType = bodyType;
   }
 
-  public String[] getBooks() {
+  public List<String> getBooks() {
     return books;
   }
 
-  public void setBooks(String[] books) {
+  public void setBooks(List<String> books) {
     this.books = books;
   }
 
-  public String[] getCars() {
+  public List<String> getCars() {
     return cars;
   }
 
-  public void setCars(String[] cars) {
+  public void setCars(List<String> cars) {
     this.cars = cars;
   }
 
@@ -173,11 +172,11 @@
     this.dateOfBirth = dateOfBirth;
   }
 
-  public Email[] getEmails() {
+  public List<Email> getEmails() {
     return emails;
   }
 
-  public void setEmails(Email[] emails) {
+  public void setEmails(List<Email> emails) {
     this.emails = emails;
   }
 
@@ -197,11 +196,11 @@
     this.fashion = fashion;
   }
 
-  public String[] getFood() {
+  public List<String> getFood() {
     return food;
   }
 
-  public void setFood(String[] food) {
+  public void setFood(List<String> food) {
     this.food = food;
   }
 
@@ -213,11 +212,11 @@
     this.happiestWhen = happiestWhen;
   }
 
-  public String[] getHereos() {
+  public List<String> getHereos() {
     return hereos;
   }
 
-  public void setHereos(String[] hereos) {
+  public void setHereos(List<String> hereos) {
     this.hereos = hereos;
   }
 
@@ -237,11 +236,11 @@
     this.id = id;
   }
 
-  public String[] getInterests() {
+  public List<String> getInterests() {
     return interests;
   }
 
-  public void setInterests(String[] interests) {
+  public void setInterests(List<String> interests) {
     this.interests = interests;
   }
 
@@ -253,19 +252,19 @@
     this.jobInterests = jobInterests;
   }
 
-  public Organization[] getJobs() {
+  public List<Organization> getJobs() {
     return jobs;
   }
 
-  public void setJobs(Organization[] jobs) {
+  public void setJobs(List<Organization> jobs) {
     this.jobs = jobs;
   }
 
-  public String[] getLanguagesSpoken() {
+  public List<String> getLanguagesSpoken() {
     return languagesSpoken;
   }
 
-  public void setLanguagesSpoken(String[] languagesSpoken) {
+  public void setLanguagesSpoken(List<String> languagesSpoken) {
     this.languagesSpoken = languagesSpoken;
   }
 
@@ -285,19 +284,19 @@
     this.lookingFor = lookingFor;
   }
 
-  public String[] getMovies() {
+  public List<String> getMovies() {
     return movies;
   }
 
-  public void setMovies(String[] movies) {
+  public void setMovies(List<String> movies) {
     this.movies = movies;
   }
 
-  public String[] getMusic() {
+  public List<String> getMusic() {
     return music;
   }
 
-  public void setMusic(String[] music) {
+  public void setMusic(List<String> music) {
     this.music = music;
   }
 
@@ -325,11 +324,11 @@
     this.pets = pets;
   }
 
-  public Phone[] getPhoneNumbers() {
+  public List<Phone> getPhoneNumbers() {
     return phoneNumbers;
   }
 
-  public void setPhoneNumbers(Phone[] phoneNumbers) {
+  public void setPhoneNumbers(List<Phone> phoneNumbers) {
     this.phoneNumbers = phoneNumbers;
   }
 
@@ -365,11 +364,11 @@
     this.profileVideo = profileVideo;
   }
 
-  public String[] getQuotes() {
+  public List<String> getQuotes() {
     return quotes;
   }
 
-  public void setQuotes(String[] quotes) {
+  public void setQuotes(List<String> quotes) {
     this.quotes = quotes;
   }
 
@@ -405,11 +404,11 @@
     this.scaredOf = scaredOf;
   }
 
-  public Organization[] getSchools() {
+  public List<Organization> getSchools() {
     return schools;
   }
 
-  public void setSchools(Organization[] schools) {
+  public void setSchools(List<Organization> schools) {
     this.schools = schools;
   }
 
@@ -421,11 +420,11 @@
     this.sexualOrientation = sexualOrientation;
   }
 
-  public String[] getSports() {
+  public List<String> getSports() {
     return sports;
   }
 
-  public void setSports(String[] sports) {
+  public void setSports(List<String> sports) {
     this.sports = sports;
   }
 
@@ -437,11 +436,11 @@
     this.status = status;
   }
 
-  public String[] getTags() {
+  public List<String> getTags() {
     return tags;
   }
 
-  public void setTags(String[] tags) {
+  public void setTags(List<String> tags) {
     this.tags = tags;
   }
 
@@ -461,35 +460,35 @@
     this.timeZone = timeZone;
   }
 
-  public String[] getTurnOffs() {
+  public List<String> getTurnOffs() {
     return turnOffs;
   }
 
-  public void setTurnOffs(String[] turnOffs) {
+  public void setTurnOffs(List<String> turnOffs) {
     this.turnOffs = turnOffs;
   }
 
-  public String[] getTurnOns() {
+  public List<String> getTurnOns() {
     return turnOns;
   }
 
-  public void setTurnOns(String[] turnOns) {
+  public void setTurnOns(List<String> turnOns) {
     this.turnOns = turnOns;
   }
 
-  public String[] getTvShows() {
+  public List<String> getTvShows() {
     return tvShows;
   }
 
-  public void setTvShows(String[] tvShows) {
+  public void setTvShows(List<String> tvShows) {
     this.tvShows = tvShows;
   }
 
-  public Url[] getUrls() {
+  public List<Url> getUrls() {
     return urls;
   }
 
-  public void setUrls(Url[] urls) {
+  public void setUrls(List<Url> urls) {
     this.urls = urls;
   }
 }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.java?rev=637074&r1=637073&r2=637074&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/BasicPeopleService.java Fri Mar 14 05:11:39 2008
@@ -17,21 +17,13 @@
  */
 package org.apache.shindig.social.samplecontainer;
 
+import org.apache.shindig.social.ResponseItem;
 import org.apache.shindig.social.opensocial.PeopleService;
 import org.apache.shindig.social.opensocial.model.IdSpec;
 import org.apache.shindig.social.opensocial.model.Person;
-import org.apache.shindig.social.opensocial.model.Phone;
-import org.apache.shindig.social.opensocial.model.Name;
-import org.apache.shindig.social.ResponseItem;
 import org.json.JSONException;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Node;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/StateFileDataHandler.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/StateFileDataHandler.java?rev=637074&r1=637073&r2=637074&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/StateFileDataHandler.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/StateFileDataHandler.java Fri Mar 14 05:11:39 2008
@@ -36,7 +36,7 @@
 public class StateFileDataHandler implements GadgetDataHandler {
 
   public enum RequestType {
-    DUMP_STATE, SET_STATE
+    DUMP_STATE, SET_STATE, SET_EVILNESS
   }
 
   public boolean shouldHandle(String requestType) {
@@ -76,7 +76,15 @@
           response = new ResponseItem<Object>(ResponseError.BAD_REQUEST);
         }
         break;
-
+      case SET_EVILNESS:
+        try {
+          boolean doEvil = request.getParams().getBoolean("doEvil");
+          fetcher.setEvilness(doEvil);
+          response = new ResponseItem<Object>(new JSONObject());
+        } catch (JSONException e) {
+          response = new ResponseItem<Object>(ResponseError.BAD_REQUEST);
+        }
+        break;
     }
 
     return response;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java?rev=637074&r1=637073&r2=637074&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/social/samplecontainer/XmlStateFileFetcher.java Fri Mar 14 05:11:39 2008
@@ -7,9 +7,9 @@
 import org.apache.shindig.gadgets.RemoteContentRequest;
 import org.apache.shindig.social.opensocial.model.IdSpec;
 import org.apache.shindig.social.opensocial.model.Person;
-import org.apache.shindig.social.opensocial.model.Name;
-import org.apache.shindig.social.opensocial.model.Phone;
 import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.Phone;
+import org.apache.shindig.social.opensocial.model.Name;
 import org.apache.shindig.social.opensocial.model.MediaItem;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -21,16 +21,31 @@
 import java.io.StringReader;
 import java.io.IOException;
 import java.util.Map;
-import java.util.HashMap;
 import java.util.List;
+import java.util.HashMap;
 import java.util.ArrayList;
 
 /**
  * @author Cassandra Doll <do...@google.com>
  */
 public class XmlStateFileFetcher {
-  private static String defaultStateUrl =
-      "http://localhost:8080/gadgets/files/samplecontainer/state-basicfriendlist.xml";
+  private static final String DEFAULT_STATE_URL
+      = "http://localhost:8080/gadgets/files/samplecontainer/"
+      + "state-basicfriendlist.xml";
+
+  // Evil javascript strings
+  private static final String REDEFINE_NEW_DATA_REQUEST
+      = "opensocial.newDataRequest = "
+      + "function() { alert('Ha! I attacked you!')}; ";
+
+  private static final String MAKE_PAGE_RED
+      = "document.body.style.backgroundColor = 'red'; ";
+
+  private static final String SCRIPT_PREFIX = "<div onMouseOver=\""
+      + REDEFINE_NEW_DATA_REQUEST + MAKE_PAGE_RED + "\">";
+
+  private static final String SCRIPT_SUFFIX = "</div>";
+
 
   // TODO: Should use guice here This static fetcher is very gross.
   private static XmlStateFileFetcher fetcher;
@@ -44,6 +59,7 @@
 
   private URI stateFile;
   private Document document;
+  private boolean doEvil = false;
 
   // TODO: This obviously won't work on multiple servers
   // If we care then we should do something about it
@@ -54,7 +70,7 @@
 
   private XmlStateFileFetcher() {
    try {
-      this.stateFile = new URI(defaultStateUrl);
+      stateFile = new URI(DEFAULT_STATE_URL);
     } catch (URISyntaxException e) {
       throw new RuntimeException(
           "The default state file could not be fetched. ", e);
@@ -63,11 +79,15 @@
 
   public void resetStateFile(URI stateFile) {
     this.stateFile = stateFile;
-    this.document = null;
-    this.allData = null;
-    this.idMap = null;
-    this.allPeople = null;
-    this.allActivities = null;
+    document = null;
+    allData = null;
+    idMap = null;
+    allPeople = null;
+    allActivities = null;
+  }
+
+  public void setEvilness(boolean doEvil) {
+    this.doEvil = doEvil;
   }
 
   private Document fetchStateDocument() {
@@ -98,6 +118,14 @@
     }
   }
 
+  private String turnEvil(String originalString) {
+    if (doEvil) {
+     return SCRIPT_PREFIX + originalString + SCRIPT_SUFFIX;
+    } else {
+      return originalString;
+    }
+  }
+
   public Map<String, Map<String, String>> getAppData() {
     if (allData != null) {
       return allData;
@@ -105,7 +133,7 @@
 
     allData = new HashMap<String, Map<String, String>>();
 
-    Element root = this.fetchStateDocument().getDocumentElement();
+    Element root = fetchStateDocument().getDocumentElement();
 
     NodeList elements = root.getElementsByTagName("personAppData");
     NodeList personDataNodes = elements.item(0).getChildNodes();
@@ -126,7 +154,7 @@
         currentData = new HashMap<String, String>();
         allData.put(id, currentData);
       }
-      currentData.put(field, value);
+      currentData.put(field, turnEvil(value));
     }
 
     return allData;
@@ -161,7 +189,7 @@
   }
 
   private void setupPeopleData() {
-    Element root = this.fetchStateDocument().getDocumentElement();
+    Element root = fetchStateDocument().getDocumentElement();
 
     idMap = new HashMap<IdSpec.Type, List<String>>();
     allPeople = new HashMap<String, Person>();
@@ -207,12 +235,13 @@
 
       String name = attributes.getNamedItem("name").getNodeValue();
       String id = attributes.getNamedItem("id").getNodeValue();
-      Person person = new Person(id, new Name(name));
+      Person person = new Person(id, new Name(turnEvil(name)));
 
       Node phoneItem = attributes.getNamedItem("phone");
       if (phoneItem != null) {
         String phone = phoneItem.getNodeValue();
-        Phone[] phones = {new Phone(phone, null)};
+        List<Phone> phones = new ArrayList<Phone>();
+        phones.add(new Phone(turnEvil(phone), null));
         person.setPhoneNumbers(phones);
       }
 
@@ -234,7 +263,7 @@
   private void setupActivities() {
     allActivities = new HashMap<String, List<Activity>>();
 
-    Element root = this.fetchStateDocument().getDocumentElement();
+    Element root = fetchStateDocument().getDocumentElement();
     NodeList activitiesElements = root.getElementsByTagName("activities");
 
     if (activitiesElements != null && activitiesElements.item(0) != null) {
@@ -270,9 +299,9 @@
         String id = activityParams.getNamedItem("id").getNodeValue();
 
         Activity activity = new Activity(id, userId);
-        activity.setStreamTitle(streamTitle);
-        activity.setTitle(title);
-        activity.setBody(body);
+        activity.setStreamTitle(turnEvil(streamTitle));
+        activity.setTitle(turnEvil(title));
+        activity.setBody(turnEvil(body));
         activity.setMediaItems(getMediaItems(activityItem));
 
         createActivity(userId, activity);

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/social/GadgetDataTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/social/GadgetDataTest.java?rev=637074&r1=637073&r2=637074&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/social/GadgetDataTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/social/GadgetDataTest.java Fri Mar 14 05:11:39 2008
@@ -35,21 +35,19 @@
   @Override
   public void setUp() throws Exception {
     johnDoe = new Person("johnDoeId", new Name("John Doe"));
-    Phone[] phones = {
-        new Phone("+33H000000000", "home"),
-        new Phone("+33M000000000", "mobile"),
-        new Phone("+33W000000000", "work")};
+    List<Phone> phones = new ArrayList<Phone>();
+    phones.add(new Phone("+33H000000000", "home"));
+    phones.add(new Phone("+33M000000000", "mobile"));
+    phones.add(new Phone("+33W000000000", "work"));
     johnDoe.setPhoneNumbers(phones);
 
-    Address[] addresses = {
-      new Address("My home address")
-    };
+    List<Address> addresses = new ArrayList<Address>();
+    addresses.add(new Address("My home address"));
     johnDoe.setAddresses(addresses);
 
-    Email[] emails = {
-      new Email("john.doe@work.bar", "work"),
-      new Email("john.doe@home.bar", "home"),
-    };
+    List<Email> emails = new ArrayList<Email>();
+    emails.add(new Email("john.doe@work.bar", "work"));
+    emails.add(new Email("john.doe@home.bar", "home"));
     johnDoe.setEmails(emails);
 
     activity = new Activity("activityId", johnDoe.getId());
@@ -67,15 +65,15 @@
     assertEquals(johnDoe.getName().getUnstructured(),
         result.getJSONObject("name").getString("unstructured"));
 
-    assertEquals(johnDoe.getAddresses()[0].getUnstructuredAddress(),
+    assertEquals(johnDoe.getAddresses().get(0).getUnstructuredAddress(),
         result.getJSONArray("addresses").getJSONObject(0)
             .getString("unstructuredAddress"));
 
     JSONArray phoneArray = result.getJSONArray("phoneNumbers");
     assertEquals(3, phoneArray.length());
 
-    for (int i = 0; i < johnDoe.getPhoneNumbers().length; i++) {
-      Phone expectedPhone = johnDoe.getPhoneNumbers()[i];
+    for (int i = 0; i < johnDoe.getPhoneNumbers().size(); i++) {
+      Phone expectedPhone = johnDoe.getPhoneNumbers().get(i);
       JSONObject actualPhone = phoneArray.getJSONObject(i);
       assertEquals(expectedPhone.getType(), actualPhone.getString("type"));
       assertEquals(expectedPhone.getNumber(), actualPhone.getString("number"));
@@ -84,8 +82,8 @@
     JSONArray emailArray = result.getJSONArray("emails");
     assertEquals(2, emailArray.length());
 
-    for (int i = 0; i < johnDoe.getEmails().length; i++) {
-      Email expectedEmail = johnDoe.getEmails()[i];
+    for (int i = 0; i < johnDoe.getEmails().size(); i++) {
+      Email expectedEmail = johnDoe.getEmails().get(i);
       JSONObject actualEmail = emailArray.getJSONObject(i);
       assertEquals(expectedEmail.getType(), actualEmail.getString("type"));
       assertEquals(expectedEmail.getAddress(),
@@ -122,7 +120,7 @@
     item2Map.put("value", "2");
     map.put("item2", item2Map);
 
-    ResponseItem response 
+    ResponseItem response
         = new ResponseItem<Map<String, Map<String, String>>>(map);
     JSONObject result = response.toJson();
 

Modified: incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html?rev=637074&r1=637073&r2=637074&view=diff
==============================================================================
--- incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html (original)
+++ incubator/shindig/trunk/javascript/samplecontainer/samplecontainer.html Fri Mar 14 05:11:39 2008
@@ -53,11 +53,9 @@
 var useCaja = false;
 var useCache = true;
 var usePermissive = false;
-var doEvil = false;  // TODO: make evilness work.
+var doEvil = false;
 var gadget;
 
-// TODO: Should be able to dump the state somehow
-
 function initGadget() {
   // Fetch cookies
   var cookieGadgetUrl = decodeURIComponent(goog.net.cookies.get(gadgetUrlCookie));
@@ -92,6 +90,7 @@
 
   usePermissive = document.getElementById("usePermissiveCheckbox").checked;
   doEvil = document.getElementById("doEvilCheckbox").checked;
+  setEvilBit();
 
   stateFileUrl = document.getElementById("stateFileUrl").value;
   reloadStateFile();
@@ -124,33 +123,25 @@
 };
 gadgets.container.gadgetClass = SampleContainerGadget;
 
-function reloadStateFile() {
-  // TODO: Should re-use the jsoncontainer code somehow
-  var jsonRequest = gadgets.json.stringify(
-      [{"type" : "SET_STATE", "fileUrl" : stateFileUrl}]);
+function setEvilBit() {
+  sendRequestToServer([{"type" : "SET_EVILNESS", "doEvil" : doEvil}]);
+};
 
-  var makeRequestParams = {
-    "CONTENT_TYPE" : "JSON",
-    "METHOD" : "POST",
-    "AUTHORIZATION" : "SIGNED",
-    "POST_DATA" : encodeValues({'request' : jsonRequest})};
+function reloadStateFile() {
+  sendRequestToServer([{"type" : "SET_STATE", "fileUrl" : stateFileUrl}]);
+};
 
-  makeRequest(socialDataPath,
+function dumpStateFile() {
+  sendRequestToServer([{"type" : "DUMP_STATE"}],
       function(data) {
-        data = data.data;
-        if (!data || data['error'] ||
-            !data['responses'][0] || data['responses'][0]['error']) {
-          alert("The state file you requested could not be loaded");
-        }
-
-      },
-      makeRequestParams);
+        document.getElementById('gadgetState').innerHTML
+            = gadgets.json.stringify(data['responses'][0]['response']);
+      });
 };
 
-function dumpStateFile() {
+function sendRequestToServer(jsonRequest, opt_callback) {
   // TODO: Should re-use the jsoncontainer code somehow
-  var jsonRequest = gadgets.json.stringify(
-      [{"type" : "DUMP_STATE"}]);
+  jsonRequest = gadgets.json.stringify(jsonRequest);
 
   var makeRequestParams = {
     "CONTENT_TYPE" : "JSON",
@@ -163,15 +154,14 @@
         data = data.data;
         if (!data || data['error'] ||
             !data['responses'][0] || data['responses'][0]['error']) {
-          alert("The state file could not be dumped");
+          alert("The request to the server caused an error.");
         } else {
-          document.getElementById('gadgetState').innerHTML
-              = gadgets.json.stringify(data['responses'][0]['response']);
+          if (opt_callback) {
+            opt_callback(data);
+          }
         }
-
       },
       makeRequestParams);
-
 };
 
 
@@ -194,7 +184,6 @@
     return;
   }
   if (xobj.status !== 200) {
-    // TODO Need to work on standardizing errors
     callback({errors : ["Error " + xobj.status] });
     return;
   }
@@ -252,7 +241,7 @@
       <br/>
 
       Using state: <input type="text" size="75" id="stateFileUrl"/>
-      <input type="checkbox" id="doEvilCheckbox" checked="true"/>do evil
+      <input type="checkbox" id="doEvilCheckbox"/>do evil
 
       <br/>