You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2010/06/02 11:05:02 UTC

svn commit: r950443 [2/7] - in /shindig/branches/2.0.x: ./ config/ content/samplecontainer/ content/samplecontainer/examples/ content/samplecontainer/examples/ActivityStreams/ content/sampledata/ extras/src/main/java/org/apache/shindig/extras/ extras/s...

Modified: shindig/branches/2.0.x/features/src/main/javascript/features/rpc/fe.transport.js
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/features/src/main/javascript/features/rpc/fe.transport.js?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/features/src/main/javascript/features/rpc/fe.transport.js (original)
+++ shindig/branches/2.0.x/features/src/main/javascript/features/rpc/fe.transport.js Wed Jun  2 09:04:51 2010
@@ -117,9 +117,9 @@ gadgets.rpctx.frameElement = function() 
         ready('..', true);
         var ackFn = function() {
           window.setTimeout(function() {
-            gadgets.rpc.call(receiverId, gadgets.rpc.ACK)
+            gadgets.rpc.call(receiverId, gadgets.rpc.ACK);
           }, 500);
-        }
+        };
         // Setup to container always happens before onload.
         // If it didn't, the correct fix would be in gadgets.util.
         gadgets.util.registerOnLoadHandler(ackFn);

Modified: shindig/branches/2.0.x/features/src/main/javascript/features/rpc/nix.transport.js
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/features/src/main/javascript/features/rpc/nix.transport.js?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/features/src/main/javascript/features/rpc/nix.transport.js (original)
+++ shindig/branches/2.0.x/features/src/main/javascript/features/rpc/nix.transport.js Wed Jun  2 09:04:51 2010
@@ -159,7 +159,7 @@ gadgets.rpctx.nix = function() {
       if (typeof window[NIX_GET_WRAPPER] !== 'unknown') {
         window[NIX_HANDLE_MESSAGE] = function(data) {
           window.setTimeout(
-              function() { processFn(gadgets.json.parse(data)) }, 0);
+              function() { processFn(gadgets.json.parse(data)); }, 0);
         };
 
         window[NIX_CREATE_CHANNEL] = function(name, channel, token) {

Modified: shindig/branches/2.0.x/features/src/main/javascript/features/rpc/rmr.transport.js
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/features/src/main/javascript/features/rpc/rmr.transport.js?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/features/src/main/javascript/features/rpc/rmr.transport.js (original)
+++ shindig/branches/2.0.x/features/src/main/javascript/features/rpc/rmr.transport.js Wed Jun  2 09:04:51 2010
@@ -85,10 +85,10 @@ gadgets.rpctx.rmr = function() {
         // contentWindow is null, making it impossible to do so.
         channelFrame.onload = function() {
           processRmrData(opt_frameId);
-        }
+        };
       }
       channelFrame.src = relayUri + '#' + data;
-    }
+    };
 
     if (document.body) {
       appendFn();
@@ -121,7 +121,7 @@ gadgets.rpctx.rmr = function() {
     // The width here is important as RMR
     // makes use of the resize handler for the frame.
     // Do not modify unless you test thoroughly!
-    frameStyle.width = '10px'
+    frameStyle.width = '10px';
     frameStyle.height = '1px';
     channelFrame.id = 'rmrtransport-' + frameId;
     channelFrame.name = channelFrame.id;

Modified: shindig/branches/2.0.x/features/src/main/javascript/features/rpc/rpc.js
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/features/src/main/javascript/features/rpc/rpc.js?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/features/src/main/javascript/features/rpc/rpc.js (original)
+++ shindig/branches/2.0.x/features/src/main/javascript/features/rpc/rpc.js Wed Jun  2 09:04:51 2010
@@ -122,7 +122,7 @@ gadgets.rpc = function() {
                     gadgets.json.stringify(Array.prototype.slice.call(arguments)) +
                     "): call ignored. [caller: " + document.location +
                     ", isChild: " + isChild + "]");
-      }
+      };
     }
     return {
       getCode: function() {
@@ -134,7 +134,7 @@ gadgets.rpc = function() {
       init: logFn("init"),
       setup: logFn("setup"),
       call: logFn("call")
-    }
+    };
   })();
 
   // Load the authentication token for speaking to the container

Propchange: shindig/branches/2.0.x/features/src/main/javascript/features/setprefs/
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/main/javascript/features/settitle/
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/main/javascript/features/skins/
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/main/javascript/features/tabs/
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/main/javascript/features/views/
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/main/javascript/features/xmlutil/
            ('svn:mergeinfo' removed)

Modified: shindig/branches/2.0.x/features/src/test/javascript/features/core.io/iotest.js
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/features/src/test/javascript/features/core.io/iotest.js?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/features/src/test/javascript/features/core.io/iotest.js (original)
+++ shindig/branches/2.0.x/features/src/test/javascript/features/core.io/iotest.js Wed Jun  2 09:04:51 2010
@@ -171,7 +171,7 @@ IoTest.prototype.testNoMethod_nonDefault
         resp = data;
       },
       {
-        "REFRESH_INTERVAL" : 1800,
+        "REFRESH_INTERVAL" : 1800
       });
   this.assertEquals('some data', resp.text);
 };
@@ -194,7 +194,7 @@ IoTest.prototype.testNoMethod_disableRef
         resp = data;
       },
       {
-        "REFRESH_INTERVAL" : 0,
+        "REFRESH_INTERVAL" : 0
       });
   this.assertEquals('some data', resp.text);
 };
@@ -772,7 +772,7 @@ IoTest.prototype.testServerFailure = fun
         resp = data;
       },
       {
-        "CONTENT_TYPE" : "JSON",
+        "CONTENT_TYPE" : "JSON"
       });
   this.assertEquals(500, resp.rc);
   this.assertEquals(gadgets.json.stringify(["500 Error"]), gadgets.json.stringify(resp.errors));
@@ -800,7 +800,7 @@ IoTest.prototype.testJsonNonAuthoritativ
         resp = data;
       },
       {
-        "CONTENT_TYPE" : "JSON",
+        "CONTENT_TYPE" : "JSON"
       });
   this.assertEquals(3, resp.data.somejsonparam);
 };
@@ -826,7 +826,7 @@ IoTest.prototype.testJson = function() {
         resp = data;
       },
       {
-        "CONTENT_TYPE" : "JSON",
+        "CONTENT_TYPE" : "JSON"
       });
   this.assertEquals(3, resp.data.somejsonparam);
 };
@@ -852,7 +852,7 @@ IoTest.prototype.testJson_malformed = fu
         resp = data;
       },
       {
-        "CONTENT_TYPE" : "JSON",
+        "CONTENT_TYPE" : "JSON"
       });
   this.assertEquals("500 Failed to parse JSON", resp.errors[0]);
 };
@@ -865,7 +865,7 @@ IoTest.prototype.testPreload = function(
       "body" : "preloadedbody",
       "headers": {
         "set-cookie": ["foo=bar","baz=quux"],
-        "location": ["somewhere"],
+        "location": ["somewhere"]
       }
     }
   ];
@@ -907,7 +907,7 @@ IoTest.prototype.testPreloadMiss_postReq
     {
       "id": "http://target.example.com/somepage",
       "rc" : 200,
-      "body" : "preloadedbody",
+      "body" : "preloadedbody"
     }
   ];
 
@@ -943,7 +943,7 @@ IoTest.prototype.testPreloadMiss_wrongUr
     {
       "id": "http://target.example.com/somepage2",
       "rc" : 200,
-      "body" : "preloadedbody",
+      "body" : "preloadedbody"
     }
   ];
 
@@ -971,7 +971,7 @@ IoTest.prototype.testPreload_error404 = 
   gadgets.io.preloaded_ = [
     {
       "id": "http://target.example.com/somepage",
-      "rc" : 404,
+      "rc" : 404
     }
   ];
 
@@ -1010,7 +1010,7 @@ IoTest.prototype.testPreload_oauthApprov
       "id": "http://target.example.com/somepage",
       "rc" : 200,
       "oauthState" : "stateinfo",
