SLING-8166 Replace usage of deprecated APIs
diff --git a/src/main/java/org/apache/sling/jcr/contentloader/ContentCreator.java b/src/main/java/org/apache/sling/jcr/contentloader/ContentCreator.java
index b33d1c8..b53e71a 100644
--- a/src/main/java/org/apache/sling/jcr/contentloader/ContentCreator.java
+++ b/src/main/java/org/apache/sling/jcr/contentloader/ContentCreator.java
@@ -116,10 +116,10 @@
      * If the path does not exist and node type is null, false is
      * returned.
      * When the changes to the node are finished, {@link #finishNode()}
-     * must be callsed.
+     * must be called.
      *
      * @param subPath     The relative path
-     * @param newNodeType Node typ for newly created nodes.
+     * @param newNodeType Node type for newly created nodes.
      * @throws RepositoryException
      */
     boolean switchCurrentNode(String subPath, String newNodeType) throws RepositoryException;
diff --git a/src/main/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoader.java b/src/main/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoader.java
index 72d496d..2d7be2c 100644
--- a/src/main/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoader.java
+++ b/src/main/java/org/apache/sling/jcr/contentloader/internal/BundleContentLoader.java
@@ -40,6 +40,7 @@
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.version.VersionManager;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.sling.jcr.contentloader.ContentReader;
@@ -265,7 +266,8 @@
 
             // finally check in versionable nodes
             for (final Node versionable : contentCreator.getVersionables()) {
-                versionable.checkin();
+            	VersionManager versionManager = versionable.getSession().getWorkspace().getVersionManager();
+            	versionManager.checkin(versionable.getPath());
             }
         } finally {
             try {
@@ -307,7 +309,6 @@
 
         final Map<String, Node> processedEntries = new HashMap<String, Node>();
 
-        @SuppressWarnings("unchecked")
         Enumeration<String> entries = bundle.getEntryPaths(path);
         if (entries == null) {
             // check for single content
diff --git a/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java b/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java
index 7645066..29968a1 100644
--- a/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java
+++ b/src/main/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderService.java
@@ -31,6 +31,7 @@
 import javax.jcr.Session;
 import javax.jcr.Value;
 import javax.jcr.lock.LockException;
+import javax.jcr.lock.LockManager;
 
 import org.apache.sling.commons.mime.MimeTypeService;
 import org.apache.sling.jcr.api.SlingRepository;
@@ -201,7 +202,7 @@
                     final String token = st.nextToken();
                     if ( !node.hasNode(token) ) {
                         node.addNode(token, "sling:Folder");
-                        node.save();
+                        writerSession.save();
                     }
                     node = node.getNode(token);
                 }
@@ -209,7 +210,7 @@
             }
             if ( !node.hasNode(path) ) {
                 node.addNode(path, "sling:Folder");
-                node.save();
+                writerSession.save();
             }
         }
     }
@@ -337,7 +338,7 @@
             try {
                 final Node bcNode = parentNode.addNode(nodeName, "nt:unstructured");
                 bcNode.addMixin("mix:lockable");
-                parentNode.save();
+                session.save();
             } catch (RepositoryException re) {
                 // for concurrency issues (running in a cluster) we ignore exceptions
                 this.log.warn("Unable to create node " + nodeName, re);
@@ -349,7 +350,12 @@
             return null;
         }
         try {
-            bcNode.lock(false, true);
+        	LockManager lockManager = session.getWorkspace().getLockManager();
+        	lockManager.lock(bcNode.getPath(), 
+        			false, // isDeep 
+        			true, // isSessionScoped 
+        			Long.MAX_VALUE, // timeoutHint 
+        			null); // ownerInfo
         } catch (LockException le) {
             return null;
         }
@@ -392,9 +398,10 @@
             if ( createdNodes != null && createdNodes.size() > 0 ) {
                 bcNode.setProperty(PROPERTY_UNINSTALL_PATHS, createdNodes.toArray(new String[createdNodes.size()]));
             }
-            bcNode.save();
+            session.save();
         }
-        bcNode.unlock();
+        LockManager lockManager = session.getWorkspace().getLockManager();
+		lockManager.unlock(bcNode.getPath());
     }
 
     @Override
