You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2013/10/18 01:16:46 UTC

svn commit: r1533286 - /lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java

Author: uschindler
Date: Thu Oct 17 23:16:46 2013
New Revision: 1533286

URL: http://svn.apache.org/r1533286
Log:
LUCENE-4956: Remove thread-unsafe lazy loading. Initialize in static ctor

Modified:
    lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java

Modified: lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java?rev=1533286&r1=1533285&r2=1533286&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java Thu Oct 17 23:16:46 2013
@@ -17,6 +17,7 @@ package org.apache.lucene.analysis.ko.ta
  * limitations under the License.
  */
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -34,7 +35,32 @@ import org.apache.lucene.analysis.ko.uti
  */
 public class Tagger {
     
-  private static Trie<String, String[]> occurrences;
+  private static final Trie<String, String[]> occurrences = new Trie<String, String[]>(true);;
+  static { 
+    try {
+      List<String> strs = DictionaryResources.readLines(DictionaryResources.FILE_TAG_DIC);
+      
+      for(String str : strs) {
+        if(str==null) continue;
+        str = str.trim();
+        String[] syls = str.split("[:]+");
+        if(syls.length!=4) continue;
+        
+        String key = null;        
+        if("F".equals(syls[0])) key = syls[2].substring(0,syls[2].lastIndexOf("/")+1) + syls[1].substring(0,syls[1].lastIndexOf("/"));
+        else key = syls[1].substring(0,syls[1].lastIndexOf("/")+1) + syls[2].substring(0,syls[2].lastIndexOf("/"));
+
+        final String joined = syls[1] + "/" + syls[2] + "/" + syls[3];
+        String[] patns = joined.split("[/]+");
+        
+        occurrences.add(syls[0]+key, patns);
+        
+      }      
+      
+    } catch (IOException ioe) {
+      throw new Error("Fail to read the tagger dictionary.", ioe);
+    }
+  }
     
   private static final String NILL = "NILL";
   
@@ -261,39 +287,7 @@ public class Tagger {
 
   @SuppressWarnings("unchecked")
   public static synchronized Iterator<String[]> getGR(String prefix) throws MorphException {
-
-    if(occurrences==null) loadTaggerDic();
-
     return occurrences.getPrefixedBy(prefix);
   }
   
-  private static synchronized void loadTaggerDic() throws MorphException {
-    
-    occurrences = new Trie<String, String[]>(true);
-    
-    try {
-      
-      List<String> strs = DictionaryResources.readLines(DictionaryResources.FILE_TAG_DIC);
-      
-      for(String str : strs) {
-        if(str==null) continue;
-        str = str.trim();
-        String[] syls = str.split("[:]+");
-        if(syls.length!=4) continue;
-        
-        String key = null;        
-        if("F".equals(syls[0])) key = syls[2].substring(0,syls[2].lastIndexOf("/")+1) + syls[1].substring(0,syls[1].lastIndexOf("/"));
-        else key = syls[1].substring(0,syls[1].lastIndexOf("/")+1) + syls[2].substring(0,syls[2].lastIndexOf("/"));
-
-        final String joined = syls[1] + "/" + syls[2] + "/" + syls[3];
-        String[] patns = joined.split("[/]+");
-        
-        occurrences.add(syls[0]+key, patns);
-        
-      }      
-      
-    } catch (Exception e) {
-      throw new MorphException("Fail to read the tagger dictionary: "+e.getMessage());
-    }
-  }
 }