You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2017/03/29 13:33:06 UTC
svn commit: r1789363 - in /sling/trunk/bundles/extensions/i18n/src:
main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java
test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java
Author: kwin
Date: Wed Mar 29 13:33:05 2017
New Revision: 1789363
URL: http://svn.apache.org/viewvc?rev=1789363&view=rev
Log:
SLING-4547 support multi-value basename properties
Modified:
sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java
sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java
Modified: sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java?rev=1789363&r1=1789362&r2=1789363&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java (original)
+++ sling/trunk/bundles/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java Wed Mar 29 13:33:05 2017
@@ -21,6 +21,7 @@ package org.apache.sling.i18n.impl;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
@@ -335,8 +336,9 @@ public class JcrResourceBundle extends R
|| language.equals(localeStringLower)
|| language.equals(localeRFC4646String)
|| language.equals(localeRFC4646StringLower)) {
-
- if (baseName == null || baseName.equals(properties.get(PROP_BASENAME, ""))) {
+ // basename might be a multivalue (see https://issues.apache.org/jira/browse/SLING-4547)
+ String[] baseNames = properties.get(PROP_BASENAME, new String[]{});
+ if (baseName == null || Arrays.asList(baseName).contains(baseName)) {
paths.add(bundle.getPath());
}
}
Modified: sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java?rev=1789363&r1=1789362&r2=1789363&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java (original)
+++ sling/trunk/bundles/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java Wed Mar 29 13:33:05 2017
@@ -30,6 +30,7 @@ import java.util.Map;
import javax.jcr.Binary;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
+import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
import javax.jcr.query.Query;
@@ -608,7 +609,7 @@ public class JcrResourceBundleTest exten
Node de = appsI18n.addNode("de_basename", "nt:unstructured");
de.addMixin("mix:language");
de.setProperty("jcr:language", "de");
- de.setProperty("sling:basename", "FOO");
+ de.setProperty("sling:basename", new String[]{"FOO", "BAR"});
for (Message msg : MESSAGES_DE_BASENAME.values()) {
msg.add(de);
}
@@ -619,6 +620,12 @@ public class JcrResourceBundleTest exten
for (Message msg : MESSAGES_DE_BASENAME.values()) {
assertEquals(msg.message, bundle.getString(msg.key));
}
+
+ // test getString
+ bundle = new JcrResourceBundle(new Locale("de"), "BAR", resolver);
+ for (Message msg : MESSAGES_DE_BASENAME.values()) {
+ assertEquals(msg.message, bundle.getString(msg.key));
+ }
// test getKeys
Enumeration<String> keys = bundle.getKeys();
@@ -725,7 +732,17 @@ public class JcrResourceBundleTest exten
props.put(JcrResourceBundle.PROP_LANGUAGE, node.getProperty(JcrResourceBundle.PROP_LANGUAGE).getString());
}
if ( node.hasProperty(JcrResourceBundle.PROP_BASENAME) ) {
- props.put(JcrResourceBundle.PROP_BASENAME, node.getProperty(JcrResourceBundle.PROP_BASENAME).getString());
+ Property propBasename = node.getProperty(JcrResourceBundle.PROP_BASENAME);
+ if (propBasename.isMultiple()) {
+ String[] basenames = new String[propBasename.getValues().length];
+ int i=0;
+ for (Value basename : propBasename.getValues()) {
+ basenames[i++] = basename.getString();
+ }
+ props.put(JcrResourceBundle.PROP_BASENAME, basenames);
+ } else {
+ props.put(JcrResourceBundle.PROP_BASENAME, propBasename.getString());
+ }
}
if ( node.hasProperty(JcrResourceBundle.PROP_KEY) ) {
props.put(JcrResourceBundle.PROP_KEY, node.getProperty(JcrResourceBundle.PROP_KEY).getString());