-      "oauthApprovalUrl" : "http://example.com/approve",
+      "oauthApprovalUrl" : "http://example.com/approve"
     }
   ];
 

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/core.io/iotest.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/core/authtest.js
            ('svn:mergeinfo' removed)

Modified: shindig/branches/2.0.x/features/src/test/javascript/features/core/config-test.js
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/features/src/test/javascript/features/core/config-test.js?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/features/src/test/javascript/features/core/config-test.js (original)
+++ shindig/branches/2.0.x/features/src/test/javascript/features/core/config-test.js Wed Jun  2 09:04:51 2010
@@ -174,7 +174,7 @@ ConfigTest.prototype.testLikeValidator =
     key1: function(data) {
       key1value = data;
       return true;
-    },
+    }
   });
 
   this.assertTrue(validator({key0:"Key0", key1: "Key1"}));
@@ -193,7 +193,7 @@ ConfigTest.prototype.testLikeValidatorWi
     key1: function(data) {
       key1value = data;
       return true;
-    },
+    }
   });
 
   this.assertFalse(validator({key0:"Key0", key1: "Key1"}));

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/core/config-test.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/core/prefstest.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/core/utiltest.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/mocks/
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/oauthpopup/oauthpopup-test.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-base/jsonactivitytest.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-data-context/datacontexttest.js
            ('svn:mergeinfo' removed)

Modified: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-data/datatest.js
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-data/datatest.js?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-data/datatest.js (original)
+++ shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-data/datatest.js Wed Jun  2 09:04:51 2010
@@ -126,5 +126,5 @@ DataTest.prototype.testListener = functi
   });
   opensocial.data.DataContext.putDataSet('testKey', {});
   this.assertEquals(true, fired);
-}
+};
 

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-reference/activitytest.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-templates/compiler_test.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-templates/container_test.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-templates/loader_test.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-templates/os_test.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-templates/template_test.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/opensocial-templates/util_test.js
            ('svn:mergeinfo' removed)

