static Optional<MandatoryLeafEnforcer> forContainer(final DataNodeContainer schema, final DataTreeConfiguration treeConfig) { if (!treeConfig.isMandatoryNodesValidationEnabled()) { return Optional.empty(); } final Builder<YangInstanceIdentifier> builder = ImmutableList.builder(); findMandatoryNodes(builder, YangInstanceIdentifier.EMPTY, schema, treeConfig.getTreeType()); final ImmutableList<YangInstanceIdentifier> mandatoryNodes = builder.build(); return mandatoryNodes.isEmpty() ? Optional.empty() : Optional.of(new MandatoryLeafEnforcer(mandatoryNodes)); }
@Override public YangInstanceIdentifier getRootPath() { return treeConfig.getRootPath(); }
@Override public DataTreeConfiguration build() { return new DataTreeConfiguration(treeType, rootPath, uniqueIndexes, mandatoryNodesValidation); } }
public Builder copyBuilder() { return new Builder(treeType) .setMandatoryNodesValidation(isMandatoryNodesValidationEnabled()) .setUniqueIndexes(isUniqueIndexEnabled()) .setRootPath(getRootPath()); }
InMemoryDOMDataTreeShard(final DOMDataTreeIdentifier prefix, final Executor dataTreeChangeExecutor, final int maxDataChangeListenerQueueSize, final int submitQueueSize) { this.prefix = requireNonNull(prefix); final DataTreeConfiguration treeBaseConfig = treeTypeFor(prefix.getDatastoreType()); final DataTreeConfiguration treeConfig = new DataTreeConfiguration.Builder(treeBaseConfig.getTreeType()) .setMandatoryNodesValidation(treeBaseConfig.isMandatoryNodesValidationEnabled()) .setUniqueIndexes(treeBaseConfig.isUniqueIndexEnabled()) .setRootPath(prefix.getRootIdentifier()) .build(); this.dataTree = new InMemoryDataTreeFactory().create(treeConfig); this.shardChangePublisher = new InMemoryDOMDataTreeShardChangePublisher(dataTreeChangeExecutor, maxDataChangeListenerQueueSize, dataTree, prefix.getRootIdentifier(), childShards); final FastThreadPoolExecutor fte = new FastThreadPoolExecutor(1, submitQueueSize, "Shard[" + prefix + "]", InMemoryDOMDataTreeShard.class); fte.setRejectedExecutionHandler(CountingRejectedExecutionHandler.newCallerWaitsPolicy()); this.executor = MoreExecutors.listeningDecorator(fte); }
protected AbstractNodeContainerModificationStrategy(final Class<? extends NormalizedNode<?, ?>> nodeClass, final DataTreeConfiguration treeConfig) { this.nodeClass = requireNonNull(nodeClass , "nodeClass"); this.verifyChildrenStructure = treeConfig.getTreeType() == TreeType.CONFIGURATION; }
public Builder copyBuilder() { return new Builder(treeType) .setMandatoryNodesValidation(isMandatoryNodesValidationEnabled()) .setUniqueIndexes(isUniqueIndexEnabled()) .setRootPath(getRootPath()); }
protected AbstractNodeContainerModificationStrategy(final Class<? extends NormalizedNode<?, ?>> nodeClass, final DataTreeConfiguration treeConfig) { this.nodeClass = requireNonNull(nodeClass , "nodeClass"); this.verifyChildrenStructure = treeConfig.getTreeType() == TreeType.CONFIGURATION; }
static MandatoryLeafEnforcer forContainer(final DataNodeContainer schema, final DataTreeConfiguration treeConfig) { if (!treeConfig.isMandatoryNodesValidationEnabled()) { return NOOP_ENFORCER; } final Builder<YangInstanceIdentifier> builder = ImmutableList.builder(); findMandatoryNodes(builder, YangInstanceIdentifier.EMPTY, schema, treeConfig.getTreeType()); final ImmutableList<YangInstanceIdentifier> mandatoryNodes = builder.build(); return mandatoryNodes.isEmpty() ? NOOP_ENFORCER : new Strict(mandatoryNodes); } }
static CaseEnforcer forTree(final CaseSchemaNode schema, final DataTreeConfiguration treeConfig) { final TreeType type = treeConfig.getTreeType(); final Builder<NodeIdentifier, DataSchemaNode> childrenBuilder = ImmutableMap.builder(); final Builder<AugmentationIdentifier, AugmentationSchemaNode> augmentationsBuilder = ImmutableMap.builder(); if (SchemaAwareApplyOperation.belongsToTree(type, schema)) { for (final DataSchemaNode child : schema.getChildNodes()) { if (SchemaAwareApplyOperation.belongsToTree(type, child)) { childrenBuilder.put(NodeIdentifier.create(child.getQName()), child); } } for (final AugmentationSchemaNode augment : schema.getAvailableAugmentations()) { if (augment.getChildNodes().stream() .anyMatch(child -> SchemaAwareApplyOperation.belongsToTree(type, child))) { augmentationsBuilder.put(DataSchemaContextNode.augmentationIdentifierFrom(augment), augment); } } } final ImmutableMap<NodeIdentifier, DataSchemaNode> children = childrenBuilder.build(); return children.isEmpty() ? null : new CaseEnforcer(children, augmentationsBuilder.build(), MandatoryLeafEnforcer.forContainer(schema, treeConfig)); }
@Override public YangInstanceIdentifier getRootPath() { return treeConfig.getRootPath(); }
@Override public DataTreeConfiguration build() { return new DataTreeConfiguration(treeType, rootPath, uniqueIndexes, mandatoryNodesValidation); } }
public static ModificationApplyOperation from(final DataSchemaNode schemaNode, final DataTreeConfiguration treeConfig) { if (treeConfig.getTreeType() == TreeType.CONFIGURATION) { checkArgument(schemaNode.isConfiguration(), "Supplied %s does not belongs to configuration tree.", schemaNode.getPath()); } if (schemaNode instanceof ContainerSchemaNode) { return ContainerModificationStrategy.of((ContainerSchemaNode) schemaNode, treeConfig); } else if (schemaNode instanceof ListSchemaNode) { return fromListSchemaNode((ListSchemaNode) schemaNode, treeConfig); } else if (schemaNode instanceof ChoiceSchemaNode) { return new ChoiceModificationStrategy((ChoiceSchemaNode) schemaNode, treeConfig); } else if (schemaNode instanceof LeafListSchemaNode) { return fromLeafListSchemaNode((LeafListSchemaNode) schemaNode, treeConfig); } else if (schemaNode instanceof LeafSchemaNode) { return new LeafModificationStrategy((LeafSchemaNode) schemaNode); } throw new IllegalArgumentException("Not supported schema node type for " + schemaNode.getClass()); }
private static DataTree create(final DataTreeConfiguration treeConfig, final SchemaContext initialSchemaContext, final boolean maskMandatory) { final DataSchemaNode rootSchemaNode = getRootSchemaNode(initialSchemaContext, treeConfig.getRootPath()); final NormalizedNode<?, ?> rootDataNode = createRoot((DataNodeContainer)rootSchemaNode, treeConfig.getRootPath()); return new InMemoryDataTree(TreeNodeFactory.createTreeNode(rootDataNode, Version.initial()), treeConfig, initialSchemaContext, rootSchemaNode, maskMandatory); }
public static DataTreeConfiguration getDefault(final TreeType treeType) { switch (requireNonNull(treeType)) { case CONFIGURATION: return DEFAULT_CONFIGURATION; case OPERATIONAL: return DEFAULT_OPERATIONAL; default: return new DataTreeConfiguration(treeType, YangInstanceIdentifier.EMPTY, false, true); } }
static CaseEnforcer forTree(final CaseSchemaNode schema, final DataTreeConfiguration treeConfig) { final TreeType type = treeConfig.getTreeType(); final Builder<NodeIdentifier, DataSchemaNode> childrenBuilder = ImmutableMap.builder(); final Builder<AugmentationIdentifier, AugmentationSchemaNode> augmentationsBuilder = ImmutableMap.builder(); if (SchemaAwareApplyOperation.belongsToTree(type, schema)) { for (final DataSchemaNode child : schema.getChildNodes()) { if (SchemaAwareApplyOperation.belongsToTree(type, child)) { childrenBuilder.put(NodeIdentifier.create(child.getQName()), child); } } for (final AugmentationSchemaNode augment : schema.getAvailableAugmentations()) { if (augment.getChildNodes().stream() .anyMatch(child -> SchemaAwareApplyOperation.belongsToTree(type, child))) { augmentationsBuilder.put(DataSchemaContextNode.augmentationIdentifierFrom(augment), augment); } } } final ImmutableMap<NodeIdentifier, DataSchemaNode> children = childrenBuilder.build(); if (children.isEmpty()) { return null; } final ImmutableMap<AugmentationIdentifier, AugmentationSchemaNode> augmentations = augmentationsBuilder.build(); final Optional<MandatoryLeafEnforcer> enforcer = MandatoryLeafEnforcer.forContainer(schema, treeConfig); return enforcer.isPresent() ? new EnforcingMandatory(children, augmentations, enforcer.get()) : new CaseEnforcer(children, augmentations); }
private static DataTree create(final DataTreeConfiguration treeConfig, final SchemaContext initialSchemaContext, final boolean maskMandatory) { final DataSchemaNode rootSchemaNode = getRootSchemaNode(initialSchemaContext, treeConfig.getRootPath()); final NormalizedNode<?, ?> rootDataNode = createRoot((DataNodeContainer)rootSchemaNode, treeConfig.getRootPath()); return new InMemoryDataTree(TreeNodeFactory.createTreeNode(rootDataNode, Version.initial()), treeConfig, initialSchemaContext, rootSchemaNode, maskMandatory); }
public static DataTreeConfiguration getDefault(final TreeType treeType) { switch (requireNonNull(treeType)) { case CONFIGURATION: return DEFAULT_CONFIGURATION; case OPERATIONAL: return DEFAULT_OPERATIONAL; default: return new DataTreeConfiguration(treeType, YangInstanceIdentifier.EMPTY, false, true); } }
public static ModificationApplyOperation from(final DataSchemaNode schemaNode, final DataTreeConfiguration treeConfig) { if (treeConfig.getTreeType() == TreeType.CONFIGURATION) { checkArgument(schemaNode.isConfiguration(), "Supplied %s does not belongs to configuration tree.", schemaNode.getPath()); } if (schemaNode instanceof ContainerSchemaNode) { final ContainerSchemaNode containerSchema = (ContainerSchemaNode) schemaNode; return containerSchema.isPresenceContainer() ? new PresenceContainerModificationStrategy(containerSchema, treeConfig) : new StructuralContainerModificationStrategy(containerSchema, treeConfig); } else if (schemaNode instanceof ListSchemaNode) { return fromListSchemaNode((ListSchemaNode) schemaNode, treeConfig); } else if (schemaNode instanceof ChoiceSchemaNode) { return new ChoiceModificationStrategy((ChoiceSchemaNode) schemaNode, treeConfig); } else if (schemaNode instanceof LeafListSchemaNode) { return fromLeafListSchemaNode((LeafListSchemaNode) schemaNode, treeConfig); } else if (schemaNode instanceof LeafSchemaNode) { return new LeafModificationStrategy((LeafSchemaNode) schemaNode); } throw new IllegalArgumentException("Not supported schema node type for " + schemaNode.getClass()); }
@Override public DataTree create(final DataTreeConfiguration treeConfig) { return new InMemoryDataTree(TreeNodeFactory.createTreeNode(createRoot(treeConfig.getRootPath()), Version.initial()), treeConfig, null); }