You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by et...@apache.org on 2008/05/10 13:05:21 UTC

svn commit: r655045 - in /incubator/shindig/trunk/java: gadgets/src/main/java/org/apache/shindig/common/ gadgets/src/main/java/org/apache/shindig/common/crypto/ gadgets/src/main/java/org/apache/shindig/common/util/ gadgets/src/main/java/org/apache/shin...

Author: etnu
Date: Sat May 10 04:05:19 2008
New Revision: 655045

URL: http://svn.apache.org/viewvc?rev=655045&view=rev
Log:
Continued migrating code from "gadgets" to "common". This patch moves various utility code into the common package and breaks down components into sub-packages as appropriate.


Added:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypter.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypterException.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobExpiredException.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/Crypto.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Base32.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Base32.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Check.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Check.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/HashUtil.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/HashUtil.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/InputStreamConsumer.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/InputStreamConsumer.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/ResourceLoader.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/ResourceLoader.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/StringEncoding.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/StringEncoding.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/TimeSource.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/TimeSource.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlException.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlException.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlUtil.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/BlobCrypterTest.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/BlobCrypterTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/CryptoTest.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CryptoTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/CheckTest.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CheckTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/FakeTimeSource.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/FakeTimeSource.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/StringEncodingTest.java
      - copied, changed from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/StringEncodingTest.java
Removed:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Base32.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/BasicBlobCrypter.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/BlobCrypter.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/BlobCrypterException.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/BlobExpiredException.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Check.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Crypto.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/HashUtil.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/InputStreamConsumer.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/ResourceLoader.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/StringEncoding.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/TimeSource.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlException.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/BlobCrypterTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CheckTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CryptoTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/FakeTimeSource.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/StringEncodingTest.java
Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityToken.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicRemoteContentFetcher.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/ContainerConfig.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsLibrary.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcher.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcherFactory.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/RpcServlet.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/UrlGenerator.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/BasicGadgetOAuthTokenStore.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcher.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcherFactory.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Feature.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Icon.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LocaleSpec.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/ModulePrefs.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Preload.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/UserPref.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/View.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentRequestTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/FakeOAuthServiceProvider.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthFetcherTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/FeatureTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/IconTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LocaleSpecTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ModulePrefsTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/UserPrefTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/JettyServer.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityToken.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityToken.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityToken.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityToken.java Sat May 10 04:05:19 2008
@@ -18,9 +18,9 @@
  */
 package org.apache.shindig.common;
 
-import org.apache.shindig.util.BasicBlobCrypter;
-import org.apache.shindig.util.BlobCrypter;
-import org.apache.shindig.util.BlobCrypterException;
+import org.apache.shindig.common.crypto.BasicBlobCrypter;
+import org.apache.shindig.common.crypto.BlobCrypter;
+import org.apache.shindig.common.crypto.BlobCrypterException;
 
 import java.util.HashMap;
 import java.util.Map;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/BasicSecurityTokenDecoder.java Sat May 10 04:05:19 2008
@@ -18,7 +18,7 @@
  */
 package org.apache.shindig.common;
 
-import org.apache.shindig.util.BlobCrypterException;
+import org.apache.shindig.common.crypto.BlobCrypterException;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;

