You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2012/01/05 09:07:00 UTC
svn commit: r1227521 -
/sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java
Author: cziegeler
Date: Thu Jan 5 08:06:59 2012
New Revision: 1227521
URL: http://svn.apache.org/viewvc?rev=1227521&view=rev
Log:
SLING-2351 : Catch potential exception in query
Modified:
sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java
Modified: sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java?rev=1227521&r1=1227520&r2=1227521&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java (original)
+++ sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java Thu Jan 5 08:06:59 2012
@@ -27,8 +27,10 @@ import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
+
import javax.jcr.query.Query;
+import org.apache.sling.api.SlingException;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceUtil;
import org.slf4j.Logger;
@@ -48,7 +50,7 @@ public class JcrResourceBundle extends R
static final String PROP_LANGUAGE = "jcr:language";
- private final HashMap<String, Object> resources;
+ private final Map<String, Object> resources;
private final Locale locale;
@@ -101,48 +103,53 @@ public class JcrResourceBundle extends R
return resources.get(key);
}
- private HashMap<String, Object> loadFully(
+ @SuppressWarnings("deprecation")
+ private Map<String, Object> loadFully(
final ResourceResolver resourceResolver, final String fullLoadQuery) {
log.debug("Executing full load query {}", fullLoadQuery);
// do an XPath query because this won't go away soon and still
// (2011/04/04) is the fastest query language ...
- @SuppressWarnings("deprecation")
- Iterator<Map<String, Object>> bundles = resourceResolver.queryResources(
- fullLoadQuery, Query.XPATH);
-
- String[] path = resourceResolver.getSearchPath();
-
- List<HashMap<String, Object>> res0 = new ArrayList<HashMap<String, Object>>();
- for (int i = 0; i < path.length; i++) {
- res0.add(new HashMap<String, Object>());
+ Iterator<Map<String, Object>> bundles = null;
+ try {
+ bundles = resourceResolver.queryResources(fullLoadQuery, Query.XPATH);
+ } catch (final SlingException se) {
+ log.error("Exception during resource query " + fullLoadQuery, se);
}
- HashMap<String, Object> rest = new HashMap<String, Object>();
- while (bundles.hasNext()) {
- Map<String, Object> row = bundles.next();
- String jcrPath = (String) row.get(JCR_PATH);
- String key = (String) row.get(PROP_KEY);
+ final Map<String, Object> rest = new HashMap<String, Object>();
+ if ( bundles != null ) {
+ final String[] path = resourceResolver.getSearchPath();
- if (key == null) {
- key = ResourceUtil.getName(jcrPath);
+ final List<Map<String, Object>> res0 = new ArrayList<Map<String, Object>>();
+ for (int i = 0; i < path.length; i++) {
+ res0.add(new HashMap<String, Object>());
}
- Map<String, Object> dst = rest;
- for (int i = 0; i < path.length; i++) {
- if (jcrPath.startsWith(path[i])) {
- dst = res0.get(i);
- break;
+ while (bundles.hasNext()) {
+ final Map<String, Object> row = bundles.next();
+ final String jcrPath = (String) row.get(JCR_PATH);
+ String key = (String) row.get(PROP_KEY);
+
+ if (key == null) {
+ key = ResourceUtil.getName(jcrPath);
}
- }
- dst.put(key, row.get(PROP_VALUE));
- }
+ Map<String, Object> dst = rest;
+ for (int i = 0; i < path.length; i++) {
+ if (jcrPath.startsWith(path[i])) {
+ dst = res0.get(i);
+ break;
+ }
+ }
- for (int i = path.length - 1; i >= 0; i--) {
- rest.putAll(res0.get(i));
- }
+ dst.put(key, row.get(PROP_VALUE));
+ }
+ for (int i = path.length - 1; i >= 0; i--) {
+ rest.putAll(res0.get(i));
+ }
+ }
return rest;
}