From 0dd8380053ea0ce481290cc14c11ceedc197f1d8 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 21 Nov 2017 12:49:29 +0100 Subject: [PATCH] Cleanup DataTree interfaces and InMemmoryDataTreeFactory TipProducingDataTree is a remnant of an API freeze, merge its behavior into baseline DataTree, adjusting callers. Also make sure we publish DataTreeFactory properly, so users do not have to rely on specific implementation -- cleaning up tests in process. Change-Id: Ic2263a084ba7b8d2c611eb14407e09a78f6d922a Signed-off-by: Robert Varga --- .../api/schema/tree/DataTreeCandidateTip.java | 2 +- .../data/api/schema/tree/DataTreeTip.java | 2 +- .../api/schema/tree/TipProducingDataTree.java | 17 --- .../schema/tree/TipProducingDataTreeTip.java | 17 --- ...SchemaOrderedNormalizedNodeWriterTest.java | 14 +-- .../data/codec/xml/XmlStreamUtilsTest.java | 5 +- .../codec/xml/XmlToNormalizedNodesTest.java | 21 ++-- yang/yang-data-impl/pom.xml | 20 +++- .../yang/data/impl/osgi/Activator.java | 37 ++++++ .../yang/data/impl/osgi/package-info.java | 11 ++ .../impl/schema/tree/InMemoryDataTree.java | 4 +- .../schema/tree/InMemoryDataTreeFactory.java | 31 ++--- .../StringPatternCheckingCodecTest.java | 6 +- .../impl/leafref/context/Bug8713Test.java | 7 +- .../DataTreeCandidateValidatorTest.java | 13 +- .../DataTreeCandidateValidatorTest2.java | 13 +- .../DataTreeCandidateValidatorTest3.java | 7 +- .../yang/data/impl/schema/BuilderTest.java | 4 +- .../impl/schema/InstanceIdToNodesTest.java | 22 ++-- .../schema/NormalizedDataBuilderTest.java | 8 +- .../data/impl/schema/tree/Bug2690Test.java | 9 +- .../data/impl/schema/tree/Bug3674Test.java | 7 +- .../data/impl/schema/tree/Bug4295Test.java | 7 +- .../data/impl/schema/tree/Bug4454Test.java | 13 +- .../data/impl/schema/tree/Bug5830Test.java | 36 +++--- .../impl/schema/tree/Bug5968MergeTest.java | 112 +++++++++--------- .../data/impl/schema/tree/Bug5968Test.java | 63 +++++----- .../data/impl/schema/tree/Bug8291Test.java | 18 +-- .../impl/schema/tree/CaseAugmentTest.java | 25 ++-- .../impl/schema/tree/CaseExclusionTest.java | 26 ++-- .../tree/ConcurrentTreeModificationTest.java | 80 ++++++------- .../tree/ConfigStatementValidationTest.java | 40 +++---- .../schema/tree/DataTreeCandidatesTest.java | 5 +- .../schema/tree/DataTreeTransactionTest.java | 7 +- .../impl/schema/tree/ErrorReportingTest.java | 20 ++-- .../tree/ListConstraintsValidation.java | 4 +- .../impl/schema/tree/MandatoryLeafTest.java | 43 ++++--- .../tree/ModificationMetadataTreeTest.java | 7 +- .../impl/schema/tree/OrderedListTest.java | 8 +- .../impl/schema/tree/StoreTreeNodesTest.java | 3 +- .../yangtools/yang/data/jaxen/JaxenTest.java | 24 +--- .../export/test/SchemaContextEmitterTest.java | 5 +- 42 files changed, 377 insertions(+), 446 deletions(-) delete mode 100644 yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/TipProducingDataTree.java delete mode 100644 yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/TipProducingDataTreeTip.java create mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/osgi/Activator.java create mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/osgi/package-info.java diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeCandidateTip.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeCandidateTip.java index ed082df336..7045a9edc9 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeCandidateTip.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeCandidateTip.java @@ -17,6 +17,6 @@ import com.google.common.annotations.Beta; * a candidate commit needs to be coordinated across distributed parties. */ @Beta -public interface DataTreeCandidateTip extends DataTreeCandidate, TipProducingDataTreeTip { +public interface DataTreeCandidateTip extends DataTreeCandidate, DataTreeTip { } diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeTip.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeTip.java index dae1e244eb..8f23488474 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeTip.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeTip.java @@ -31,7 +31,7 @@ public interface DataTreeTip { * Data tree modification. * @return candidate data tree */ - DataTreeCandidate prepare(DataTreeModification modification); + DataTreeCandidateTip prepare(DataTreeModification modification); /** * {@inheritDoc} diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/TipProducingDataTree.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/TipProducingDataTree.java deleted file mode 100644 index 7baa814935..0000000000 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/TipProducingDataTree.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.api.schema.tree; - -/** - * A {@link DataTree} which produces {@link DataTreeCandidateTip} candidates, - * thus allowing existence of multiple candidates, which can be {@link #commit(DataTreeCandidate)}ed - * in sequence. - */ -public interface TipProducingDataTree extends DataTree, TipProducingDataTreeTip { - -} diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/TipProducingDataTreeTip.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/TipProducingDataTreeTip.java deleted file mode 100644 index 6121d7fef5..0000000000 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/TipProducingDataTreeTip.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2015 Pantheon Technologies, s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.yang.data.api.schema.tree; - -/** - * A {@link DataTreeCandidateTip} which produces {@link DataTreeCandidateTip}s from its - * {@link #prepare(DataTreeModification)} method. - */ -public interface TipProducingDataTreeTip extends DataTreeTip { - @Override - DataTreeCandidateTip prepare(DataTreeModification modification); -} diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaOrderedNormalizedNodeWriterTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaOrderedNormalizedNodeWriterTest.java index fc9caa5708..b2cfba716e 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaOrderedNormalizedNodeWriterTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaOrderedNormalizedNodeWriterTest.java @@ -7,12 +7,13 @@ */ package org.opendaylight.yangtools.yang.data.codec.xml; -import java.io.FileNotFoundException; +import java.io.IOException; import java.io.StringWriter; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; +import javax.xml.stream.FactoryConfigurationError; import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import org.custommonkey.xmlunit.Diff; import org.custommonkey.xmlunit.XMLAssert; @@ -31,8 +32,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.SchemaOrderedNormalizedNodeWriter; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; +import org.xml.sax.SAXException; public class SchemaOrderedNormalizedNodeWriterTest { @@ -75,12 +76,12 @@ public class SchemaOrderedNormalizedNodeWriterTest { @Before - public void setUp() throws Exception { + public void setUp() { XMLUnit.setIgnoreWhitespace(true); } @Test - public void testWrite() throws Exception { + public void testWrite() throws XMLStreamException, FactoryConfigurationError, IOException, SAXException { final StringWriter stringWriter = new StringWriter(); final XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newFactory().createXMLStreamWriter(stringWriter); @@ -166,8 +167,7 @@ public class SchemaOrderedNormalizedNodeWriterTest { XMLAssert.assertXMLIdentical(new Diff(EXPECTED_2, stringWriter.toString()), true); } - private static SchemaContext getSchemaContext(final String filePath) throws URISyntaxException, - ReactorException, FileNotFoundException { + private static SchemaContext getSchemaContext(final String filePath) { return YangParserTestUtils.parseYangResource(filePath); } diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java index 80883180c9..1d7e209ed0 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStreamUtilsTest.java @@ -15,9 +15,7 @@ import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; import java.net.URI; -import java.net.URISyntaxException; import java.util.AbstractMap; import java.util.HashMap; import java.util.Map; @@ -44,7 +42,6 @@ import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefi import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; @@ -56,7 +53,7 @@ public class XmlStreamUtilsTest { private static Module leafRefModule; @BeforeClass - public static void initialize() throws URISyntaxException, FileNotFoundException, ReactorException { + public static void initialize() { schemaContext = YangParserTestUtils.parseYangResource("/leafref-test.yang"); assertNotNull(schemaContext); assertEquals(1, schemaContext.getModules().size()); diff --git a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java index c3775019ef..7852a09b05 100644 --- a/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java +++ b/yang/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java @@ -47,7 +47,6 @@ import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.xml.sax.SAXException; @@ -121,8 +120,8 @@ public class XmlToNormalizedNodesTest { } @Test - public void testComplexXmlParsing() throws IOException, URISyntaxException, ReactorException, XMLStreamException, - ParserConfigurationException, SAXException { + public void testComplexXmlParsing() throws IOException, SAXException, URISyntaxException, XMLStreamException, + ParserConfigurationException { final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/baz.xml"); final XMLInputFactory factory = XMLInputFactory.newInstance(); @@ -147,7 +146,7 @@ public class XmlToNormalizedNodesTest { } @Test - public void testSimpleXmlParsing() throws IOException, URISyntaxException, ReactorException, XMLStreamException, + public void testSimpleXmlParsing() throws IOException, URISyntaxException, XMLStreamException, ParserConfigurationException, SAXException { final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/foo.xml"); @@ -165,7 +164,7 @@ public class XmlToNormalizedNodesTest { } @Test - public void shouldFailOnDuplicateLeaf() throws ReactorException, XMLStreamException, IOException, + public void shouldFailOnDuplicateLeaf() throws XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo.xml"); @@ -186,7 +185,7 @@ public class XmlToNormalizedNodesTest { } @Test - public void shouldFailOnDuplicateAnyXml() throws ReactorException, XMLStreamException, IOException, + public void shouldFailOnDuplicateAnyXml() throws XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-2.xml"); @@ -206,7 +205,7 @@ public class XmlToNormalizedNodesTest { } @Test - public void shouldFailOnDuplicateContainer() throws ReactorException, XMLStreamException, IOException, + public void shouldFailOnDuplicateContainer() throws XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-foo-3.xml"); @@ -226,7 +225,7 @@ public class XmlToNormalizedNodesTest { } @Test - public void shouldFailOnUnterminatedLeafElement() throws ReactorException, XMLStreamException, IOException, + public void shouldFailOnUnterminatedLeafElement() throws XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz.xml"); @@ -247,7 +246,7 @@ public class XmlToNormalizedNodesTest { } @Test - public void shouldFailOnUnterminatedLeafElement2() throws ReactorException, XMLStreamException, IOException, + public void shouldFailOnUnterminatedLeafElement2() throws XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-2.xml"); @@ -268,7 +267,7 @@ public class XmlToNormalizedNodesTest { } @Test - public void shouldFailOnUnterminatedContainerElement() throws ReactorException, XMLStreamException, IOException, + public void shouldFailOnUnterminatedContainerElement() throws XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-4.xml"); @@ -289,7 +288,7 @@ public class XmlToNormalizedNodesTest { } @Test - public void shouldFailOnUnknownChildNode() throws ReactorException, XMLStreamException, IOException, + public void shouldFailOnUnknownChildNode() throws XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/invalid-baz-3.xml"); diff --git a/yang/yang-data-impl/pom.xml b/yang/yang-data-impl/pom.xml index 157d3e012c..c04fb37cd6 100644 --- a/yang/yang-data-impl/pom.xml +++ b/yang/yang-data-impl/pom.xml @@ -73,6 +73,8 @@ org.opendaylight.yangtools.yang.data.impl.*, ;-split-package:=error + {META-INF/services=${project.build.directory}/classes/META-INF/services} + org.opendaylight.yangtools.yang.data.impl.osgi.Activator @@ -143,6 +145,20 @@ com.google.guava guava + + org.antlr + antlr4-runtime + + + + org.kohsuke.metainf-services + metainf-services + + + org.osgi + org.osgi.core + + junit junit @@ -177,10 +193,6 @@ commons-lang test - - org.antlr - antlr4-runtime -