Author: cziegeler
Date: Mon Mar 10 10:52:42 2014
New Revision: 1575897

URL: http://svn.apache.org/r1575897
Log:
SLING-3427 : Incorrect handling of NamespaceMapper bindings within 
SlingServerRepositoryManager. Apply patch from  Stefan Scheidewig

Modified:
    
sling/trunk/bundles/jcr/oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepositoryManager.java

Modified: 
sling/trunk/bundles/jcr/oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepositoryManager.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepositoryManager.java?rev=1575897&r1=1575896&r2=1575897&view=diff
==============================================================================
--- 
sling/trunk/bundles/jcr/oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepositoryManager.java
 (original)
+++ 
sling/trunk/bundles/jcr/oak-server/src/main/java/org/apache/sling/oak/server/OakSlingRepositoryManager.java
 Mon Mar 10 10:52:42 2014
@@ -86,6 +86,7 @@ import org.apache.sling.jcr.base.Abstrac
 import org.apache.sling.serviceusermapping.ServiceUserMapper;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
@@ -152,7 +153,7 @@ public class OakSlingRepositoryManager e
 
     private ComponentContext componentContext;
 
-    private Map<ServiceReference, NamespaceMapper> namespaceMapperRefs = new 
TreeMap<ServiceReference, NamespaceMapper>();
+    private Map<Long, NamespaceMapper> namespaceMapperRefs = new TreeMap<Long, 
NamespaceMapper>();
 
     private NamespaceMapper[] namespaceMappers;
 
@@ -299,21 +300,20 @@ public class OakSlingRepositoryManager e
     }
 
     @SuppressWarnings("unused")
-    private void bindNamespaceMapper(final ServiceReference ref) {
+    private void bindNamespaceMapper(final NamespaceMapper namespaceMapper, 
final Map<String, Object> props) {
         synchronized (this.namespaceMapperRefs) {
-            this.namespaceMapperRefs.put(ref,
-                (NamespaceMapper) 
this.getComponentContext().locateService("namespaceMapper", ref));
+            
this.namespaceMapperRefs.put((Long)props.get(Constants.SERVICE_ID), 
namespaceMapper);
             this.namespaceMappers = this.namespaceMapperRefs.values().toArray(
-                new NamespaceMapper[this.namespaceMapperRefs.values().size()]);
+                    new NamespaceMapper[this.namespaceMapperRefs.size()]);
         }
     }
 
     @SuppressWarnings("unused")
-    private void unbindNamespaceMapper(final ServiceReference ref) {
+    private void unbindNamespaceMapper(final NamespaceMapper namespaceMapper, 
final Map<String, Object> props) {
         synchronized (this.namespaceMapperRefs) {
-            this.namespaceMapperRefs.remove(ref);
+            this.namespaceMapperRefs.remove(props.get(Constants.SERVICE_ID));
             this.namespaceMappers = this.namespaceMapperRefs.values().toArray(
-                new NamespaceMapper[this.namespaceMapperRefs.values().size()]);
+                    new NamespaceMapper[this.namespaceMapperRefs.size()]);
         }
     }
 


Reply via email to