/** * Create a new writer with the specified context as its root. * * @param context Associated {@link SchemaContext}. * @return A new {@link NormalizedNodeStreamWriter} */ public static SchemaTracker create(final SchemaContext context) { return create(context, SchemaPath.ROOT); }
@Override public void endNode() throws IOException { final Object schema = tracker.endNode(); if (schema instanceof ListSchemaNode) { // For lists, we only emit end element on the inner frame final Object parent = tracker.getParent(); if (parent == schema) { endElement(); } } else if (schema instanceof ContainerSchemaNode) { // Emit container end element endElement(); } }
@Override public void startAugmentationNode(final AugmentationIdentifier identifier) { tracker.startAugmentationNode(identifier); }
@Override public void startLeafSet(final NodeIdentifier name, final int childSizeHint) { tracker.startLeafSet(name); }
public AugmentationSchemaNode startAugmentationNode(final AugmentationIdentifier identifier) { LOG.debug("Enter augmentation {}", identifier); Object parent = getParent(); checkArgument(parent instanceof AugmentationTarget, "Augmentation not allowed under %s", parent); if (parent instanceof ChoiceSchemaNode) { final QName name = Iterables.get(identifier.getPossibleChildNames(), 0); parent = findCaseByChild((ChoiceSchemaNode) parent, name); } checkArgument(parent instanceof DataNodeContainer, "Augmentation allowed only in DataNodeContainer", parent); final AugmentationSchemaNode schema = SchemaUtils.findSchemaForAugment((AugmentationTarget) parent, identifier.getPossibleChildNames()); final AugmentationSchemaNode resolvedSchema = EffectiveAugmentationSchema.create(schema, (DataNodeContainer) parent); schemaStack.push(resolvedSchema); return resolvedSchema; }
private SchemaNode getSchema(final PathArgument name) { final Object parent = getParent(); SchemaNode schema = null; final QName qname = name.getNodeType(); if (parent instanceof DataNodeContainer) { schema = ((DataNodeContainer)parent).getDataChildByName(qname); if (schema == null) { if (parent instanceof GroupingDefinition) { schema = (GroupingDefinition) parent; } else if (parent instanceof NotificationDefinition) { schema = (NotificationDefinition) parent; } } } else if (parent instanceof ChoiceSchemaNode) { schema = findChildInCases((ChoiceSchemaNode) parent, qname); } else { throw new IllegalStateException("Unsupported schema type " + parent.getClass() + " on stack."); } checkArgument(schema != null, "Could not find schema for node %s in %s", qname, parent); return schema; }
@Override public void leafNode(final NodeIdentifier name, final Object value) throws IOException { final LeafSchemaNode schema = tracker.leafNode(name); writeElement(schema.getQName(), value, Collections.emptyMap(), schema); }
public void startListItem(final PathArgument name) throws IOException { final Object schema = getParent(); checkArgument(schema instanceof ListSchemaNode, "List item is not appropriate"); schemaStack.push(schema); }
@Override public void leafSetEntryNode(final QName name, final Object value) throws IOException { final LeafListSchemaNode schema = tracker.leafSetEntryNode(name); writeElement(schema.getQName(), value, Collections.emptyMap(), schema); }
@Override public void startChoiceNode(final NodeIdentifier name, final int childSizeHint) { tracker.startChoiceNode(name); }
@Override public void anyxmlNode(final NodeIdentifier name, final Object value) throws IOException { final AnyXmlSchemaNode schema = tracker.anyxmlNode(name); anyxmlNode(schema.getQName(), value); }
@Override public void startContainerNode(final NodeIdentifier name, final int childSizeHint) throws IOException { final SchemaNode schema = tracker.startContainerNode(name); startElement(schema.getQName()); }
@Override public final void endNode() throws IOException { tracker.endNode(); context = context.endNode(codecs.getSchemaContext(), writer); if (context instanceof JSONStreamWriterRootContext) { context.emitEnd(writer); } }
@Override public void startOrderedLeafSet(final NodeIdentifier name, final int childSizeHint) { tracker.startLeafSet(name); }
public AugmentationSchemaNode startAugmentationNode(final AugmentationIdentifier identifier) { LOG.debug("Enter augmentation {}", identifier); Object parent = getParent(); checkArgument(parent instanceof AugmentationTarget, "Augmentation not allowed under %s", parent); if (parent instanceof ChoiceSchemaNode) { final QName name = Iterables.get(identifier.getPossibleChildNames(), 0); parent = findCaseByChild((ChoiceSchemaNode) parent, name); } checkArgument(parent instanceof DataNodeContainer, "Augmentation allowed only in DataNodeContainer", parent); final AugmentationSchemaNode schema = SchemaUtils.findSchemaForAugment((AugmentationTarget) parent, identifier.getPossibleChildNames()); final AugmentationSchemaNode resolvedSchema = EffectiveAugmentationSchema.create(schema, (DataNodeContainer) parent); schemaStack.push(resolvedSchema); return resolvedSchema; }
private SchemaNode getSchema(final PathArgument name) { final Object parent = getParent(); SchemaNode schema = null; final QName qname = name.getNodeType(); if (parent instanceof DataNodeContainer) { schema = ((DataNodeContainer)parent).getDataChildByName(qname); if (schema == null) { if (parent instanceof GroupingDefinition) { schema = (GroupingDefinition) parent; } else if (parent instanceof NotificationDefinition) { schema = (NotificationDefinition) parent; } } } else if (parent instanceof ChoiceSchemaNode) { schema = findChildInCases((ChoiceSchemaNode) parent, qname); } else { throw new IllegalStateException("Unsupported schema type " + parent.getClass() + " on stack."); } checkArgument(schema != null, "Could not find schema for node %s in %s", qname, parent); return schema; }
@Override public void leafNode(final NodeIdentifier name, final Object value, final Map<QName, String> attributes) throws IOException { final LeafSchemaNode schema = tracker.leafNode(name); writeElement(schema.getQName(), value, attributes, schema); }
public void startListItem(final PathArgument name) throws IOException { final Object schema = getParent(); checkArgument(schema instanceof ListSchemaNode, "List item is not appropriate"); schemaStack.push(schema); }
@Override public void leafSetEntryNode(final QName name, final Object value, final Map<QName, String> attributes) throws IOException { final LeafListSchemaNode schema = tracker.leafSetEntryNode(name); writeElement(schema.getQName(), value, attributes, schema); }
@Override public final void startChoiceNode(final NodeIdentifier name, final int childSizeHint) { tracker.startChoiceNode(name); context = new JSONStreamWriterInvisibleContext(context); }