mirror of
https://github.com/stleary/JSON-java.git
synced 2025-08-02 19:15:27 -04:00
Addressed comment
This commit is contained in:
parent
900a8cc945
commit
310f18fcdc
@ -360,9 +360,9 @@ public class XML {
|
||||
&& NULL_ATTR.equals(string)
|
||||
&& Boolean.parseBoolean((String) token)) {
|
||||
nilAttributeFound = true;
|
||||
} else if(config.xsiTypeMap != null
|
||||
} else if(config.getXsiTypeMap() != null && !config.getXsiTypeMap().isEmpty()
|
||||
&& TYPE_ATTR.equals(string)) {
|
||||
xmlXsiTypeConverter = config.xsiTypeMap.get(token);
|
||||
xmlXsiTypeConverter = config.getXsiTypeMap().get(token);
|
||||
} else if (!nilAttributeFound) {
|
||||
jsonObject.accumulate(string,
|
||||
config.isKeepStrings()
|
||||
|
@ -23,6 +23,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@ -62,7 +63,7 @@ public class XMLParserConfiguration {
|
||||
/**
|
||||
* This will allow type conversion for values in XML if xsi:type attribute is defined
|
||||
*/
|
||||
public Map<String, XMLXsiTypeConverter<?>> xsiTypeMap;
|
||||
private Map<String, XMLXsiTypeConverter<?>> xsiTypeMap;
|
||||
|
||||
/**
|
||||
* Default parser configuration. Does not keep strings (tries to implicitly convert
|
||||
@ -72,6 +73,7 @@ public class XMLParserConfiguration {
|
||||
this.keepStrings = false;
|
||||
this.cDataTagName = "content";
|
||||
this.convertNilAttributeToNull = false;
|
||||
this.xsiTypeMap = Collections.emptyMap();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -148,16 +150,15 @@ public class XMLParserConfiguration {
|
||||
* <code>false</code> to parse values with attribute xsi:nil="true" as {"xsi:nil":true}.
|
||||
* @param xsiTypeMap <code>new HashMap<String, XMLXsiTypeConverter<?>>()</code> to parse values with attribute
|
||||
* xsi:type="integer" as integer, xsi:type="string" as string
|
||||
* <code>null</code> to use default behaviour.
|
||||
*/
|
||||
public XMLParserConfiguration (final boolean keepStrings, final String cDataTagName,
|
||||
private XMLParserConfiguration (final boolean keepStrings, final String cDataTagName,
|
||||
final boolean convertNilAttributeToNull, final Map<String, XMLXsiTypeConverter<?>> xsiTypeMap ) {
|
||||
this.keepStrings = keepStrings;
|
||||
this.cDataTagName = cDataTagName;
|
||||
this.convertNilAttributeToNull = convertNilAttributeToNull;
|
||||
this.xsiTypeMap = xsiTypeMap;
|
||||
this.xsiTypeMap = Collections.unmodifiableMap(xsiTypeMap);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Provides a new instance of the same configuration.
|
||||
*/
|
||||
@ -171,7 +172,8 @@ public class XMLParserConfiguration {
|
||||
return new XMLParserConfiguration(
|
||||
this.keepStrings,
|
||||
this.cDataTagName,
|
||||
this.convertNilAttributeToNull
|
||||
this.convertNilAttributeToNull,
|
||||
this.xsiTypeMap
|
||||
);
|
||||
}
|
||||
|
||||
@ -253,4 +255,30 @@ public class XMLParserConfiguration {
|
||||
newConfig.convertNilAttributeToNull = newVal;
|
||||
return newConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* When parsing the XML into JSON, specifies that the values with attribute xsi:type
|
||||
* will be converted to target type defined to client in this configuration
|
||||
* <code>Map<String, XMLXsiTypeConverter<?>></code> to parse values with attribute
|
||||
* xsi:type="integer" as integer, xsi:type="string" as string
|
||||
* @return {@link #xsiTypeMap} unmodifiable configuration map.
|
||||
*/
|
||||
public Map<String, XMLXsiTypeConverter<?>> getXsiTypeMap() {
|
||||
return this.xsiTypeMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* When parsing the XML into JSON, specifies that the values with attribute xsi:type
|
||||
* will be converted to target type defined to client in this configuration
|
||||
* <code>Map<String, XMLXsiTypeConverter<?>></code> to parse values with attribute
|
||||
* xsi:type="integer" as integer, xsi:type="string" as string
|
||||
* @param xsiTypeMap <code>new HashMap<String, XMLXsiTypeConverter<?>>()</code> to parse values with attribute
|
||||
* xsi:type="integer" as integer, xsi:type="string" as string
|
||||
* @return The existing configuration will not be modified. A new configuration is returned.
|
||||
*/
|
||||
public XMLParserConfiguration withXsiTypeMap(final Map<String, XMLXsiTypeConverter<?>> xsiTypeMap) {
|
||||
XMLParserConfiguration newConfig = this.clone();
|
||||
newConfig.xsiTypeMap = Collections.unmodifiableMap(xsiTypeMap);
|
||||
return newConfig;
|
||||
}
|
||||
}
|
||||
|
@ -1008,8 +1008,7 @@ public class XMLTest {
|
||||
return Integer.valueOf(value);
|
||||
}
|
||||
});
|
||||
JSONObject actualJson = XML.toJSONObject(originalXml, new XMLParserConfiguration(false,
|
||||
"content", false, xsiTypeMap));
|
||||
JSONObject actualJson = XML.toJSONObject(originalXml, new XMLParserConfiguration().withXsiTypeMap(xsiTypeMap));
|
||||
Util.compareActualVsExpectedJsonObjects(actualJson,expectedJson);
|
||||
}
|
||||
|
||||
@ -1030,8 +1029,7 @@ public class XMLTest {
|
||||
return Integer.valueOf(value);
|
||||
}
|
||||
});
|
||||
JSONObject actualJson = XML.toJSONObject(originalXml, new XMLParserConfiguration(false,
|
||||
"content", false, xsiTypeMap));
|
||||
JSONObject actualJson = XML.toJSONObject(originalXml, new XMLParserConfiguration().withXsiTypeMap(xsiTypeMap));
|
||||
Util.compareActualVsExpectedJsonObjects(actualJson,expectedJson);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user