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 2016/02/10 18:11:34 UTC
svn commit: r1729661 - in /sling/trunk/bundles/jcr/resource/src:
main/java/org/apache/sling/jcr/resource/
main/java/org/apache/sling/jcr/resource/internal/
main/java/org/apache/sling/jcr/resource/internal/helper/jcr/
test/java/org/apache/sling/jcr/reso...
Author: cziegeler
Date: Wed Feb 10 17:11:34 2016
New Revision: 1729661
URL: http://svn.apache.org/viewvc?rev=1729661&view=rev
Log:
SLING-5506 : JcrResourceProvider must be stateless
Modified:
sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrModifiablePropertyMap.java
sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java
sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/HelperData.java
sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMap.java
sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrValueMap.java
sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResource.java
sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrProviderStateFactory.java
sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java
sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/package-info.java
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMapTest.java
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/JcrNodeResourceIteratorTest.java
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrItemResourceFactoryTest.java
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResourceTest.java
sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrTestNodeResource.java
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrModifiablePropertyMap.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrModifiablePropertyMap.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrModifiablePropertyMap.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrModifiablePropertyMap.java Wed Feb 10 17:11:34 2016
@@ -169,7 +169,7 @@ public final class JcrModifiableProperty
if ( this.changedProperties.contains(NodeUtil.MIXIN_TYPES) ) {
if ( cache.containsKey(NodeUtil.MIXIN_TYPES) ) {
final JcrPropertyMapCacheEntry entry = cache.get(NodeUtil.MIXIN_TYPES);
- NodeUtil.handleMixinTypes(node, entry.convertToType(String[].class, node, dynamicClassLoader));
+ NodeUtil.handleMixinTypes(node, entry.convertToType(String[].class, node, getDynamicClassLoader()));
} else {
// remove all mixin types!
NodeUtil.handleMixinTypes(node, null);
@@ -182,9 +182,9 @@ public final class JcrModifiableProperty
if ( cache.containsKey(key) ) {
final JcrPropertyMapCacheEntry entry = cache.get(key);
if ( entry.isArray() ) {
- node.setProperty(name, entry.convertToType(Value[].class, node, dynamicClassLoader));
+ node.setProperty(name, entry.convertToType(Value[].class, node, getDynamicClassLoader()));
} else {
- node.setProperty(name, entry.convertToType(Value.class, node, dynamicClassLoader));
+ node.setProperty(name, entry.convertToType(Value.class, node, getDynamicClassLoader()));
}
} else {
if ( node.hasProperty(name) ) {
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/JcrPropertyMap.java Wed Feb 10 17:11:34 2016
@@ -63,7 +63,7 @@ public class JcrPropertyMap
/** keep all prefixes for escaping */
private String[] namespacePrefixes;
- final ClassLoader dynamicClassLoader;
+ private final ClassLoader dynamicClassLoader;
/**
* Create a new JCR property map based on a node.
@@ -87,6 +87,10 @@ public class JcrPropertyMap
this.dynamicClassLoader = dynamicCL;
}
+ protected ClassLoader getDynamicClassLoader() {
+ return this.dynamicClassLoader;
+ }
+
/**
* Get the node.
*
@@ -111,6 +115,7 @@ public class JcrPropertyMap
/**
* @see org.apache.sling.api.resource.ValueMap#get(java.lang.String, java.lang.Class)
*/
+ @Override
@SuppressWarnings("unchecked")
public <T> T get(final String aKey, final Class<T> type) {
final String key = checkKey(aKey);
@@ -122,12 +127,13 @@ public class JcrPropertyMap
if ( entry == null ) {
return null;
}
- return entry.convertToType(type, this.node, this.dynamicClassLoader);
+ return entry.convertToType(type, this.node, this.getDynamicClassLoader());
}
/**
* @see org.apache.sling.api.resource.ValueMap#get(java.lang.String, java.lang.Object)
*/
+ @Override
@SuppressWarnings("unchecked")
public <T> T get(final String aKey,final T defaultValue) {
final String key = checkKey(aKey);
@@ -152,6 +158,7 @@ public class JcrPropertyMap
/**
* @see java.util.Map#get(java.lang.Object)
*/
+ @Override
public Object get(final Object aKey) {
final String key = checkKey(aKey.toString());
final JcrPropertyMapCacheEntry entry = this.read(key);
@@ -162,6 +169,7 @@ public class JcrPropertyMap
/**
* @see java.util.Map#containsKey(java.lang.Object)
*/
+ @Override
public boolean containsKey(final Object key) {
return get(key) != null;
}
@@ -169,6 +177,7 @@ public class JcrPropertyMap
/**
* @see java.util.Map#containsValue(java.lang.Object)
*/
+ @Override
public boolean containsValue(final Object value) {
readFully();
return valueCache.containsValue(value);
@@ -177,6 +186,7 @@ public class JcrPropertyMap
/**
* @see java.util.Map#isEmpty()
*/
+ @Override
public boolean isEmpty() {
return size() == 0;
}
@@ -184,6 +194,7 @@ public class JcrPropertyMap
/**
* @see java.util.Map#size()
*/
+ @Override
public int size() {
readFully();
return cache.size();
@@ -192,6 +203,7 @@ public class JcrPropertyMap
/**
* @see java.util.Map#entrySet()
*/
+ @Override
public Set<java.util.Map.Entry<String, Object>> entrySet() {
readFully();
final Map<String, Object> sourceMap;
@@ -206,6 +218,7 @@ public class JcrPropertyMap
/**
* @see java.util.Map#keySet()
*/
+ @Override
public Set<String> keySet() {
readFully();
return cache.keySet();
@@ -214,6 +227,7 @@ public class JcrPropertyMap
/**
* @see java.util.Map#values()
*/
+ @Override
public Collection<Object> values() {
readFully();
final Map<String, Object> sourceMap;
@@ -423,18 +437,22 @@ public class JcrPropertyMap
// ---------- Unsupported Modification methods
+ @Override
public void clear() {
throw new UnsupportedOperationException();
}
+ @Override
public Object put(String key, Object value) {
throw new UnsupportedOperationException();
}
+ @Override
public void putAll(Map<? extends String, ? extends Object> t) {
throw new UnsupportedOperationException();
}
+ @Override
public Object remove(Object key) {
throw new UnsupportedOperationException();
}
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/HelperData.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/HelperData.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/HelperData.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/HelperData.java Wed Feb 10 17:11:34 2016
@@ -18,9 +18,12 @@
*/
package org.apache.sling.jcr.resource.internal;
+import java.util.concurrent.atomic.AtomicReference;
+
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
import org.apache.sling.jcr.resource.internal.helper.jcr.PathMapper;
/**
@@ -29,15 +32,15 @@ import org.apache.sling.jcr.resource.int
*/
public class HelperData {
- public final ClassLoader dynamicClassLoader;
+ private final AtomicReference<DynamicClassLoaderManager> dynamicClassLoaderManagerReference;
public final PathMapper pathMapper;
private volatile String[] namespacePrefixes;
- public HelperData(final ClassLoader dynamicClassLoader,
+ public HelperData(final AtomicReference<DynamicClassLoaderManager> dynamicClassLoaderManagerReference,
final PathMapper pathMapper) {
- this.dynamicClassLoader = dynamicClassLoader;
+ this.dynamicClassLoaderManagerReference = dynamicClassLoaderManagerReference;
this.pathMapper = pathMapper;
}
@@ -48,4 +51,12 @@ public class HelperData {
}
return this.namespacePrefixes;
}
+
+ public ClassLoader getDynamicClassLoader() {
+ final DynamicClassLoaderManager dclm = this.dynamicClassLoaderManagerReference.get();
+ if ( dclm == null ) {
+ return null;
+ }
+ return dclm.getDynamicClassLoader();
+ }
}
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMap.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMap.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMap.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMap.java Wed Feb 10 17:11:34 2016
@@ -101,7 +101,7 @@ public final class JcrModifiableValueMap
if ( entry == null ) {
return null;
}
- return entry.convertToType(type, node, helper.dynamicClassLoader);
+ return entry.convertToType(type, node, helper.getDynamicClassLoader());
}
/**
@@ -446,13 +446,13 @@ public final class JcrModifiableValueMap
this.cache.put(key, entry);
final String name = escapeKeyName(key);
if ( NodeUtil.MIXIN_TYPES.equals(name) ) {
- NodeUtil.handleMixinTypes(node, entry.convertToType(String[].class, node, this.helper.dynamicClassLoader));
+ NodeUtil.handleMixinTypes(node, entry.convertToType(String[].class, node, this.helper.getDynamicClassLoader()));
} else if ( "jcr:primaryType".equals(name) ) {
- node.setPrimaryType(entry.convertToType(String.class, node, this.helper.dynamicClassLoader));
+ node.setPrimaryType(entry.convertToType(String.class, node, this.helper.getDynamicClassLoader()));
} else if ( entry.isArray() ) {
- node.setProperty(name, entry.convertToType(Value[].class, node, this.helper.dynamicClassLoader));
+ node.setProperty(name, entry.convertToType(Value[].class, node, this.helper.getDynamicClassLoader()));
} else {
- node.setProperty(name, entry.convertToType(Value.class, node, this.helper.dynamicClassLoader));
+ node.setProperty(name, entry.convertToType(Value.class, node, this.helper.getDynamicClassLoader()));
}
} catch (final RepositoryException re) {
throw new IllegalArgumentException("Value for key " + key + " can't be put into node: " + value, re);
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrValueMap.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrValueMap.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrValueMap.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/JcrValueMap.java Wed Feb 10 17:11:34 2016
@@ -29,7 +29,7 @@ public class JcrValueMap extends JcrProp
private final HelperData helper;
public JcrValueMap(final Node node, final HelperData helper) {
- super(node, helper.dynamicClassLoader);
+ super(node, null);
this.helper = helper;
}
@@ -38,4 +38,8 @@ public class JcrValueMap extends JcrProp
return this.helper.getNamespacePrefixes(this.getNode().getSession());
}
+ @Override
+ protected ClassLoader getDynamicClassLoader() {
+ return helper.getDynamicClassLoader();
+ }
}
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResource.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResource.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResource.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResource.java Wed Feb 10 17:11:34 2016
@@ -137,7 +137,7 @@ class JcrNodeResource extends JcrItemRes
try {
getNode().getSession().checkPermission(getPath(),
"set_property");
- return (Type) new JcrModifiablePropertyMap(getNode(), this.helper.dynamicClassLoader);
+ return (Type) new JcrModifiablePropertyMap(getNode(), this.helper.getDynamicClassLoader());
} catch (AccessControlException ace) {
// the user has no write permission, cannot adapt
LOGGER.debug(
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrProviderStateFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrProviderStateFactory.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrProviderStateFactory.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrProviderStateFactory.java Wed Feb 10 17:11:34 2016
@@ -22,6 +22,7 @@ import static org.apache.sling.api.resou
import java.util.Iterator;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
import javax.annotation.Nonnull;
import javax.jcr.Credentials;
@@ -51,17 +52,17 @@ public class JcrProviderStateFactory {
private final SlingRepository repository;
- private final DynamicClassLoaderManager dynamicClassLoaderManager;
+ private final AtomicReference<DynamicClassLoaderManager> dynamicClassLoaderManagerReference;
private final PathMapper pathMapper;
public JcrProviderStateFactory(final ServiceReference repositoryReference,
final SlingRepository repository,
- final DynamicClassLoaderManager dynamicClassLoaderManager,
+ final AtomicReference<DynamicClassLoaderManager> dynamicClassLoaderManagerReference,
final PathMapper pathMapper) {
this.repository = repository;
this.repositoryReference = repositoryReference;
- this.dynamicClassLoaderManager = dynamicClassLoaderManager;
+ this.dynamicClassLoaderManagerReference = dynamicClassLoaderManagerReference;
this.pathMapper = pathMapper;
}
@@ -165,7 +166,7 @@ public class JcrProviderStateFactory {
session = handleImpersonation(session, authenticationInfo, logoutSession);
- final HelperData data = new HelperData(this.dynamicClassLoaderManager.getDynamicClassLoader(), this.pathMapper);
+ final HelperData data = new HelperData(this.dynamicClassLoaderManagerReference, this.pathMapper);
if (bc == null) {
return new JcrProviderState(session, data, logoutSession);
} else {
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java Wed Feb 10 17:11:34 2016
@@ -27,6 +27,7 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicReference;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -86,6 +87,9 @@ import org.slf4j.LoggerFactory;
@Property(name = ResourceProvider.PROPERTY_ATTRIBUTABLE, boolValue = true),
@Property(name = ResourceProvider.PROPERTY_REFRESHABLE, boolValue = true),
})
+@Reference(name = "dynamicClassLoaderManager",
+ referenceInterface = DynamicClassLoaderManager.class,
+ cardinality = ReferenceCardinality.OPTIONAL_UNARY, policy = ReferencePolicy.DYNAMIC)
public class JcrResourceProvider extends ResourceProvider<JcrProviderState> {
/** Logger */
@@ -120,28 +124,26 @@ public class JcrResourceProvider extends
@Reference
private PathMapper pathMapper;
- /** The dynamic class loader */
- @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY, policy = ReferencePolicy.DYNAMIC)
- private volatile DynamicClassLoaderManager dynamicClassLoaderManager;
-
/** This service is only available on OAK, therefore optional and static) */
@Reference(policy=ReferencePolicy.STATIC, cardinality=ReferenceCardinality.OPTIONAL_UNARY)
private Executor executor;
/** The JCR observation listener. */
- private Closeable listener;
+ private volatile Closeable listener;
- private SlingRepository repository;
+ private volatile SlingRepository repository;
private int observationQueueLength;
- private boolean optimizeForOak;
+ private volatile boolean optimizeForOak;
+
+ private volatile String root;
- private String root;
+ private volatile BundleContext bundleCtx;
- private BundleContext bundleCtx;
+ private volatile JcrProviderStateFactory stateFactory;
- private JcrProviderStateFactory stateFactory;
+ private final AtomicReference<DynamicClassLoaderManager> classLoaderManagerReference = new AtomicReference<DynamicClassLoaderManager>();
@Activate
protected void activate(final ComponentContext context) throws RepositoryException {
@@ -161,7 +163,7 @@ public class JcrResourceProvider extends
this.root = PropertiesUtil.toString(context.getProperties().get(ResourceProvider.PROPERTY_ROOT), "/");
this.bundleCtx = context.getBundleContext();
- this.stateFactory = new JcrProviderStateFactory(repositoryReference, repository, dynamicClassLoaderManager, pathMapper);
+ this.stateFactory = new JcrProviderStateFactory(repositoryReference, repository, classLoaderManagerReference, pathMapper);
}
@Deactivate
@@ -170,6 +172,14 @@ public class JcrResourceProvider extends
this.stateFactory = null;
}
+ protected void bindDynamicClassLoaderManager(final DynamicClassLoaderManager dynamicClassLoaderManager) {
+ this.classLoaderManagerReference.set(dynamicClassLoaderManager);
+ }
+
+ protected void unbindDynamicClassLoaderManager(final DynamicClassLoaderManager dynamicClassLoaderManager) {
+ this.classLoaderManagerReference.compareAndSet(dynamicClassLoaderManager, null);
+ }
+
@Override
public void start(final ProviderContext ctx) {
super.start(ctx);
Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/package-info.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/package-info.java (original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/package-info.java Wed Feb 10 17:11:34 2016
@@ -17,7 +17,7 @@
* under the License.
*/
-@Version("2.3")
+@Version("2.4")
package org.apache.sling.jcr.resource;
import aQute.bnd.annotation.Version;
Modified: sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMapTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMapTest.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMapTest.java (original)
+++ sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/JcrModifiableValueMapTest.java Wed Feb 10 17:11:34 2016
@@ -18,6 +18,8 @@
*/
package org.apache.sling.jcr.resource.internal;
+import static org.apache.sling.jcr.resource.internal.AssertCalendar.assertEqualsCalendar;
+
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.Serializable;
@@ -29,6 +31,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
@@ -38,11 +41,10 @@ import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.util.Text;
import org.apache.sling.api.resource.ModifiableValueMap;
import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
import org.apache.sling.commons.testing.jcr.RepositoryTestBase;
import org.apache.sling.jcr.resource.JcrResourceUtil;
-import static org.apache.sling.jcr.resource.internal.AssertCalendar.assertEqualsCalendar;
-
public class JcrModifiableValueMapTest extends RepositoryTestBase {
private String rootPath;
@@ -76,7 +78,7 @@ public class JcrModifiableValueMapTest e
}
private HelperData getHelperData() throws Exception {
- return new HelperData(null, new PathMapperImpl());
+ return new HelperData(new AtomicReference<DynamicClassLoaderManager>(), new PathMapperImpl());
}
private Map<String, Object> initialSet() {
Modified: sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/JcrNodeResourceIteratorTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/JcrNodeResourceIteratorTest.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/JcrNodeResourceIteratorTest.java (original)
+++ sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/JcrNodeResourceIteratorTest.java Wed Feb 10 17:11:34 2016
@@ -19,12 +19,14 @@
package org.apache.sling.jcr.resource.internal.helper;
import java.util.NoSuchElementException;
+import java.util.concurrent.atomic.AtomicReference;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;
import org.apache.sling.api.resource.Resource;
+import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
import org.apache.sling.commons.testing.jcr.MockNode;
import org.apache.sling.commons.testing.jcr.MockNodeIterator;
import org.apache.sling.jcr.resource.internal.HelperData;
@@ -36,7 +38,7 @@ import junit.framework.TestCase;
public class JcrNodeResourceIteratorTest extends TestCase {
private HelperData getHelperData() {
- return new HelperData(null, new PathMapperImpl());
+ return new HelperData(new AtomicReference<DynamicClassLoaderManager>(), new PathMapperImpl());
}
public void testEmpty() {
Modified: sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrItemResourceFactoryTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrItemResourceFactoryTest.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrItemResourceFactoryTest.java (original)
+++ sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrItemResourceFactoryTest.java Wed Feb 10 17:11:34 2016
@@ -18,18 +18,21 @@
*/
package org.apache.sling.jcr.resource.internal.helper.jcr;
-import org.apache.jackrabbit.commons.JcrUtils;
-import org.apache.sling.commons.testing.jcr.RepositoryTestBase;
-import org.apache.sling.jcr.resource.internal.HelperData;
-import org.apache.sling.jcr.resource.internal.PathMapperImpl;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.concurrent.atomic.AtomicReference;
import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
+
+import org.apache.jackrabbit.commons.JcrUtils;
+import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
+import org.apache.sling.commons.testing.jcr.RepositoryTestBase;
+import org.apache.sling.jcr.resource.internal.HelperData;
+import org.apache.sling.jcr.resource.internal.PathMapperImpl;
public class JcrItemResourceFactoryTest extends RepositoryTestBase {
@@ -85,7 +88,7 @@ public class JcrItemResourceFactoryTest
}
private void compareGetItemOrNull(String path, String expectedPath) throws RepositoryException {
- HelperData helper = new HelperData(null, new PathMapperImpl());
+ HelperData helper = new HelperData(new AtomicReference<DynamicClassLoaderManager>(), new PathMapperImpl());
Item item1 = new JcrItemResourceFactory(session, helper).getItemOrNull(path);
Item item2 = new JcrItemResourceFactory(nonJackrabbitSession, helper).getItemOrNull(path);
if (expectedPath == null) {
Modified: sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResourceTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResourceTest.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResourceTest.java (original)
+++ sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrNodeResourceTest.java Wed Feb 10 17:11:34 2016
@@ -23,6 +23,8 @@ import java.io.InputStream;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
+
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
@@ -30,6 +32,7 @@ import javax.jcr.Session;
import org.apache.jackrabbit.JcrConstants;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceMetadata;
+import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
import org.apache.sling.jcr.resource.JcrResourceConstants;
import org.apache.sling.jcr.resource.internal.HelperData;
import org.apache.sling.jcr.resource.internal.PathMapperImpl;
@@ -37,7 +40,7 @@ import org.apache.sling.jcr.resource.int
public class JcrNodeResourceTest extends JcrItemResourceTestBase {
private HelperData getHelperData() throws Exception {
- return new HelperData(null, new PathMapperImpl());
+ return new HelperData(new AtomicReference<DynamicClassLoaderManager>(), new PathMapperImpl());
}
public void testLinkedFile() throws Exception {
Modified: sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrTestNodeResource.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrTestNodeResource.java?rev=1729661&r1=1729660&r2=1729661&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrTestNodeResource.java (original)
+++ sling/trunk/bundles/jcr/resource/src/test/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrTestNodeResource.java Wed Feb 10 17:11:34 2016
@@ -18,10 +18,13 @@
*/
package org.apache.sling.jcr.resource.internal.helper.jcr;
+import java.util.concurrent.atomic.AtomicReference;
+
import javax.jcr.Node;
import javax.jcr.RepositoryException;
import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
import org.apache.sling.jcr.resource.internal.HelperData;
import org.apache.sling.jcr.resource.internal.PathMapperImpl;
@@ -29,7 +32,7 @@ public class JcrTestNodeResource extends
public JcrTestNodeResource(ResourceResolver resourceResolver, Node node,
ClassLoader dynamicClassLoader) throws RepositoryException {
- super(resourceResolver, node.getPath(), null, node, new HelperData(null, new PathMapperImpl()));
+ super(resourceResolver, node.getPath(), null, node, new HelperData(new AtomicReference<DynamicClassLoaderManager>(), new PathMapperImpl()));
}
}