public class XStreamMarshaller extends AbstractMarshaller implements BeanClassLoaderAware, InitializingBean
Marshaller
インターフェースの実装。 デフォルトでは、XStream はそれ以上の構成を必要とせず、クラスパス上のクラスを(アン)マーシャリングできます。そのため、XStreamMarshaller
を使用して外部ソース(つまり Web)から XML のマーシャリングを解除することはお勧めしません。これにより、 セキュリティの脆弱性が生じる可能性があります。XStreamMarshaller
を使用して外部 XML のマーシャリングを解除する場合は、supportedClasses
および converters
プロパティを設定するか(おそらく CatchAllConverter
を使用)、または customizeXStream(XStream)
メソッドをオーバーライドして、サポートするクラスのみを受け入れるようにします。
XStream の API により、OutputStreams への書き込みに使用されるエンコードを設定する必要があります。デフォルトは UTF-8
です。
注意 : XStream は XML 直列化ライブラリであり、データバインディングライブラリではありません。ネームスペースのサポートは制限されています。そのため、Web サービス内での使用には不向きです。
このマーシャラーには、Spring 4.3 以降の XStream 1.4.5 以降が必要です。XStream
の構築が 4.0 で作り直され、ストリームドライバーとクラスローダーが XStream 自体に渡されることに注意してください。
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | DEFAULT_ENCODING ストリームアクセスに使用されるデフォルトのエンコーディング: UTF-8。 |
logger
コンストラクターと説明 |
---|
XStreamMarshaller() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
protected com.thoughtworks.xstream.XStream | buildXStream() このマーシャラーが使用するネイティブ XStream デリゲートを構築し、 constructXStream() 、configureXStream(com.thoughtworks.xstream.XStream) 、customizeXStream(com.thoughtworks.xstream.XStream) に委譲します。 |
protected void | configureXStream(com.thoughtworks.xstream.XStream xstream) このマーシャラーの Bean プロパティを使用して XStream インスタンスを構成します。 |
protected com.thoughtworks.xstream.XStream | constructXStream() 標準コンストラクターのいずれかを使用するか、カスタムサブクラスを作成して、XStream インスタンスを構築します。 |
protected XmlMappingException | convertXStreamException(ExceptionSE ex, boolean marshalling) 指定された XStream 例外を org.springframework.oxm 階層からの適切な例外に変換します。 |
protected void | customizeXStream(com.thoughtworks.xstream.XStream xstream) 指定された XStream のカスタマイズを可能にするテンプレート。 |
protected StringSE | getDefaultEncoding() バイトストリームからのマーシャリングまたはアンマーシャリングに使用するデフォルトエンコーディングを決定します。存在しない場合は null を決定します。 |
com.thoughtworks.xstream.XStream | getXStream() このマーシャラーが使用するネイティブ XStream デリゲートを返します。 |
protected void | marshalDomNode(ObjectSE graph, NodeSE node) 指定されたオブジェクトグラフを DOM Node にマーシャリングする抽象テンプレートメソッド。 |
void | marshalOutputStream(ObjectSE graph, OutputStreamSE outputStream) 指定されたオブジェクトグラフを OutputStream にマーシャリングする抽象テンプレートメソッド。 |
void | marshalOutputStream(ObjectSE graph, OutputStreamSE outputStream, com.thoughtworks.xstream.converters.DataHolder dataHolder) |
protected void | marshalSaxHandlers(ObjectSE graph, ContentHandlerSE contentHandler, LexicalHandlerSE lexicalHandler) 指定されたオブジェクトグラフを SAX ContentHandler にマーシャリングする抽象テンプレートメソッド。 |
void | marshalWriter(ObjectSE graph, WriterSE writer) 指定されたオブジェクトグラフを Writer にマーシャリングする抽象テンプレートメソッド。 |
void | marshalWriter(ObjectSE graph, WriterSE writer, com.thoughtworks.xstream.converters.DataHolder dataHolder) |
protected void | marshalXmlEventWriter(ObjectSE graph, XMLEventWriterSE eventWriter) 指定されたオブジェクトを StAX XMLEventWriter にマーシャリングする抽象テンプレートメソッド。 |
protected void | marshalXmlStreamWriter(ObjectSE graph, XMLStreamWriterSE streamWriter) 指定されたオブジェクトを StAX XMLStreamWriter にマーシャリングする抽象テンプレートメソッド。 |
void | setAliases(MapSE<StringSE,?> aliases) クラスにマッピングされた文字列エイリアスで構成されるエイリアス / 型マップを設定します。 |
void | setAliasesByType(MapSE<StringSE,?> aliasesByType) クラスにマップされたストリングエイリアスで構成される型マップによってエイリアスを設定します。 |
void | setAnnotatedClasses(ClassSE<?>... annotatedClasses) クラスレベルのアノテーションメタデータからエイリアスが読み取られるアノテーション付きクラスを設定します。 |
void | setAutodetectAnnotations(boolean autodetectAnnotations) XStream の自動検出モードをアクティブにします。 |
void | setBeanClassLoader(ClassLoaderSE classLoader) Bean class loader SE を Bean インスタンスに提供するコールバック。 |
void | setConverterLookup(com.thoughtworks.xstream.converters.ConverterLookup converterLookup) 使用するカスタム XStream ConverterLookup を設定します。 |
void | setConverterRegistry(com.thoughtworks.xstream.converters.ConverterRegistry converterRegistry) 使用するカスタム XStream ConverterRegistry を設定します。 |
void | setConverters(com.thoughtworks.xstream.converters.ConverterMatcher... converters) Converters または SingleValueConverters が XStream インスタンスに登録されるように設定します。 |
void | setEncoding(StringSE encoding) ストリームアクセスに使用するエンコードを設定します。 |
void | setFieldAliases(MapSE<StringSE, StringSE> fieldAliases) フィールド名で構成されるフィールドエイリアス / 型マップを設定します。 |
void | setImplicitCollections(MapSE<ClassSE<?>,StringSE> implicitCollections) 暗黙の収集フィールドを、コンマ区切りの収集フィールド名にマップされた Class インスタンスで構成されるマップとして指定します。 |
void | setMapper(com.thoughtworks.xstream.mapper.Mapper mapper) 使用するカスタム XStream Mapper を設定します。 |
void | setMapperWrappers(ClassSE<? extends com.thoughtworks.xstream.mapper.MapperWrapper>... mapperWrappers) 1 つ以上のカスタム XStream MapperWrapper クラスを設定します。 |
void | setMarshallingStrategy(com.thoughtworks.xstream.MarshallingStrategy marshallingStrategy) 使用するカスタム XStream MarshallingStrategy を設定します。 |
void | setMode(int mode) 使用する XStream モードを設定します。 |
void | setNameCoder(com.thoughtworks.xstream.io.naming.NameCoder nameCoder) 使用するカスタム XStream NameCoder を設定します。 |
void | setOmittedFields(MapSE<ClassSE<?>,StringSE> omittedFields) コンマ区切りのフィールド名にマップされた Class インスタンスで構成されるマップとして、省略されたフィールドを指定します。 |
void | setReflectionProvider(com.thoughtworks.xstream.converters.reflection.ReflectionProvider reflectionProvider) 使用するカスタム XStream ReflectionProvider を設定します。 |
void | setStreamDriver(com.thoughtworks.xstream.io.HierarchicalStreamDriver streamDriver) リーダーとライターに使用される XStream HierarchicalStreamDriver を設定します。 |
void | setSupportedClasses(ClassSE<?>... supportedClasses) このマーシャラーがサポートするクラスを設定します。 |
void | setUseAttributeFor(MapSE<?,?> useAttributeFor) XML 属性を使用する型を設定します。 |
void | setUseAttributeForTypes(ClassSE<?>... useAttributeForTypes) XML 属性を使用する型を設定します。 |
boolean | supports(ClassSE<?> clazz) このマーシャラーが、指定された型のインスタンスをマーシャリングできるかどうかを示します。 |
protected ObjectSE | unmarshalDomNode(NodeSE node) 指定された DOM Node から非整列化するための抽象テンプレートメソッド。 |
ObjectSE | unmarshalInputStream(InputStreamSE inputStream) 指定された InputStream から非整列化するための抽象テンプレートメソッド。 |
ObjectSE | unmarshalInputStream(InputStreamSE inputStream, com.thoughtworks.xstream.converters.DataHolder dataHolder) |
ObjectSE | unmarshalReader(ReaderSE reader) 指定された Reader から非整列化するための抽象テンプレートメソッド。 |
ObjectSE | unmarshalReader(ReaderSE reader, com.thoughtworks.xstream.converters.DataHolder dataHolder) |
protected ObjectSE | unmarshalSaxReader(XMLReaderSE xmlReader, InputSourceSE inputSource) 特定の SAX XMLReader および InputSource を使用して非整列化するための抽象テンプレートメソッド。 |
protected ObjectSE | unmarshalStreamSource(StreamSourceSE streamSource) StreamSource を処理するためのテンプレートメソッド。 |
protected ObjectSE | unmarshalXmlEventReader(XMLEventReaderSE eventReader) 指定された Stax XMLEventReader から非整列化するための抽象テンプレートメソッド。 |
protected ObjectSE | unmarshalXmlStreamReader(XMLStreamReaderSE streamReader) 指定された Stax XMLStreamReader から非整列化するための抽象テンプレートメソッド。 |
buildDocument, createDocumentBuilder, createDocumentBuilderFactory, createXmlReader, isProcessExternalEntities, isSupportDtd, marshal, marshalDomResult, marshalSaxResult, marshalStaxResult, marshalStreamResult, setProcessExternalEntities, setSupportDtd, unmarshal, unmarshalDomSource, unmarshalSaxSource, unmarshalStaxSource
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public void setReflectionProvider(com.thoughtworks.xstream.converters.reflection.ReflectionProvider reflectionProvider)
ReflectionProvider
を設定します。public void setStreamDriver(com.thoughtworks.xstream.io.HierarchicalStreamDriver streamDriver)
HierarchicalStreamDriver
を設定します。Spring 4.0 以降、このストリームドライバーは XStream
コンストラクターにも渡されるため、ストリーミング関連のネイティブ API メソッド自体によって使用されます。
public void setMapper(com.thoughtworks.xstream.mapper.Mapper mapper)
Mapper
を設定します。public void setMapperWrappers(ClassSE<? extends com.thoughtworks.xstream.mapper.MapperWrapper>... mapperWrappers)
MapperWrapper
クラスを設定します。これらの各クラスには、型 Mapper
または MapperWrapper
の単一の引数を持つコンストラクターが必要です。public void setConverterLookup(com.thoughtworks.xstream.converters.ConverterLookup converterLookup)
ConverterLookup
を設定します。また、指定されたリファレンスがそれを実装する場合、ConverterRegistry
としても使用されます。DefaultConverterLookup
public void setConverterRegistry(com.thoughtworks.xstream.converters.ConverterRegistry converterRegistry)
ConverterRegistry
を設定します。setConverterLookup(com.thoughtworks.xstream.converters.ConverterLookup)
, DefaultConverterLookup
public void setConverters(com.thoughtworks.xstream.converters.ConverterMatcher... converters)
Converters
または SingleValueConverters
が XStream
インスタンスに登録されるように設定します。Converter
, SingleValueConverter
public void setMarshallingStrategy(com.thoughtworks.xstream.MarshallingStrategy marshallingStrategy)
MarshallingStrategy
を設定します。public void setMode(int mode)
XStream.ID_REFERENCES
, XStream.NO_REFERENCES
public void setAliases(MapSE<StringSE,?> aliases)
キーはエイリアスです。値は、Class
インスタンスまたは String クラス名のいずれかです。
XStream.alias(String, Class)
public void setAliasesByType(MapSE<StringSE,?> aliasesByType)
この型に割り当て可能なクラスはすべて、同じ名前にエイリアスされます。キーはエイリアスです。値は、Class
インスタンスまたは String クラス名のいずれかです。
XStream.aliasType(String, Class)
public void setFieldAliases(MapSE<StringSE,StringSE> fieldAliases)
XStream.aliasField(String, Class, String)
public void setUseAttributeForTypes(ClassSE<?>... useAttributeForTypes)
XStream.useAttributeFor(Class)
public void setUseAttributeFor(MapSE<?,?> useAttributeFor)
<String, Class>
ペアのいずれかを含めることができます。その場合、XStream.useAttributeFor(String, Class)
が呼び出されます。または、マップに <Class, String>
または <Class, List<String>>
ペアを含めることができます。これにより、XStream.useAttributeFor(Class, String)
呼び出しが発生します。public void setImplicitCollections(MapSE<ClassSE<?>,StringSE> implicitCollections)
Class
インスタンスで構成されるマップとして指定します。XStream.addImplicitCollection(Class, String)
public void setOmittedFields(MapSE<ClassSE<?>,StringSE> omittedFields)
Class
インスタンスで構成されるマップとして、省略されたフィールドを指定します。XStream.omitField(Class, String)
public void setAnnotatedClasses(ClassSE<?>... annotatedClasses)
XStream.processAnnotations(Class[])
public void setAutodetectAnnotations(boolean autodetectAnnotations)
注意 : 自動検出は、XML ストリームの処理中に XStream インスタンスが構成されていることを意味し、潜在的な同時実行性の問題を引き起こします。
XStream.autodetectAnnotations(boolean)
public void setEncoding(StringSE encoding)
DEFAULT_ENCODING
protected StringSE getDefaultEncoding()
AbstractMarshaller
null
を決定します。 デフォルトの実装は null
を返します。
AbstractMarshaller
の getDefaultEncoding
public void setNameCoder(com.thoughtworks.xstream.io.naming.NameCoder nameCoder)
NameCoder
を設定します。デフォルトは XmlFriendlyNameCoder
です。public void setSupportedClasses(ClassSE<?>... supportedClasses)
このプロパティが空の場合(デフォルト)、すべてのクラスがサポートされます。
supports(Class)
public void setBeanClassLoader(ClassLoaderSE classLoader)
BeanClassLoaderAware
class loader
SE を Bean インスタンスに提供するコールバック。 通常の Bean プロパティの設定後、ただし InitializingBean's
InitializingBean.afterPropertiesSet()
メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanClassLoaderAware
の setBeanClassLoader
classLoader
- 所有クラスローダー public void afterPropertiesSet()
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
protected com.thoughtworks.xstream.XStream buildXStream()
constructXStream()
、configureXStream(com.thoughtworks.xstream.XStream)
、customizeXStream(com.thoughtworks.xstream.XStream)
に委譲します。protected com.thoughtworks.xstream.XStream constructXStream()
XStream
インスタンス protected void configureXStream(com.thoughtworks.xstream.XStream xstream)
xstream
- XStream
インスタンス protected void customizeXStream(com.thoughtworks.xstream.XStream xstream)
XStream
のカスタマイズを可能にするテンプレート。デフォルトの実装は空です。
xstream
- XStream
インスタンス public final com.thoughtworks.xstream.XStream getXStream()
注: このメソッドは、Spring 4.0 の時点で最終としてマークされています。マーシャリングのために完全に構成された XStream にアクセスするために使用できますが、構成目的では使用できなくなりました。
Spring Framework 5.1.16 の時点で、このメソッドによって返される XStream
インスタンスの作成はスレッドセーフです。
public boolean supports(ClassSE<?> clazz)
Marshaller
Marshaller
の supports
Unmarshaller
の supports
clazz
- このマーシャラーがマーシャリングできるかどうか尋ねられているクラス true
。それ以外の場合は false
protected void marshalDomNode(ObjectSE graph, NodeSE node) throws XmlMappingException
AbstractMarshaller
Node
にマーシャリングする抽象テンプレートメソッド。 実際には、ノードは Document
ノード、DocumentFragment
ノード、Element
ノードです。つまり、子を受け入れるノードです。
AbstractMarshaller
の marshalDomNode
graph
- マーシャリングするオブジェクトグラフのルート node
- 結果ツリーを含む DOM ノード XmlMappingException
- 指定されたオブジェクトを DOM ノードに整列化できない場合 Document
SE, DocumentFragment
SE, Element
SEprotected void marshalXmlEventWriter(ObjectSE graph, XMLEventWriterSE eventWriter) throws XmlMappingException
AbstractMarshaller
XMLEventWriter
にマーシャリングする抽象テンプレートメソッド。AbstractMarshaller
の marshalXmlEventWriter
graph
- マーシャリングするオブジェクトグラフのルート eventWriter
- 書き込む XMLEventWriter
XmlMappingException
- 指定されたオブジェクトを DOM ノードに整列化できない場合 protected void marshalXmlStreamWriter(ObjectSE graph, XMLStreamWriterSE streamWriter) throws XmlMappingException
AbstractMarshaller
XMLStreamWriter
にマーシャリングする抽象テンプレートメソッド。AbstractMarshaller
の marshalXmlStreamWriter
graph
- マーシャリングするオブジェクトグラフのルート streamWriter
- 書き込む XMLStreamWriter
XmlMappingException
- 指定されたオブジェクトを DOM ノードに整列化できない場合 protected void marshalSaxHandlers(ObjectSE graph, ContentHandlerSE contentHandler, @Nullable LexicalHandlerSE lexicalHandler) throws XmlMappingException
AbstractMarshaller
ContentHandler
にマーシャリングする抽象テンプレートメソッド。AbstractMarshaller
の marshalSaxHandlers
graph
- マーシャリングするオブジェクトグラフのルート contentHandler
- SAX ContentHandler
lexicalHandler
- SAX2 LexicalHandler
null
にすることができます。XmlMappingException
- 指定されたオブジェクトをハンドラーにマーシャリングできない場合 public void marshalOutputStream(ObjectSE graph, OutputStreamSE outputStream) throws XmlMappingException, IOExceptionSE
AbstractMarshaller
OutputStream
にマーシャリングする抽象テンプレートメソッド。AbstractMarshaller
の marshalOutputStream
graph
- マーシャリングするオブジェクトグラフのルート outputStream
- 書き込む OutputStream
XmlMappingException
- 指定されたオブジェクトをライターにマーシャリングできない場合 IOExceptionSE
- I/O 例外が発生した場合 public void marshalOutputStream(ObjectSE graph, OutputStreamSE outputStream, @Nullable com.thoughtworks.xstream.converters.DataHolder dataHolder) throws XmlMappingException, IOExceptionSE
public void marshalWriter(ObjectSE graph, WriterSE writer) throws XmlMappingException, IOExceptionSE
AbstractMarshaller
Writer
にマーシャリングする抽象テンプレートメソッド。AbstractMarshaller
の marshalWriter
graph
- マーシャリングするオブジェクトグラフのルート writer
- 書き込む Writer
XmlMappingException
- 指定されたオブジェクトをライターにマーシャリングできない場合 IOExceptionSE
- I/O 例外が発生した場合 public void marshalWriter(ObjectSE graph, WriterSE writer, @Nullable com.thoughtworks.xstream.converters.DataHolder dataHolder) throws XmlMappingException, IOExceptionSE
protected ObjectSE unmarshalStreamSource(StreamSourceSE streamSource) throws XmlMappingException, IOExceptionSE
AbstractMarshaller
StreamSource
を処理するためのテンプレートメソッド。 この実装は unmarshalInputStream
または unmarshalReader
に委譲します。
AbstractMarshaller
の unmarshalStreamSource
streamSource
- StreamSource
XmlMappingException
- 指定されたソースをオブジェクトにマップできない場合 IOExceptionSE
- I/O 例外が発生した場合 protected ObjectSE unmarshalDomNode(NodeSE node) throws XmlMappingException
AbstractMarshaller
Node
から非整列化するための抽象テンプレートメソッド。AbstractMarshaller
の unmarshalDomNode
node
- 非整列化するオブジェクトを含む DOM ノード XmlMappingException
- 指定された DOM ノードをオブジェクトにマップできない場合 protected ObjectSE unmarshalXmlEventReader(XMLEventReaderSE eventReader) throws XmlMappingException
AbstractMarshaller
XMLEventReader
から非整列化するための抽象テンプレートメソッド。AbstractMarshaller
の unmarshalXmlEventReader
eventReader
- 読み込む XMLEventReader
XmlMappingException
- 指定されたイベントリーダーをオブジェクトに変換できない場合 protected ObjectSE unmarshalXmlStreamReader(XMLStreamReaderSE streamReader) throws XmlMappingException
AbstractMarshaller
XMLStreamReader
から非整列化するための抽象テンプレートメソッド。AbstractMarshaller
の unmarshalXmlStreamReader
streamReader
- 読み込む XMLStreamReader
XmlMappingException
- 指定されたストリームリーダーをオブジェクトに変換できない場合 protected ObjectSE unmarshalSaxReader(XMLReaderSE xmlReader, InputSourceSE inputSource) throws XmlMappingException, IOExceptionSE
AbstractMarshaller
XMLReader
および InputSource
を使用して非整列化するための抽象テンプレートメソッド。AbstractMarshaller
の unmarshalSaxReader
xmlReader
- 解析する SAX XMLReader
inputSource
- 解析する入力ソース XmlMappingException
- 指定されたリーダーと入力ソースをオブジェクトに変換できない場合 IOExceptionSE
- I/O 例外が発生した場合 public ObjectSE unmarshalInputStream(InputStreamSE inputStream) throws XmlMappingException, IOExceptionSE
AbstractMarshaller
InputStream
から非整列化するための抽象テンプレートメソッド。AbstractMarshaller
の unmarshalInputStream
inputStream
- 読み込む InputStreamStream
XmlMappingException
- 指定されたストリームをオブジェクトに変換できない場合 IOExceptionSE
- I/O 例外が発生した場合 public ObjectSE unmarshalInputStream(InputStreamSE inputStream, @Nullable com.thoughtworks.xstream.converters.DataHolder dataHolder) throws XmlMappingException, IOExceptionSE
public ObjectSE unmarshalReader(ReaderSE reader) throws XmlMappingException, IOExceptionSE
AbstractMarshaller
Reader
から非整列化するための抽象テンプレートメソッド。AbstractMarshaller
の unmarshalReader
reader
- 読み込む Reader
XmlMappingException
- 指定されたリーダーをオブジェクトに変換できない場合 IOExceptionSE
- I/O 例外が発生した場合 public ObjectSE unmarshalReader(ReaderSE reader, @Nullable com.thoughtworks.xstream.converters.DataHolder dataHolder) throws XmlMappingException, IOExceptionSE
protected XmlMappingException convertXStreamException(ExceptionSE ex, boolean marshalling)
org.springframework.oxm
階層からの適切な例外に変換します。XStream 自体は例外階層でこの区別を行わないため、ブール化フラグを使用して、マーシャリングまたはアンマーシャリング中にこの例外が発生するかどうかを示します。
ex
- 発生した XStream 例外 marshalling
- マーシャリング中に例外が発生するか(true
)、アンマーシャリングするかを示します (false
)XmlMappingException