Modified: shindig/branches/2.0.x/features/src/test/javascript/features/osapi/osapitest.js
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/features/src/test/javascript/features/osapi/osapitest.js?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/features/src/test/javascript/features/osapi/osapitest.js (original)
+++ shindig/branches/2.0.x/features/src/test/javascript/features/osapi/osapitest.js Wed Jun  2 09:04:51 2010
@@ -36,8 +36,10 @@ OsapiTest.prototype.testCall = function(
   var transportCalled = false;
   transport.execute = function(requests, callback) {
     transportCalled = true;
-    callback([{id:"test.method",result:{a:"b"}}]);
-  }
+    callback([
+      {id:"test.method",result:{a:"b"}}
+    ]);
+  };
   var callbackCalled = false;
   osapi.test.method({}).execute(function(result) {
     callbackCalled = true;

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/setprefs/setprefstest.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/views/requestnavigateto-test.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/views/urltemplatetest.js
            ('svn:mergeinfo' removed)

Propchange: shindig/branches/2.0.x/features/src/test/javascript/features/views/views-init-test.js
            ('svn:mergeinfo' removed)

Modified: shindig/branches/2.0.x/java/common/conf/shindig.properties
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/conf/shindig.properties?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/conf/shindig.properties (original)
+++ shindig/branches/2.0.x/java/common/conf/shindig.properties Wed Jun  2 09:04:51 2010
@@ -124,5 +124,16 @@ shindig.http.client.max-object-size-byte
 shindig.uri.proxy.use-strict-parsing=false
 shindig.uri.concat.use-strict-parsing=false
 
-
 org.apache.shindig.serviceExpirationDurationMinutes=60
+
+#
+# Older versions of shindig used 'data' in the json-rpc response format
+# The spec calls for using 'result' instead, however to avoid breakage we
+# allow you to set it back to the old way here
+#
+# valid values are
+#  result  - new form
+#  data    - old broken form
+#  both    - return both fields for full compatibility
+#
+shindig.json-rpc.result-field=result

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/OAuthConstants.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/OAuthConstants.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/OAuthConstants.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/OAuthConstants.java Wed Jun  2 09:04:51 2010
@@ -19,31 +19,14 @@
 
 package org.apache.shindig.auth;
 
-public class OAuthConstants {
+public final class OAuthConstants {
+  private OAuthConstants() {}
   public static final String OAUTH_SESSION_HANDLE = "oauth_session_handle";
   public static final String OAUTH_EXPIRES_IN = "oauth_expires_in";
   public static final String OAUTH_BODY_HASH = "oauth_body_hash";
-  public static final String OAUTH_VERIFIER = "oauth_verifier";
-  public static final String OAUTH_CALLBACK_CONFIRMED = "oauth_callback_confirmed";
   
   public static final String PROBLEM_ACCESS_TOKEN_EXPIRED = "access_token_expired";
-
   public static final String PROBLEM_PARAMETER_MISSING = "parameter_missing";
-
-  public static final String PROBLEM_TOKEN_REVOKED = "token_revoked";
-
   public static final String PROBLEM_TOKEN_INVALID = "token_invalid";
-
-  public static final String PROBLEM_PARAMETER_ABSENT = "parameter_absent";
-
   public static final String PROBLEM_BAD_VERIFIER = "bad_verifier";
-
-  public static final String PROBLEM_TOKEN_REJECTED = "token_rejected";
-
-  public static final String PROBLEM_PARAMETER_REJECTED = "parameter_rejected";
-
-  public static final String PROBLEM_PERMISSION_DENIED = "permission_denied";
-
-  public static final String PROBLEM_CONSUMER_KEY_REFUSED = "consumer_key_refused";
-
-  public static final String PROBLEM_CONSUMER_KEY_UNKNOWN = "consumer_key_unknown";}
+}

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/OAuthUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/OAuthUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/OAuthUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/OAuthUtil.java Wed Jun  2 09:04:51 2010
@@ -35,8 +35,9 @@ import java.util.Map.Entry;
  * for cases that are extremely unlikely to happen.  We turn those IOExceptions in to
  * RuntimeExceptions since the caller can't do anything about them anyway.
  */
-public class OAuthUtil {
-
+public final class OAuthUtil {
+  private OAuthUtil() {}
+  
   public static String getParameter(OAuthMessage message, String name) {
     try {
       return message.getParameter(name);

Propchange: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/OAuthUtil.java
            ('svn:mergeinfo' removed)

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/UrlParameterAuthenticationHandler.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/UrlParameterAuthenticationHandler.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/UrlParameterAuthenticationHandler.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/auth/UrlParameterAuthenticationHandler.java Wed Jun  2 09:04:51 2010
@@ -20,11 +20,8 @@ package org.apache.shindig.auth;
 import com.google.common.collect.Maps;
 import com.google.inject.Inject;
 import net.oauth.OAuth;
-import net.oauth.OAuthMessage;
 
-import java.util.ArrayList;
 import java.util.Enumeration;
-import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -38,6 +35,7 @@ public class UrlParameterAuthenticationH
   private static final String SECURITY_TOKEN_PARAM = "st";
   private static final String OAUTH2_TOKEN_PARAM = "oauth_token";
   private final SecurityTokenDecoder securityTokenDecoder;
+  private static final Pattern COMMAWHITESPACE = Pattern.compile("\\s*,\\s*");
 
   @Inject
   public UrlParameterAuthenticationHandler(SecurityTokenDecoder securityTokenDecoder) {
@@ -93,7 +91,7 @@ public class UrlParameterAuthenticationH
       for (Enumeration<String> headers = request.getHeaders("Authorization"); headers != null && headers.hasMoreElements();) {
         Matcher m = AUTHORIZATION.matcher(headers.nextElement());
         if (m.matches() && "Token".equalsIgnoreCase(m.group(1))) {
-          for (String nvp : m.group(2).split("\\s*,\\s*")) {
+          for (String nvp : COMMAWHITESPACE.split(m.group(2))) {
             m = NVP.matcher(nvp);
             if (m.matches() && "token".equals(m.group(1))) {
               token = OAuth.decodePercent(m.group(2));

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/JsonSerializer.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/JsonSerializer.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/JsonSerializer.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/JsonSerializer.java Wed Jun  2 09:04:51 2010
@@ -189,7 +189,7 @@ public final class JsonSerializer {
           String attribute = entry.getKey();
 
           // Common use case isOwner/isViewer should not be set unless true
-          if (!((attribute.equals("isOwner") || attribute.equals("isViewer")) && value.equals(Boolean.FALSE))) {
+          if (!(("isOwner".equals(attribute) || "isViewer".equals(attribute)) && value.equals(Boolean.FALSE))) {
             // Drop null values.
             if (firstDone) {
               buf.append(',');

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/JsonUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/JsonUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/JsonUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/JsonUtil.java Wed Jun  2 09:04:51 2010
@@ -32,11 +32,13 @@ import com.google.common.collect.Maps;
 /**
  * JSON utilities that are not specific to either serialization or conversion.
  */
-public class JsonUtil {
+public final class JsonUtil {
+  private JsonUtil() {}
+
   private static final Set<String> EXCLUDE_METHODS
       = ImmutableSet.of("getClass", "getDeclaringClass");
 
-  private static final Map<Class<?>, Map<String, Method>> getters = new MapMaker().makeMap();
+  private static final Map<Class<?>, Map<String, Method>> GETTERS = new MapMaker().makeMap();
 
   /**
    * Gets a property of an Object.  Will return a property value if
@@ -76,7 +78,7 @@ public class JsonUtil {
   static Map<String, Method> getGetters(Object pojo) {
     Class<?> clazz = pojo.getClass();
 
-    Map<String, Method> methods = getters.get(clazz);
+    Map<String, Method> methods = GETTERS.get(clazz);
     if (methods != null) {
       return methods;
     }
@@ -92,7 +94,7 @@ public class JsonUtil {
       }
     }
 
-    getters.put(clazz, methods);
+    GETTERS.put(clazz, methods);
     return methods;
   }
 

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/Pairs.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/Pairs.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/Pairs.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/Pairs.java Wed Jun  2 09:04:51 2010
@@ -20,7 +20,8 @@ package org.apache.shindig.common;
 /**
  * Utility class for creating Pair objects.
  */
-public class Pairs {
+public final class Pairs {
+  private Pairs() {}
   public static <T1, T2> Pair<T1, T2> newPair(T1 one, T2 two) {
     return new Pair<T1, T2>(one, two);
   }

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/cache/LruCacheProvider.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/cache/LruCacheProvider.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/cache/LruCacheProvider.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/cache/LruCacheProvider.java Wed Jun  2 09:04:51 2010
@@ -27,6 +27,7 @@ import com.google.inject.name.Named;
 import com.google.inject.name.Names;
 
 import java.util.Map;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
@@ -84,12 +85,16 @@ public class LruCacheProvider implements
   public <K, V> Cache<K, V> createCache(String name) {
     int capacity = getCapacity(name);
     if (name == null) {
-      LOG.fine("Creating anonymous cache");
+      if (LOG.isLoggable(Level.FINE)) {
+        LOG.fine("Creating anonymous cache");
+      }
       return new LruCache<K, V>(capacity);
     } else {
       Cache<K, V> cache = (Cache<K, V>) caches.get(name);
       if (cache == null) {
-        LOG.fine("Creating cache named " + name);
+        if (LOG.isLoggable(Level.FINE)) {
+          LOG.fine("Creating cache named " + name);
+        }
         cache = new LruCache<K, V>(capacity);
         caches.put(name, cache);
       }

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/cache/ehcache/EhCacheCacheProvider.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/cache/ehcache/EhCacheCacheProvider.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/cache/ehcache/EhCacheCacheProvider.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/cache/ehcache/EhCacheCacheProvider.java Wed Jun  2 09:04:51 2010
@@ -35,10 +35,11 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.management.ManagementFactory;
 import java.util.Map;
+import java.util.logging.Level;
 import java.util.logging.Logger;
 
 public class EhCacheCacheProvider implements CacheProvider {
-  private final Logger LOG = Logger.getLogger(EhCacheCacheProvider.class.getName());
+  private static final Logger LOG = Logger.getLogger(EhCacheCacheProvider.class.getName());
   private final CacheManager cacheManager;
   private final Map<String, Cache<?, ?>> caches = new MapMaker().makeMap();
 
@@ -97,12 +98,16 @@ public class EhCacheCacheProvider implem
   @SuppressWarnings("unchecked")
   public <K, V> Cache<K, V> createCache(String name) {
     if (name == null) {
-      LOG.fine("Creating anonymous cache");
+      if (LOG.isLoggable(Level.FINE)) {
+        LOG.fine("Creating anonymous cache");
+      }
       return new EhConfiguredCache<K, V>(name, cacheManager);
     } else {
       Cache<K, V> cache = (Cache<K, V>) caches.get(name);
       if (cache == null) {
-        LOG.fine("Creating cache named " + name);
+        if (LOG.isLoggable(Level.FINE)) {
+          LOG.fine("Creating cache named " + name);
+        }
         cache = new EhConfiguredCache<K, V>(name, cacheManager);
         caches.put(name, cache);
       }

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/crypto/Crypto.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/crypto/Crypto.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/crypto/Crypto.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/crypto/Crypto.java Wed Jun  2 09:04:51 2010
@@ -32,7 +32,7 @@ import javax.crypto.spec.SecretKeySpec;
 /**
  * Cryptographic utility functions.
  */
-public class Crypto {
+public final class Crypto {
   
   /** 
    * Use this random number generator instead of creating your own.  This is

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/GuiceServletContextListener.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/GuiceServletContextListener.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/GuiceServletContextListener.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/GuiceServletContextListener.java Wed Jun  2 09:04:51 2010
@@ -40,6 +40,10 @@ import javax.servlet.ServletContextListe
 public class GuiceServletContextListener implements ServletContextListener {
   public static final String INJECTOR_ATTRIBUTE = "guice-injector";
   public static final String MODULES_ATTRIBUTE = "guice-modules";
+
+  // From guice-servlet-2.0
+  public static final String INJECTOR_NAME = Injector.class.getName();
+
   private boolean jmxInitialized = false;
 
   public void contextInitialized(ServletContextEvent event) {

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/HttpUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/HttpUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/HttpUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/HttpUtil.java Wed Jun  2 09:04:51 2010
@@ -28,7 +28,9 @@ import java.util.regex.Pattern;
 /**
  * Collection of HTTP utilities
  */
-public class HttpUtil {
+public final class HttpUtil {
+  private HttpUtil() {}
+  
   // 1 year.
   private static int defaultTtl = 60 * 60 * 24 * 365;
 

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/InjectedFilter.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/InjectedFilter.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/InjectedFilter.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/InjectedFilter.java Wed Jun  2 09:04:51 2010
@@ -36,9 +36,13 @@ public abstract class InjectedFilter imp
     ServletContext context = config.getServletContext();
     injector = (Injector) context.getAttribute(GuiceServletContextListener.INJECTOR_ATTRIBUTE);
     if (injector == null) {
-      throw new UnavailableException(
-          "Guice Injector not found! Make sure you registered " +
-          GuiceServletContextListener.class.getName() + " as a listener");
+      injector = (Injector)
+        context.getAttribute(GuiceServletContextListener.INJECTOR_NAME);
+      if (injector == null) {
+        throw new UnavailableException(
+            "Guice Injector not found! Make sure you registered " +
+            GuiceServletContextListener.class.getName() + " as a listener");
+      }
     }
     injector.injectMembers(this);
   }

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/InjectedServlet.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/InjectedServlet.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/InjectedServlet.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/servlet/InjectedServlet.java Wed Jun  2 09:04:51 2010
@@ -39,10 +39,14 @@ public abstract class InjectedServlet ex
     injector = (Injector)
        context.getAttribute(GuiceServletContextListener.INJECTOR_ATTRIBUTE);
    if (injector == null) {
-     throw new UnavailableException(
-         "Guice Injector not found! Make sure you registered " +
-         GuiceServletContextListener.class.getName() + " as a listener");
+     injector = (Injector)
+       context.getAttribute(GuiceServletContextListener.INJECTOR_NAME);
+     if (injector == null) {
+       throw new UnavailableException(
+           "Guice Injector not found! Make sure you registered " +
+           GuiceServletContextListener.class.getName() + " as a listener");
+     }
    }
    injector.injectMembers(this);
  }
-}
\ No newline at end of file
+}

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/uri/UriBuilder.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/uri/UriBuilder.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/uri/UriBuilder.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/uri/UriBuilder.java Wed Jun  2 09:04:51 2010
@@ -37,7 +37,7 @@ import javax.servlet.http.HttpServletReq
  * Note that the builder will only automatically encode query parameters that are added. Other
  * parameters must be encoded explicitly.
  */
-public class UriBuilder {
+public final class UriBuilder {
   private static final Pattern QUERY_PATTERN = Pattern.compile("([^&=]+)=([^&=]*)");
 
   private String scheme;

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/CharsetUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/CharsetUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/CharsetUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/CharsetUtil.java Wed Jun  2 09:04:51 2010
@@ -27,8 +27,9 @@ import java.nio.charset.Charset;
 /**
  * Utilities for dealing with character set encoding.
  */
-public class CharsetUtil {
-
+public final class CharsetUtil {
+  private CharsetUtil() {}
+  
   /**
    * UTF-8 Charset.
    */

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/DateUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/DateUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/DateUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/DateUtil.java Wed Jun  2 09:04:51 2010
@@ -30,7 +30,7 @@ import java.util.Locale;
 /**
  * Date parsing and writing utilities.
  */
-public class DateUtil {
+public final class DateUtil {
     
   private static final DateTimeFormatter rfc1123DateFormat = DateTimeFormat
       .forPattern("EEE, dd MMM yyyy HH:mm:ss 'GMT'")

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/FutureUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/FutureUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/FutureUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/FutureUtil.java Wed Jun  2 09:04:51 2010
@@ -27,7 +27,8 @@ import java.util.concurrent.TimeoutExcep
 /**
  * Utility methods for processing {@link Future} wrapped objects
  */
-public class FutureUtil {
+public final class FutureUtil {
+  private FutureUtil() {}
   /**
    * Process a {@link Future} wrapped {@link RestfulCollection}
    * to return the first (if any) object, as a {@link Future}

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/HashUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/HashUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/HashUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/HashUtil.java Wed Jun  2 09:04:51 2010
@@ -25,7 +25,8 @@ import java.security.NoSuchAlgorithmExce
 /**
  * Routines for producing hashes.
  */
-public class HashUtil {
+public final class HashUtil {
+  private HashUtil() {}
   /**
    * Produces a checksum for the given input data.
    *

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/ImmediateFuture.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/ImmediateFuture.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/ImmediateFuture.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/ImmediateFuture.java Wed Jun  2 09:04:51 2010
@@ -24,7 +24,7 @@ import java.util.concurrent.ExecutionExc
 /**
  * Implements a future that is immediately available.
  */
-public class ImmediateFuture {
+public final class ImmediateFuture {
   private ImmediateFuture() {}
   
   /**

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/JsonConversionUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/JsonConversionUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/JsonConversionUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/JsonConversionUtil.java Wed Jun  2 09:04:51 2010
@@ -35,8 +35,9 @@ import java.util.regex.Pattern;
 /**
  * Utilities for converting a JSON object to and from a URL encoding
  */
-public class JsonConversionUtil {
-
+public final class JsonConversionUtil {
+  private JsonConversionUtil() {}
+  
   private static final Pattern ARRAY_MATCH = Pattern.compile("(\\w+)\\((\\d+)\\)");
 
   private static final Set<String> RESERVED_PARAMS = ImmutableSet.of("method", "id", "st", "oauth_token");

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/ResourceLoader.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/ResourceLoader.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/ResourceLoader.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/ResourceLoader.java Wed Jun  2 09:04:51 2010
@@ -30,8 +30,8 @@ import java.io.InputStream;
 /**
  * Handles loading contents from resource and file system files.
  */
-public class ResourceLoader {
-
+public final class ResourceLoader {
+  private ResourceLoader() {}
   /**
    * Opens a given path as either a resource or a file, depending on the path
    * name.

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/Utf8UrlCoder.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/Utf8UrlCoder.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/Utf8UrlCoder.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/util/Utf8UrlCoder.java Wed Jun  2 09:04:51 2010
@@ -26,7 +26,9 @@ import java.net.URLEncoder;
  * Performs url encoding / decoding with forced utf-8. Automatically takes care
  * of boilerplate exception handling.
  */
-public class Utf8UrlCoder {
+public final class Utf8UrlCoder {
+
+  private Utf8UrlCoder() {}
 
   public static String encode(String input) {
     try {

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/xml/DomUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/xml/DomUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/xml/DomUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/xml/DomUtil.java Wed Jun  2 09:04:51 2010
@@ -33,7 +33,7 @@ import java.util.Set;
 /**
  * Utility functions for navigating DOM
  */
-public class DomUtil {
+public final class DomUtil {
 
   private DomUtil() {}
 

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/xml/XmlUtil.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/xml/XmlUtil.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/xml/XmlUtil.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/common/xml/XmlUtil.java Wed Jun  2 09:04:51 2010
@@ -41,7 +41,7 @@ import javax.xml.parsers.ParserConfigura
  * Utility class for simplifying parsing of xml documents. Documents are not validated, and
  * loading of external files (xinclude, external entities, DTDs, etc.) are disabled.
  */
-public class XmlUtil {
+public final class XmlUtil {
   private static final Logger LOG = Logger.getLogger(XmlUtil.class.getName());
   // Handles xml errors so that they're not logged to stderr.
   private static final ErrorHandler errorHandler = new ErrorHandler() {

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java Wed Jun  2 09:04:51 2010
@@ -46,6 +46,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.logging.Logger;
 import java.util.logging.Level;
+import java.util.regex.Pattern;
 
 import javax.el.ELContext;
 import javax.el.ELException;
@@ -72,6 +73,7 @@ public class JsonContainerConfig extends
 
   private final Map<String, Map<String, Object>> config;
   private final Expressions expressions;
+  private static final Pattern CRLF_PATTERN = Pattern.compile("[\r\n]+");
 
   /**
    * Creates a new configuration from files.
@@ -253,7 +255,7 @@ public class JsonContainerConfig extends
    * @param base The base object that values will be replaced into.
    * @param merge The object to merge values from.
    *
-   * @throws JSONException if the two objects can't be merged for some reason.
+   * @throws org.json.JSONException if the two objects can't be merged for some reason.
    */
   private JSONObject mergeObjects(JSONObject base, JSONObject merge)
       throws JSONException {
@@ -345,7 +347,7 @@ public class JsonContainerConfig extends
           location = location.substring(6);
           LOG.info("Loading resources from: " + location);
           if (path.endsWith(".txt")) {
-            loadResources(ResourceLoader.getContent(location).split("[\r\n]+"), all);
+            loadResources(CRLF_PATTERN.split(ResourceLoader.getContent(location)), all);
           } else {
             loadResources(new String[]{location}, all);
           }

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/expressions/OpensocialFunctions.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/expressions/OpensocialFunctions.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/expressions/OpensocialFunctions.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/expressions/OpensocialFunctions.java Wed Jun  2 09:04:51 2010
@@ -32,7 +32,7 @@ import javax.el.ELException;
 /**
  * Default functions in the "os:" namespace prefix.
  */
-public class OpensocialFunctions {
+public final class OpensocialFunctions {
   private OpensocialFunctions() {
   }
   

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/expressions/ShindigTypeConverter.java Wed Jun  2 09:04:51 2010
@@ -114,7 +114,7 @@ public class ShindigTypeConverter implem
       // Does this object have a "list" property that is an array?
       // TODO: add to specification
       Object childList = json.opt("list");
-      if (childList != null && childList instanceof JSONArray) {
+      if (childList instanceof JSONArray) {
         return coerceToIterable(childList);
       }
       

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/BaseRequestItem.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/BaseRequestItem.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/BaseRequestItem.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/BaseRequestItem.java Wed Jun  2 09:04:51 2010
@@ -250,9 +250,7 @@ public class BaseRequestItem implements 
     }
     else if (param instanceof List<?>) {
       // Assume it's a list of strings.  This is not type-safe.
-      @SuppressWarnings("unchecked")
-      List<String> listParam = (List<String>) param;
-      return listParam;
+      return (List<String>) param;
     } else if (param instanceof JSONArray) {
       try {
         JSONArray jsonArray = (JSONArray)param;

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/ContentTypes.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/ContentTypes.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/ContentTypes.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/ContentTypes.java Wed Jun  2 09:04:51 2010
@@ -28,8 +28,8 @@ import java.util.logging.Logger;
 /**
  * Common mime content types and utilities
  */
-public class ContentTypes {
-
+public final class ContentTypes {
+  private ContentTypes() {}
   private static final Logger logger = Logger.getLogger(ContentTypes.class.getName());
 
   /**

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/HandlerPreconditions.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/HandlerPreconditions.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/HandlerPreconditions.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/HandlerPreconditions.java Wed Jun  2 09:04:51 2010
@@ -26,7 +26,7 @@ import javax.servlet.http.HttpServletRes
 /**
  * Utility class for common API call preconditions
  */
-public class HandlerPreconditions {
+public final class HandlerPreconditions {
 
   private HandlerPreconditions() {}
 

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/JsonRpcServlet.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/JsonRpcServlet.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/JsonRpcServlet.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/JsonRpcServlet.java Wed Jun  2 09:04:51 2010
@@ -30,6 +30,7 @@ import com.google.common.collect.Immutab
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.inject.Inject;
+import com.google.inject.name.Named;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
@@ -67,6 +68,14 @@ public class JsonRpcServlet extends ApiS
     this.formParser = formParser;
   }
   
+  private String jsonRpcResultField = "result";
+  private boolean jsonRpcBothFields = false;
+  @Inject
+  void setJsonRpcResultField(@Named("shindig.json-rpc.result-field")String jsonRpcResultField) {
+    this.jsonRpcResultField = jsonRpcResultField;
+    jsonRpcBothFields = "both".equals(jsonRpcResultField);
+  }
+
   @Override
   protected void service(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
       throws IOException {
@@ -220,6 +229,17 @@ public class JsonRpcServlet extends ApiS
   }
 
   /**
+   * 
+   */
+  protected void addResult(Map<String,Object> result, Object data) {
+    if (jsonRpcBothFields) {
+      result.put("result", data);
+      result.put("data", data);
+    }
+    result.put(jsonRpcResultField, data);
+  }
+
+  /**
    * Determine if the content contains a batch request
    *
    * @param content json content or null
@@ -248,7 +268,7 @@ public class JsonRpcServlet extends ApiS
     } else {
       Object response = responseItem.getResponse();
       if (response instanceof DataCollection) {
-        result.put("data", ((DataCollection) response).getEntry());
+        addResult(result, ((DataCollection) response).getEntry());
       } else if (response instanceof RestfulCollection) {
         Map<String, Object> map = Maps.newHashMap();
         RestfulCollection<?> collection = (RestfulCollection<?>) response;
@@ -270,9 +290,9 @@ public class JsonRpcServlet extends ApiS
           map.put("sorted", collection.isUpdatedSince());
 
         map.put("list", collection.getEntry());
-        result.put("data", map);
+        addResult(result, map);
       } else {
-        result.put("data", response);
+        addResult(result, response);
       }
 
       // TODO: put "code" for != 200?

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/DataCollectionConverter.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/DataCollectionConverter.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/DataCollectionConverter.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/DataCollectionConverter.java Wed Jun  2 09:04:51 2010
@@ -53,7 +53,7 @@ public class DataCollectionConverter ext
   // Base API is inherently unchecked
   @SuppressWarnings("unchecked")
   public boolean canConvert(Class clazz) {
-    return (DataCollection.class.isAssignableFrom(clazz));
+    return DataCollection.class.isAssignableFrom(clazz);
   }
 
   /**

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/MapConverter.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/MapConverter.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/MapConverter.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/MapConverter.java Wed Jun  2 09:04:51 2010
@@ -158,7 +158,7 @@ public class MapConverter extends Abstra
   @SuppressWarnings("unchecked")
   // API is not generic
   public boolean canConvert(Class clazz) {
-    return (Map.class.isAssignableFrom(clazz));
+    return Map.class.isAssignableFrom(clazz);
   }
 
 }

Modified: shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/RestfullCollectionConverter.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/RestfullCollectionConverter.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/RestfullCollectionConverter.java (original)
+++ shindig/branches/2.0.x/java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/RestfullCollectionConverter.java Wed Jun  2 09:04:51 2010
@@ -47,7 +47,7 @@ public class RestfullCollectionConverter
   @SuppressWarnings("unchecked")
   @Override
   public boolean canConvert(Class clazz) {
-    return (RestfulCollection.class.isAssignableFrom(clazz));
+    return RestfulCollection.class.isAssignableFrom(clazz);
   }
 
   /**

Propchange: shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/AllTests.java
            ('svn:mergeinfo' removed)

Modified: shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/EasyMockTestCase.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/EasyMockTestCase.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/EasyMockTestCase.java (original)
+++ shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/EasyMockTestCase.java Wed Jun  2 09:04:51 2010
@@ -19,7 +19,8 @@ package org.apache.shindig.common;
 
 import com.google.common.collect.Lists;
 
-import org.easymock.classextension.EasyMock;
+import org.easymock.EasyMock;
+import org.easymock.IMockBuilder;
 import org.junit.Assert;
 
 import java.lang.reflect.Method;
@@ -78,15 +79,15 @@ public abstract class EasyMockTestCase e
    **/
 
   protected <T> T mock(Class<T> clazz, Method[] methods, boolean strict) {
-    T m = strict ? EasyMock.createMock(clazz, methods)
-         : EasyMock.createNiceMock(clazz, methods);
+    IMockBuilder<T> builder = EasyMock.createMockBuilder(clazz).addMockedMethods(methods);
+
+    T m = strict ? builder.createMock() : builder.createNiceMock();
     mocks.add(m);
 
     return m;
   }
 
   /**
-  /**
    * Sets each mock to replay mode in the order they were created. Call this after setting
    * all of the mock expectations for a test.
    */

Modified: shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/servlet/HttpUtilTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/servlet/HttpUtilTest.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/servlet/HttpUtilTest.java (original)
+++ shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/servlet/HttpUtilTest.java Wed Jun  2 09:04:51 2010
@@ -27,7 +27,7 @@ import org.apache.commons.lang.StringUti
 import org.apache.shindig.common.servlet.HttpUtil;
 import org.apache.shindig.common.util.DateUtil;
 import org.apache.shindig.common.util.FakeTimeSource;
-import org.easymock.classextension.EasyMock;
+import org.easymock.EasyMock;
 import org.junit.Ignore;
 import org.junit.Test;
 

Propchange: shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/testing/
            ('svn:mergeinfo' removed)

Modified: shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/uri/UriBuilderTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/uri/UriBuilderTest.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/uri/UriBuilderTest.java (original)
+++ shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/common/uri/UriBuilderTest.java Wed Jun  2 09:04:51 2010
@@ -17,10 +17,10 @@
  */
 package org.apache.shindig.common.uri;
 
-import static org.easymock.classextension.EasyMock.createMock;
-import static org.easymock.classextension.EasyMock.expect;
-import static org.easymock.classextension.EasyMock.replay;
-import static org.easymock.classextension.EasyMock.verify;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static junitx.framework.Assert.assertNotEquals;

Modified: shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/protocol/DataServiceServletTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/protocol/DataServiceServletTest.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/protocol/DataServiceServletTest.java (original)
+++ shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/protocol/DataServiceServletTest.java Wed Jun  2 09:04:51 2010
@@ -31,7 +31,7 @@ import org.apache.shindig.config.Contain
 import org.apache.shindig.protocol.conversion.BeanConverter;
 import org.apache.shindig.protocol.conversion.BeanJsonConverter;
 import org.easymock.IMocksControl;
-import org.easymock.classextension.EasyMock;
+import org.easymock.EasyMock;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;

Modified: shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/protocol/JsonRpcServletTest.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/protocol/JsonRpcServletTest.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/protocol/JsonRpcServletTest.java (original)
+++ shindig/branches/2.0.x/java/common/src/test/java/org/apache/shindig/protocol/JsonRpcServletTest.java Wed Jun  2 09:04:51 2010
@@ -20,7 +20,7 @@ package org.apache.shindig.protocol;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 import static org.easymock.EasyMock.isA;
-import static org.easymock.classextension.EasyMock.reset;
+import static org.easymock.EasyMock.reset;
 
 import org.apache.shindig.common.JsonAssert;
 import org.apache.shindig.common.testing.FakeGadgetToken;
@@ -29,7 +29,7 @@ import org.apache.shindig.protocol.conve
 import org.apache.shindig.protocol.multipart.FormDataItem;
 import org.apache.shindig.protocol.multipart.MultipartFormParser;
 import org.easymock.IMocksControl;
-import org.easymock.classextension.EasyMock;
+import org.easymock.EasyMock;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -120,7 +120,7 @@ public class JsonRpcServletTest extends 
     servlet.service(req, res);
     mockControl.verify();
 
-    JsonAssert.assertJsonEquals("{id: 'id', data: {foo:'bar'}}", getOutput());
+    JsonAssert.assertJsonEquals("{id: 'id', result: {foo:'bar'}}", getOutput());
   }
 
   @Test
@@ -158,7 +158,7 @@ public class JsonRpcServletTest extends 
     servlet.service(req, res);
     mockControl.verify();
 
-    JsonAssert.assertJsonEquals("{id: 'id', data: {image-data:'" + IMAGE_DATA +
+    JsonAssert.assertJsonEquals("{id: 'id', result: {image-data:'" + IMAGE_DATA +
         "', image-type:'" + IMAGE_TYPE + "', image-ref:'@" + IMAGE_FIELDNAME + "'}}", getOutput());
   }
 
@@ -200,7 +200,7 @@ public class JsonRpcServletTest extends 
     servlet.service(req, res);
     mockControl.verify();
 
-    JsonAssert.assertJsonEquals("{id: 'id', data: {image-data:'" + IMAGE_DATA +
+    JsonAssert.assertJsonEquals("{id: 'id', result: {image-data:'" + IMAGE_DATA +
         "', image-type:'" + IMAGE_TYPE + "', image-ref:'@" + IMAGE_FIELDNAME + "'}}", getOutput());
   }
 
@@ -247,7 +247,7 @@ public class JsonRpcServletTest extends 
     servlet.service(req, res);
     mockControl.verify();
 
-    JsonAssert.assertJsonEquals("{id: 'id', data: {image-data:'" + IMAGE_DATA +
+    JsonAssert.assertJsonEquals("{id: 'id', result: {image-data:'" + IMAGE_DATA +
         "', image-type:'" + IMAGE_TYPE + "', image-ref:'@" + IMAGE_FIELDNAME + "'}}", getOutput());
   }
 
@@ -342,7 +342,7 @@ public class JsonRpcServletTest extends 
     servlet.service(req, res);
     mockControl.verify();
 
-    JsonAssert.assertJsonEquals("[{id:'1',data:{foo:'bar'}},{id:'2',data:{foo:'bar'}}]",
+    JsonAssert.assertJsonEquals("[{id:'1',result:{foo:'bar'}},{id:'2',result:{foo:'bar'}}]",
         getOutput());
   }
 
@@ -362,21 +362,21 @@ public class JsonRpcServletTest extends 
     servlet.service(req, res);
     mockControl.verify();
 
-    JsonAssert.assertJsonEquals("{id:'1',data:{foo:'bar'}}", getOutput());
+    JsonAssert.assertJsonEquals("{id:'1',result:{foo:'bar'}}", getOutput());
   }
 
   @Test
   public void testGetJsonResponseWithKey() throws Exception {
     ResponseItem responseItem = new ResponseItem("Name");
     Object result = servlet.getJSONResponse("my-key", responseItem);
-    JsonAssert.assertObjectEquals("{id: 'my-key', data: 'Name'}", result);
+    JsonAssert.assertObjectEquals("{id: 'my-key', result: 'Name'}", result);
   }
 
   @Test
   public void testGetJsonResponseWithoutKey() throws Exception {
     ResponseItem responseItem = new ResponseItem("Name");
     Object result = servlet.getJSONResponse(null, responseItem);
-    JsonAssert.assertObjectEquals("{data: 'Name'}", result);
+    JsonAssert.assertObjectEquals("{result: 'Name'}", result);
   }
 
   @Test

Modified: shindig/branches/2.0.x/java/gadgets/pom.xml
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/pom.xml?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/pom.xml (original)
+++ shindig/branches/2.0.x/java/gadgets/pom.xml Wed Jun  2 09:04:51 2010
@@ -138,6 +138,10 @@
       <artifactId>caja</artifactId>
     </dependency>
     <dependency>
+      <groupId>caja</groupId>
+      <artifactId>htmlparser</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.googlecode.json-simple</groupId>
       <artifactId>json-simple</artifactId>
     </dependency>
@@ -150,6 +154,10 @@
       <artifactId>oauth-httpclient4</artifactId>
     </dependency>
     <dependency>
+      <groupId>net.oauth.core</groupId>
+      <artifactId>oauth-provider</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.google.collections</groupId>
       <artifactId>google-collections</artifactId>
     </dependency>

Modified: shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetBlacklist.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetBlacklist.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetBlacklist.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetBlacklist.java Wed Jun  2 09:04:51 2010
@@ -33,7 +33,6 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Set;
 import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
 
 /**
  * Basic implementation of a {@code GadgetBlacklist}, reading blacklist data
@@ -72,8 +71,6 @@ public class BasicGadgetBlacklist implem
    *
    * @param blacklistFile file containing blacklist entries
    * @throws IOException if reading the file fails
-   * @throws PatternSyntaxException if an invalid regular expression occurs in
-   *    the file
    */
   public BasicGadgetBlacklist(File blacklistFile) throws IOException {
     exactMatches = Sets.newHashSet();
@@ -104,7 +101,7 @@ public class BasicGadgetBlacklist implem
         if (parts.length == 1) {
           exactMatches.add(line.toLowerCase());
         } else if (parts.length == 2
-                   && parts[0].toUpperCase().equals(REGEXP_PREFIX)) {
+                   && parts[0].equalsIgnoreCase(REGEXP_PREFIX)) {
           // compile will throw PatternSyntaxException on invalid patterns.
           regexpMatches.add(Pattern.compile(parts[1], Pattern.CASE_INSENSITIVE));
         }

Modified: shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/FetchResponseUtils.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/FetchResponseUtils.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/FetchResponseUtils.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/FetchResponseUtils.java Wed Jun  2 09:04:51 2010
@@ -29,8 +29,8 @@ import java.util.Map;
 /**
  * Handles converting HttpResponse objects to the format expected by the makeRequest javascript.
  */
-public class FetchResponseUtils {
-
+public final class FetchResponseUtils {
+  private FetchResponseUtils() {}
   /**
    * Convert a response to a JSON object.
    *

Modified: shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/encoding/EncodingDetector.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/encoding/EncodingDetector.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/encoding/EncodingDetector.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/encoding/EncodingDetector.java Wed Jun  2 09:04:51 2010
@@ -28,11 +28,13 @@ import com.ibm.icu.text.CharsetMatch;
  *
  * Highly skewed towards common encodings (UTF-8 and Latin-1).
  */
-public class EncodingDetector {
+public final class EncodingDetector {
+  private EncodingDetector() {}
+  
   private static final Charset UTF_8 = Charset.forName("UTF-8");
   private static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
 
- 
+
   public static class FallbackEncodingDetector {
     public Charset detectEncoding(byte[] input) {
       // Fall back to the incredibly slow ICU. It might be better to just skip this entirely.
@@ -51,7 +53,7 @@ public class EncodingDetector {
    *     encoding for HTTP) if the bytes are not valid UTF-8. Only recommended if you can reasonably
    *     expect that other encodings are going to be specified. Full encoding detection is very
    *     expensive!
-   * @param alternateDecoder specify a fallback encoding detection. 
+   * @param alternateDecoder specify a fallback encoding detection.
    *     Only used if assume88591IfNotUtf8 is false.
    * @return The detected encoding.
    */
@@ -103,11 +105,16 @@ public class EncodingDetector {
         return false;
       }
 
+      if (endOfSequence >= j) {
+        // End of sequence reached, not a valid sequence
+        return false;
+      }
+
       while (i < endOfSequence) {
         i++;
         bite = input[i];
         if ((bite & 0xC0) != 0x80) {
-          // High bit not set, not a vlaid sequence
+          // High bit not set, not a valid sequence
           return false;
         }
       }

Modified: shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureParser.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureParser.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureParser.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureParser.java Wed Jun  2 09:04:51 2010
@@ -102,7 +102,7 @@ class FeatureParser {
     return attribs.build();
   }
   
-  static class ParsedFeature {
+  static final class ParsedFeature {
     private final String name;
     private final List<String> deps;
     private final List<Bundle> bundles;
@@ -125,7 +125,7 @@ class FeatureParser {
       return bundles;
     }
     
-    public static class Bundle {
+    public final static class Bundle {
       private final String type;
       private final Map<String, String> attribs;
       private final List<Resource> resources;
@@ -149,7 +149,7 @@ class FeatureParser {
       }
     }
     
-    static class Resource {
+    static final class Resource {
       private final Uri source;
       private final String content;
       private final Map<String, String> attribs;

Modified: shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureRegistry.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureRegistry.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureRegistry.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/features/FeatureRegistry.java Wed Jun  2 09:04:51 2010
@@ -74,7 +74,8 @@ public class FeatureRegistry {
 
 /**
  *
- * @param featureFiles
+ * @param resourceLoader
+ * @param featuresoo
  * @throws GadgetException
  */
   @Inject
@@ -104,7 +105,7 @@ public class FeatureRegistry {
    * That is, their dependencies must all be valid features as well, and the
    * dependency tree must not contain circular dependencies.
    *
-   * @param resourceKey The file or directory to load the feature from. If feature.xml
+   * @param resourceList The files or directories                                                                                                             to load the feature from. If feature.xml
    *    is passed in directly, it will be loaded as a single feature. If a
    *    directory is passed, any features in that directory (recursively) will
    *    be loaded. If res://*.txt or res:*.txt is passed, we will look for named resources
@@ -474,7 +475,7 @@ public class FeatureRegistry {
     return ImmutableMap.<String, String>builder().putAll(bundleAttribs).putAll(resourceAttribs).build();
   }
   
-  private static class InlineFeatureResource extends FeatureResource.Default {
+  private static final class InlineFeatureResource extends FeatureResource.Default {
     private final String content;
     
     private InlineFeatureResource(String content) {
@@ -490,7 +491,7 @@ public class FeatureRegistry {
     }
   }
 
-  private static class FeatureBundle {
+  private static final class FeatureBundle {
     private final String type;
     private final Map<String, String> attribs;
     private final List<FeatureResource> resources;
@@ -514,7 +515,7 @@ public class FeatureRegistry {
     }
   }
   
-  private static class FeatureNode {
+  private static final class FeatureNode {
     private final String name;
     private final List<FeatureBundle> bundles;
     private final List<String> requestedDeps;
@@ -587,7 +588,7 @@ public class FeatureRegistry {
     }
   }
   
-  private static class FeatureCacheKey {
+  private static final class FeatureCacheKey {
     private final Collection<String> needed;
     private final RenderingContext rCtx;
     private final String container;

Modified: shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java Wed Jun  2 09:04:51 2010
@@ -17,15 +17,9 @@
  */
 package org.apache.shindig.gadgets.http;
 
-import static org.apache.shindig.gadgets.rewrite.image.BasicImageRewriter.PARAM_RESIZE_HEIGHT;
-import static org.apache.shindig.gadgets.rewrite.image.BasicImageRewriter.PARAM_RESIZE_QUALITY;
-import static org.apache.shindig.gadgets.rewrite.image.BasicImageRewriter.PARAM_RESIZE_WIDTH;
-
-import com.google.inject.Inject;
-
 import org.apache.shindig.auth.SecurityToken;
-import org.apache.shindig.common.util.TimeSource;
 import org.apache.shindig.gadgets.AuthType;
+import org.apache.shindig.gadgets.uri.UriCommon;
 
 /**
  * Base class for content caches. Defines cache expiration rules and
@@ -37,15 +31,9 @@ import org.apache.shindig.gadgets.AuthTy
  * of building your own keys from scratch.
  */
 public abstract class AbstractHttpCache implements HttpCache {
-  private TimeSource clock = new TimeSource();
-
-  /**
-   * Subclasses should call this directly or be injected themselves to override.
-   */
-  @Inject
-  public void setClock(TimeSource clock) {
-    this.clock = clock;
-  }
+  private static final String RESIZE_HEIGHT = UriCommon.Param.RESIZE_HEIGHT.getKey();
+  private static final String RESIZE_WIDTH = UriCommon.Param.RESIZE_WIDTH.getKey();
+  private static final String RESIZE_QUALITY = UriCommon.Param.RESIZE_QUALITY.getKey();
 
   // Implement these methods to create a concrete HttpCache class.
   protected abstract HttpResponse getResponseImpl(String key);
@@ -152,9 +140,9 @@ public abstract class AbstractHttpCache 
         .setLegacyParam(6, getInstanceId(request))
         .setLegacyParam(7, getServiceName(request))
         .setLegacyParam(8, getTokenName(request))
-        .setParam("rh", request.getParam(PARAM_RESIZE_HEIGHT))
-        .setParam("rw", request.getParam(PARAM_RESIZE_WIDTH))
-        .setParam("rq", request.getParam(PARAM_RESIZE_QUALITY));
+        .setParam("rh", request.getParam(RESIZE_HEIGHT))
+        .setParam("rw", request.getParam(RESIZE_WIDTH))
+        .setParam("rq", request.getParam(RESIZE_QUALITY));
 
     return keyBuilder.build();
   }

Modified: shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/DefaultRequestPipeline.java Wed Jun  2 09:04:51 2010
@@ -21,11 +21,13 @@ import com.google.inject.Inject;
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
 import com.google.inject.internal.Nullable;
+import com.google.inject.name.Named;
 
 import org.apache.shindig.common.util.Utf8UrlCoder;
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.oauth.OAuthRequest;
-import org.apache.shindig.gadgets.rewrite.image.ImageRewriter;
+import org.apache.shindig.gadgets.rewrite.ResponseRewriterRegistry;
+import org.apache.shindig.gadgets.rewrite.RewritingException;
 
 /**
  * A standard implementation of a request pipeline. Performs request caching and
@@ -36,7 +38,7 @@ public class DefaultRequestPipeline impl
   private final HttpFetcher httpFetcher;
   private final HttpCache httpCache;
   private final Provider<OAuthRequest> oauthRequestProvider;
-  private final ImageRewriter imageRewriter;
+  private final ResponseRewriterRegistry responseRewriterRegistry;
   private final InvalidationService invalidationService;
   private final HttpResponseMetadataHelper metadataHelper;
 
@@ -44,13 +46,14 @@ public class DefaultRequestPipeline impl
   public DefaultRequestPipeline(HttpFetcher httpFetcher,
                                 HttpCache httpCache,
                                 Provider<OAuthRequest> oauthRequestProvider,
-                                ImageRewriter imageRewriter,
+                                @Named("shindig.rewriters.response.pre-cache")
+                                ResponseRewriterRegistry responseRewriterRegistry,
                                 InvalidationService invalidationService,
                                 @Nullable HttpResponseMetadataHelper metadataHelper) {
     this.httpFetcher = httpFetcher;
     this.httpCache = httpCache;
     this.oauthRequestProvider = oauthRequestProvider;
-    this.imageRewriter = imageRewriter;
+    this.responseRewriterRegistry = responseRewriterRegistry;
     this.invalidationService = invalidationService;
     this.metadataHelper = metadataHelper;
   }
@@ -106,8 +109,13 @@ public class DefaultRequestPipeline impl
     }
     
     if (!fetchedResponse.isError() && !request.getIgnoreCache() && request.getCacheTtl() != 0) {
-      fetchedResponse = imageRewriter.rewrite(request, fetchedResponse);
+      try {
+        fetchedResponse = responseRewriterRegistry.rewriteHttpResponse(request, fetchedResponse);
+      } catch (RewritingException e) {
+        throw new GadgetException(GadgetException.Code.INTERNAL_SERVER_ERROR, e, e.getHttpStatusCode());
+      }
     }
+    
     // Set response hash value in metadata (used for url versioning)
     fetchedResponse = HttpResponseMetadataHelper.updateHash(fetchedResponse, metadataHelper);
     if (!request.getIgnoreCache() ) {

Modified: shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponseBuilder.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponseBuilder.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponseBuilder.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponseBuilder.java Wed Jun  2 09:04:51 2010
@@ -45,35 +45,49 @@ public class HttpResponseBuilder extends
   private int httpStatusCode = HttpResponse.SC_OK;
   private final Multimap<String, String> headers = HttpResponse.newHeaderMultimap();
   private final Map<String, String> metadata = Maps.newHashMap();
-
+  
+  // Stores the HttpResponse object, if any, from which this Builder is constructed.
+  // This allows us to avoid creating a new HttpResponse in create() when no changes
+  // have been made.
+  private HttpResponse responseObj;
+  private int responseObjNumChanges;
+  
+  public HttpResponseBuilder(GadgetHtmlParser parser, HttpResponse response) {
+    super(parser, response);
+    if (response != null) {
+      httpStatusCode = response.getHttpStatusCode();
+      headers.putAll(response.getHeaders());
+      metadata.putAll(response.getMetadata());
+    } else {
+      setResponse(null);
+    }
+    responseObj = response;
+    responseObjNumChanges = getNumChanges();
+  }
+  
   public HttpResponseBuilder() {
-    super(unsupportedParser(), (String)null);
-    this.setResponse(null);
+    this(unsupportedParser(), null);
   }
 
   public HttpResponseBuilder(HttpResponseBuilder builder) {
-    super(unsupportedParser(), builder.create());
-    httpStatusCode = builder.httpStatusCode;
-    headers.putAll(builder.headers);
-    metadata.putAll(builder.metadata);
+    this(unsupportedParser(), builder.create());
   }
 
   public HttpResponseBuilder(HttpResponse response) {
     this(unsupportedParser(), response);
   }
-  
-  public HttpResponseBuilder(GadgetHtmlParser parser, HttpResponse response) {
-    super(parser, response);
-    httpStatusCode = response.getHttpStatusCode();
-    headers.putAll(response.getHeaders());
-    metadata.putAll(response.getMetadata());
-  }
 
   /**
    * @return A new HttpResponse.
    */
   public HttpResponse create() {
-    return new HttpResponse(this);
+    if (getNumChanges() != responseObjNumChanges || responseObj == null) {
+      // Short-circuit the creation process: no need to create a
+      // new (immutable) HttpResponse object when no modifications occurred.
+      responseObj = new HttpResponse(this);
+      responseObjNumChanges = getNumChanges();
+    }
+    return responseObj;
   }
 
   /**
@@ -86,21 +100,23 @@ public class HttpResponseBuilder extends
   }
 
   public HttpResponseBuilder setEncoding(Charset charset) {
-
     Collection<String> values = headers.get("Content-Type");
     if (!values.isEmpty()) {
       String contentType = values.iterator().next();
-      String newContentType = "";
+      StringBuilder newContentType = new StringBuilder("");
       // Remove previously set charset:
       String[] parts = StringUtils.split(contentType, ';');
       for (String part : parts) {
         if (!part.contains("charset=")) {
-          newContentType += part + "; ";
+          newContentType.append(part).append("; ");
         }
       }
-      newContentType += "charset=" + charset.name();
+      newContentType.append("charset=").append(charset.name());
       values.clear();
-      values.add(newContentType);
+      values.add(newContentType.toString());
+      if (!(values.size() == 1 && !contentType.equals(newContentType))) {
+        incrementNumChanges();
+      }
     }
     return this;
   }
@@ -130,13 +146,23 @@ public class HttpResponseBuilder extends
   }
 
   public HttpResponseBuilder setHttpStatusCode(int httpStatusCode) {
-    this.httpStatusCode = httpStatusCode;
+    if (this.httpStatusCode != httpStatusCode) {
+      this.httpStatusCode = httpStatusCode;
+      incrementNumChanges();
+    }
+    return this;
+  }
+  
+  public HttpResponseBuilder clearAllHeaders() {
+    incrementNumChanges();
+    headers.clear();
     return this;
   }
 
   public HttpResponseBuilder addHeader(String name, String value) {
     if (name != null) {
       headers.put(name, value);
+      incrementNumChanges();
     }
     return this;
   }
@@ -144,6 +170,7 @@ public class HttpResponseBuilder extends
   public HttpResponseBuilder setHeader(String name, String value) {
     if (name != null) {
       headers.replaceValues(name, Lists.newArrayList(value));
+      incrementNumChanges();
     }
     return this;
   }
@@ -158,6 +185,7 @@ public class HttpResponseBuilder extends
   public HttpResponseBuilder addHeaders(Map<String, String> headers) {
     for (Map.Entry<String,String> entry : headers.entrySet()) {
       this.headers.put(entry.getKey(), entry.getValue());
+      incrementNumChanges();
     }
     return this;
   }
@@ -165,18 +193,24 @@ public class HttpResponseBuilder extends
   public HttpResponseBuilder addAllHeaders(Map<String, ? extends List<String>> headers) {
     for (Map.Entry<String,? extends List<String>> entry : headers.entrySet()) {
       this.headers.putAll(entry.getKey(), entry.getValue());
+      incrementNumChanges();
     }
     return this;
   }
 
   public Collection<String> removeHeader(String name) {
-    return headers.removeAll(name);
+    Collection<String> ret = headers.removeAll(name);
+    if (ret != null) {
+      incrementNumChanges();
+    }
+    return ret;
   }
 
   public HttpResponseBuilder setCacheTtl(int cacheTtl) {
     headers.removeAll("Pragma");
     headers.removeAll("Expires");
     headers.replaceValues("Cache-Control", ImmutableList.of("public,max-age=" + cacheTtl));
+    incrementNumChanges();
     return this;
   }
 
@@ -184,6 +218,7 @@ public class HttpResponseBuilder extends
     headers.removeAll("Cache-Control");
     headers.removeAll("Pragma");
     headers.put("Expires", DateUtil.formatRfc1123Date(expirationTime));
+    incrementNumChanges();
     return this;
   }
 
@@ -195,18 +230,25 @@ public class HttpResponseBuilder extends
     headers.replaceValues("Cache-Control", NO_CACHE_HEADER);
     headers.replaceValues("Pragma", NO_CACHE_HEADER);
     headers.removeAll("Expires");
+    incrementNumChanges();
     return this;
   }
 
   public HttpResponseBuilder setMetadata(String key, String value) {
     metadata.put(key, value);
+    incrementNumChanges();
     return this;
   }
 
   public HttpResponseBuilder setMetadata(Map<String, String> metadata) {
     this.metadata.putAll(metadata);
+    incrementNumChanges();
     return this;
   }
+  
+  public int getContentLength() {
+    return getResponse().length;
+  }
 
   Multimap<String, String> getHeaders() {
     return headers;

Modified: shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/InvalidationHandler.java
URL: http://svn.apache.org/viewvc/shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/InvalidationHandler.java?rev=950443&r1=950442&r2=950443&view=diff
==============================================================================
--- shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/InvalidationHandler.java (original)
+++ shindig/branches/2.0.x/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/InvalidationHandler.java Wed Jun  2 09:04:51 2010
@@ -86,7 +86,7 @@ public class InvalidationHandler {
           }
           resources.add(Uri.parse(key));
         } else {
-          if (key.equals("@viewer")) {
+          if ("@viewer".equals(key)) {
             // Viewer is invalidated by default if available
             continue;
           }