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());