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() 指定されたすべての Bean プロパティを設定した(そして BeanFactoryAware と ApplicationContextAware を満たした)後に BeanFactory によって呼び出されます。 |
protected com.thoughtworks.xstream.XStream | buildXStream()constructXStream()、configureXStream(com.thoughtworks.xstream.XStream)、customizeXStream(com.thoughtworks.xstream.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 loaderSE を 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, unmarshalStaxSourcecloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic 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 としても使用されます。DefaultConverterLookuppublic void setConverterRegistry(com.thoughtworks.xstream.converters.ConverterRegistry converterRegistry)
ConverterRegistry を設定します。setConverterLookup(com.thoughtworks.xstream.converters.ConverterLookup), DefaultConverterLookuppublic void setConverters(com.thoughtworks.xstream.converters.ConverterMatcher... converters)
Converters または SingleValueConverters が XStream インスタンスに登録されるように設定します。Converter, SingleValueConverterpublic void setMarshallingStrategy(com.thoughtworks.xstream.MarshallingStrategy marshallingStrategy)
MarshallingStrategy を設定します。public void setMode(int mode)
XStream.ID_REFERENCES, XStream.NO_REFERENCESpublic 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_ENCODINGprotected StringSE getDefaultEncoding()
AbstractMarshallernull を決定します。 デフォルトの実装は 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)
BeanClassLoaderAwareclass loaderSE を Bean インスタンスに提供するコールバック。 通常の Bean プロパティの設定後、ただし InitializingBean's InitializingBean.afterPropertiesSet() メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanClassLoaderAware の setBeanClassLoader classLoader - 所有クラスローダー public void afterPropertiesSet()
InitializingBeanこのメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されている場合にのみ可能な初期化を実行し、設定ミスの場合に例外をスローできます。
InitializingBean の afterPropertiesSet protected com.thoughtworks.xstream.XStream buildXStream()
constructXStream()、configureXStream(com.thoughtworks.xstream.XStream)、customizeXStream(com.thoughtworks.xstream.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 にアクセスするために使用できますが、構成目的では使用できなくなりました。
public boolean supports(ClassSE<?> clazz)
MarshallerMarshaller の supports Unmarshaller の supports clazz - このマーシャラーがマーシャリングできるかどうか尋ねられているクラス true。それ以外の場合は false protected void marshalDomNode(ObjectSE graph, NodeSE node) throws XmlMappingException
AbstractMarshallerNode にマーシャリングする抽象テンプレートメソッド。 実際には、ノードは Document ノード、DocumentFragment ノード、Element ノードです。つまり、子を受け入れるノードです。
AbstractMarshaller の marshalDomNode graph - マーシャリングするオブジェクトグラフのルート node - 結果ツリーを含む DOM ノード XmlMappingException - 指定されたオブジェクトを DOM ノードに整列化できない場合 DocumentSE, DocumentFragmentSE, ElementSEprotected void marshalXmlEventWriter(ObjectSE graph, XMLEventWriterSE eventWriter) throws XmlMappingException
AbstractMarshallerXMLEventWriter にマーシャリングする抽象テンプレートメソッド。AbstractMarshaller の marshalXmlEventWriter graph - マーシャリングするオブジェクトグラフのルート eventWriter - 書き込む XMLEventWriter XmlMappingException - 指定されたオブジェクトを DOM ノードに整列化できない場合 protected void marshalXmlStreamWriter(ObjectSE graph, XMLStreamWriterSE streamWriter) throws XmlMappingException
AbstractMarshallerXMLStreamWriter にマーシャリングする抽象テンプレートメソッド。AbstractMarshaller の marshalXmlStreamWriter graph - マーシャリングするオブジェクトグラフのルート streamWriter - 書き込む XMLStreamWriter XmlMappingException - 指定されたオブジェクトを DOM ノードに整列化できない場合 protected void marshalSaxHandlers(ObjectSE graph, ContentHandlerSE contentHandler, @Nullable LexicalHandlerSE lexicalHandler) throws XmlMappingException
AbstractMarshallerContentHandler にマーシャリングする抽象テンプレートメソッド。AbstractMarshaller の marshalSaxHandlers graph - マーシャリングするオブジェクトグラフのルート contentHandler - SAX ContentHandlerlexicalHandler - SAX2 LexicalHandler null にすることができます。XmlMappingException - 指定されたオブジェクトをハンドラーにマーシャリングできない場合 public void marshalOutputStream(ObjectSE graph, OutputStreamSE outputStream) throws XmlMappingException, IOExceptionSE
AbstractMarshallerOutputStream にマーシャリングする抽象テンプレートメソッド。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
AbstractMarshallerWriter にマーシャリングする抽象テンプレートメソッド。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
AbstractMarshallerStreamSource を処理するためのテンプレートメソッド。 この実装は unmarshalInputStream または unmarshalReader に委譲します。
AbstractMarshaller の unmarshalStreamSource streamSource - StreamSourceXmlMappingException - 指定されたソースをオブジェクトにマップできない場合 IOExceptionSE - I/O 例外が発生した場合 protected ObjectSE unmarshalDomNode(NodeSE node) throws XmlMappingException
AbstractMarshallerNode から非整列化するための抽象テンプレートメソッド。AbstractMarshaller の unmarshalDomNode node - 非整列化するオブジェクトを含む DOM ノード XmlMappingException - 指定された DOM ノードをオブジェクトにマップできない場合 protected ObjectSE unmarshalXmlEventReader(XMLEventReaderSE eventReader) throws XmlMappingException
AbstractMarshallerXMLEventReader から非整列化するための抽象テンプレートメソッド。AbstractMarshaller の unmarshalXmlEventReader eventReader - 読み込む XMLEventReader XmlMappingException - 指定されたイベントリーダーをオブジェクトに変換できない場合 protected ObjectSE unmarshalXmlStreamReader(XMLStreamReaderSE streamReader) throws XmlMappingException
AbstractMarshallerXMLStreamReader から非整列化するための抽象テンプレートメソッド。AbstractMarshaller の unmarshalXmlStreamReader streamReader - 読み込む XMLStreamReader XmlMappingException - 指定されたストリームリーダーをオブジェクトに変換できない場合 protected ObjectSE unmarshalSaxReader(XMLReaderSE xmlReader, InputSourceSE inputSource) throws XmlMappingException, IOExceptionSE
AbstractMarshallerXMLReader および InputSource を使用して非整列化するための抽象テンプレートメソッド。AbstractMarshaller の unmarshalSaxReader xmlReader - 解析する SAX XMLReader inputSource - 解析する入力ソース XmlMappingException - 指定されたリーダーと入力ソースをオブジェクトに変換できない場合 IOExceptionSE - I/O 例外が発生した場合 public ObjectSE unmarshalInputStream(InputStreamSE inputStream) throws XmlMappingException, IOExceptionSE
AbstractMarshallerInputStream から非整列化するための抽象テンプレートメソッド。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
AbstractMarshallerReader から非整列化するための抽象テンプレートメソッド。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