[Unicode]   Common Locale Data Repository : Bug Tracking Home | Site Map | Search
 

Changeset 9689


Ignore:
Timestamp:
01/31/14 07:35:56 (5 years ago)
Author:
ribnitz
Message:

cldrbug 6840: Fixed SupplementalDataInfo.getInstance() to canonicalize the path before performing a lookup. Minor rewrite of the method.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/java/org/unicode/cldr/util/SupplementalDataInfo.java

    r9672 r9689  
    3333import org.unicode.cldr.util.Builder.CBuilder; 
    3434import org.unicode.cldr.util.CLDRFile.DtdType; 
    35 import org.unicode.cldr.util.CLDRInfo.UserInfo; 
    3635import org.unicode.cldr.util.CldrUtility.VariableReplacer; 
    3736import org.unicode.cldr.util.DayPeriodInfo.DayPeriod; 
     
    903902            return getInstance(supplementalDirectory.getCanonicalPath()); 
    904903        } catch (IOException e) { 
    905             throw (IllegalArgumentException) new IllegalArgumentException() 
    906             .initCause(e); 
     904            throw new IllegalArgumentException(e); 
     905//            throw (IllegalArgumentException) new IllegalArgumentException() 
     906//            .initCause(e); 
    907907        } 
    908908    } 
     
    935935    public static SupplementalDataInfo getInstance(String supplementalDirectory) { 
    936936        synchronized (SupplementalDataInfo.class) { 
    937             SupplementalDataInfo instance = directory_instance 
    938                 .get(supplementalDirectory); 
    939             if (instance != null) { 
    940                 return instance; 
    941             } 
    942             // canonicalize name & try again 
    943             String canonicalpath; 
     937            // Sanity checks - not null, not empty 
     938            if (supplementalDirectory == null) { 
     939                throw new IllegalArgumentException("Error: null supplemental directory."); 
     940            } 
     941            if (supplementalDirectory.isEmpty()) { 
     942                throw new IllegalArgumentException("Error: The string passed as a parameter resolves to the empty string."); 
     943            } 
     944            // canonicalize path 
     945            String canonicalpath=null; 
    944946            try { 
    945                 if (supplementalDirectory == null) { 
    946                     throw new IllegalArgumentException("Error: null supplemental directory"); 
    947                 } 
    948947                canonicalpath = new File(supplementalDirectory).getCanonicalPath(); 
    949948            } catch (IOException e) { 
    950                 throw (IllegalArgumentException) new IllegalArgumentException() 
    951                 .initCause(e); 
    952             } 
    953             if (!canonicalpath.equals(supplementalDirectory)) { 
    954                 instance = directory_instance.get(canonicalpath); 
    955                 if (instance != null) { 
    956                     directory_instance.put(supplementalDirectory, instance); 
    957                     return instance; 
    958                 } 
    959             } 
     949                throw new IllegalArgumentException(e); 
     950            } 
     951            SupplementalDataInfo instance=directory_instance.get(canonicalpath); 
     952            if (instance!=null) { 
     953                return instance; 
     954            } 
     955            //            if (!canonicalpath.equals(supplementalDirectory)) { 
     956            //                instance = directory_instance.get(canonicalpath); 
     957            //                if (instance != null) { 
     958            //                    directory_instance.put(supplementalDirectory, instance); 
     959            //                    directory_instance.put(canonicalpath,instance); 
     960            //                    return instance; 
     961            //                } 
     962            //            } 
     963            // reaching here means we have not cached the entry 
    960964            File directory = new File(canonicalpath); 
    961965            instance = new SupplementalDataInfo(directory); 
     
    10031007            instance.makeStuffSafe(); 
    10041008            // cache 
    1005             directory_instance.put(supplementalDirectory, instance); 
    1006             if (!canonicalpath.equals(supplementalDirectory)) { 
    1007                 directory_instance.put(canonicalpath, instance); 
    1008             } 
     1009            //            directory_instance.put(supplementalDirectory, instance); 
     1010            directory_instance.put(canonicalpath, instance); 
     1011            //            if (!canonicalpath.equals(supplementalDirectory)) { 
     1012            //                directory_instance.put(canonicalpath, instance); 
     1013            //            } 
    10091014            return instance; 
    10101015        } 
Note: See TracChangeset for help on using the changeset viewer.