- final SchemaNode parentNode, final boolean strictParsing) {
- final DataSchemaNode parent;
- if (parentNode instanceof DataSchemaNode) {
- parent = (DataSchemaNode) parentNode;
- } else if (parentNode instanceof OperationDefinition) {
- parent = OperationAsContainer.of((OperationDefinition) parentNode);
- } else {
- throw new IllegalArgumentException("Illegal parent node " + parentNode);
- }
- return new XmlParserStream(writer, codecs, parent, strictParsing);
+ final EffectiveStatementInference parentNode, final boolean strictParsing) {
+ return new XmlParserStream(writer, codecs, SchemaInferenceStack.ofInference(parentNode), strictParsing);
+ }
+
+ /**
+ * Utility method for use when caching {@link XmlCodecFactory} is not feasible. Users with high performance
+ * requirements should use {@link #create(NormalizedNodeStreamWriter, XmlCodecFactory, EffectiveStatementInference)}
+ * instead and maintain a {@link XmlCodecFactory} to match the current {@link EffectiveModelContext}.
+ */
+ public static XmlParserStream create(final NormalizedNodeStreamWriter writer,
+ final EffectiveModelContext context) {
+ return create(writer, context, true);
+ }
+
+ /**
+ * Utility method for use when caching {@link XmlCodecFactory} is not feasible. Users with high performance
+ * requirements should use {@link #create(NormalizedNodeStreamWriter, XmlCodecFactory, EffectiveStatementInference)}
+ * instead and maintain a {@link XmlCodecFactory} to match the current {@link EffectiveModelContext}.
+ */
+ public static XmlParserStream create(final NormalizedNodeStreamWriter writer,
+ final EffectiveModelContext context, final boolean strictParsing) {
+ return create(writer, SchemaInferenceStack.of(context).toInference(), strictParsing);