Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
   *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 package org.apache.felix.webconsole.internal.i18n;
 
 
 import java.net.URL;
 import java.util.Map;
 
The ResourceBundleCache caches resource bundles per OSGi bundle.
 
 public class ResourceBundleCache
 {

    
The default locale corresponding to the default language in the bundle.properties file, which is English. (FELIX-1957 The Locale(String) constructor used before is not available in the OSGi/Minimum-1.1 profile and should be prevented)
 
     private static final Locale DEFAULT_LOCALE = .;
 
     private final Bundle bundle;
 
     private final Map resourceBundles;
 
     private Map resourceBundleEntries;


    
Creates a new object

Parameters:
bundle the bundle which resources should be loaded.
 
     public ResourceBundleCachefinal Bundle bundle )
     {
         this. = bundle;
         this. = new HashMap();
     }


    
Gets the resource bundle for the specified locale.

Parameters:
locale the requested locale
Returns:
the resource bundle for the requested locale
 
     public ResourceBundle getResourceBundlefinal Locale locale )
     {
         if ( locale == null )
         {
             return getResourceBundleInternal );
         }
 
         return getResourceBundleInternallocale );
     }
 
 
     ResourceBundle getResourceBundleInternalfinal Locale locale )
     {
         if ( locale == null )
         {
             return null;
         }
 
         synchronized (  )
         {
             ResourceBundle bundle = ( ResourceBundle ) .getlocale );
             if ( bundle != null )
             {
                 return bundle;
             }
         }
 
         ResourceBundle parent = getResourceBundleInternalgetParentLocalelocale ) );
        ResourceBundle bundle = loadResourceBundleparentlocale );
        synchronized (  )
        {
            .putlocalebundle );
        }
        return bundle;
    }
    private ResourceBundle loadResourceBundlefinal ResourceBundle parentfinal Locale locale )
    {
        final String path = "_" + locale.toString(); //$NON-NLS-1$
        final URL source = ( URL ) getResourceBundleEntries().getpath );
        return new ConsolePropertyResourceBundleparentsource );
    }
    private synchronized Map getResourceBundleEntries()
    {
        if ( this. == null )
        {
            String file = ( String ) .getHeaders().get. );
            if ( file == null )
            {
                file = .;
            }
            // remove leading slash
            if ( file.startsWith"/" ) ) //$NON-NLS-1$
            {
                file = file.substring( 1 );
            }
            // split path and base name
            int slash = file.lastIndexOf'/' );
            String fileName = file.substringslash + 1 );
            String path = ( slash <= 0 ) ? "/" : file.substring( 0, slash ); //$NON-NLS-1$
            HashMap resourceBundleEntries = new HashMap();
            Enumeration locales = .findEntriespathfileName + "*.properties"false ); //$NON-NLS-1$
            if ( locales != null )
            {
                while ( locales.hasMoreElements() )
                {
                    URL entry = ( URL ) locales.nextElement();
                    // calculate the key
                    String entryPath = entry.getPath();
                    final int start = entryPath.lastIndexOf'/' ) + 1 + fileName.length(); // path, slash and base name
                    final int end = entryPath.length() - 11; // .properties suffix
                    entryPath = entryPath.substringstartend );
                    // the default language is "name.properties" thus the entry
                    // path is empty and must default to "_"+DEFAULT_LOCALE
                    if (entryPath.length() == 0) {
                        entryPath = "_" + //$NON-NLS-1$
                    }
                    // only add this entry, if the "language" is not provided
                    // by the main bundle or an earlier bound fragment
                    if (!resourceBundleEntries.containsKeyentryPath )) {
                        resourceBundleEntries.putentryPathentry );
                    }
                }
            }
            this. = resourceBundleEntries;
        }
        return this.;
    }
    private static final Locale getParentLocaleLocale locale )
    {
        if ( locale.getVariant().length() != 0 )
        {
            return new Localelocale.getLanguage(), locale.getCountry() );
        }
        else if ( locale.getCountry().length() != 0 )
        {
            return new Localelocale.getLanguage(), "" ); //$NON-NLS-1$
        }
        else if ( !locale.getLanguage().equals.getLanguage() ) )
        {
            return ;
        }
        // no more parents
        return null;
    }
New to GrepCode? Check out our FAQ X