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 2015/04/08 14:46:49 UTC
svn commit: r1672080 - in /sling/trunk/contrib/extensions/i18n/src:
main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java
test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java
Author: cziegeler
Date: Wed Apr 8 12:46:49 2015
New Revision: 1672080
URL: http://svn.apache.org/r1672080
Log:
SLING-4579 : Regression introduced by SLING-4512 : JCR API used in i18n implementation
Modified:
sling/trunk/contrib/extensions/i18n/src/main/java/org/apache/sling/i18n/impl/JcrResourceBundle.java
sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.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=1672080&r1=1672079&r2=1672080&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 Wed Apr 8 12:46:49 2015
@@ -46,7 +46,9 @@ public class JcrResourceBundle extends R
private static final Logger log = LoggerFactory.getLogger(JcrResourceBundle.class);
- static final String NT_MESSAGE = "sling:Message";
+ static final String RT_MESSAGE_ENTRY = "sling:MessageEntry";
+
+ static final String MIXIN_MESSAGE = "sling:Message";
static final String PROP_KEY = "sling:key";
@@ -56,6 +58,8 @@ public class JcrResourceBundle extends R
static final String PROP_LANGUAGE = "jcr:language";
+ static final String PROP_MIXINS = "jcr:mixinTypes";
+
static final String QUERY_LANGUAGE_ROOTS = "//element(*,mix:language)[@jcr:language]";
private final Map<String, Object> resources;
@@ -286,10 +290,26 @@ public class JcrResourceBundle extends R
private void scanForSlingMessages(final Resource rsrc, final Map<String, Object> targetDictionary) {
final ValueMap vm = rsrc.adaptTo(ValueMap.class);
if ( vm != null ) {
- final String value = vm.get(PROP_VALUE, String.class);
- if ( value != null ) {
- final String key = vm.get(PROP_KEY, rsrc.getName());
- targetDictionary.put(key, value);
+ // resource type check, as in JCR a mixin might be used, a simple resource type checking
+ // does unfortunately not work
+ boolean checked = rsrc.isResourceType(RT_MESSAGE_ENTRY);
+ if ( !checked ) {
+ final String[] mixins = vm.get(PROP_MIXINS, String[].class);
+ if ( mixins != null ) {
+ for(final String m : mixins) {
+ if ( MIXIN_MESSAGE.equals(m) ) {
+ checked = true;
+ break;
+ }
+ }
+ }
+ }
+ if ( checked ) {
+ final String value = vm.get(PROP_VALUE, String.class);
+ if ( value != null ) {
+ final String key = vm.get(PROP_KEY, rsrc.getName());
+ targetDictionary.put(key, value);
+ }
}
}
Modified: sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java?rev=1672080&r1=1672079&r2=1672080&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java (original)
+++ sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java Wed Apr 8 12:46:49 2015
@@ -319,9 +319,8 @@ public class JcrResourceBundleTest exten
}
@Override
- public boolean isResourceType(Resource resource, String resourceType) {
- // TODO Auto-generated method stub
- return false;
+ public boolean isResourceType(final Resource resource, final String resourceType) {
+ return resourceType.equals(resource.getResourceType());
}
@Override
@@ -660,8 +659,11 @@ public class JcrResourceBundleTest exten
@Override
public String getResourceType() {
- // TODO Auto-generated method stub
- return null;
+ try {
+ return this.node.getPrimaryNodeType().getName();
+ } catch ( final RepositoryException re) {
+ return "<unknown>";
+ }
}
@Override
@@ -707,6 +709,14 @@ public class JcrResourceBundleTest exten
if ( node.hasProperty(JcrResourceBundle.PROP_VALUE) ) {
props.put(JcrResourceBundle.PROP_VALUE, node.getProperty(JcrResourceBundle.PROP_VALUE).getString());
}
+ if ( node.hasProperty(JcrResourceBundle.PROP_MIXINS) ) {
+ final Value[] values = node.getProperty(JcrResourceBundle.PROP_MIXINS).getValues();
+ final String[] names = new String[values.length];
+ for(int i=0;i<values.length;i++) {
+ names[i] = values[i].getString();
+ }
+ props.put(JcrResourceBundle.PROP_MIXINS, names);
+ }
return (AdapterType)new ValueMapDecorator(props);
} catch ( final RepositoryException re ) {
throw new RuntimeException(re);