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/01/11 19:48:37 UTC

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

Author: lindner
Date: Mon Jan 11 18:48:36 2010
New Revision: 898000

URL: http://svn.apache.org/viewvc?rev=898000&view=rev
Log:
SHINDIG-1256 | Patch from Jon Weygandt | Fixes for several small findbugs issues

Modified:
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/util/ResourceLoader.java
    incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetBlacklist.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/Gadget.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateLibraryFactory.java

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java?rev=898000&r1=897999&r2=898000&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java Mon Jan 11 18:48:36 2010
@@ -75,10 +75,10 @@
    * @throws IOException if the file can't be read.
    */
   public BasicBlobCrypter(File keyfile) throws IOException {
-    FileInputStream openFile = null;
+    BufferedReader reader = null;
     try {
-      openFile = new FileInputStream(keyfile);
-      BufferedReader reader = new BufferedReader(
+      FileInputStream openFile = new FileInputStream(keyfile);
+      reader = new BufferedReader(
           new InputStreamReader(openFile, CharsetUtil.UTF8));
       String line = reader.readLine();
       if (line == null) {
@@ -89,8 +89,8 @@
       init(keyBytes);
     } finally {
       try {
-        if (openFile != null) {
-          openFile.close();
+        if (reader != null) {
+          reader.close();
         }
       } catch (IOException e) {
         // oh well.
@@ -183,7 +183,7 @@
   public Map<String, String> unwrap(String in, int maxAgeSec)
   throws BlobCrypterException {
     try {
-      byte[] bin = Base64.decodeBase64(in.getBytes());
+      byte[] bin = Base64.decodeBase64(in.getBytes("UTF-8"));
       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);

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/util/ResourceLoader.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/util/ResourceLoader.java?rev=898000&r1=897999&r2=898000&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/util/ResourceLoader.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/util/ResourceLoader.java Mon Jan 11 18:48:36 2010
@@ -71,7 +71,12 @@
    * @throws IOException
    */
   public static String getContent(String resource) throws IOException {
-    return IOUtils.toString(openResource(resource), "UTF-8");
+    InputStream is = openResource(resource);
+    try{
+      return IOUtils.toString(is, "UTF-8");
+    } finally {
+      IOUtils.closeQuietly(is);
+    }
   }
 
   /**
@@ -80,6 +85,11 @@
    * @throws IOException
    */
   public static String getContent(File file) throws IOException {
-    return IOUtils.toString(new FileInputStream(file), "UTF-8");
+    InputStream is = new FileInputStream(file);
+    try{
+      return IOUtils.toString(is, "UTF-8");
+    } finally {
+      IOUtils.closeQuietly(is);
+    }
   }
 }

Modified: incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java?rev=898000&r1=897999&r2=898000&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java (original)
+++ incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/config/JsonContainerConfig.java Mon Jan 11 18:48:36 2010
@@ -325,7 +325,7 @@
         all.put(container, contents);
       }
     } catch (JSONException e) {
-System.out.println("Trouble parsing " + json);
+      LOG.warning("Trouble parsing " + json);
       throw new ContainerConfigException("Trouble parsing " + json, e);
     }
   }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetBlacklist.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetBlacklist.java?rev=898000&r1=897999&r2=898000&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetBlacklist.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetBlacklist.java Mon Jan 11 18:48:36 2010
@@ -109,8 +109,13 @@
           regexpMatches.add(Pattern.compile(parts[1], Pattern.CASE_INSENSITIVE));
         }
       }
-    } finally {
-      in.close();
+    }finally{
+      try{
+        in.close();
+      }catch(IOException e){
+        //ignore
+      }
+      
     }
   }
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/Gadget.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/Gadget.java?rev=898000&r1=897999&r2=898000&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/Gadget.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/Gadget.java Mon Jan 11 18:48:36 2010
@@ -60,7 +60,7 @@
    * @param registry The gadget feature registry to use to find dependent
    *                 features.
    */
