diff options
Diffstat (limited to 'infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories')
3 files changed, 0 insertions, 228 deletions
diff --git a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories/ChildNodeDataFactory.java b/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories/ChildNodeDataFactory.java deleted file mode 100644 index 05812123e..000000000 --- a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories/ChildNodeDataFactory.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2016 Cisco and/or its affiliates. - * - * 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 io.fd.honeycomb.test.tools.factories; - - -import com.google.common.base.Optional; -import java.io.IOException; -import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; -import org.opendaylight.yangtools.sal.binding.generator.impl.BindingSchemaContextUtils; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException; -import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec; -import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ChildNodeDataFactory extends YangDataFactory { - - private static final Logger LOG = LoggerFactory.getLogger(ChildNodeDataFactory.class); - - public ChildNodeDataFactory(@Nonnull final SchemaContext schemaContext, - @Nonnull final BindingToNormalizedNodeCodec serializer, - @Nonnull final AbstractModuleStringInstanceIdentifierCodec iidParser) { - super(schemaContext, serializer, iidParser); - } - - public DataObject getChildNodeData(final String instanceIdentifier, - final String resourcePath) throws DeserializationException, IOException { - // Parse string ID into YangId - final YangInstanceIdentifier nodeYid = iidParser.deserialize(instanceIdentifier); - // Look for parent YangId - final YangInstanceIdentifier parentYid = nodeYid.getParent(); - - if (parentYid.isEmpty()) { - throw new IllegalArgumentException( - "Attempt to process root node as children has been detected,to process root nodes just don't use id in @InjectTestData"); - } - // Find Schema node for parent of data that's currently being parsed (needed when parsing the data into NormalizedNodes) - return getDataForNode(nodeYid, resourcePath, getNonRootParentSchema(parentYid)); - } - - private DataNodeContainer getNonRootParentSchema(final YangInstanceIdentifier parentYangId) - throws DeserializationException { - LOG.debug("Processing parent identifier {}", parentYangId); - final Optional<InstanceIdentifier<? extends DataObject>> parentInstanceId = serializer.toBinding(parentYangId); - if (!parentInstanceId.isPresent()) { - throw new IllegalStateException("Unable to resolve " + parentYangId + " to instance identifier"); - } - - final Optional<DataNodeContainer> dataNodeContainerOptional = - BindingSchemaContextUtils.findDataNodeContainer(schemaContext, parentInstanceId.get()); - - if (!dataNodeContainerOptional.isPresent()) { - throw new IllegalArgumentException("Error finding DataNodeContainer for " + parentInstanceId.get()); - } - - return dataNodeContainerOptional.get(); - } -} diff --git a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories/RootNodeDataFactory.java b/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories/RootNodeDataFactory.java deleted file mode 100644 index 3aacea016..000000000 --- a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories/RootNodeDataFactory.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2016 Cisco and/or its affiliates. - * - * 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 io.fd.honeycomb.test.tools.factories; - - -import java.io.IOException; -import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException; -import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; - -public class RootNodeDataFactory extends YangDataFactory { - - public RootNodeDataFactory(@Nonnull final SchemaContext schemaContext, - @Nonnull final BindingToNormalizedNodeCodec serializer, - @Nonnull final AbstractModuleStringInstanceIdentifierCodec iidParser) { - super(schemaContext, serializer, iidParser); - } - - public DataObject getRootNodeData(final YangInstanceIdentifier rootInstanceIdentifier, - final String resourcePath) throws DeserializationException, IOException { - //entire schema context is parent schema in this case - return getDataForNode(rootInstanceIdentifier, resourcePath, schemaContext); - } -} diff --git a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories/YangDataFactory.java b/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories/YangDataFactory.java deleted file mode 100644 index ecf556cd2..000000000 --- a/infra/test-utils/test-tools/src/main/java/io/fd/honeycomb/test/tools/factories/YangDataFactory.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2016 Cisco and/or its affiliates. - * - * 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 io.fd.honeycomb.test.tools.factories; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -import com.google.common.base.Optional; -import com.google.common.collect.Iterables; -import io.fd.honeycomb.translate.util.JsonUtils; -import java.io.IOException; -import java.util.AbstractMap; -import java.util.Map; -import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; -import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException; -import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec; -import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaNode; - -/** - * Common logic for reading of yang data - */ -abstract class YangDataFactory { - - final SchemaContext schemaContext; - final BindingToNormalizedNodeCodec serializer; - final AbstractModuleStringInstanceIdentifierCodec iidParser; - - YangDataFactory(@Nonnull final SchemaContext schemaContext, - @Nonnull final BindingToNormalizedNodeCodec serializer, - @Nonnull final AbstractModuleStringInstanceIdentifierCodec iidParser) { - this.schemaContext = checkNotNull(schemaContext, "SchemaContext cannot be null"); - this.serializer = checkNotNull(serializer, "Serializer cannot be null"); - this.iidParser = checkNotNull(iidParser, "Instance identifier parser cannot be null"); - } - - DataObject getDataForNode(final YangInstanceIdentifier nodeYangIdentifier, - final String resourcePath, - final DataNodeContainer parentSchema) - throws DeserializationException, IOException { - - // Reads resources from provided resource path - final ContainerNode rootData = getCheckedRootData(resourcePath, parentSchema); - - // Now transform the single child from JSON into BA format - final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> actualData = - extractCheckedSingleChild(rootData); - - return getCheckedBinding(nodeYangIdentifier, actualData).getValue(); - } - - private ContainerNode getCheckedRootData(final String resourcePath, final DataNodeContainer parentSchema) - throws IOException { - // TODO the cast to SchemaNode is dangerous and would not work for Augments, Choices and some other nodes maybe. At least check - // TODO not sure if this is true, while testing this code was working fine event while processing choices/cases, - // TODO only problem is to find suitable codec that can process cases,etc - // Transform JSON into NormalizedNode - - final ContainerNode rootData = JsonUtils.readJson(schemaContext, - checkNotNull(this.getClass().getResource(resourcePath), "Unable to find resource %s", resourcePath) - .openStream(), ((SchemaNode) parentSchema)); - - checkArgument(rootData.getValue().size() == 1, "Only a single data node is expected in %s, but there were: %s", - resourcePath, rootData.getValue()); - return rootData; - } - - private DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> extractCheckedSingleChild( - final ContainerNode rootData) { - // Now transform the single child from JSON into BA format - final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> actualData = - Iterables.getFirst(rootData.getValue(), null); - - checkNotNull(actualData, "Unable to extract single child from %s", rootData); - return actualData; - } - - private Map.Entry<InstanceIdentifier<? extends DataObject>, DataObject> getCheckedBinding( - final YangInstanceIdentifier nodeYangIdentifier, - final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> actualData) - throws DeserializationException { - final Optional<Map.Entry<InstanceIdentifier<? extends DataObject>, DataObject>> ba = - serializer.toBinding(new AbstractMap.SimpleImmutableEntry<>(nodeYangIdentifier, actualData)); - - checkArgument(ba.isPresent(), "Unable to convert to binding %s", nodeYangIdentifier); - return ba.get(); - } -} |