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