@@ -409,7 +416,7 @@
                 bcNode.setProperty(PROPERTY_CONTENT_UNLOADED_AT, Calendar.getInstance());
                 bcNode.setProperty(PROPERTY_CONTENT_UNLOADED_BY, this.slingId);
                 bcNode.setProperty(PROPERTY_UNINSTALL_PATHS, (String[])null);
-                bcNode.save();
+                session.save();
             }
         } catch (RepositoryException re) {
             this.log.error("Unable to update bundle content info.", re);
diff --git a/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java b/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java
index 49c4a97..03650d2 100644
--- a/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java
+++ b/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreator.java
@@ -35,6 +35,7 @@
 import java.util.Stack;
 import java.util.StringTokenizer;
 
+import javax.jcr.Binary;
 import javax.jcr.Item;
 import javax.jcr.ItemNotFoundException;
 import javax.jcr.Node;
@@ -43,6 +44,7 @@
 import javax.jcr.Session;
 import javax.jcr.Value;
 import javax.jcr.ValueFactory;
+import javax.jcr.version.VersionManager;
 
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
 import org.apache.jackrabbit.api.security.user.Authorizable;
@@ -379,7 +381,7 @@
         }
     }
 
-    protected Value createValue(final ValueFactory factory, Object value) {
+    protected Value createValue(final ValueFactory factory, Object value) throws RepositoryException {
         if (value == null) {
             return null;
         }
@@ -396,7 +398,8 @@
         } else if (value instanceof Boolean) {
             return factory.createValue((Boolean) value);
         } else if (value instanceof InputStream) {
-            return factory.createValue((InputStream) value);
+        	Binary binary = factory.createBinary((InputStream)value);
+        	return factory.createValue(binary);
         } else {
             return factory.createValue(value.toString());
         }
@@ -454,7 +457,7 @@
             if (item.isNode()) {
                 Node refNode = (Node) item;
                 if (refNode.isNodeType("mix:referenceable")) {
-                    return refNode.getUUID();
+                    return refNode.getIdentifier();
                 }
             }
         } else {
@@ -483,7 +486,7 @@
         }
 
         Session session = node.getSession();
