use loadElement (ignore whitespace)

This commit is contained in:
Vladimir Krivosheev
2016-03-17 11:32:10 +01:00
parent eba00ef7a4
commit 942375c482
19 changed files with 100 additions and 124 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -27,6 +27,7 @@ import com.intellij.openapi.util.JDOMUtil;
import com.intellij.platform.ProjectTemplate;
import com.intellij.platform.ProjectTemplatesFactory;
import com.intellij.util.ArrayUtil;
import com.intellij.util.JdomKt;
import com.intellij.util.NullableFunction;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.MultiMap;
@@ -60,16 +61,13 @@ public class RemoteTemplatesFactory extends ProjectTemplatesFactory {
protected MultiMap<String, ArchivedProjectTemplate> compute() {
try {
return HttpRequests.request(URL + ApplicationInfo.getInstance().getBuild().getProductCode() + "_templates.xml")
.connect(new HttpRequests.RequestProcessor<MultiMap<String, ArchivedProjectTemplate>>() {
@Override
public MultiMap<String, ArchivedProjectTemplate> process(@NotNull HttpRequests.Request request) throws IOException {
try {
return create(JDOMUtil.load(request.getReader()));
}
catch (JDOMException e) {
LOG.error(e);
return MultiMap.emptyInstance();
}
.connect(request -> {
try {
return create(JdomKt.loadElement(request.getReader()));
}
catch (JDOMException e) {
LOG.error(e);
return MultiMap.emptyInstance();
}
});
}
@@ -113,21 +111,18 @@ public class RemoteTemplatesFactory extends ProjectTemplatesFactory {
}
private static List<ArchivedProjectTemplate> createGroupTemplates(Element groupElement) {
return ContainerUtil.mapNotNull(groupElement.getChildren(TEMPLATE), new NullableFunction<Element, ArchivedProjectTemplate>() {
@Override
public ArchivedProjectTemplate fun(final Element element) {
if (!checkRequiredPlugins(element)) {
return null;
}
final ModuleType moduleType = ModuleTypeManager.getInstance().findByID(element.getChildText("moduleType"));
final String path = element.getChildText("path");
final String description = element.getChildTextTrim("description");
String name = element.getChildTextTrim("name");
RemoteProjectTemplate template = new RemoteProjectTemplate(name, element, moduleType, path, description);
template.populateFromElement(element);
return template;
return ContainerUtil.mapNotNull(groupElement.getChildren(TEMPLATE), (NullableFunction<Element, ArchivedProjectTemplate>)element -> {
if (!checkRequiredPlugins(element)) {
return null;
}
final ModuleType moduleType = ModuleTypeManager.getInstance().findByID(element.getChildText("moduleType"));
final String path = element.getChildText("path");
final String description = element.getChildTextTrim("description");
String name = element.getChildTextTrim("name");
RemoteProjectTemplate template = new RemoteProjectTemplate(name, element, moduleType, path, description);
template.populateFromElement(element);
return template;
});
}
@@ -162,12 +157,7 @@ public class RemoteTemplatesFactory extends ProjectTemplatesFactory {
@Override
public <T> T processStream(@NotNull final StreamProcessor<T> consumer) throws IOException {
return HttpRequests.request(URL + myPath).connect(new HttpRequests.RequestProcessor<T>() {
@Override
public T process(@NotNull HttpRequests.Request request) throws IOException {
return consumeZipStream(consumer, new ZipInputStream(request.getInputStream()));
}
});
return HttpRequests.request(URL + myPath).connect(request -> consumeZipStream(consumer, new ZipInputStream(request.getInputStream())));
}
@Nullable
@@ -209,7 +209,7 @@ class SchemeManagerImpl<T : Scheme, E : ExternalizableScheme>(val fileSpec: Stri
return
}
val element = JDOMUtil.load(URLUtil.openStream(url))
val element = loadElement(URLUtil.openStream(url))
val scheme = convertor.convert(element)
if (scheme is ExternalizableScheme) {
val fileName = PathUtilRt.getFileName(url.path)
@@ -340,7 +340,7 @@ class SchemeManagerImpl<T : Scheme, E : ExternalizableScheme>(val fileSpec: Stri
private fun loadScheme(fileName: CharSequence, input: InputStream, duringLoad: Boolean): E? {
try {
val element = JDOMUtil.load(input)
val element = loadElement(input)
@Suppress("DEPRECATED_SYMBOL_WITH_MESSAGE", "UNCHECKED_CAST")
val scheme = processor.readScheme(element, duringLoad) ?: return null
@@ -23,6 +23,7 @@ import com.intellij.openapi.util.text.StringUtil
import com.intellij.openapi.vfs.CharsetToolkit
import com.intellij.util.ArrayUtil
import com.intellij.util.SystemProperties
import com.intellij.util.loadElement
import gnu.trove.THashMap
import org.iq80.snappy.SnappyInputStream
import org.iq80.snappy.SnappyOutputStream
@@ -66,7 +67,7 @@ fun archiveStateXml(state: Element): BufferExposingByteArrayOutputStream {
return byteOut
}
private fun unarchiveState(state: ByteArray) = JDOMUtil.load(SnappyInputStream(ByteArrayInputStream(state)))
private fun unarchiveState(state: ByteArray) = loadElement(SnappyInputStream(ByteArrayInputStream(state)).reader())
fun getNewByteIfDiffers(key: String, newState: Any, oldState: ByteArray): ByteArray? {
val newBytes: ByteArray
@@ -23,6 +23,7 @@ import com.intellij.openapi.diagnostic.debug
import com.intellij.openapi.util.JDOMUtil
import com.intellij.util.containers.ContainerUtil
import com.intellij.util.containers.SmartHashSet
import com.intellij.util.loadElement
import gnu.trove.THashMap
import org.jdom.Attribute
import org.jdom.Element
@@ -67,7 +68,7 @@ abstract class XmlElementStorage protected constructor(protected val fileSpec: S
protected open fun dataLoadedFromProvider(element: Element?) {
}
private fun loadDataFromProvider() = JDOMUtil.load(provider!!.read(fileSpec, roamingType))
private fun loadDataFromProvider() = provider!!.read(fileSpec, roamingType)?.let { loadElement(it) }
private fun loadState(element: Element): StateMap {
beforeElementLoaded(element)
@@ -75,7 +76,7 @@ abstract class XmlElementStorage protected constructor(protected val fileSpec: S
}
fun setDefaultState(element: Element) {
element.setName(rootElementName)
element.name = rootElementName
storageDataRef.set(loadState(element))
}
@@ -213,7 +214,7 @@ fun save(states: StateMap, rootElementName: String, newLiveStates: Map<String, E
elementAttributes.add(0, nameAttribute)
}
else {
nameAttribute.setValue(componentName)
nameAttribute.value = componentName
if (elementAttributes.get(0) != nameAttribute) {
elementAttributes.remove(nameAttribute)
elementAttributes.add(0, nameAttribute)
@@ -231,7 +232,7 @@ internal fun Element.normalizeRootName(): Element {
LOG.warn("State element must not have parent ${JDOMUtil.writeElement(this)}")
detach()
}
setName(FileStorageCoreUtil.COMPONENT)
name = FileStorageCoreUtil.COMPONENT
return this
}
@@ -11,6 +11,7 @@ import com.intellij.openapi.util.JDOMUtil
import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.testFramework.*
import com.intellij.util.deleteRecursively
import com.intellij.util.loadElement
import com.intellij.util.refreshVfs
import com.intellij.util.systemIndependentPath
import org.assertj.core.api.Assertions.assertThat
@@ -84,7 +85,7 @@ internal class DefaultProjectStoreTest {
@Test fun `new project from default - directory-based storage`() {
val defaultProject = ProjectManager.getInstance().defaultProject
val defaultTestComponent = TestComponent()
defaultTestComponent.loadState(JDOMUtil.load("""<component><main name="$TEST_COMPONENT_NAME"/><sub name="foo" /><sub name="bar" /></component>""".reader()))
defaultTestComponent.loadState(loadElement("""<component><main name="$TEST_COMPONENT_NAME"/><sub name="foo" /><sub name="bar" /></component>"""))
val stateStore = defaultProject.stateStore as ComponentStoreImpl
stateStore.initComponent(defaultTestComponent, true)
try {
@@ -19,11 +19,11 @@ import com.intellij.idea.Bombed
import com.intellij.openapi.components.MainConfigurationStateSplitter
import com.intellij.openapi.components.StateStorage
import com.intellij.openapi.components.impl.stores.StateStorageBase
import com.intellij.openapi.util.JDOMUtil
import com.intellij.testFramework.ProjectRule
import com.intellij.testFramework.RuleChain
import com.intellij.testFramework.TemporaryDirectory
import com.intellij.testFramework.runInEdtAndWait
import com.intellij.util.loadElement
import org.assertj.core.api.Assertions.assertThat
import org.assertj.core.api.hasChildren
import org.jdom.Element
@@ -40,7 +40,7 @@ private fun StateStorage.ExternalizationSession.save() {
private fun StateStorageBase<*>.setStateAndSave(componentName: String, state: String?) {
var externalizationSession = startExternalization()!!
externalizationSession.setState(null, componentName, if (state == null) Element("state") else JDOMUtil.load(state.reader()))
externalizationSession.setState(null, componentName, if (state == null) Element("state") else loadElement(state))
externalizationSession.save()
}
@@ -25,7 +25,6 @@ import org.jdom.JDOMException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
@@ -65,25 +64,22 @@ public abstract class SettingsConnectionService {
private Map<String, String> readSettings(final String... attributes) {
return HttpRequests.request(mySettingsUrl)
.productNameAsUserAgent()
.connect(new HttpRequests.RequestProcessor<Map<String, String>>() {
@Override
public Map<String, String> process(@NotNull HttpRequests.Request request) throws IOException {
Map<String, String> settings = ContainerUtilRt.newLinkedHashMap();
try {
Element root = JDOMUtil.load(request.getReader());
for (String s : attributes) {
String attributeValue = root.getAttributeValue(s);
if (StringUtil.isNotEmpty(attributeValue)) {
settings.put(s, attributeValue);
}
.connect(request -> {
Map<String, String> settings = ContainerUtilRt.newLinkedHashMap();
try {
Element root = JDOMUtil.load(request.getReader());
for (String s : attributes) {
String attributeValue = root.getAttributeValue(s);
if (StringUtil.isNotEmpty(attributeValue)) {
settings.put(s, attributeValue);
}
}
catch (JDOMException e) {
LOG.error(e);
}
return settings;
}
}, Collections.<String, String>emptyMap(), LOG);
catch (JDOMException e) {
LOG.error(e);
}
return settings;
}, Collections.emptyMap(), LOG);
}
@Nullable
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
package com.intellij.codeEditor.printing;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.util.JdomKt;
import com.intellij.util.containers.HashMap;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
@@ -98,7 +98,7 @@ class PageSizes {
try {
//noinspection ConstantConditions
for (Element element : JDOMUtil.load(PageSizes.class.getResourceAsStream(PAGE_SIZES_RESOURCE)).getChildren(ELEMENT_SIZE)) {
for (Element element : JdomKt.loadElement(PageSizes.class.getResourceAsStream(PAGE_SIZES_RESOURCE)).getChildren(ELEMENT_SIZE)) {
String name = element.getAttributeValue(ATTRIBUTE_NAME);
final String widthStr = element.getAttributeValue(ATTRIBUTE_WIDTH);
final String heightStr = element.getAttributeValue(ATTRIBUTE_HEIGHT);
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -27,21 +27,16 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.CheckboxTree;
import com.intellij.ui.CheckedTreeNode;
import com.intellij.ui.TreeSpeedSearch;
import com.intellij.util.Function;
import com.intellij.util.JdomKt;
import com.intellij.util.SystemProperties;
import com.intellij.util.containers.Convertor;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.io.IOException;
import java.io.StringReader;
import java.util.Set;
/**
@@ -65,22 +60,19 @@ class LiveTemplateTree extends CheckboxTree implements DataProvider, CopyProvide
@Override
protected void installSpeedSearch() {
new TreeSpeedSearch(this, new Convertor<TreePath, String>() {
@Override
public String convert(TreePath o) {
Object object = ((DefaultMutableTreeNode)o.getLastPathComponent()).getUserObject();
if (object instanceof TemplateGroup) {
return ((TemplateGroup)object).getName();
}
if (object instanceof TemplateImpl) {
TemplateImpl template = (TemplateImpl)object;
return StringUtil.notNullize(template.getGroupName()) + " " +
StringUtil.notNullize(template.getKey()) + " " +
StringUtil.notNullize(template.getDescription()) + " " +
template.getTemplateText();
}
return "";
new TreeSpeedSearch(this, o -> {
Object object = ((DefaultMutableTreeNode)o.getLastPathComponent()).getUserObject();
if (object instanceof TemplateGroup) {
return ((TemplateGroup)object).getName();
}
if (object instanceof TemplateImpl) {
TemplateImpl template = (TemplateImpl)object;
return StringUtil.notNullize(template.getGroupName()) + " " +
StringUtil.notNullize(template.getKey()) + " " +
StringUtil.notNullize(template.getDescription()) + " " +
template.getTemplateText();
}
return "";
}, true);
}
@@ -98,15 +90,12 @@ class LiveTemplateTree extends CheckboxTree implements DataProvider, CopyProvide
final Set<TemplateImpl> templates = myConfigurable.getSelectedTemplates().keySet();
CopyPasteManager.getInstance().setContents(new StringSelection(StringUtil.join(templates, new Function<TemplateImpl, String>() {
@Override
public String fun(TemplateImpl template) {
TemplateContext zeroContext = new TemplateContext();
for (TemplateContextType type : TemplateContextType.EP_NAME.getExtensions()) {
zeroContext.setEnabled(type, false);
}
return JDOMUtil.writeElement(TemplateSettings.serializeTemplate(template, zeroContext));
CopyPasteManager.getInstance().setContents(new StringSelection(StringUtil.join(templates, template -> {
TemplateContext zeroContext = new TemplateContext();
for (TemplateContextType type : TemplateContextType.EP_NAME.getExtensions()) {
zeroContext.setEnabled(type, false);
}
return JDOMUtil.writeElement(TemplateSettings.serializeTemplate(template, zeroContext));
}, SystemProperties.getLineSeparator())));
}
@@ -143,7 +132,7 @@ class LiveTemplateTree extends CheckboxTree implements DataProvider, CopyProvide
assert buffer != null;
try {
for (Element templateElement : JDOMUtil.load(new StringReader("<root>" + buffer + "</root>")).getChildren(TemplateSettings.TEMPLATE)) {
for (Element templateElement : JdomKt.loadElement("<root>" + buffer + "</root>").getChildren(TemplateSettings.TEMPLATE)) {
TemplateImpl template = TemplateSettings.readTemplateFromElement(group.getName(), templateElement, getClass().getClassLoader());
while (group.containsTemplate(template.getKey(), template.getId())) {
template.setKey(template.getKey() + "1");
@@ -154,9 +143,7 @@ class LiveTemplateTree extends CheckboxTree implements DataProvider, CopyProvide
myConfigurable.addTemplate(template);
}
}
catch (JDOMException ignore) {
}
catch (IOException ignore) {
catch (Exception ignore) {
}
}
}
@@ -30,6 +30,7 @@ import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.util.JdomKt;
import com.intellij.util.SmartList;
import com.intellij.util.containers.MultiMap;
import com.intellij.util.xmlb.Converter;
@@ -453,7 +454,7 @@ public class TemplateSettings implements PersistentStateComponent<TemplateSettin
private void readDefTemplate(DefaultLiveTemplatesProvider provider, String defTemplate, boolean registerTemplate) throws JDOMException, InvalidDataException, IOException {
InputStream inputStream = DecodeDefaultsUtil.getDefaultsInputStream(provider, defTemplate);
if (inputStream != null) {
TemplateGroup group = readTemplateFile(JDOMUtil.load(inputStream), getDefaultTemplateName(defTemplate), true, registerTemplate, provider.getClass().getClassLoader());
TemplateGroup group = readTemplateFile(JdomKt.loadElement(inputStream), getDefaultTemplateName(defTemplate), true, registerTemplate, provider.getClass().getClassLoader());
if (group != null && group.getReplace() != null) {
for (TemplateImpl template : myTemplates.get(group.getReplace())) {
removeTemplate(template);
@@ -37,10 +37,10 @@ import com.intellij.openapi.options.SchemesManager;
import com.intellij.openapi.options.SchemesManagerFactory;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.EventDispatcher;
import com.intellij.util.JdomKt;
import com.intellij.util.ThrowableConvertor;
import com.intellij.util.io.URLUtil;
import com.intellij.util.ui.UIUtil;
@@ -204,7 +204,7 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Pers
try {
URL resource = attributesEP.getLoaderForClass().getResource(attributesEP.file);
assert resource != null;
((AbstractColorsScheme)editorColorsScheme).readAttributes(JDOMUtil.load(URLUtil.openStream(resource)));
((AbstractColorsScheme)editorColorsScheme).readAttributes(JdomKt.loadElement(URLUtil.openStream(resource)));
}
catch (Exception e) {
LOG.error(e);
@@ -325,7 +325,7 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements Persistent
try {
URL defaultFileTypesUrl = FileTypeManagerImpl.class.getResource("/defaultFileTypes.xml");
if (defaultFileTypesUrl != null) {
Element defaultFileTypesElement = JDOMUtil.load(URLUtil.openStream(defaultFileTypesUrl));
Element defaultFileTypesElement = JdomKt.loadElement(URLUtil.openStream(defaultFileTypesUrl));
for (Element e : defaultFileTypesElement.getChildren()) {
//noinspection SpellCheckingInspection
if ("filetypes".equals(e.getName())) {
@@ -42,7 +42,6 @@ import com.intellij.openapi.ui.Messages
import com.intellij.openapi.updateSettings.UpdateStrategyCustomization
import com.intellij.openapi.util.ActionCallback
import com.intellij.openapi.util.BuildNumber
import com.intellij.openapi.util.JDOMUtil
import com.intellij.openapi.util.SystemInfo
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.util.text.StringUtil
@@ -50,6 +49,7 @@ import com.intellij.util.PlatformUtils
import com.intellij.util.containers.ContainerUtil
import com.intellij.util.io.HttpRequests
import com.intellij.util.io.URLUtil
import com.intellij.util.loadElement
import com.intellij.util.ui.UIUtil
import com.intellij.xml.util.XmlStringUtil
import org.apache.http.client.utils.URIBuilder
@@ -198,9 +198,9 @@ object UpdateChecker {
updateInfo = HttpRequests.request(updateUrl)
.forceHttps(settings.canUseSecureConnection())
.connect { request ->
.connect {
try {
UpdatesInfo(JDOMUtil.load(request.reader))
UpdatesInfo(loadElement(it.reader))
}
catch (e: JDOMException) {
// corrupted content, don't bother telling user
@@ -15,9 +15,6 @@
*/
package com.intellij.util
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.util.JDOMUtil
import com.intellij.openapi.util.registry.Registry
import com.intellij.reference.SoftReference
import com.intellij.util.text.CharSequenceReader
import org.jdom.Document
@@ -25,6 +22,7 @@ import org.jdom.input.SAXBuilder
import org.xml.sax.EntityResolver
import org.xml.sax.InputSource
import java.io.CharArrayReader
import java.io.InputStream
import java.io.Reader
import java.nio.file.Files
import java.nio.file.Path
@@ -44,20 +42,19 @@ private fun getSaxBuilder(): SAXBuilder {
return saxBuilder
}
fun loadElement(chars: CharSequence) = loadDocument(CharSequenceReader(chars)).detachRootElement()
fun loadElement(chars: CharSequence) = loadElement(CharSequenceReader(chars))
fun loadElement(reader: Reader) = loadDocument(reader).detachRootElement()
fun loadElement(stream: InputStream) = loadDocument(stream.reader()).detachRootElement()
fun loadElement(path: Path) = loadDocument(Files.newInputStream(path).bufferedReader()).detachRootElement()
private fun loadDocument(reader: Reader): Document {
if (Registry.`is`("jdom.ignoring.whitespace", false) || (ApplicationManager.getApplication()?.isUnitTestMode ?: false)) {
try {
return getSaxBuilder().build(reader)
}
finally {
reader.close()
}
try {
return getSaxBuilder().build(reader)
}
else {
return JDOMUtil.loadDocument(reader)
finally {
reader.close()
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
package com.intellij.ide.updates;
import com.intellij.openapi.updateSettings.impl.UpdatesInfo;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.util.JdomKt;
import org.jetbrains.annotations.NotNull;
import java.io.InputStream;
@@ -31,7 +31,7 @@ public class InfoReader {
@NotNull
public static UpdatesInfo read(@NotNull URL url) {
try (InputStream stream = url.openStream()) {
return new UpdatesInfo(JDOMUtil.load(stream));
return new UpdatesInfo(JdomKt.loadElement(stream));
}
catch (Exception e) {
throw new RuntimeException(e);
@@ -688,7 +688,6 @@ use.read.action.to.init.service=false
use.loaded.state.as.existing=true
saving.state.in.new.format.is.allowed=false
configuration.saving.v3=false
jdom.ignoring.whitespace=false
ide.mac.new.color.picker=false
@@ -335,6 +335,9 @@ public class JDOMUtil {
}
@Contract("null -> null; !null -> !null")
/**
* @deprecated Use com.intellij.util.loadElement
*/
public static Element load(Reader reader) throws JDOMException, IOException {
return reader == null ? null : loadDocument(reader).detachRootElement();
}
@@ -21,6 +21,7 @@ import com.intellij.openapi.util.Ref
import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream
import com.intellij.openapi.util.text.StringUtil
import com.intellij.util.SmartList
import com.intellij.util.loadElement
import com.intellij.util.xmlb.annotations.*
import com.intellij.util.xmlb.annotations.AbstractCollection
import junit.framework.AssertionFailedError
@@ -290,9 +291,7 @@ internal class XmlSerializerTest {
@Test fun FilterSerializer() {
val bean = BeanWithPublicFields()
assertSerializer(bean, "<BeanWithPublicFields>\n" + " <option name=\"INT_V\" value=\"1\" />\n" + "</BeanWithPublicFields>", object : SerializationFilter {
override fun accepts(accessor: Accessor, bean: Any) = accessor.name.startsWith("I")
})
assertSerializer(bean, "<BeanWithPublicFields>\n" + " <option name=\"INT_V\" value=\"1\" />\n" + "</BeanWithPublicFields>", SerializationFilter { accessor, bean -> accessor.name.startsWith("I") })
}
data class BeanWithArray(var ARRAY_V: Array<String> = arrayOf("a", "b"))
@@ -834,7 +833,7 @@ internal class XmlSerializerTest {
@Tag("bean")
data class Bean(@Tag var description: String? = null)
var bean = XmlSerializer.deserialize(JDOMUtil.load("""<bean>
var bean = XmlSerializer.deserialize(loadElement("""<bean>
<description>
<![CDATA[
<h4>Node.js integration</h4>
@@ -843,7 +842,7 @@ internal class XmlSerializerTest {
</bean>""".reader()), Bean::class.java)!!
assertThat(bean.description).isEqualToIgnoringWhitespace("<h4>Node.js integration</h4>")
bean = XmlSerializer.deserialize(JDOMUtil.load("""<bean><description><![CDATA[<h4>Node.js integration</h4>]]></description></bean>""".reader()), Bean::class.java)!!
bean = XmlSerializer.deserialize(loadElement("""<bean><description><![CDATA[<h4>Node.js integration</h4>]]></description></bean>""".reader()), Bean::class.java)!!
assertThat(bean.description).isEqualTo("<h4>Node.js integration</h4>")
}
+1
View File
@@ -15,5 +15,6 @@
<orderEntry type="library" scope="TEST" name="JUnit4" level="project" />
<orderEntry type="library" scope="TEST" name="picocontainer" level="project" />
<orderEntry type="library" scope="TEST" name="jna" level="project" />
<orderEntry type="module" module-name="platform-impl" scope="TEST" />
</component>
</module>