@Override NormalizedNode<?, ?> newDefaultNode(DataSchemaNode dataSchema) { // We assume there's only one key for the list. List<QName> keys = ((ListSchemaNode)dataSchema).getKeyDefinition(); Preconditions.checkArgument(keys.size() == 1, "Expected only 1 key for list %s", appConfigBindingClass); QName listKeyQName = keys.iterator().next(); return ImmutableNodes.mapEntryBuilder(bindingQName, listKeyQName, appConfigListKeyValue).build(); }
@Override public NormalizedNode<?, ?> newDefaultNode(final DataSchemaNode dataSchema) { // We assume there's only one key for the list. List<QName> keys = ((ListSchemaNode)dataSchema).getKeyDefinition(); Preconditions.checkArgument(keys.size() == 1, "Expected only 1 key for list %s", appConfigBindingClass); QName listKeyQName = keys.get(0); return ImmutableNodes.mapEntryBuilder(bindingQName, listKeyQName, appConfigListKeyValue).build(); } }
/** * Selects the names of the list keys from <code>list</code> and returns them as the list of the strings. * * @param list of string with names of the list keys * @return list of string which represents names of the list keys. If the <code>list</code> contains no keys then * an empty list is returned. */ private static List<String> listKeys(final ListSchemaNode list) { final List<String> listKeys = new ArrayList<>(); final List<QName> keyDefinition = list.getKeyDefinition(); if (keyDefinition != null) { for (final QName keyDef : keyDefinition) { listKeys.add(keyDef.getLocalName()); } } return listKeys; }
public ListEntryNodeDataWithSchema(final DataSchemaNode schema) { super(schema); final Collection<QName> keyDef = ((ListSchemaNode) getSchema()).getKeyDefinition(); if (keyDef.isEmpty()) { predicateTemplate = null; keyValues = null; } else { predicateTemplate = ImmutableMapTemplate.ordered(keyDef); keyValues = new HashMap<>(); } }
public ListEntryNodeDataWithSchema(final DataSchemaNode schema) { super(schema); final Collection<QName> keyDef = ((ListSchemaNode) getSchema()).getKeyDefinition(); if (keyDef.isEmpty()) { predicateTemplate = null; keyValues = null; } else { predicateTemplate = ImmutableMapTemplate.ordered(keyDef); keyValues = new HashMap<>(); } }
/** * Build map entry node identifier from schema and provided children. */ private NodeIdentifierWithPredicates constructNodeIdentifier() { final Map<QName, Object> predicates; final Collection<QName> keys = schema.getKeyDefinition(); if (!keys.isEmpty()) { predicates = keyDefToPredicates(keys); } else if (!childrenQNamesToPaths.isEmpty()) { predicates = childrenToPredicates(); } else { predicates = ImmutableMap.of(); } return new NodeIdentifierWithPredicates(schema.getQName(), predicates); }
/** * Build map entry node identifier from schema and provided children. */ private NodeIdentifierWithPredicates constructNodeIdentifier() { final Map<QName, Object> predicates; final Collection<QName> keys = schema.getKeyDefinition(); if (!keys.isEmpty()) { predicates = keyDefToPredicates(keys); } else if (!childrenQNamesToPaths.isEmpty()) { predicates = childrenToPredicates(); } else { predicates = ImmutableMap.of(); } return new NodeIdentifierWithPredicates(schema.getQName(), predicates); }
private static DataNormalizationOperation<?> fromListSchemaNode(final ListSchemaNode potential) { final List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinNormalization(potential); } if (potential.isUserOrdered()) { return new OrderedMapMixinNormalization(potential); } return new UnorderedMapMixinNormalization(potential); }
private static DataSchemaContextNode<?> fromListSchemaNode(final ListSchemaNode potential) { List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinContextNode(potential); } if (potential.isUserOrdered()) { return new OrderedMapMixinContextNode(potential); } return new UnorderedMapMixinContextNode(potential); }
private static InstanceIdToNodes<?> fromListSchemaNode(final ListSchemaNode potential) { final List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinNormalization(potential); } return potential.isUserOrdered() ? new InstanceIdToCompositeNodes.OrderedMapMixinNormalization(potential) : new InstanceIdToCompositeNodes.UnorderedMapMixinNormalization(potential); }
private static InstanceIdToNodes<?> fromListSchemaNode(final ListSchemaNode potential) { final List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinNormalization(potential); } return potential.isUserOrdered() ? new InstanceIdToCompositeNodes.OrderedMapMixinNormalization(potential) : new InstanceIdToCompositeNodes.UnorderedMapMixinNormalization(potential); }
private static DataSchemaContextNode<?> fromListSchemaNode(final ListSchemaNode potential) { List<QName> keyDefinition = potential.getKeyDefinition(); if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinContextNode(potential); } if (potential.isUserOrdered()) { return new OrderedMapMixinContextNode(potential); } return new UnorderedMapMixinContextNode(potential); }
private static ModificationApplyOperation fromListSchemaNode(final ListSchemaNode schemaNode, final DataTreeConfiguration treeConfig) { final List<QName> keyDefinition = schemaNode.getKeyDefinition(); final SchemaAwareApplyOperation op; if (keyDefinition == null || keyDefinition.isEmpty()) { op = new UnkeyedListModificationStrategy(schemaNode, treeConfig); } else if (schemaNode.isUserOrdered()) { op = new OrderedMapModificationStrategy(schemaNode, treeConfig); } else { op = new UnorderedMapModificationStrategy(schemaNode, treeConfig); } return MinMaxElementsValidation.from(op, schemaNode); }
private static ModificationApplyOperation fromListSchemaNode(final ListSchemaNode schemaNode, final DataTreeConfiguration treeConfig) { final List<QName> keyDefinition = schemaNode.getKeyDefinition(); final SchemaAwareApplyOperation op; if (keyDefinition == null || keyDefinition.isEmpty()) { op = new UnkeyedListModificationStrategy(schemaNode, treeConfig); } else if (schemaNode.isUserOrdered()) { op = new OrderedMapModificationStrategy(schemaNode, treeConfig); } else { op = new UnorderedMapModificationStrategy(schemaNode, treeConfig); } return MinMaxElementsValidation.from(op, schemaNode); }
/** * Generates for the <code>list</code> which contains any list keys special generated TO builder. * * @param packageName string with package name to which the list belongs * @param list list schema node which is source of data about the list name * @return generated TO builder which represents the keys of the <code>list</code> or null if <code>list</code> is * null or list of key definitions is null or empty. */ private GeneratedTOBuilder resolveListKeyTOBuilder(final ModuleContext context, final ListSchemaNode list) { if (list.getKeyDefinition() != null && !list.getKeyDefinition().isEmpty()) { return typeProvider.newGeneratedTOBuilder(JavaTypeName.create( packageNameForGeneratedType(context.modulePackageName(), list.getPath()), BindingMapping.getClassName(list.getQName().getLocalName() + "Key"))); } return null; }
private void emitList(final StringBuilder builer, final String getterName, final Type valueType, final ListSchemaNode child) { final CharSequence startEvent; builer.append(statement(assign("int", "_count", invoke(getterName, "size")))); if (child.getKeyDefinition().isEmpty()) { startEvent = startUnkeyedList(classReference(valueType), "_count"); } else if (child.isUserOrdered()) { startEvent = startOrderedMapNode(classReference(valueType), "_count"); } else { startEvent = startMapNode(classReference(valueType), "_count"); } builer.append(statement(startEvent)); builer.append(forEach(getterName, valueType, tryToUseCacheElse(CURRENT, statement(staticInvokeEmitter(valueType, CURRENT))))); builer.append(statement(endNode())); } }
private void emitList(final StringBuilder sb, final String getterName, final Type valueType, final ListSchemaNode child) { final CharSequence startEvent; sb.append(statement(assign("int", "_count", invoke(getterName, "size")))); if (child.getKeyDefinition().isEmpty()) { startEvent = startUnkeyedList(classReference(valueType), "_count"); } else if (child.isUserOrdered()) { startEvent = startOrderedMapNode(classReference(valueType), "_count"); } else { startEvent = startMapNode(classReference(valueType), "_count"); } sb.append(statement(startEvent)); sb.append(forEach(getterName, valueType, tryToUseCacheElse(CURRENT, statement(staticInvokeEmitter(valueType, CURRENT))))); sb.append(statement(endNode())); } }
@Override public void write(final NormalizedNodeStreamWriter writer) throws IOException { final ListSchemaNode schema = (ListSchemaNode) getSchema(); writer.nextDataSchemaNode(schema); if (schema.getKeyDefinition().isEmpty()) { writer.startUnkeyedList(provideNodeIdentifier(), childSizeHint()); } else if (schema.isUserOrdered()) { writer.startOrderedMapNode(provideNodeIdentifier(), childSizeHint()); } else { writer.startMapNode(provideNodeIdentifier(), childSizeHint()); } super.write(writer); writer.endNode(); }
@Override public void write(final NormalizedNodeStreamWriter writer) throws IOException { final ListSchemaNode schema = (ListSchemaNode) getSchema(); writer.nextDataSchemaNode(schema); if (schema.getKeyDefinition().isEmpty()) { writer.startUnkeyedList(provideNodeIdentifier(), childSizeHint()); } else if (schema.isUserOrdered()) { writer.startOrderedMapNode(provideNodeIdentifier(), childSizeHint()); } else { writer.startMapNode(provideNodeIdentifier(), childSizeHint()); } super.write(writer); writer.endNode(); }
private void emitList(final ListSchemaNode child) { super.writer.startListNode(child.getQName()); child.getWhenCondition().ifPresent(this::emitWhen); // FIXME: BUG-2444: *(ifFeatureNode ) child.getMustConstraints().forEach(this::emitMust); emitKey(child.getKeyDefinition()); emitUniqueConstraints(child.getUniqueConstraints()); emitConfigNode(child.isConfiguration()); child.getElementCountConstraint().ifPresent(this::emitCountConstraint); emitOrderedBy(child.isUserOrdered()); emitDocumentedNode(child); emitDataNodeContainer(child); emitUnknownStatementNodes(child.getUnknownSchemaNodes()); emitNotifications(child.getNotifications()); emitActions(child.getActions()); super.writer.endNode(); }