-        String uuid = node.getUUID();
+        String uuid = node.getIdentifier();
 
         for (String property : props) {
             String name = getName(property);
@@ -879,7 +882,9 @@
             Node versionableNode = findVersionableAncestor(node);
             if (versionableNode != null) {
                 if (!versionableNode.isCheckedOut()) {
-                    versionableNode.checkout();
+                	VersionManager versionManager = versionableNode.getSession().getWorkspace().getVersionManager();
+                	versionManager.checkout(versionableNode.getPath());
+                	
                     if (this.importListener != null) {
                         this.importListener.onCheckout(versionableNode.getPath());
                     }
diff --git a/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentImporter.java b/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentImporter.java
index 47e5b36..e11495c 100644
--- a/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentImporter.java
+++ b/src/main/java/org/apache/sling/jcr/contentloader/internal/DefaultContentImporter.java
@@ -26,6 +26,7 @@
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.version.VersionManager;
 
 import org.apache.sling.commons.mime.MimeTypeService;
 import org.apache.sling.jcr.contentloader.ContentImportListener;
@@ -126,7 +127,8 @@
 
         // finally checkin versionable nodes
         for (final Node versionable : contentCreator.getVersionables()) {
-            versionable.checkin();
+        	VersionManager versionManager = versionable.getSession().getWorkspace().getVersionManager();
+        	versionManager.checkin(versionable.getPath());
             if (importListener != null) {
                 importListener.onCheckin(versionable.getPath());
             }
diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderServiceTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderServiceTest.java
index 0e7d02e..031724a 100644
--- a/src/test/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderServiceTest.java
+++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/ContentLoaderServiceTest.java
@@ -31,6 +31,8 @@
 import org.osgi.framework.BundleEvent;
 
 import javax.jcr.*;
+import javax.jcr.lock.LockManager;
+
 import java.util.*;
 
 import static org.junit.Assert.*;
@@ -71,8 +73,10 @@
     @Test
     public void testBundleResolvedBundleChanged() throws NoSuchFieldException, RepositoryException {
         final Bundle bundle = createNewBundle();
-        final List<Bundle> delayedBundles = (List<Bundle>) PrivateAccessor.getField(contentLoader, "delayedBundles");
-        final Set<String> updatedBundles = (Set<String>) PrivateAccessor.getField(underTest, "updatedBundles");
+        @SuppressWarnings("unchecked")
+		final List<Bundle> delayedBundles = (List<Bundle>) PrivateAccessor.getField(contentLoader, "delayedBundles");
+        @SuppressWarnings("unchecked")
+		final Set<String> updatedBundles = (Set<String>) PrivateAccessor.getField(underTest, "updatedBundles");
 
         updatedBundles.add(bundle.getSymbolicName());
         int updatedBundlesCurrentAmout = updatedBundles.size();
@@ -96,7 +100,12 @@
         final Node bcNode = (Node)session.getItem(ContentLoaderService.BUNDLE_CONTENT_NODE);
         bcNode.addNode(bundle.getSymbolicName()).addMixin("mix:lockable");
         session.save();
-        bcNode.getNode(bundle.getSymbolicName()).lock(false, true);
+        LockManager lockManager = session.getWorkspace().getLockManager();
+        lockManager.lock(bcNode.getNode(bundle.getSymbolicName()).getPath(), 
+        		false, // isDeep 
+        		true, // isSessionScoped 
+        		Long.MAX_VALUE, // timeoutHint 
+        		null); // ownerInfo
 
         assertNull(underTest.getBundleContentInfo(session, bundle, false));
     }
diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreatorTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreatorTest.java
index 0316ce0..4f56932 100644
--- a/src/test/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreatorTest.java
+++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/DefaultContentCreatorTest.java
@@ -141,7 +141,7 @@
             exactly(2).of(parentNode).getPath(); will(returnValue("/" + rootNodeName));
             oneOf(parentNode).isNode(); will(returnValue(true));
             oneOf(parentNode).isNodeType("mix:referenceable"); will(returnValue(true));
-            oneOf(parentNode).getUUID(); will(returnValue(uuid));
+            oneOf(parentNode).getIdentifier(); will(returnValue(uuid));
             oneOf(parentNode).getSession(); will(returnValue(session));
             oneOf(parentNode).hasProperty(with(any(String.class)));
             oneOf(parentNode).setProperty(propertyName, uuid, PropertyType.REFERENCE);
@@ -261,7 +261,8 @@
 
     @Test
     public void createNodeWithoutProvidedNames() throws RepositoryException, NoSuchFieldException {
-        Stack nodesStack = (Stack)PrivateAccessor.getField(contentCreator, "parentNodeStack");
+        @SuppressWarnings("unchecked")
+		Stack<Node> nodesStack = (Stack<Node>)PrivateAccessor.getField(contentCreator, "parentNodeStack");
 
         contentCreator.init(ImportOptionsFactory.createImportOptions(true, true, true, false, false),
                 new HashMap<String, ContentReader>(), null, null);
@@ -303,7 +304,8 @@
     public void addMixinsToExistingNode() throws RepositoryException, NoSuchFieldException {
         final String newNodeName = uniqueId();
         final String[] mixins = {"mix:versionable"};
-        final List<Node> versionables = (List<Node>) PrivateAccessor.getField(contentCreator, "versionables");
+        @SuppressWarnings("unchecked")
+		final List<Node> versionables = (List<Node>) PrivateAccessor.getField(contentCreator, "versionables");
 
         contentCreator.init(ImportOptionsFactory.createImportOptions(false, false, false, true, false),
                 new HashMap<String, ContentReader>(), null, null);
@@ -364,7 +366,8 @@
         final String propName = uniqueId();
         final String[] propValues = {uniqueId(), uniqueId()};
         final ContentImportListener listener = mockery.mock(ContentImportListener.class);
-        final Map<String, String[]> delayedMultipleReferences =
+        @SuppressWarnings("unchecked")
+		final Map<String, String[]> delayedMultipleReferences =
                 (Map<String, String[]>)PrivateAccessor.getField(contentCreator, "delayedMultipleReferences");
         this.mockery.checking(new Expectations(){{
             oneOf(listener).onCreate(with(any(String.class)));
@@ -449,7 +452,8 @@
     public void finishNodeWithMultipleProperty() throws RepositoryException, NoSuchFieldException {
         final String propName = uniqueId();
         final String underTestNodeName = uniqueId();
-        final Map<String, List<String>> delayedMultipleReferences =
+        @SuppressWarnings("unchecked")
+		final Map<String, List<String>> delayedMultipleReferences =
                 (Map<String, List<String>>) PrivateAccessor.getField(contentCreator, "delayedMultipleReferences");
         final ContentImportListener listener = mockery.mock(ContentImportListener.class);
 
@@ -494,7 +498,7 @@
         underTest.addMixin("mix:referenceable");
 
         contentCreator.finishNode();
-        assertEquals(underTest.getUUID(), parentNode.getProperty(propName).getString());
+        assertEquals(underTest.getIdentifier(), parentNode.getProperty(propName).getString());
         mockery.assertIsSatisfied();
     }
 
diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/JsonReaderTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/JsonReaderTest.java
index 6aab2ac..91ffcd0 100644
--- a/src/test/java/org/apache/sling/jcr/contentloader/internal/JsonReaderTest.java
+++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/JsonReaderTest.java
@@ -31,18 +31,16 @@
 import org.apache.sling.jcr.contentloader.ContentCreator;
 import org.apache.sling.jcr.contentloader.internal.readers.JsonReader;
 import org.jmock.Expectations;
-import org.jmock.Mockery;
 import org.jmock.Sequence;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.junit.runner.RunWith;
+import org.jmock.integration.junit4.JUnitRuleMockery;
+import org.junit.Rule;
 
-@RunWith(JMock.class)
 public class JsonReaderTest {
 
     protected JsonReader jsonReader;
 
-    protected Mockery mockery = new JUnit4Mockery();
+    @Rule
+    public final JUnitRuleMockery mockery = new JUnitRuleMockery();
 
     protected ContentCreator creator;
 
diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/PathEntryTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/PathEntryTest.java
index 611e7cd..6f3ea61 100644
--- a/src/test/java/org/apache/sling/jcr/contentloader/internal/PathEntryTest.java
+++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/PathEntryTest.java
@@ -18,28 +18,35 @@
  */
 package org.apache.sling.jcr.contentloader.internal;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+
 import org.apache.sling.commons.osgi.ManifestHeader;
 import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
+import org.jmock.integration.junit4.JUnitRuleMockery;
+import org.junit.Rule;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 import org.osgi.framework.Bundle;
 
-import java.util.*;
-
-import static org.junit.Assert.*;
-
-@RunWith(JMock.class)
 public class PathEntryTest {
     final String pathEntryPath = "/test/path";
-    Mockery mockery = new JUnit4Mockery();
+    
+    @Rule
+    public final JUnitRuleMockery mockery = new JUnitRuleMockery();
 
     @Test
     public void testGetContentPaths(){
         final Bundle bundle = mockery.mock(Bundle.class);
-        final Dictionary<String, String> dict = new Hashtable();
+        final Dictionary<String, String> dict = new Hashtable<>();
         dict.put("Bnd-LastModified", "1258555936230");
         dict.put(PathEntry.CONTENT_HEADER, "test1, test2");
         //PathEntry#getContentPaths should return this value
diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/OrderedJsonReaderTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/OrderedJsonReaderTest.java
index 11dde20..878a2c3 100644
--- a/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/OrderedJsonReaderTest.java
+++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/OrderedJsonReaderTest.java
@@ -20,15 +20,12 @@
 
 import org.apache.sling.jcr.contentloader.internal.JsonReaderTest;
 import org.jmock.Expectations;
-import org.jmock.integration.junit4.JMock;
-import org.junit.runner.RunWith;
 
 /**
  * testing specific ordered json import case:
  * - should work with all normal json cases,
  * - should work for specific ordered case
  */
-@RunWith(JMock.class)
 public class OrderedJsonReaderTest extends JsonReaderTest {
 
     @Override
diff --git a/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/XmlReaderTest.java b/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/XmlReaderTest.java
index 8d7ad20..77b1755 100644
--- a/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/XmlReaderTest.java
+++ b/src/test/java/org/apache/sling/jcr/contentloader/internal/readers/XmlReaderTest.java
@@ -32,10 +32,10 @@
 
 import javax.jcr.RepositoryException;
 
-import junit.framework.TestCase;
-
 import org.apache.sling.jcr.contentloader.ContentCreator;
 
+import junit.framework.TestCase;
+
 public class XmlReaderTest extends TestCase {
 
     private XmlReader reader;