Skip to content

Commit

Permalink
Add XML-specific read capabilities support, test
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed May 21, 2020
1 parent ee5ce93 commit 56d3f0c
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import com.fasterxml.jackson.core.base.ParserMinimalBase;
import com.fasterxml.jackson.core.io.IOContext;
import com.fasterxml.jackson.core.util.ByteArrayBuilder;
import com.fasterxml.jackson.core.util.JacksonFeatureSet;

import com.fasterxml.jackson.dataformat.xml.PackageVersion;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.util.CaseInsensitiveNameSet;
Expand All @@ -32,6 +34,15 @@ public class FromXmlParser
*/
public final static String DEFAULT_UNNAMED_TEXT_PROPERTY = "";

/**
* XML format has some peculiarities, indicated via new (2.12) capability
* system.
*
* @since 2.12
*/
public JacksonFeatureSet<StreamReadCapability> XML_READ_CAPABILITIES =
DEFAULT_READ_CAPABILITIES.with(StreamReadCapability.DUPLICATE_PROPERTIES);

/**
* Enumeration that defines all togglable features for XML parsers.
*/
Expand Down Expand Up @@ -217,7 +228,13 @@ public void setCodec(ObjectCodec c) {
public void setXMLTextElementName(String name) {
_cfgNameForTextElement = name;
}


/*
/**********************************************************************
/* Overrides: capability introspection methods
/**********************************************************************
*/

/**
* XML format does require support from custom {@link ObjectCodec}
* (that is, {@link XmlMapper}), so need to return true here.
Expand All @@ -228,7 +245,18 @@ public void setXMLTextElementName(String name) {
public boolean requiresCustomCodec() {
return true;
}


@Override
public boolean canReadObjectId() { return false; }

@Override
public boolean canReadTypeId() { return false; }

@Override
public JacksonFeatureSet<StreamReadCapability> getReadCapabilities() {
return XML_READ_CAPABILITIES;
}

/*
/**********************************************************
/* Extended API, configuration
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.fasterxml.jackson.dataformat.xml.stream;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.StreamReadCapability;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.XmlTestBase;

public class StreamCapabilitiesTest extends XmlTestBase
{
private final XmlMapper MAPPER = newMapper();

public void testReadCapabilities() throws Exception
{
try (JsonParser p = MAPPER.createParser("<root />")) {
assertTrue(p.getReadCapabilities().isEnabled(StreamReadCapability.DUPLICATE_PROPERTIES));
}
}
}

0 comments on commit 56d3f0c

Please sign in to comment.