You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2013/11/07 21:33:05 UTC

svn commit: r1539801 - /commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java

Author: ggregory
Date: Thu Nov  7 20:33:05 2013
New Revision: 1539801

URL: http://svn.apache.org/r1539801
Log:
Make sure the scanner is always closed.

Modified:
    commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java

Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java?rev=1539801&r1=1539800&r2=1539801&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java (original)
+++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/language/bm/Lang.java Thu Nov  7 20:33:05 2013
@@ -135,47 +135,51 @@ public class Lang {
         }
 
         final Scanner scanner = new Scanner(lRulesIS, ResourceConstants.ENCODING);
-        boolean inExtendedComment = false;
-        while (scanner.hasNextLine()) {
-            final String rawLine = scanner.nextLine();
-            String line = rawLine;
-            if (inExtendedComment) {
-                // check for closing comment marker, otherwise discard doc comment line
-                if (line.endsWith(ResourceConstants.EXT_CMT_END)) {
-                    inExtendedComment = false;
-                }
-            } else {
-                if (line.startsWith(ResourceConstants.EXT_CMT_START)) {
-                    inExtendedComment = true;
-                } else {
-                    // discard comments
-                    final int cmtI = line.indexOf(ResourceConstants.CMT);
-                    if (cmtI >= 0) {
-                        line = line.substring(0, cmtI);
-                    }
-
-                    // trim leading-trailing whitespace
-                    line = line.trim();
-
-                    if (line.length() == 0) {
-                        continue; // empty lines can be safely skipped
+        try {
+            boolean inExtendedComment = false;
+            while (scanner.hasNextLine()) {
+                final String rawLine = scanner.nextLine();
+                String line = rawLine;
+                if (inExtendedComment) {
+                    // check for closing comment marker, otherwise discard doc comment line
+                    if (line.endsWith(ResourceConstants.EXT_CMT_END)) {
+                        inExtendedComment = false;
                     }
+                } else {
+                    if (line.startsWith(ResourceConstants.EXT_CMT_START)) {
+                        inExtendedComment = true;
+                    } else {
+                        // discard comments
+                        final int cmtI = line.indexOf(ResourceConstants.CMT);
+                        if (cmtI >= 0) {
+                            line = line.substring(0, cmtI);
+                        }
+
+                        // trim leading-trailing whitespace
+                        line = line.trim();
+
+                        if (line.length() == 0) {
+                            continue; // empty lines can be safely skipped
+                        }
+
+                        // split it up
+                        final String[] parts = line.split("\\s+");
+
+                        if (parts.length != 3) {
+                            throw new IllegalArgumentException("Malformed line '" + rawLine
+                                    + "' in language resource '" + languageRulesResourceName + "'");
+                        }
+
+                        final Pattern pattern = Pattern.compile(parts[0]);
+                        final String[] langs = parts[1].split("\\+");
+                        final boolean accept = parts[2].equals("true");
 
-                    // split it up
-                    final String[] parts = line.split("\\s+");
-
-                    if (parts.length != 3) {
-                        throw new IllegalArgumentException("Malformed line '" + rawLine + "' in language resource '" +
-                                                           languageRulesResourceName + "'");
+                        rules.add(new LangRule(pattern, new HashSet<String>(Arrays.asList(langs)), accept));
                     }
-
-                    final Pattern pattern = Pattern.compile(parts[0]);
-                    final String[] langs = parts[1].split("\\+");
-                    final boolean accept = parts[2].equals("true");
-
-                    rules.add(new LangRule(pattern, new HashSet<String>(Arrays.asList(langs)), accept));
                 }
             }
+        } finally {
+            scanner.close();
         }
         return new Lang(rules, languages);
     }