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) {