-  public Gadget setGadgetFeatureRegistry(FeatureRegistry registry) {
+  public synchronized Gadget setGadgetFeatureRegistry(FeatureRegistry registry) {
     this.featureRegistry = registry;
     return this;
   }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java?rev=898000&r1=897999&r2=898000&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java Mon Jan 11 18:48:36 2010
@@ -142,10 +142,10 @@
   // Holds character sets for fast conversion
   private static final Map<String, Charset> encodingToCharset = new MapMaker().makeMap();
 
-  private transient String responseString;
-  private transient long date;
-  private transient Charset encoding;
-  private transient Map<String, String> metadata;
+  private String responseString;
+  private long date;
+  private Charset encoding;
+  private Map<String, String> metadata;
 
   private int httpStatusCode;
   private Multimap<String, String> headers;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java?rev=898000&r1=897999&r2=898000&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/GadgetHtmlParser.java Mon Jan 11 18:48:36 2010
@@ -21,6 +21,7 @@
 import org.apache.shindig.common.cache.CacheProvider;
 import org.apache.shindig.common.util.HashUtil;
 import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.GadgetException.Code;
 import org.apache.shindig.gadgets.parse.nekohtml.NekoSimplifiedHtmlParser;
 
 import com.google.common.collect.BiMap;
@@ -94,7 +95,14 @@
     }
     
     if (document == null) {
-      document = parseDomImpl(source);
+      try {
+        document = parseDomImpl(source);
+      } catch (GadgetException e) {
+        throw e;
+      } catch (Exception e) {
+        // DOMException is a RuntimeException
+        throw new GadgetException(Code.HTML_PARSE_ERROR, e);
+      }
 
       HtmlSerialization.attach(document, serializerProvider.get(), source);
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java?rev=898000&r1=897999&r2=898000&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java Mon Jan 11 18:48:36 2010
@@ -30,6 +30,7 @@
 import javax.servlet.http.HttpServletResponse;
 
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -75,7 +76,7 @@
       return;
     }
 
-    Result result = process(request, response, reqValue.getBytes());
+    Result result = process(request, response, reqValue);
     response.getWriter().write(result.isSuccess()
         ? callbackValue + '(' + result.getOutput() + ')'
         : result.getOutput());
@@ -84,10 +85,17 @@
   @Override
   protected void doPost(HttpServletRequest request, HttpServletResponse response)
       throws IOException {
-    ServletInputStream is = request.getInputStream();
-    byte[] body = IOUtils.toByteArray(is);
-    Result result = process(request, response, body);
-    response.getWriter().write(result.getOutput());
+    try{
+      InputStreamReader is = new InputStreamReader(request.getInputStream(),
+          getRequestCharacterEncoding(request));
+      String body = IOUtils.toString(is);
+      Result result = process(request, response, body);
+      response.getWriter().write(result.getOutput());
+    } catch (UnsupportedEncodingException e) {
+      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+      logger.log(Level.INFO, e.getMessage(), e);
+      response.getWriter().write("Unsupported input character set");
+    }
   }
 
   private String validateParameterValue(HttpServletRequest request, String parameter)
@@ -99,19 +107,14 @@
     return result;
   }
 
-  private Result process(HttpServletRequest request, HttpServletResponse response, byte[] body) {
+  private Result process(HttpServletRequest request, HttpServletResponse response, String body) {
     try {
-      String encoding = getRequestCharacterEncoding(request);
-      JSONObject req = new JSONObject(new String(body, encoding));
+      JSONObject req = new JSONObject(body);
       JSONObject resp = jsonHandler.process(req);
       response.setStatus(HttpServletResponse.SC_OK);
       response.setContentType("application/json; charset=utf-8");
       response.setHeader("Content-Disposition", "attachment;filename=rpc.txt");
       return new Result(resp.toString(), true);
-    } catch (UnsupportedEncodingException e) {
-      response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
-      logger.log(Level.INFO, e.getMessage(), e);
-      return new Result("Unsupported input character set", false);
     } catch (JSONException e) {
       response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
       return new Result("Malformed JSON request.", false);

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateLibraryFactory.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateLibraryFactory.java?rev=898000&r1=897999&r2=898000&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateLibraryFactory.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/templates/TemplateLibraryFactory.java Mon Jan 11 18:48:36 2010
@@ -31,6 +31,8 @@
 import org.apache.shindig.gadgets.http.RequestPipeline;
 import org.w3c.dom.Element;
 
+import java.io.UnsupportedEncodingException;
+
 import com.google.inject.Inject;
 
 /**
@@ -69,8 +71,12 @@
       String key = null;
       Element element = null;
       if (!context.getIgnoreCache()) {
-        key = HashUtil.rawChecksum(content.getBytes());
-        element = parsedXmlCache.getElement(key);
+        try {
+          key = HashUtil.rawChecksum(content.getBytes("UTF-8"));
+          element = parsedXmlCache.getElement(key);
+        } catch (UnsupportedEncodingException e) {
+          // this won't happen, but if it does, cache won't be used.
+        }
       }
       
       if (element == null) {