[jira] Commented: (SLING-877) Avoid calling Locale.getAvailableLocales() because it is very slow

2009-03-09 Thread Felix Meschberger (JIRA)

[ 
https://issues.apache.org/jira/browse/SLING-877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680148#action_12680148
 ] 

Felix Meschberger commented on SLING-877:
-

@Bertrand

The ResourceBundle class java doc specifies what is been done in this case. 
Bascially it checks for foo_bar, then foo and then default locale resources.

@Jukka

I suggest we keep the language and country checks, because these verify, the 
language and country codes are really valid according to ISO 3166.

> Avoid calling Locale.getAvailableLocales() because it is very slow
> --
>
> Key: SLING-877
> URL: https://issues.apache.org/jira/browse/SLING-877
> Project: Sling
>  Issue Type: Improvement
>  Components: Extensions
>Reporter: Thomas Mueller
> Attachments: JcrResourceBundleProvider.patch
>
>
> Currently, JcrResourceBundleProvider.toLocale calls 
> Locale.getAvailableLocales().
> The first call to this method is very slow (3.4 seconds on my machine) because
> it scans many jar files.
> http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java?view=markup
> It looks like calling this method is not required.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (SLING-877) Avoid calling Locale.getAvailableLocales() because it is very slow

2009-03-04 Thread Bertrand Delacretaz (JIRA)

[ 
https://issues.apache.org/jira/browse/SLING-877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12678718#action_12678718
 ] 

Bertrand Delacretaz commented on SLING-877:
---

Agree with Jukka that not doing any checks seems reasonable.

Do you know what's specified to happen if calling new Locale("foo", "bar") and 
there's no foo_bar locale available?

In a quick test I seem to get the VM's default locale in that case, but the 
Locale javadocs don't specify this case.

> Avoid calling Locale.getAvailableLocales() because it is very slow
> --
>
> Key: SLING-877
> URL: https://issues.apache.org/jira/browse/SLING-877
> Project: Sling
>  Issue Type: Improvement
>  Components: Extensions
>Reporter: Thomas Mueller
> Attachments: JcrResourceBundleProvider.patch
>
>
> Currently, JcrResourceBundleProvider.toLocale calls 
> Locale.getAvailableLocales().
> The first call to this method is very slow (3.4 seconds on my machine) because
> it scans many jar files.
> http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java?view=markup
> It looks like calling this method is not required.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (SLING-877) Avoid calling Locale.getAvailableLocales() because it is very slow

2009-03-04 Thread Jukka Zitting (JIRA)

[ 
https://issues.apache.org/jira/browse/SLING-877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12678709#action_12678709
 ] 

Jukka Zitting commented on SLING-877:
-

I would even question the need for the Locale.getISOLanguages() and 
Locale.getISOCountries() calls in the method. A Locale instance is just an 
identifier of the desired locale, so I'd argue that we should use the 
user-specified value as-is without trying to filter or map it according to what 
values the system may know about.

The method could well be something as simple as this:

String[] parts = localeString.split("_");
switch (parts.length) {
case 0: // empty locale string, use the default
return Locale.getDefault();
case 1: // only language
return new Locale(parts[0]);
case 2: // country is also available
return new Locale(parts[0], parts[1]);
case 3: // language, country and variant
default: // ... and skip everything after that
return new Locale(parts[0], parts[1], parts[2]);
}


> Avoid calling Locale.getAvailableLocales() because it is very slow
> --
>
> Key: SLING-877
> URL: https://issues.apache.org/jira/browse/SLING-877
> Project: Sling
>  Issue Type: Improvement
>  Components: Extensions
>Reporter: Thomas Mueller
> Attachments: JcrResourceBundleProvider.patch
>
>
> Currently, JcrResourceBundleProvider.toLocale calls 
> Locale.getAvailableLocales().
> The first call to this method is very slow (3.4 seconds on my machine) because
> it scans many jar files.
> http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java?view=markup
> It looks like calling this method is not required.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Commented: (SLING-877) Avoid calling Locale.getAvailableLocales() because it is very slow

2009-03-04 Thread Alexander Klimetschek (JIRA)

[ 
https://issues.apache.org/jira/browse/SLING-877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12678689#action_12678689
 ] 

Alexander Klimetschek commented on SLING-877:
-

toLocale() is only called during the component activation to set the default
locale based on the component configuration. I can imagine two optimizations:

a) make this lazy-loading (not sure when this might be called):

   private Locale internalGetDefaultLocale() {
   if (this.defaultLocale == null) {
   this.defaultLocale = toLocale(localeString);
   }
   }

b) since in most cases the default locale will be english anyway, a simple
   check could skip toLocale() and the performance intensive
   Locale.getAvailableLocales() completely:

   if ("en".equals(localeString)) {
   this.defaultLocale = Locale.ENGLISH;
   } else {
   this.defaultLocale = internalGetDefaultLocale();
   }

> Avoid calling Locale.getAvailableLocales() because it is very slow
> --
>
> Key: SLING-877
> URL: https://issues.apache.org/jira/browse/SLING-877
> Project: Sling
>  Issue Type: Improvement
>  Components: Extensions
>Reporter: Thomas Mueller
>
> Currently, JcrResourceBundleProvider.toLocale calls 
> Locale.getAvailableLocales().
> The first call to this method is very slow (3.4 seconds on my machine) because
> it scans many jar files.
> http://svn.apache.org/viewvc/incubator/sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundleProvider.java?view=markup
> It looks like calling this method is not required.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.