From 1541a68db10f74ad9dc08687d21b875b3bac0078 Mon Sep 17 00:00:00 2001 From: Ivor Boers Date: Wed, 27 Feb 2019 21:20:24 +0100 Subject: [PATCH] Replaced the ImporterFactory with Several JcrImporter implementations to support multiple fileformats. --- pom.xml | 2 +- .../AbstractJcrImporter.java} | 216 ++++++------------ .../nl/openweb/jcr/importer/JcrImporter.java | 76 ++++++ .../nl/openweb/jcr/importer/JsonImporter.java | 48 ++++ .../nl/openweb/jcr/importer/XmlImporter.java | 61 +++++ .../openweb/jcr/AbstractImporterJsonTest.java | 7 +- .../nl/openweb/jcr/AbstractImporterTest.java | 3 +- .../jcr/AbstractImporterWithPathTest.java | 24 +- .../openweb/jcr/AbstractImporterXmlTest.java | 7 +- .../nl/openweb/jcr/BoundaryCasesTest.java | 53 +++-- .../nl/openweb/jcr/ErrorHandlingTest.java | 63 ++--- .../jcr/ImporterJackrabbitJsonStringTest.java | 28 ++- .../openweb/jcr/ImporterJackrabbitTest.java | 25 +- .../jcr/ImporterJackrabbitXmlStringTest.java | 29 ++- .../jcr/ImporterJackrabbitXmlTest.java | 25 +- .../openweb/jcr/ImporterReflectionTest.java | 18 +- .../nl/openweb/jcr/ImporterSlingTest.java | 27 ++- .../nl/openweb/jcr/ImporterSlingXmlTest.java | 29 ++- .../openweb/jcr/JsonImporterWitPathTest.java | 9 +- .../JsonStringImporterWitPathAndTypeTest.java | 7 +- .../jcr/JsonStringImporterWitPathTest.java | 7 +- .../openweb/jcr/XmlImporterWitPathTest.java | 7 +- .../XmlStringImporterWitPathAndTypeTest.java | 7 +- .../jcr/XmlStringImporterWitPathTest.java | 7 +- .../nl/openweb/jcr/importerSupplierTest.java | 63 ----- 25 files changed, 477 insertions(+), 371 deletions(-) rename src/main/java/nl/openweb/jcr/{Importer.java => importer/AbstractJcrImporter.java} (59%) create mode 100644 src/main/java/nl/openweb/jcr/importer/JcrImporter.java create mode 100644 src/main/java/nl/openweb/jcr/importer/JsonImporter.java create mode 100644 src/main/java/nl/openweb/jcr/importer/XmlImporter.java delete mode 100644 src/test/java/nl/openweb/jcr/importerSupplierTest.java diff --git a/pom.xml b/pom.xml index cb46b43..4120f11 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ nl.openweb.jcr jcr-mocking-tool - 1.3.4-SNAPSHOT + 1.4.0-SNAPSHOT JCR Mocking Tool This a tool to facilitate setup of a JCR repository for testing purposes. diff --git a/src/main/java/nl/openweb/jcr/Importer.java b/src/main/java/nl/openweb/jcr/importer/AbstractJcrImporter.java similarity index 59% rename from src/main/java/nl/openweb/jcr/Importer.java rename to src/main/java/nl/openweb/jcr/importer/AbstractJcrImporter.java index 4c094b9..0337be2 100644 --- a/src/main/java/nl/openweb/jcr/Importer.java +++ b/src/main/java/nl/openweb/jcr/importer/AbstractJcrImporter.java @@ -1,35 +1,13 @@ -/* - * Copyright 2017 Open Web IT B.V. (https://www.openweb.nl/) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package nl.openweb.jcr; +package nl.openweb.jcr.importer; -import nl.openweb.jcr.domain.NodeBean; -import nl.openweb.jcr.domain.PropertyBean; -import nl.openweb.jcr.json.JsonUtils; +import nl.openweb.jcr.JcrImporterException; +import nl.openweb.jcr.NodeBeanUtils; import nl.openweb.jcr.utils.NodeTypeUtils; import nl.openweb.jcr.utils.PathUtils; import nl.openweb.jcr.utils.ReflectionUtils; import org.apache.commons.beanutils.ConvertUtilsBean; import javax.jcr.*; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; -import java.io.ByteArrayInputStream; -import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.util.*; @@ -37,118 +15,104 @@ import static nl.openweb.jcr.utils.ReflectionUtils.unwrapNodeDecorator; /** - * Created by Ebrahim on 5/20/2017. + * @author Ivor */ -public class Importer { +public abstract class AbstractJcrImporter implements JcrImporter { - public static final String JCR_PRIMARY_TYPE = "jcr:primaryType"; - public static final String JCR_MIXIN_TYPES = "jcr:mixinTypes"; - public static final String JCR_UUID = "jcr:uuid"; private final Set protectedProperties; - private final boolean setProtectedProperties; - private final boolean saveSession; - private final boolean addMixins; - private final boolean addUuid; - private final boolean addUnknownTypes; + private boolean addMixins = true; + private boolean addUuid = false; + private boolean setProtectedProperties = false; + private boolean saveSession = true; + private boolean addUnknownTypes = false; private final Node rootNode; - private JAXBContext jaxbContext; - private Importer(Builder builder) { - try { - this.addMixins = builder.addMixins; - this.rootNode = builder.rootNodeSupplier.get(); - this.addUuid = builder.addUuid; - this.setProtectedProperties = builder.setProtectedProperties; - this.saveSession = builder.saveSession; - this.addUnknownTypes = builder.addUnknownTypes; - HashSet set = new HashSet<>(); - set.add(JCR_PRIMARY_TYPE); - set.add(JCR_MIXIN_TYPES); - set.add(JCR_UUID); - this.protectedProperties = Collections.unmodifiableSet(set); - this.jaxbContext = JAXBContext.newInstance(NodeBean.class, PropertyBean.class); - } catch (Exception e) { - throw new JcrImporterException(e.getMessage(), e); + public AbstractJcrImporter(Node rootNode) { + this.rootNode = rootNode; + if (rootNode == null) { + throw new JcrImporterException("rootNode is not allowed to be null"); } + HashSet set = new HashSet<>(); + set.add(JCR_PRIMARY_TYPE); + set.add(JCR_MIXIN_TYPES); + set.add(JCR_UUID); + this.protectedProperties = Collections.unmodifiableSet(set); } - public Node createNodesFromJson(String json) { - return createNodesFromJson(json, null, null); + @Override + public JcrImporter addMixins(boolean addMixins) { + this.addMixins = addMixins; + return this; } - public Node createNodesFromJson(String json, String path) { - return createNodesFromJson(json, path, null); + public boolean isAddMixins() { + return addMixins; } - public Node createNodesFromJson(String json, String path, String intermediateNodeType) { - try { - return createNodeFromNodeBean(JsonUtils.parseJsonMap(json), path, intermediateNodeType); - } catch (IOException e) { - throw new JcrImporterException(e.getMessage(), e); - } + @Override + public AbstractJcrImporter addUuid(boolean addUuid) { + this.addUuid = addUuid; + return this; } - public Node createNodesFromJson(InputStream inputStream) { - return createNodesFromJson(inputStream, null, null); + public boolean isAddUuid() { + return addUuid; } - public Node createNodesFromJson(InputStream inputStream, String path) { - return createNodesFromJson(inputStream, path, null); + @Override + public AbstractJcrImporter setProtectedProperties(boolean setProtectedProperties) { + this.setProtectedProperties = setProtectedProperties; + return this; } - public Node createNodesFromJson(InputStream inputStream, String path, String intermediateNodeType) { - try { - validate(inputStream); - return createNodeFromNodeBean(JsonUtils.parseJsonMap(inputStream), path, intermediateNodeType); - } catch (IOException e) { - throw new JcrImporterException(e.getMessage(), e); - } + public boolean isSetProtectedProperties() { + return setProtectedProperties; } + @Override + public AbstractJcrImporter saveSession(boolean saveSession) { + this.saveSession = saveSession; + return this; + } - public Node createNodesFromXml(String xml) { - return createNodesFromXml(xml, null); + public boolean isSaveSession() { + return saveSession; } - public Node createNodesFromXml(String xml, String path) { - return createNodesFromXml(xml, path, null); + @Override + public AbstractJcrImporter addUnknownTypes(boolean addUnknownTypes) { + this.addUnknownTypes = addUnknownTypes; + return this; } - public Node createNodesFromXml(String xml, String path, String intermediateNodeType) { - return this.createNodesFromXml(new ByteArrayInputStream(xml.getBytes()), path, intermediateNodeType); + public boolean isAddUnknownTypes() { + return addUnknownTypes; } - public Node createNodesFromXml(InputStream inputStream) { - return createNodesFromXml(inputStream, null, null); + @Override + public Node getRootNode() { + return rootNode; } - public Node createNodesFromXml(InputStream inputStream, String path) { - return createNodesFromXml(inputStream, path, null); + + public Node createNodes(String source) { + return createNodes(source, null, null); } - public Node createNodesFromXml(InputStream inputStream, String path, String intermediateNodeType) { - try { - validate(inputStream); - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); - Object unmarshaled = unmarshaller.unmarshal(inputStream); - if (unmarshaled instanceof NodeBean) { - return createNodeFromNodeBean(NodeBeanUtils.nodeBeanToMap((NodeBean) unmarshaled), path, intermediateNodeType); - } else { - throw new JcrImporterException("The given XML file is not of the right format"); - } - } catch (JAXBException e) { - throw new JcrImporterException(e.getMessage(), e); - } + public Node createNodes(String source, String path) { + return createNodes(source, path, null); } - private void validate(InputStream inputStream) { - if (inputStream == null) { - throw new JcrImporterException("InputSteam may not be null."); - } + public Node createNodes(InputStream inputStream) { + return createNodes(inputStream, null, null); + } + + public Node createNodes(InputStream inputStream, String path) { + return createNodes(inputStream, path, null); } - private Node createNodeFromNodeBean(Map map, String path, String intermediateNodeType) { + Node createNodeFromNodeBean(Map map, String path, String intermediateNodeType) { try { Node node = getOrCreateNode(rootNode, path, intermediateNodeType, map); updateNode(node, map); @@ -364,55 +328,5 @@ private Value toJcrValue(Session session, Object value, String propertyName) thr return result; } - public static class Builder { - private boolean addMixins = true; - private boolean addUuid = false; - private boolean setProtectedProperties = false; - private boolean saveSession = true; - private boolean addUnknownTypes = false; - private final SupplierWithException rootNodeSupplier; - - - public Builder(SupplierWithException rootNodeSupplier) { - this.rootNodeSupplier = rootNodeSupplier; - if (this.rootNodeSupplier == null) { - throw new IllegalArgumentException("supplier is required."); - } - } - - public Builder addMixins(boolean addMixins) { - this.addMixins = addMixins; - return this; - } - - public Builder addUuid(boolean addUuid) { - this.addUuid = addUuid; - return this; - } - - public Builder setProtectedProperties(boolean setProtectedProperties) { - this.setProtectedProperties = setProtectedProperties; - return this; - } - - public Builder saveSession(boolean saveSession) { - this.saveSession = saveSession; - return this; - } - - public Builder addUnknownTypes(boolean addUnknownTypes) { - this.addUnknownTypes = addUnknownTypes; - return this; - } - - public Importer build() { - return new Importer(this); - } - } - - @FunctionalInterface - public interface SupplierWithException { - T get() throws Exception; - } } diff --git a/src/main/java/nl/openweb/jcr/importer/JcrImporter.java b/src/main/java/nl/openweb/jcr/importer/JcrImporter.java new file mode 100644 index 0000000..763dfaa --- /dev/null +++ b/src/main/java/nl/openweb/jcr/importer/JcrImporter.java @@ -0,0 +1,76 @@ +package nl.openweb.jcr.importer; + +import javax.jcr.Node; +import java.io.InputStream; + + +/** + * Imports JCR nodes from an outside source + * @author Ivor Boers + */ +public interface JcrImporter { + String JCR_PRIMARY_TYPE = "jcr:primaryType"; + String JCR_MIXIN_TYPES = "jcr:mixinTypes"; + String JCR_UUID = "jcr:uuid"; + + JcrImporter addMixins(boolean addMixins); + + JcrImporter addUuid(boolean addUuid); + + JcrImporter setProtectedProperties(boolean setProtectedProperties); + + JcrImporter saveSession(boolean saveSession); + + JcrImporter addUnknownTypes(boolean addUnknownTypes); + + Node getRootNode(); + + /** + * Create nodes from source on the root + * @param source the textual representation of the nodes + * @return the created (top)node + */ + Node createNodes(String source); + + /** + * Create nodes from source at a specified path without a specified intermediate nodetype + * @param source the textual representation of the nodes + * @param path the path where the topnode should be imported + * @return the created (top)node + */ + Node createNodes(String source, String path); + + /** + * + * @param source the textual representation of the nodes + * @param path the path where the topnode should be imported + * @param intermediateNodeType the type of the nodes between the exisiting path and the path where to create the nodes + * @return the created (top)node + */ + Node createNodes(String source, String path, String intermediateNodeType); + + /** + * Create nodes from source on the root + * @param inputStream the stream representation of the nodes + * @return the created (top)node + */ + Node createNodes(InputStream inputStream); + + /** + * Create nodes from source at a specified path without a specified intermediate nodetype + * @param inputStream the stream representation of the nodes + * @param path the path where the topnode should be imported + * @return the created (top)node + */ + Node createNodes(InputStream inputStream, String path); + + /** + * + * @param inputStream the stream representation of the nodes + * @param path the path where the topnode should be imported + * @param intermediateNodeType the type of the nodes between the exisiting path and the path where to create the nodes + * @return the created (top)node + */ + Node createNodes(InputStream inputStream, String path, String intermediateNodeType); + +} diff --git a/src/main/java/nl/openweb/jcr/importer/JsonImporter.java b/src/main/java/nl/openweb/jcr/importer/JsonImporter.java new file mode 100644 index 0000000..b65cfd5 --- /dev/null +++ b/src/main/java/nl/openweb/jcr/importer/JsonImporter.java @@ -0,0 +1,48 @@ +package nl.openweb.jcr.importer; + +import nl.openweb.jcr.JcrImporterException; +import nl.openweb.jcr.NodeBeanUtils; +import nl.openweb.jcr.domain.NodeBean; +import nl.openweb.jcr.json.JsonUtils; + +import javax.jcr.Node; +import java.io.IOException; +import java.io.InputStream; + +/** + * Importer for JSON files + * @author Ivor Boers + */ +public class JsonImporter extends AbstractJcrImporter { + public static final String FORMAT = "json"; + + public JsonImporter(Node rootNode) { + super(rootNode); + } + + @Override + public Node createNodes(String json, String path, String intermediateNodeType) { + try { + return createNodeFromNodeBean(JsonUtils.parseJsonMap(json), path, intermediateNodeType); + } catch (IOException e) { + throw new JcrImporterException(e.getMessage(), e); + } + } + + @Override + public Node createNodes(InputStream inputStream, String path, String intermediateNodeType) { + try { + validate(inputStream); + NodeBean json = JsonUtils.parseJson(inputStream); + return createNodeFromNodeBean(NodeBeanUtils.nodeBeanToMap(json), path, intermediateNodeType); + } catch (IOException e) { + throw new JcrImporterException(e.getMessage(), e); + } + } + + private void validate(InputStream inputStream) { + if (inputStream == null) { + throw new JcrImporterException("InputSteam may not be null."); + } + } +} diff --git a/src/main/java/nl/openweb/jcr/importer/XmlImporter.java b/src/main/java/nl/openweb/jcr/importer/XmlImporter.java new file mode 100644 index 0000000..6b4892b --- /dev/null +++ b/src/main/java/nl/openweb/jcr/importer/XmlImporter.java @@ -0,0 +1,61 @@ +package nl.openweb.jcr.importer; + +import nl.openweb.jcr.JcrImporterException; +import nl.openweb.jcr.NodeBeanUtils; +import nl.openweb.jcr.domain.NodeBean; +import nl.openweb.jcr.domain.PropertyBean; + +import javax.jcr.Node; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +/** + * @author Ivor + */ +public class XmlImporter extends AbstractJcrImporter { + public static final String FORMAT = "xml"; + private final JAXBContext jaxbContext; + + public XmlImporter(Node rootNode){ + super(rootNode); + this.jaxbContext = createJxbContext(); + } + + private JAXBContext createJxbContext() { + try { + return JAXBContext.newInstance(NodeBean.class, PropertyBean.class); + } catch (JAXBException e) { + throw new JcrImporterException(e.getMessage(), e); + } + } + + @Override + public Node createNodes(String xml, String path, String intermediateNodeType) { + return this.createNodes(new ByteArrayInputStream(xml.getBytes()), path, intermediateNodeType); + } + + @Override + public Node createNodes(InputStream inputStream, String path, String intermediateNodeType) { + try { + validate(inputStream); + Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); + Object unmarshaled = unmarshaller.unmarshal(inputStream); + if (unmarshaled instanceof NodeBean) { + return createNodeFromNodeBean(NodeBeanUtils.nodeBeanToMap((NodeBean) unmarshaled), path, intermediateNodeType); + } else { + throw new JcrImporterException("The given XML file is not of the right format"); + } + } catch (JAXBException e) { + throw new JcrImporterException(e.getMessage(), e); + } + } + + private void validate(InputStream inputStream) { + if (inputStream == null) { + throw new JcrImporterException("InputSteam may not be null."); + } + } +} diff --git a/src/test/java/nl/openweb/jcr/AbstractImporterJsonTest.java b/src/test/java/nl/openweb/jcr/AbstractImporterJsonTest.java index 8d677b2..abc4972 100644 --- a/src/test/java/nl/openweb/jcr/AbstractImporterJsonTest.java +++ b/src/test/java/nl/openweb/jcr/AbstractImporterJsonTest.java @@ -15,6 +15,9 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; + import java.io.InputStream; public abstract class AbstractImporterJsonTest extends AbstractImporterTest { @@ -22,8 +25,8 @@ public abstract class AbstractImporterJsonTest extends AbstractImporterTest { @Override public void init() throws Exception { try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("nodes.json")) { - Importer importer = createImporter(); - rootNode = importer.createNodesFromJson(inputStream); + JcrImporter importer = createImporter(JsonImporter.FORMAT); + rootNode = importer.createNodes(inputStream); } } } diff --git a/src/test/java/nl/openweb/jcr/AbstractImporterTest.java b/src/test/java/nl/openweb/jcr/AbstractImporterTest.java index 4d878c4..6498d31 100644 --- a/src/test/java/nl/openweb/jcr/AbstractImporterTest.java +++ b/src/test/java/nl/openweb/jcr/AbstractImporterTest.java @@ -26,6 +26,7 @@ import java.util.Date; import java.util.stream.Collectors; +import nl.openweb.jcr.importer.JcrImporter; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.junit.After; @@ -54,7 +55,7 @@ protected String getImportPath() { protected abstract void shutdown() throws Exception; - protected abstract Importer createImporter() throws Exception; + protected abstract JcrImporter createImporter(String format) throws Exception; @Test public void propertyTest() throws RepositoryException { diff --git a/src/test/java/nl/openweb/jcr/AbstractImporterWithPathTest.java b/src/test/java/nl/openweb/jcr/AbstractImporterWithPathTest.java index 8080238..26f8904 100644 --- a/src/test/java/nl/openweb/jcr/AbstractImporterWithPathTest.java +++ b/src/test/java/nl/openweb/jcr/AbstractImporterWithPathTest.java @@ -15,6 +15,9 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.*; +import org.junit.Test; + import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -22,9 +25,6 @@ import java.io.IOException; import java.net.URISyntaxException; -import org.junit.Test; - - import static org.junit.Assert.assertEquals; /** @@ -41,17 +41,21 @@ protected String getImportPath() { } @Override - protected Importer createImporter() throws IOException, RepositoryException, URISyntaxException { + protected JcrImporter createImporter(String format) throws IOException, RepositoryException, URISyntaxException { inMemoryJcrRepository = new InMemoryJcrRepository(); - return new Importer.Builder(() -> { Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }) - .addMixins(true) + AbstractJcrImporter importer; + if (JsonImporter.FORMAT.equals(format)) { + importer = new JsonImporter(session.getRootNode()); + } else if (XmlImporter.FORMAT.equals(format)) { + importer = new XmlImporter(session.getRootNode()); + } else { + throw new IllegalArgumentException("Unknown format: " + format); + } + return importer.addMixins(true) .addUuid(true) .addUnknownTypes(true) - .saveSession(true) - .build(); + .saveSession(true); } @Test diff --git a/src/test/java/nl/openweb/jcr/AbstractImporterXmlTest.java b/src/test/java/nl/openweb/jcr/AbstractImporterXmlTest.java index 2834ae5..8d3772f 100644 --- a/src/test/java/nl/openweb/jcr/AbstractImporterXmlTest.java +++ b/src/test/java/nl/openweb/jcr/AbstractImporterXmlTest.java @@ -15,6 +15,9 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.XmlImporter; + import java.io.InputStream; public abstract class AbstractImporterXmlTest extends AbstractImporterTest { @@ -22,8 +25,8 @@ public abstract class AbstractImporterXmlTest extends AbstractImporterTest { @Override public void init() throws Exception { try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("nodes.xml")) { - Importer importer = createImporter(); - rootNode = importer.createNodesFromXml(inputStream); + JcrImporter importer = createImporter(XmlImporter.FORMAT); + rootNode = importer.createNodes(inputStream); } } } diff --git a/src/test/java/nl/openweb/jcr/BoundaryCasesTest.java b/src/test/java/nl/openweb/jcr/BoundaryCasesTest.java index 09c9f24..c8165c8 100644 --- a/src/test/java/nl/openweb/jcr/BoundaryCasesTest.java +++ b/src/test/java/nl/openweb/jcr/BoundaryCasesTest.java @@ -15,13 +15,14 @@ */ package nl.openweb.jcr; -import javax.jcr.*; -import java.io.IOException; -import java.net.URISyntaxException; - +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; import org.junit.Assert; import org.junit.Test; +import javax.jcr.*; +import java.io.IOException; +import java.net.URISyntaxException; import static org.junit.Assert.assertEquals; @@ -35,10 +36,11 @@ public class BoundaryCasesTest { public void unknownPropertyTest() throws RepositoryException, IOException, URISyntaxException { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()) { - Node rootNode = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }).addUnknownTypes(true).build().createNodesFromJson("{\"namespace:unknown\": \"value01\", \"namespaceLessProperty\": \"value02\"}"); + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + Node rootNode = session.getRootNode(); + JcrImporter importer = new JsonImporter(rootNode) + .addUnknownTypes(true); + importer.createNodes("{\"namespace:unknown\": \"value01\", \"namespaceLessProperty\": \"value02\"}"); assertEquals("value01", rootNode.getProperty("namespace:unknown").getString()); assertEquals("value02", rootNode.getProperty("namespaceLessProperty").getString()); @@ -48,34 +50,37 @@ public void unknownPropertyTest() throws RepositoryException, IOException, URISy @Test public void nullValuePropertyTest() throws IOException, RepositoryException, URISyntaxException { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()) { - Node rootNode = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }).addUnknownTypes(true).build().createNodesFromJson("{\"namespace:unknown\": null}"); - Assert.assertFalse(rootNode.hasNode("namespace:unknown")); - Assert.assertFalse(rootNode.hasProperty("namespace:unknown")); + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + Node rootNode = session.getRootNode(); + JcrImporter importer = new JsonImporter(rootNode) + .addUnknownTypes(true); + Node node = importer.createNodes("{\"namespace:unknown\": null}"); + Assert.assertFalse(node.hasNode("namespace:unknown")); + Assert.assertFalse(node.hasProperty("namespace:unknown")); } } @Test public void nullValuePropertyTest2() throws IOException, RepositoryException, URISyntaxException { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()) { - Node rootNode = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }).addUnknownTypes(true).build().createNodesFromJson("{\"namespace:unknown\": { \"primitiveType\" : \"Name\", \"value\" : null }}"); - Assert.assertFalse(rootNode.hasNode("namespace:unknown")); - Assert.assertFalse(rootNode.hasProperty("namespace:unknown")); + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + Node rootNode = session.getRootNode(); + JcrImporter importer = new JsonImporter(rootNode) + .addUnknownTypes(true); + Node node = importer.createNodes("{\"namespace:unknown\": { \"primitiveType\" : \"Name\", \"value\" : null }}"); + Assert.assertFalse(node.hasNode("namespace:unknown")); + Assert.assertFalse(node.hasProperty("namespace:unknown")); } } @Test public void multiValuePropertyWithNullValue() throws IOException, RepositoryException, URISyntaxException { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()) { - Node rootNode = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }).addUnknownTypes(true).build().createNodesFromJson("{\"namespace:unknown\": [ null , \"value01\", \"value02\"]}"); + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + Node rootNode = session.getRootNode(); + JcrImporter importer = new JsonImporter(rootNode) + .addUnknownTypes(true); + importer.createNodes("{\"namespace:unknown\": [ null , \"value01\", \"value02\"]}"); Property property = rootNode.getProperty("namespace:unknown"); Assert.assertTrue(property.isMultiple()); Value[] values = property.getValues(); diff --git a/src/test/java/nl/openweb/jcr/ErrorHandlingTest.java b/src/test/java/nl/openweb/jcr/ErrorHandlingTest.java index c5a8e0b..7fc13e9 100644 --- a/src/test/java/nl/openweb/jcr/ErrorHandlingTest.java +++ b/src/test/java/nl/openweb/jcr/ErrorHandlingTest.java @@ -15,49 +15,32 @@ */ package nl.openweb.jcr; -import javax.jcr.RepositoryException; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; +import nl.openweb.jcr.importer.XmlImporter; +import org.junit.Test; + import javax.jcr.Session; import javax.jcr.SimpleCredentials; -import java.io.IOException; import java.io.InputStream; -import org.junit.Test; - public class ErrorHandlingTest { - @Test(expected = JcrImporterException.class) - public void supplierThrowsException() throws IOException, RepositoryException { - Importer importer = new Importer.Builder(() -> { - throw new RepositoryException(); - }).build(); - importer.createNodesFromJson("{}"); - } - @Test public void addUuidWhileNotSupported() throws Exception { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()){ - Importer importer = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }).addUuid(true).build(); - importer.createNodesFromJson("{}"); + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer = new JsonImporter(session.getRootNode()); + importer.createNodes("{}"); } } - @Test(expected = IllegalArgumentException.class) - public void nullSupplier() throws IOException, RepositoryException { - Importer importer = new Importer.Builder(null).addUuid(true).build(); - importer.createNodesFromJson("{}"); - } - @Test(expected = JcrImporterException.class) public void nullXmlInputSteamTest() throws Exception { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()){ - Importer importer = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }).addUuid(false).build(); - importer.createNodesFromXml((InputStream) null); + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer = new XmlImporter(session.getRootNode()).addUuid(false); + importer.createNodes((InputStream) null); } } @@ -65,33 +48,27 @@ public void nullXmlInputSteamTest() throws Exception { @Test(expected = JcrImporterException.class) public void nullJsonInputSteamTest() throws Exception { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()){ - Importer importer = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }).addUuid(true).build(); - importer.createNodesFromJson((InputStream) null); + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer = new JsonImporter(session.getRootNode()).addUuid(true); + importer.createNodes((InputStream) null); } } @Test(expected = JcrImporterException.class) public void malformedXmlTest() throws Exception { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()){ - Importer importer = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }).addUuid(true).build(); - importer.createNodesFromXml("{}"); + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer = new XmlImporter(session.getRootNode()).addUuid(true); + importer.createNodes("{}"); } } @Test(expected = JcrImporterException.class) public void unexpectedXmlTest() throws Exception { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()){ - Importer importer = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }).addUuid(true).build(); - importer.createNodesFromXml( + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer = new XmlImporter(session.getRootNode()).addUuid(true); + importer.createNodes( "" + "" + "rootNodePropertyValue" + diff --git a/src/test/java/nl/openweb/jcr/ImporterJackrabbitJsonStringTest.java b/src/test/java/nl/openweb/jcr/ImporterJackrabbitJsonStringTest.java index b99c21e..1364e5c 100644 --- a/src/test/java/nl/openweb/jcr/ImporterJackrabbitJsonStringTest.java +++ b/src/test/java/nl/openweb/jcr/ImporterJackrabbitJsonStringTest.java @@ -16,6 +16,10 @@ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; +import nl.openweb.jcr.importer.XmlImporter; + import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; @@ -28,22 +32,28 @@ public class ImporterJackrabbitJsonStringTest extends AbstractImporterTest { @Override public void init() throws Exception { String json = loadFileAsString("nodes.json"); - Importer importer = createImporter(); - rootNode = importer.createNodesFromJson(json); + JcrImporter importer = createImporter(JsonImporter.FORMAT); + rootNode = importer.createNodes(json); } @Override - protected Importer createImporter() throws IOException, RepositoryException, URISyntaxException { + protected JcrImporter createImporter(String format) throws IOException, RepositoryException, URISyntaxException { inMemoryJcrRepository = new InMemoryJcrRepository(); - return new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }) + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer; + if (JsonImporter.FORMAT.equals(format)) { + importer = new JsonImporter(session.getRootNode()); + } else if (XmlImporter.FORMAT.equals(format)) { + importer = new XmlImporter(session.getRootNode()); + } else { + throw new IllegalArgumentException("Unknown format: " + format); + } + + return importer .addMixins(true) .addUuid(true) .addUnknownTypes(true) - .saveSession(true) - .build(); + .saveSession(true); } @Override diff --git a/src/test/java/nl/openweb/jcr/ImporterJackrabbitTest.java b/src/test/java/nl/openweb/jcr/ImporterJackrabbitTest.java index ef66ec3..4a9384f 100644 --- a/src/test/java/nl/openweb/jcr/ImporterJackrabbitTest.java +++ b/src/test/java/nl/openweb/jcr/ImporterJackrabbitTest.java @@ -16,6 +16,10 @@ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; +import nl.openweb.jcr.importer.XmlImporter; + import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; @@ -26,17 +30,24 @@ public class ImporterJackrabbitTest extends AbstractImporterJsonTest { private InMemoryJcrRepository inMemoryJcrRepository; @Override - protected Importer createImporter() throws IOException, RepositoryException, URISyntaxException { + protected JcrImporter createImporter(String format) throws IOException, RepositoryException, URISyntaxException { inMemoryJcrRepository = new InMemoryJcrRepository(); - return new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }) + + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer; + if (JsonImporter.FORMAT.equals(format)) { + importer = new JsonImporter(session.getRootNode()); + } else if (XmlImporter.FORMAT.equals(format)) { + importer = new XmlImporter(session.getRootNode()); + } else { + throw new IllegalArgumentException("Unknown format: " + format); + } + + return importer .addMixins(true) .addUuid(true) .addUnknownTypes(true) - .saveSession(true) - .build(); + .saveSession(true); } @Override diff --git a/src/test/java/nl/openweb/jcr/ImporterJackrabbitXmlStringTest.java b/src/test/java/nl/openweb/jcr/ImporterJackrabbitXmlStringTest.java index a352035..eb66f33 100644 --- a/src/test/java/nl/openweb/jcr/ImporterJackrabbitXmlStringTest.java +++ b/src/test/java/nl/openweb/jcr/ImporterJackrabbitXmlStringTest.java @@ -16,6 +16,10 @@ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; +import nl.openweb.jcr.importer.XmlImporter; + import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; @@ -28,22 +32,29 @@ public class ImporterJackrabbitXmlStringTest extends AbstractImporterTest { @Override public void init() throws Exception { String xml = loadFileAsString("nodes.xml"); - Importer importer = createImporter(); - rootNode = importer.createNodesFromXml(xml); + JcrImporter importer = createImporter(XmlImporter.FORMAT); + rootNode = importer.createNodes(xml); } @Override - protected Importer createImporter() throws IOException, RepositoryException, URISyntaxException { + protected JcrImporter createImporter(String format) throws IOException, RepositoryException, URISyntaxException { inMemoryJcrRepository = new InMemoryJcrRepository(); - return new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }) + + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer; + if (JsonImporter.FORMAT.equals(format)) { + importer = new JsonImporter(session.getRootNode()); + } else if (XmlImporter.FORMAT.equals(format)) { + importer = new XmlImporter(session.getRootNode()); + } else { + throw new IllegalArgumentException("Unknown format: " + format); + } + + return importer .addMixins(true) .addUuid(true) .addUnknownTypes(true) - .saveSession(true) - .build(); + .saveSession(true); } @Override diff --git a/src/test/java/nl/openweb/jcr/ImporterJackrabbitXmlTest.java b/src/test/java/nl/openweb/jcr/ImporterJackrabbitXmlTest.java index 7b62601..5aada45 100644 --- a/src/test/java/nl/openweb/jcr/ImporterJackrabbitXmlTest.java +++ b/src/test/java/nl/openweb/jcr/ImporterJackrabbitXmlTest.java @@ -16,6 +16,10 @@ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; +import nl.openweb.jcr.importer.XmlImporter; + import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; @@ -26,17 +30,24 @@ public class ImporterJackrabbitXmlTest extends AbstractImporterXmlTest { private InMemoryJcrRepository inMemoryJcrRepository; @Override - protected Importer createImporter() throws IOException, RepositoryException, URISyntaxException { + protected JcrImporter createImporter(String format) throws IOException, RepositoryException, URISyntaxException { inMemoryJcrRepository = new InMemoryJcrRepository(); - return new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }) + + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer; + if (JsonImporter.FORMAT.equals(format)) { + importer = new JsonImporter(session.getRootNode()); + } else if (XmlImporter.FORMAT.equals(format)) { + importer = new XmlImporter(session.getRootNode()); + } else { + throw new IllegalArgumentException("Unknown format: " + format); + } + + return importer .addMixins(true) .addUuid(true) .addUnknownTypes(true) - .saveSession(true) - .build(); + .saveSession(true); } @Override diff --git a/src/test/java/nl/openweb/jcr/ImporterReflectionTest.java b/src/test/java/nl/openweb/jcr/ImporterReflectionTest.java index fde0c12..de1a7b4 100644 --- a/src/test/java/nl/openweb/jcr/ImporterReflectionTest.java +++ b/src/test/java/nl/openweb/jcr/ImporterReflectionTest.java @@ -15,6 +15,10 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; +import org.junit.Test; + import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -22,9 +26,6 @@ import java.io.IOException; import java.net.URISyntaxException; -import org.junit.Test; - - import static org.junit.Assert.assertEquals; /** @@ -37,16 +38,13 @@ public class ImporterReflectionTest { public void importerTest() throws RepositoryException, IOException, URISyntaxException { try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()) { - Importer importer = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - return session.getRootNode(); - }) + Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); + JcrImporter importer = new JsonImporter(session.getRootNode()) .addMixins(true) .addUuid(true) .addUnknownTypes(true) - .saveSession(true) - .build(); - Node rootNode = importer.createNodesFromJson("{\n" + + .saveSession(true); + Node rootNode = importer.createNodes("{\n" + " \"subnode\": {\n" + " \"jcr:uuid\": \"e01ee3c8-dcbf-4bf8-9dc7-e08a425c259e\",\n" + " \"ns:stringProperty\": \"value\",\n" + diff --git a/src/test/java/nl/openweb/jcr/ImporterSlingTest.java b/src/test/java/nl/openweb/jcr/ImporterSlingTest.java index 76b189b..ca02536 100644 --- a/src/test/java/nl/openweb/jcr/ImporterSlingTest.java +++ b/src/test/java/nl/openweb/jcr/ImporterSlingTest.java @@ -16,25 +16,34 @@ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; +import nl.openweb.jcr.importer.XmlImporter; +import org.apache.sling.testing.mock.jcr.MockJcr; + import javax.jcr.*; import java.io.IOException; -import org.apache.sling.testing.mock.jcr.MockJcr; - public class ImporterSlingTest extends AbstractImporterJsonTest { @Override - protected Importer createImporter() throws IOException, RepositoryException { - return new Importer.Builder(() -> { - Session session = MockJcr.newSession(); - return session.getRootNode(); - }) + protected JcrImporter createImporter(String format) throws IOException, RepositoryException { + Session session = MockJcr.newSession(); + JcrImporter importer; + if (JsonImporter.FORMAT.equals(format)) { + importer = new JsonImporter(session.getRootNode()); + } else if (XmlImporter.FORMAT.equals(format)) { + importer = new XmlImporter(session.getRootNode()); + } else { + throw new IllegalArgumentException("Unknown format: " + format); + } + + return importer .addMixins(false) .addUuid(true) .setProtectedProperties(true) - .saveSession(false) - .build(); + .saveSession(false); } @Override diff --git a/src/test/java/nl/openweb/jcr/ImporterSlingXmlTest.java b/src/test/java/nl/openweb/jcr/ImporterSlingXmlTest.java index 9e520df..7b5e7b3 100644 --- a/src/test/java/nl/openweb/jcr/ImporterSlingXmlTest.java +++ b/src/test/java/nl/openweb/jcr/ImporterSlingXmlTest.java @@ -16,24 +16,33 @@ package nl.openweb.jcr; -import javax.jcr.*; -import java.io.IOException; - +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; +import nl.openweb.jcr.importer.XmlImporter; import org.apache.sling.testing.mock.jcr.MockJcr; +import javax.jcr.*; + public class ImporterSlingXmlTest extends AbstractImporterXmlTest { @Override - protected Importer createImporter() throws IOException, RepositoryException { - return new Importer.Builder(() -> { - Session session = MockJcr.newSession(); - return session.getRootNode(); - }) + protected JcrImporter createImporter(String format) throws RepositoryException { + Session session = MockJcr.newSession(); + JcrImporter importer; + if (JsonImporter.FORMAT.equals(format)) { + importer = new JsonImporter(session.getRootNode()); + } else if (XmlImporter.FORMAT.equals(format)) { + importer = new XmlImporter(session.getRootNode()); + } else { + throw new IllegalArgumentException("Unknown format: " + format); + } + + return importer .addMixins(false) .addUuid(true) - .setProtectedProperties(true) - .build(); + .setProtectedProperties(true); + } @Override diff --git a/src/test/java/nl/openweb/jcr/JsonImporterWitPathTest.java b/src/test/java/nl/openweb/jcr/JsonImporterWitPathTest.java index b144b38..aab57f3 100644 --- a/src/test/java/nl/openweb/jcr/JsonImporterWitPathTest.java +++ b/src/test/java/nl/openweb/jcr/JsonImporterWitPathTest.java @@ -15,6 +15,9 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; + import java.io.InputStream; /** @@ -26,9 +29,9 @@ public class JsonImporterWitPathTest extends AbstractImporterWithPathTest { @Override public void init() throws Exception { try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("nodes.json")) { - Importer importer = createImporter(); - importer.createNodesFromJson("{}", "/some"); - rootNode = importer.createNodesFromJson(inputStream, getImportPath()); + JcrImporter importer = createImporter(JsonImporter.FORMAT); + importer.createNodes("{}", "/some"); + rootNode = importer.createNodes(inputStream, getImportPath()); } } } diff --git a/src/test/java/nl/openweb/jcr/JsonStringImporterWitPathAndTypeTest.java b/src/test/java/nl/openweb/jcr/JsonStringImporterWitPathAndTypeTest.java index 80d086b..42c571c 100644 --- a/src/test/java/nl/openweb/jcr/JsonStringImporterWitPathAndTypeTest.java +++ b/src/test/java/nl/openweb/jcr/JsonStringImporterWitPathAndTypeTest.java @@ -15,6 +15,9 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; + /** * @author Ebrahim Aharpour * @since 9/3/2017 @@ -30,7 +33,7 @@ protected String expectedIntermediateNodeType() { @Override public void init() throws Exception { - Importer importer = createImporter(); - rootNode = importer.createNodesFromJson(loadFileAsString("nodes.json"), getImportPath(), INTERMEDIATE_TYPE); + JcrImporter importer = createImporter(JsonImporter.FORMAT); + rootNode = importer.createNodes(loadFileAsString("nodes.json"), getImportPath(), INTERMEDIATE_TYPE); } } diff --git a/src/test/java/nl/openweb/jcr/JsonStringImporterWitPathTest.java b/src/test/java/nl/openweb/jcr/JsonStringImporterWitPathTest.java index 95497e1..26808c5 100644 --- a/src/test/java/nl/openweb/jcr/JsonStringImporterWitPathTest.java +++ b/src/test/java/nl/openweb/jcr/JsonStringImporterWitPathTest.java @@ -15,6 +15,9 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.JsonImporter; + /** * @author Ebrahim Aharpour * @since 9/3/2017 @@ -23,7 +26,7 @@ public class JsonStringImporterWitPathTest extends AbstractImporterWithPathTest @Override public void init() throws Exception { - Importer importer = createImporter(); - rootNode = importer.createNodesFromJson(loadFileAsString("nodes.json"), getImportPath()); + JcrImporter importer = createImporter(JsonImporter.FORMAT); + rootNode = importer.createNodes(loadFileAsString("nodes.json"), getImportPath()); } } diff --git a/src/test/java/nl/openweb/jcr/XmlImporterWitPathTest.java b/src/test/java/nl/openweb/jcr/XmlImporterWitPathTest.java index 264e2ae..c286b19 100644 --- a/src/test/java/nl/openweb/jcr/XmlImporterWitPathTest.java +++ b/src/test/java/nl/openweb/jcr/XmlImporterWitPathTest.java @@ -15,6 +15,9 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.XmlImporter; + import java.io.InputStream; /** @@ -26,8 +29,8 @@ public class XmlImporterWitPathTest extends AbstractImporterWithPathTest { @Override public void init() throws Exception { try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("nodes.xml")) { - Importer importer = createImporter(); - rootNode = importer.createNodesFromXml(inputStream, getImportPath()); + JcrImporter importer = createImporter(XmlImporter.FORMAT); + rootNode = importer.createNodes(inputStream, getImportPath()); } } } diff --git a/src/test/java/nl/openweb/jcr/XmlStringImporterWitPathAndTypeTest.java b/src/test/java/nl/openweb/jcr/XmlStringImporterWitPathAndTypeTest.java index 36a8819..c04043f 100644 --- a/src/test/java/nl/openweb/jcr/XmlStringImporterWitPathAndTypeTest.java +++ b/src/test/java/nl/openweb/jcr/XmlStringImporterWitPathAndTypeTest.java @@ -15,6 +15,9 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.XmlImporter; + /** * @author Ebrahim Aharpour * @since 9/3/2017 @@ -30,7 +33,7 @@ protected String expectedIntermediateNodeType() { @Override public void init() throws Exception { - Importer importer = createImporter(); - rootNode = importer.createNodesFromXml(loadFileAsString("nodes.xml"), getImportPath(), INTERMEDIATE_TYPE); + JcrImporter importer = createImporter(XmlImporter.FORMAT); + rootNode = importer.createNodes(loadFileAsString("nodes.xml"), getImportPath(), INTERMEDIATE_TYPE); } } diff --git a/src/test/java/nl/openweb/jcr/XmlStringImporterWitPathTest.java b/src/test/java/nl/openweb/jcr/XmlStringImporterWitPathTest.java index 31df51b..a37db4a 100644 --- a/src/test/java/nl/openweb/jcr/XmlStringImporterWitPathTest.java +++ b/src/test/java/nl/openweb/jcr/XmlStringImporterWitPathTest.java @@ -15,6 +15,9 @@ */ package nl.openweb.jcr; +import nl.openweb.jcr.importer.JcrImporter; +import nl.openweb.jcr.importer.XmlImporter; + /** * @author Ebrahim Aharpour * @since 9/3/2017 @@ -23,7 +26,7 @@ public class XmlStringImporterWitPathTest extends AbstractImporterWithPathTest { @Override public void init() throws Exception { - Importer importer = createImporter(); - rootNode = importer.createNodesFromXml(loadFileAsString("nodes.xml"), getImportPath()); + JcrImporter importer = createImporter(XmlImporter.FORMAT); + rootNode = importer.createNodes(loadFileAsString("nodes.xml"), getImportPath()); } } diff --git a/src/test/java/nl/openweb/jcr/importerSupplierTest.java b/src/test/java/nl/openweb/jcr/importerSupplierTest.java deleted file mode 100644 index 351a24a..0000000 --- a/src/test/java/nl/openweb/jcr/importerSupplierTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2017 Open Web IT B.V. (https://www.openweb.nl/) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package nl.openweb.jcr; - -import javax.jcr.Node; -import javax.jcr.Session; -import javax.jcr.SimpleCredentials; - -import org.junit.Test; - - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -/** - * @author Ebrahim Aharpour - * @since 12/7/2017 - */ -public class importerSupplierTest { - private int counter = 0; - - @Test - public void makingSureThatSupplierIsCallOnlyOnce() throws Exception { - try (InMemoryJcrRepository inMemoryJcrRepository = new InMemoryJcrRepository()) { - - Importer importer = new Importer.Builder(() -> { - Session session = inMemoryJcrRepository.login(new SimpleCredentials("admin", "admin".toCharArray())); - counter++; - return session.getRootNode(); - }) - .addMixins(true) - .addUuid(true) - .addUnknownTypes(true) - .saveSession(true) - .build(); - - importer.createNodesFromJson("{\"node\": {\"property\":\"value\"}}"); - Node rootNode = importer.createNodesFromJson("{\"node2\": {\"property\":\"value\"}}", "/some/path"); - assertEquals(1, counter); - - assertEquals("/", rootNode.getPath()); - assertTrue( rootNode.hasNode("node")); - assertTrue("/", rootNode.hasNode("some/path/node2")); - - } - - } - -}