Added: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java?rev=655045&view=auto
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java (added)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java Sat May 10 04:05:19 2008
@@ -0,0 +1,188 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.common.crypto;
+
+import org.apache.shindig.common.util.TimeSource;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.digest.DigestUtils;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.security.GeneralSecurityException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Simple implementation of BlobCrypter.
+ */
+public class BasicBlobCrypter implements BlobCrypter {
+
+  // Labels for key derivation
+  private static final byte CIPHER_KEY_LABEL = 0;
+  private static final byte HMAC_KEY_LABEL = 1;
+  
+  /** Key used for time stamp (in seconds) of data */
+  public static final String TIMESTAMP_KEY = "t";
+  
+  /** minimum length of master key */
+  public static final int MASTER_KEY_MIN_LEN = 16;
+  
+  /** allow three minutes for clock skew */
+  private static final long CLOCK_SKEW_ALLOWANCE = 180;
+  
+  private static final String UTF8 = "UTF-8";
+  
+  public TimeSource timeSource = new TimeSource();  
+  private byte[] cipherKey;
+  private byte[] hmacKey;
+  
+  /**
+   * Builds a BlobCrypter from the specified master key
+   * 
+   * @param masterKey
+   */
+  public BasicBlobCrypter(byte[] masterKey) {
+    if (masterKey.length < MASTER_KEY_MIN_LEN) {
+      throw new IllegalArgumentException("Master key needs at least " +
+          MASTER_KEY_MIN_LEN + " bytes");
+    }
+    cipherKey = deriveKey(CIPHER_KEY_LABEL, masterKey, Crypto.CIPHER_KEY_LEN);
+    hmacKey = deriveKey(HMAC_KEY_LABEL, masterKey, 0);
+  }
+
+  /**
+   * Generates unique keys from a master key.
+   * 
+   * @param label type of key to derive
+   * @param masterKey master key
+   * @param len length of key needed, less than 20 bytes.  20 bytes are 
+   * returned if len is 0.  
+   * 
+   * @return a derived key of the specified length
+   */
+  private byte[] deriveKey(byte label, byte[] masterKey, int len) {
+    byte[] base = Crypto.concat(new byte[] { label }, masterKey);
+    byte[] hash = DigestUtils.sha(base);
+    if (len == 0) {
+      return hash;
+    }
+    byte[] out = new byte[len];
+    System.arraycopy(hash, 0, out, 0, out.length);
+    return out;
+  }
+  
+  /* (non-Javadoc)
+   * @see org.apache.shindig.util.BlobCrypter#wrap(java.util.Map)
+   */
+  public String wrap(Map<String, String> in)
+  throws BlobCrypterException {
+    if (in.containsKey(TIMESTAMP_KEY)) {
+      throw new IllegalArgumentException("No 't' keys allowed for BlobCrypter");
+    }
+    try {
+      byte[] encoded = serializeAndTimestamp(in);
+      byte[] cipherText = Crypto.aes128cbcEncrypt(cipherKey, encoded);
+      byte[] hmac = Crypto.hmacSha1(hmacKey, cipherText);
+      byte[] b64 = Base64.encodeBase64(Crypto.concat(cipherText, hmac));
+      return new String(b64, UTF8);
+    } catch (UnsupportedEncodingException e) {
+      throw new BlobCrypterException(e);
+    } catch (GeneralSecurityException e) {
+      throw new BlobCrypterException(e);
+    }
+  }
+
+  /**
+   * Encode the input for transfer.  We use something a lot like HTML form
+   * encodings.  The time stamp is in seconds since the epoch.
+   */
+  private byte[] serializeAndTimestamp(Map<String, String> in)
+  throws UnsupportedEncodingException {
+    StringBuilder sb = new StringBuilder();
+
+    for (Map.Entry<String, String> stringStringEntry : in.entrySet()) {
+      Map.Entry<String, String> val = stringStringEntry;
+      sb.append(URLEncoder.encode(val.getKey(), UTF8));
+      sb.append('=');
+      sb.append(URLEncoder.encode(val.getValue(), UTF8));
+      sb.append('&');
+    }
+    sb.append(TIMESTAMP_KEY);
+    sb.append('=');
+    sb.append(timeSource.currentTimeMillis()/1000);
+    return sb.toString().getBytes(UTF8);
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.shindig.util.BlobCrypter#unwrap(java.lang.String, int)
+   */
+  public Map<String, String> unwrap(String in, int maxAgeSec)
+  throws BlobCrypterException {
+    try {
+      byte[] bin = Base64.decodeBase64(in.getBytes());
+      byte[] hmac = new byte[Crypto.HMAC_SHA1_LEN];
+      byte[] cipherText = new byte[bin.length-Crypto.HMAC_SHA1_LEN];
+      System.arraycopy(bin, 0, cipherText, 0, cipherText.length);
+      System.arraycopy(bin, cipherText.length, hmac, 0, hmac.length);
+      Crypto.hmacSha1Verify(hmacKey, cipherText, hmac);
+      byte[] plain = Crypto.aes128cbcDecrypt(cipherKey, cipherText);
+      Map<String, String> out = deserialize(plain);
+      checkTimestamp(out, maxAgeSec);
+      return out;
+    } catch (GeneralSecurityException e) {
+      throw new BlobCrypterException("Invalid token signature", e);
+    } catch (ArrayIndexOutOfBoundsException e) {
+      throw new BlobCrypterException("Invalid token format", e);
+    } catch (UnsupportedEncodingException e) {
+      throw new BlobCrypterException(e);
+    }
+
+  }
+
+  private Map<String, String> deserialize(byte[] plain)
+  throws UnsupportedEncodingException {
+    String base = new String(plain, UTF8);
+    String[] items = base.split("[&=]");
+    Map<String, String> map = new HashMap<String, String>();
+    for (int i=0; i < items.length; ) {
+      String key = URLDecoder.decode(items[i++], UTF8);
+      String val = URLDecoder.decode(items[i++], UTF8);
+      map.put(key, val);
+    }
+    return map;
+  }
+  
+  /**
+   * We allow a few minutes on either side of the validity window to account
+   * for clock skew.
+   */
+  private void checkTimestamp(Map<String, String> out, int maxAge)
+  throws BlobExpiredException {
+    long origin = Long.parseLong(out.get(TIMESTAMP_KEY));
+    long minTime = origin - CLOCK_SKEW_ALLOWANCE;
+    long maxTime = origin + maxAge + CLOCK_SKEW_ALLOWANCE;
+    long now = timeSource.currentTimeMillis()/1000;
+    if (!(minTime < now && now < maxTime)) {
+      throw new BlobExpiredException(minTime, now, maxTime);
+    }    
+  }
+
+}

Added: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypter.java?rev=655045&view=auto
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypter.java (added)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypter.java Sat May 10 04:05:19 2008
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.common.crypto;
+
+import java.util.Map;
+
+/**
+ * Utility interface for managing signed, encrypted, and time stamped blobs.
+ * Blobs are made up of name/value pairs.  Time stamps are automatically
+ * included and checked.
+ * 
+ * Thread safe.
+ */
+public interface BlobCrypter {
+
+  /**
+   * Time stamps, encrypts, and signs a blob.
+   * 
+   * @param in name/value pairs to encrypt
+   * @return a base64 encoded blob
+   * 
+   * @throws BlobCrypterException
+   */
+  public String wrap(Map<String, String> in) throws BlobCrypterException;
+
+  /**
+   * Unwraps a blob.
+   * 
+   * @param in blob
+   * @param maxAgeSec maximum age for the blob
+   * @return the name/value pairs, including the origin timestamp.
+   * 
+   * @throws BlobExpiredException if the blob is too old to be accepted.
+   * @throws BlobCrypterException if the blob can't be decoded.
+   */
+  public Map<String, String> unwrap(String in, int maxAgeSec)
+      throws BlobCrypterException;
+
+}

Added: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypterException.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypterException.java?rev=655045&view=auto
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypterException.java (added)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobCrypterException.java Sat May 10 04:05:19 2008
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.common.crypto;
+
+/**
+ * For all exceptions thrown by BlobCrypter
+ */
+public class BlobCrypterException extends Exception {
+  public BlobCrypterException(Throwable cause) {
+    super(cause);
+  }
+  
+  public BlobCrypterException(String msg, Throwable cause) {
+    super(msg, cause);
+  }
+  
+  protected BlobCrypterException(String msg) {
+    super(msg);
+  }
+}

Added: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobExpiredException.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobExpiredException.java?rev=655045&view=auto
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobExpiredException.java (added)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/BlobExpiredException.java Sat May 10 04:05:19 2008
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.common.crypto;
+
+import java.util.Date;
+
+/**
+ * Thrown when a blob has expired.
+ */
+public class BlobExpiredException extends BlobCrypterException {
+
+  public final Date minDate;
+  public final Date used;
+  public final Date maxDate;
+
+  public BlobExpiredException(long minTime, long now, long maxTime) {
+    this(new Date(minTime*1000), new Date(now*1000), new Date(maxTime*1000));
+  }
+
+  public BlobExpiredException(Date minTime, Date now, Date maxTime) {
+    super("Blob expired, was valid from " + minTime + " to " + maxTime
+        + ", attempted use at " + now);
+    this.minDate = minTime;
+    this.used = now;
+    this.maxDate = maxTime;
+  }
+
+}

Added: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/Crypto.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/Crypto.java?rev=655045&view=auto
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/Crypto.java (added)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/crypto/Crypto.java Sat May 10 04:05:19 2008
@@ -0,0 +1,215 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.common.crypto;
+
+import org.apache.commons.codec.binary.Hex;
+
+import java.security.GeneralSecurityException;
+import java.security.Key;
+import java.security.SecureRandom;
+
+import javax.crypto.Cipher;
+import javax.crypto.Mac;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * Cryptographic utility functions.
+ */
+public class Crypto {
+  
+  /** 
+   * Use this random number generator instead of creating your own.  This is
+   * thread-safe.
+   */
+  public static SecureRandom rand = new SecureRandom();
+  
+  /**
+   * HMAC algorithm to use
+   */
+  private final static String HMAC_TYPE = "HMACSHA1";
+  
+  /** 
+   * minimum safe length for hmac keys (this is good practice, but not 
+   * actually a requirement of the algorithm
+   */
+  private final static int MIN_HMAC_KEY_LEN = 8;
+  
+  /**
+   * Encryption algorithm to use
+   */
+  private final static String CIPHER_TYPE = "AES/CBC/PKCS5Padding";
+  
+  private final static String CIPHER_KEY_TYPE = "AES";
+  
+  /**
+   * Use keys of this length for encryption operations
+   */
+  public final static int CIPHER_KEY_LEN = 16;
+  
+  private static int CIPHER_BLOCK_SIZE = 16;
+  
+  /**
+   * Length of HMAC SHA1 output
+   */
+  public final static int HMAC_SHA1_LEN = 20;
+  
+  // everything is static, no instantiating this class
+  private Crypto() { 
+  }
+
+  /**
+   * Gets a hex encoded random string.
+   * 
+   * @param numBytes number of bytes of randomness.
+   */
+  public static String getRandomString(int numBytes) {
+    return new String(Hex.encodeHex(getRandomBytes(numBytes)));
+  }
+  
+  /**
+   * Returns strong random bytes.
+   * 
+   * @param numBytes number of bytes of randomness
+   */
+  public static byte[] getRandomBytes(int numBytes) {
+    byte[] out = new byte[numBytes];
+    rand.nextBytes(out);
+    return out;
+  }
+  
+  /**
+   * HMAC sha1
+   * 
+   * @param key the key must be at least 8 bytes in length.
+   * @param in byte array to HMAC.
+   * @return the hash
+   * 
+   * @throws GeneralSecurityException
+   */
+  public static byte[] hmacSha1(byte[] key, byte[] in) throws GeneralSecurityException {
+    if (key.length < MIN_HMAC_KEY_LEN) {
+      throw new GeneralSecurityException("HMAC key should be at least "
+          + MIN_HMAC_KEY_LEN + " bytes.");
+    }
+    Mac hmac = Mac.getInstance(HMAC_TYPE);
+    Key hmacKey = new SecretKeySpec(key, HMAC_TYPE);
+    hmac.init(hmacKey);
+    hmac.update(in);
+    return hmac.doFinal();
+  }
+  
+  /**
+   * Verifies an HMAC SHA1 hash.  Throws if the verification fails.
+   * 
+   * @param key
+   * @param in
+   * @param expected
+   * @throws GeneralSecurityException
+   */
+  public static void hmacSha1Verify(byte[] key, byte[] in, byte[] expected)
+  throws GeneralSecurityException {
+    Mac hmac = Mac.getInstance(HMAC_TYPE);
+    Key hmacKey = new SecretKeySpec(key, HMAC_TYPE);
+    hmac.init(hmacKey);
+    hmac.update(in);
+    byte actual[] = hmac.doFinal();
+    if (actual.length != expected.length) {
+      throw new GeneralSecurityException("HMAC verification failure");
+    }
+    for (int i=0; i < actual.length; i++) {
+      if (actual[i] != expected[i]) {
+        throw new GeneralSecurityException("HMAC verification failure");        
+      }
+    }
+  }
+  
+  /**
+   * AES-128-CBC encryption.  The IV is returned as the first 16 bytes
+   * of the cipher text.
+   * 
+   * @param key
+   * @param plain
+   * 
+   * @return the IV and cipher text
+   * 
+   * @throws GeneralSecurityException
+   */
+  public static byte[] aes128cbcEncrypt(byte[] key, byte[] plain)
+  throws GeneralSecurityException {
+    Cipher cipher = Cipher.getInstance(CIPHER_TYPE);
+    Key cipherKey = new SecretKeySpec(key, CIPHER_KEY_TYPE);
+    byte iv[] = getRandomBytes(cipher.getBlockSize());
+    IvParameterSpec ivSpec = new IvParameterSpec(iv);
+    cipher.init(Cipher.ENCRYPT_MODE, cipherKey, ivSpec);
+    byte[] cipherText = cipher.doFinal(plain);
+    return concat(iv, cipherText);
+  }
+
+  /**
+   * AES-128-CBC decryption.  The IV is assumed to be the first 16 bytes
+   * of the cipher text.
+   * 
+   * @param key
+   * @param cipherText
+   * 
+   * @return the plain text
+   * 
+   * @throws GeneralSecurityException
+   */
+  public static byte[] aes128cbcDecrypt(byte[] key, byte[] cipherText)
+  throws GeneralSecurityException {
+    byte iv[] = new byte[CIPHER_BLOCK_SIZE];
+    System.arraycopy(cipherText, 0, iv, 0, iv.length);
+    return aes128cbcDecryptWithIv(key, iv, cipherText, iv.length);
+  }
+  
+  /**
+   * AES-128-CBC decryption with a particular IV.
+   * 
+   * @param key decryption key
+   * @param iv initial vector for decryption
+   * @param cipherText cipher text to decrypt
+   * @param offset offset into cipher text to begin decryption
+   * 
+   * @return the plain text
+   * 
+   * @throws GeneralSecurityException
+   */
+  public static byte[] aes128cbcDecryptWithIv(byte[] key, byte[] iv,
+      byte[] cipherText, int offset) throws GeneralSecurityException {
+    Cipher cipher = Cipher.getInstance(CIPHER_TYPE);
+    Key cipherKey = new SecretKeySpec(key, CIPHER_KEY_TYPE);
+    IvParameterSpec ivSpec = new IvParameterSpec(iv);
+    cipher.init(Cipher.DECRYPT_MODE, cipherKey, ivSpec);
+    return cipher.doFinal(cipherText, offset, cipherText.length-offset);
+  }
+
+  /**
+   * Concatenate two byte arrays.
+   */
+  public static byte[] concat(byte[] a, byte[] b) {
+    byte[] out = new byte[a.length + b.length];
+    int cursor = 0;
+    System.arraycopy(a, 0, out, cursor, a.length);
+    cursor += a.length;
+    System.arraycopy(b, 0, out, cursor, b.length);
+    return out;
+  }
+}

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Base32.java (from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Base32.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Base32.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Base32.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Base32.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Base32.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Base32.java Sat May 10 04:05:19 2008
@@ -5,16 +5,16 @@
  * licenses this file to you under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
 
 import org.apache.commons.codec.BinaryDecoder;
 import org.apache.commons.codec.BinaryEncoder;
@@ -22,7 +22,11 @@
 import org.apache.commons.codec.EncoderException;
 
 /**
- * Implements Base32 encoding.
+ * Implements Base32 encoding using 0-9a-v, with no padding for partial bytes.
+ *
+ * This is suitable for base32 encoding any binary data that needs to be passed
+ * in a web-safe context, but it differs from base32 implementations used in
+ * other contexts.
  */
 public class Base32 implements BinaryDecoder, BinaryEncoder {
 
@@ -30,13 +34,13 @@
       new StringEncoding("0123456789abcdefghijklmnopqrstuv".toCharArray());
 
   public static byte[] encodeBase32(byte[] arg0) {
-    return ENCODER.encode(arg0).getBytes(); 
+    return ENCODER.encode(arg0).getBytes();
   }
-  
+
   public static byte[] decodeBase32(byte[] arg0) {
-    return ENCODER.decode(new String(arg0)); 
+    return ENCODER.decode(new String(arg0));
   }
-  
+
   @SuppressWarnings("unused")
   public byte[] decode(byte[] arg0) throws DecoderException {
     return decodeBase32(arg0);
@@ -58,7 +62,7 @@
   public Object encode(Object object) throws EncoderException {
     if (!(object instanceof byte[])) {
       throw new EncoderException(
-          "Parameter supplied to Base64 encode is not a byte[]");
+          "Parameter supplied to Base32 encode is not a byte[]");
     }
     return encodeBase32((byte[]) object);
   }

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Check.java (from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Check.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Check.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Check.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Check.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/Check.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/Check.java Sat May 10 04:05:19 2008
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
 
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/HashUtil.java (from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/HashUtil.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/HashUtil.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/HashUtil.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/HashUtil.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/HashUtil.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/HashUtil.java Sat May 10 04:05:19 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
 
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/InputStreamConsumer.java (from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/InputStreamConsumer.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/InputStreamConsumer.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/InputStreamConsumer.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/InputStreamConsumer.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/InputStreamConsumer.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/InputStreamConsumer.java Sat May 10 04:05:19 2008
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/ResourceLoader.java (from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/ResourceLoader.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/ResourceLoader.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/ResourceLoader.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/ResourceLoader.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/ResourceLoader.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/ResourceLoader.java Sat May 10 04:05:19 2008
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
 
 import java.io.File;
 import java.io.FileInputStream;

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/StringEncoding.java (from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/StringEncoding.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/StringEncoding.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/StringEncoding.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/StringEncoding.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/StringEncoding.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/StringEncoding.java Sat May 10 04:05:19 2008
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
 
 import java.util.Arrays;
 import java.util.TreeSet;

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/TimeSource.java (from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/TimeSource.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/TimeSource.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/TimeSource.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/TimeSource.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/TimeSource.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/util/TimeSource.java Sat May 10 04:05:19 2008
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
 
 /**
  * Simple source of current time to use for dependency injection.

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlException.java (from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlException.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlException.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlException.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlException.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlException.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlException.java Sat May 10 04:05:19 2008
@@ -15,7 +15,7 @@
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.xml;
 
 public class XmlException extends Exception {
   public XmlException(String message, Exception cause) {

Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlUtil.java (from r655042, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlUtil.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlUtil.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/util/XmlUtil.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/common/xml/XmlUtil.java Sat May 10 04:05:19 2008
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations under the License.
  */
 
-package org.apache.shindig.util;
+package org.apache.shindig.common.xml;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicRemoteContentFetcher.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicRemoteContentFetcher.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicRemoteContentFetcher.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicRemoteContentFetcher.java Sat May 10 04:05:19 2008
@@ -17,7 +17,7 @@
  */
 package org.apache.shindig.gadgets;
 
-import org.apache.shindig.util.InputStreamConsumer;
+import org.apache.shindig.common.util.InputStreamConsumer;
 
 import com.google.inject.Inject;
 import com.google.inject.Singleton;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/ContainerConfig.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/ContainerConfig.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/ContainerConfig.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/ContainerConfig.java Sat May 10 04:05:19 2008
@@ -19,7 +19,7 @@
 
 package org.apache.shindig.gadgets;
 
-import org.apache.shindig.util.ResourceLoader;
+import org.apache.shindig.common.util.ResourceLoader;
 
 import com.google.inject.Inject;
 import com.google.inject.name.Named;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java Sat May 10 04:05:19 2008
@@ -18,8 +18,8 @@
  */
 package org.apache.shindig.gadgets;
 
+import org.apache.shindig.common.util.ResourceLoader;
 import org.apache.shindig.gadgets.oauth.OAuthFetcherFactory;
-import org.apache.shindig.util.ResourceLoader;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.CreationException;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/HashLockedDomainService.java Sat May 10 04:05:19 2008
@@ -18,8 +18,9 @@
 package org.apache.shindig.gadgets;
 
 import org.apache.commons.codec.digest.DigestUtils;
+
+import org.apache.shindig.common.util.Base32;
 import org.apache.shindig.gadgets.spec.Feature;
-import org.apache.shindig.util.Base32;
 
 import com.google.inject.Inject;
 import com.google.inject.name.Named;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java Sat May 10 04:05:19 2008
@@ -17,9 +17,10 @@
  */
 package org.apache.shindig.gadgets;
 
-import org.apache.shindig.util.ResourceLoader;
-import org.apache.shindig.util.XmlException;
-import org.apache.shindig.util.XmlUtil;
+import org.apache.shindig.common.util.ResourceLoader;
+import org.apache.shindig.common.xml.XmlException;
+import org.apache.shindig.common.xml.XmlUtil;
+
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsLibrary.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsLibrary.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsLibrary.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/JsLibrary.java Sat May 10 04:05:19 2008
@@ -17,7 +17,7 @@
  */
 package org.apache.shindig.gadgets;
 
-import org.apache.shindig.util.ResourceLoader;
+import org.apache.shindig.common.util.ResourceLoader;
 
 import java.io.File;
 import java.io.IOException;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcher.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcher.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcher.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcher.java Sat May 10 04:05:19 2008
@@ -15,8 +15,8 @@
 package org.apache.shindig.gadgets;
 
 import org.apache.shindig.common.SecurityToken;
-import org.apache.shindig.util.Crypto;
-import org.apache.shindig.util.TimeSource;
+import org.apache.shindig.common.crypto.Crypto;
+import org.apache.shindig.common.util.TimeSource;
 
 import net.oauth.OAuth;
 import net.oauth.OAuth.Parameter;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcherFactory.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcherFactory.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcherFactory.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/SigningFetcherFactory.java Sat May 10 04:05:19 2008
@@ -19,8 +19,8 @@
 package org.apache.shindig.gadgets;
 
 import org.apache.shindig.common.SecurityToken;
-import org.apache.shindig.util.InputStreamConsumer;
-import org.apache.shindig.util.ResourceLoader;
+import org.apache.shindig.common.util.InputStreamConsumer;
+import org.apache.shindig.common.util.ResourceLoader;
 
 import com.google.inject.Inject;
 import com.google.inject.name.Named;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java Sat May 10 04:05:19 2008
@@ -21,6 +21,7 @@
 import org.apache.shindig.common.SecurityToken;
 import org.apache.shindig.common.SecurityTokenDecoder;
 import org.apache.shindig.common.SecurityTokenException;
+import org.apache.shindig.common.util.InputStreamConsumer;
 import org.apache.shindig.gadgets.ContentFetcher;
 import org.apache.shindig.gadgets.ContentFetcherFactory;
 import org.apache.shindig.gadgets.GadgetException;
@@ -30,7 +31,6 @@
 import org.apache.shindig.gadgets.oauth.OAuthRequestParams;
 import org.apache.shindig.gadgets.spec.Auth;
 import org.apache.shindig.gadgets.spec.Preload;
-import org.apache.shindig.util.InputStreamConsumer;
 
 import com.google.inject.Inject;
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/RpcServlet.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/RpcServlet.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/RpcServlet.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/RpcServlet.java Sat May 10 04:05:19 2008
@@ -20,7 +20,7 @@
 package org.apache.shindig.gadgets.http;
 
 import org.apache.shindig.common.servlet.InjectedServlet;
-import org.apache.shindig.util.InputStreamConsumer;
+import org.apache.shindig.common.util.InputStreamConsumer;
 
 import com.google.inject.Inject;
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/UrlGenerator.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/UrlGenerator.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/UrlGenerator.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/UrlGenerator.java Sat May 10 04:05:19 2008
@@ -18,6 +18,7 @@
  */
 package org.apache.shindig.gadgets.http;
 
+import org.apache.shindig.common.util.HashUtil;
 import org.apache.shindig.gadgets.Gadget;
 import org.apache.shindig.gadgets.GadgetContext;
 import org.apache.shindig.gadgets.GadgetFeature;
@@ -29,7 +30,6 @@
 import org.apache.shindig.gadgets.spec.GadgetSpec;
 import org.apache.shindig.gadgets.spec.UserPref;
 import org.apache.shindig.gadgets.spec.View;
-import org.apache.shindig.util.HashUtil;
 
 import com.google.inject.Inject;
 import com.google.inject.name.Named;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/BasicGadgetOAuthTokenStore.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/BasicGadgetOAuthTokenStore.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/BasicGadgetOAuthTokenStore.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/BasicGadgetOAuthTokenStore.java Sat May 10 04:05:19 2008
@@ -18,12 +18,12 @@
  */
 package org.apache.shindig.gadgets.oauth;
 
+import org.apache.shindig.common.util.ResourceLoader;
 import org.apache.shindig.gadgets.ContentFetcher;
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.RemoteContent;
 import org.apache.shindig.gadgets.RemoteContentRequest;
 import org.apache.shindig.gadgets.spec.GadgetSpec;
-import org.apache.shindig.util.ResourceLoader;
 import org.json.JSONException;
 import org.json.JSONObject;
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcher.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcher.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcher.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcher.java Sat May 10 04:05:19 2008
@@ -17,14 +17,14 @@
 package org.apache.shindig.gadgets.oauth;
 
 import org.apache.shindig.common.SecurityToken;
+import org.apache.shindig.common.crypto.BlobCrypter;
+import org.apache.shindig.common.crypto.BlobCrypterException;
 import org.apache.shindig.gadgets.ChainedContentFetcher;
 import org.apache.shindig.gadgets.ContentFetcher;
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.RemoteContent;
 import org.apache.shindig.gadgets.RemoteContentRequest;
 import org.apache.shindig.gadgets.RemoteContentRequest.Options;
-import org.apache.shindig.util.BlobCrypter;
-import org.apache.shindig.util.BlobCrypterException;
 
 import net.oauth.OAuth;
 import net.oauth.OAuthAccessor;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcherFactory.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcherFactory.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcherFactory.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/oauth/OAuthFetcherFactory.java Sat May 10 04:05:19 2008
@@ -19,11 +19,11 @@
 package org.apache.shindig.gadgets.oauth;
 
 import org.apache.shindig.common.SecurityToken;
+import org.apache.shindig.common.crypto.BasicBlobCrypter;
+import org.apache.shindig.common.crypto.BlobCrypter;
+import org.apache.shindig.common.crypto.Crypto;
 import org.apache.shindig.gadgets.ContentFetcher;
 import org.apache.shindig.gadgets.GadgetException;
-import org.apache.shindig.util.BasicBlobCrypter;
-import org.apache.shindig.util.BlobCrypter;
-import org.apache.shindig.util.Crypto;
 
 import com.google.inject.BindingAnnotation;
 import com.google.inject.Inject;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Feature.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Feature.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Feature.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Feature.java Sat May 10 04:05:19 2008
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations under the License.
  */
 package org.apache.shindig.gadgets.spec;
-import org.apache.shindig.util.XmlUtil;
+import org.apache.shindig.common.xml.XmlUtil;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/GadgetSpec.java Sat May 10 04:05:19 2008
@@ -17,10 +17,10 @@
  */
 package org.apache.shindig.gadgets.spec;
 
+import org.apache.shindig.common.util.HashUtil;
+import org.apache.shindig.common.xml.XmlException;
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.Substitutions;
-import org.apache.shindig.util.HashUtil;
-import org.apache.shindig.util.XmlException;
-import org.apache.shindig.util.XmlUtil;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Icon.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Icon.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Icon.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Icon.java Sat May 10 04:05:19 2008
@@ -16,8 +16,8 @@
  * specific language governing permissions and limitations under the License.
  */
 package org.apache.shindig.gadgets.spec;
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.Substitutions;
-import org.apache.shindig.util.XmlUtil;
 
 import org.w3c.dom.Element;
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LocaleSpec.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LocaleSpec.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LocaleSpec.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/LocaleSpec.java Sat May 10 04:05:19 2008
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations under the License.
  */
 package org.apache.shindig.gadgets.spec;
-import org.apache.shindig.util.XmlUtil;
+import org.apache.shindig.common.xml.XmlUtil;
 
 import org.w3c.dom.Element;
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/MessageBundle.java Sat May 10 04:05:19 2008
@@ -17,8 +17,8 @@
  */
 package org.apache.shindig.gadgets.spec;
 
-import org.apache.shindig.util.XmlException;
-import org.apache.shindig.util.XmlUtil;
+import org.apache.shindig.common.xml.XmlException;
+import org.apache.shindig.common.xml.XmlUtil;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/ModulePrefs.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/ModulePrefs.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/ModulePrefs.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/ModulePrefs.java Sat May 10 04:05:19 2008
@@ -16,8 +16,8 @@
  * specific language governing permissions and limitations under the License.
  */
 package org.apache.shindig.gadgets.spec;
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.Substitutions;
-import org.apache.shindig.util.XmlUtil;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Preload.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Preload.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Preload.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/Preload.java Sat May 10 04:05:19 2008
@@ -17,8 +17,8 @@
  */
 package org.apache.shindig.gadgets.spec;
 
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.GadgetException;
-import org.apache.shindig.util.XmlUtil;
 import org.w3c.dom.Element;
 
 import java.net.URI;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/SpecParserException.java Sat May 10 04:05:19 2008
@@ -17,8 +17,8 @@
  */
 package org.apache.shindig.gadgets.spec;
 
+import org.apache.shindig.common.xml.XmlException;
 import org.apache.shindig.gadgets.GadgetException;
-import org.apache.shindig.util.XmlException;
 
 /**
  * Exceptions for Gadget Spec parsing.

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/UserPref.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/UserPref.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/UserPref.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/UserPref.java Sat May 10 04:05:19 2008
@@ -16,8 +16,8 @@
  * specific language governing permissions and limitations under the License.
  */
 package org.apache.shindig.gadgets.spec;
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.Substitutions;
-import org.apache.shindig.util.XmlUtil;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/View.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/View.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/View.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/View.java Sat May 10 04:05:19 2008
@@ -16,8 +16,8 @@
  * specific language governing permissions and limitations under the License.
  */
 package org.apache.shindig.gadgets.spec;
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.Substitutions;
-import org.apache.shindig.util.XmlUtil;
 
 import org.w3c.dom.Element;
 

Copied: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/BlobCrypterTest.java (from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/BlobCrypterTest.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/BlobCrypterTest.java?p2=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/BlobCrypterTest.java&p1=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/BlobCrypterTest.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/BlobCrypterTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/BlobCrypterTest.java Sat May 10 04:05:19 2008
@@ -16,7 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.crypto;
+
+import org.apache.shindig.common.crypto.BasicBlobCrypter;
+import org.apache.shindig.common.crypto.BlobCrypter;
+import org.apache.shindig.common.crypto.BlobCrypterException;
+import org.apache.shindig.common.crypto.BlobExpiredException;
+import org.apache.shindig.common.crypto.Crypto;
+import org.apache.shindig.common.util.FakeTimeSource;
 
 import junit.framework.JUnit4TestAdapter;
 

Copied: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/CryptoTest.java (from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CryptoTest.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/CryptoTest.java?p2=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/CryptoTest.java&p1=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CryptoTest.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CryptoTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/crypto/CryptoTest.java Sat May 10 04:05:19 2008
@@ -16,10 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.crypto;
 
 import static org.junit.Assert.*;
 
+import org.apache.shindig.common.crypto.BasicBlobCrypter;
+import org.apache.shindig.common.crypto.Crypto;
+import org.apache.shindig.common.util.FakeTimeSource;
+
 import junit.framework.JUnit4TestAdapter;
 
 import org.junit.Test;

Copied: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/CheckTest.java (from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CheckTest.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/CheckTest.java?p2=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/CheckTest.java&p1=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CheckTest.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/CheckTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/CheckTest.java Sat May 10 04:05:19 2008
@@ -16,7 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
+
+import org.apache.shindig.common.util.Check;
 
 import junit.framework.JUnit4TestAdapter;
 import static org.hamcrest.Matchers.equalTo;

Copied: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/FakeTimeSource.java (from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/FakeTimeSource.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/FakeTimeSource.java?p2=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/FakeTimeSource.java&p1=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/FakeTimeSource.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/FakeTimeSource.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/FakeTimeSource.java Sat May 10 04:05:19 2008
@@ -16,7 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
+
+import org.apache.shindig.common.util.TimeSource;
 
 /**
  * Fake time source for dependency injection.

Copied: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/StringEncodingTest.java (from r655042, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/StringEncodingTest.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/StringEncodingTest.java?p2=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/StringEncodingTest.java&p1=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/StringEncodingTest.java&r1=655042&r2=655045&rev=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/util/StringEncodingTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/common/util/StringEncodingTest.java Sat May 10 04:05:19 2008
@@ -16,10 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.shindig.util;
+package org.apache.shindig.common.util;
 
 import static org.junit.Assert.*;
 
+import org.apache.shindig.common.crypto.Crypto;
+import org.apache.shindig.common.util.StringEncoding;
+
 import junit.framework.JUnit4TestAdapter;
 
 import org.junit.Test;

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java Sat May 10 04:05:19 2008
@@ -19,8 +19,8 @@
 
 import org.apache.shindig.common.BasicSecurityToken;
 import org.apache.shindig.common.SecurityToken;
+import org.apache.shindig.common.crypto.BlobCrypterException;
 import org.apache.shindig.gadgets.spec.GadgetSpec;
-import org.apache.shindig.util.BlobCrypterException;
 import static org.easymock.EasyMock.eq;
 import static org.easymock.EasyMock.expect;
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentRequestTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentRequestTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentRequestTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentRequestTest.java Sat May 10 04:05:19 2008
@@ -19,7 +19,7 @@
 
 package org.apache.shindig.gadgets;
 
-import org.apache.shindig.util.InputStreamConsumer;
+import org.apache.shindig.common.util.InputStreamConsumer;
 
 import junit.framework.TestCase;
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/RemoteContentTest.java Sat May 10 04:05:19 2008
@@ -20,7 +20,7 @@
 
 import junit.framework.TestCase;
 
-import org.apache.shindig.util.InputStreamConsumer;
+import org.apache.shindig.common.util.InputStreamConsumer;
 
 import java.util.Arrays;
 import java.util.HashMap;

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/FakeOAuthServiceProvider.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/FakeOAuthServiceProvider.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/FakeOAuthServiceProvider.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/FakeOAuthServiceProvider.java Sat May 10 04:05:19 2008
@@ -25,11 +25,11 @@
 import net.oauth.OAuthValidator;
 import net.oauth.SimpleOAuthValidator;
 
+import org.apache.shindig.common.crypto.Crypto;
 import org.apache.shindig.gadgets.ContentFetcher;
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.RemoteContent;
 import org.apache.shindig.gadgets.RemoteContentRequest;
-import org.apache.shindig.util.Crypto;
 
 import java.util.ArrayList;
 import java.util.HashMap;

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthFetcherTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthFetcherTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthFetcherTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/OAuthFetcherTest.java Sat May 10 04:05:19 2008
@@ -23,6 +23,8 @@
 
 import org.apache.shindig.common.BasicSecurityToken;
 import org.apache.shindig.common.SecurityToken;
+import org.apache.shindig.common.crypto.BasicBlobCrypter;
+import org.apache.shindig.common.crypto.BlobCrypter;
 import org.apache.shindig.gadgets.ContentFetcher;
 import org.apache.shindig.gadgets.GadgetException;
 import org.apache.shindig.gadgets.RemoteContent;
@@ -30,8 +32,6 @@
 import org.apache.shindig.gadgets.oauth.OAuthStore.HttpMethod;
 import org.apache.shindig.gadgets.oauth.OAuthStore.OAuthParamLocation;
 import org.apache.shindig.gadgets.oauth.OAuthStore.SignatureType;
-import org.apache.shindig.util.BasicBlobCrypter;
-import org.apache.shindig.util.BlobCrypter;
 
 import java.net.URI;
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/FeatureTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/FeatureTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/FeatureTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/FeatureTest.java Sat May 10 04:05:19 2008
@@ -19,7 +19,7 @@
 
 package org.apache.shindig.gadgets.spec;
 
-import org.apache.shindig.util.XmlUtil;
+import org.apache.shindig.common.xml.XmlUtil;
 
 import junit.framework.TestCase;
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/IconTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/IconTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/IconTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/IconTest.java Sat May 10 04:05:19 2008
@@ -19,8 +19,8 @@
 
 package org.apache.shindig.gadgets.spec;
 
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.Substitutions;
-import org.apache.shindig.util.XmlUtil;
 
 import junit.framework.TestCase;
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LocaleSpecTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LocaleSpecTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LocaleSpecTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/LocaleSpecTest.java Sat May 10 04:05:19 2008
@@ -19,7 +19,7 @@
 
 package org.apache.shindig.gadgets.spec;
 
-import org.apache.shindig.util.XmlUtil;
+import org.apache.shindig.common.xml.XmlUtil;
 
 import junit.framework.TestCase;
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ModulePrefsTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ModulePrefsTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ModulePrefsTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ModulePrefsTest.java Sat May 10 04:05:19 2008
@@ -19,8 +19,8 @@
 
 package org.apache.shindig.gadgets.spec;
 
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.Substitutions;
-import org.apache.shindig.util.XmlUtil;
 
 import junit.framework.TestCase;
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/UserPrefTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/UserPrefTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/UserPrefTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/UserPrefTest.java Sat May 10 04:05:19 2008
@@ -19,8 +19,8 @@
 
 package org.apache.shindig.gadgets.spec;
 
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.Substitutions;
-import org.apache.shindig.util.XmlUtil;
 
 import junit.framework.TestCase;
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/ViewTest.java Sat May 10 04:05:19 2008
@@ -19,9 +19,9 @@
 
 package org.apache.shindig.gadgets.spec;
 
+import org.apache.shindig.common.xml.XmlUtil;
 import org.apache.shindig.gadgets.Substitutions;
 import org.apache.shindig.gadgets.Substitutions.Type;
-import org.apache.shindig.util.XmlUtil;
 
 import junit.framework.TestCase;
 

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/JettyServer.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/JettyServer.java?rev=655045&r1=655044&r2=655045&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/JettyServer.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/JettyServer.java Sat May 10 04:05:19 2008
@@ -22,7 +22,6 @@
 import org.apache.abdera.protocol.server.Provider;
 import org.apache.abdera.protocol.server.ServiceManager;
 import org.apache.abdera.protocol.server.servlet.AbderaServlet;
-
 import org.mortbay.jetty.Server;
 import org.mortbay.jetty.servlet.Context;
 import org.mortbay.jetty.servlet.ServletHolder;