public class DefaultPropertiesPersister extends Object implements PropertiesPersister
PropertiesPersister
interface.
Follows the native parsing of java.util.Properties
.
Allows for reading from any Reader and writing to any Writer, for example
to specify a charset for a properties file. This is a capability that standard
java.util.Properties
unfortunately lacks up until JDK 1.5:
You can only load files using the ISO-8859-1 charset there.
Loading from and storing to a stream delegates to Properties.load
and Properties.store
, respectively, to be fully compatible with
the Unicode conversion as implemented by the JDK Properties class. On JDK 1.6,
Properties.load/store
will also be used for readers/writers,
effectively turning this class into a plain backwards compatibility adapter.
The persistence code that works with Reader/Writer follows the JDK's parsing strategy but does not implement Unicode conversion, because the Reader/Writer should already apply proper decoding/encoding of characters. If you use prefer to escape unicode characters in your properties files, do not specify an encoding for a Reader/Writer (like ReloadableResourceBundleMessageSource's "defaultEncoding" and "fileEncodings" properties).
As of Spring 1.2.2, this implementation also supports properties XML files,
through the loadFromXml
and storeToXml
methods.
The default implementations delegate to JDK 1.5's corresponding methods,
throwing an exception if running on an older JDK. Those implementations
could be subclassed to apply custom XML handling on JDK 1.4, for example.
Properties
,
Properties.load(java.io.Reader)
,
Properties.store(java.io.Writer, java.lang.String)
,
ReloadableResourceBundleMessageSource.setPropertiesPersister(org.springframework.util.PropertiesPersister)
,
ReloadableResourceBundleMessageSource.setDefaultEncoding(java.lang.String)
,
ReloadableResourceBundleMessageSource.setFileEncodings(java.util.Properties)
Constructor and Description |
---|
DefaultPropertiesPersister() |
Modifier and Type | Method and Description |
---|---|
protected void |
doLoad(Properties props,
Reader reader) |
protected void |
doStore(Properties props,
Writer writer,
String header) |
protected boolean |
endsWithContinuationMarker(String line) |
protected String |
escape(String str,
boolean isKey) |
void |
load(Properties props,
InputStream is)
Load properties from the given InputStream into the given
Properties object.
|
void |
load(Properties props,
Reader reader)
Load properties from the given Reader into the given
Properties object.
|
void |
loadFromXml(Properties props,
InputStream is)
Load properties from the given XML InputStream into the
given Properties object.
|
void |
store(Properties props,
OutputStream os,
String header)
Write the contents of the given Properties object to the
given OutputStream.
|
void |
store(Properties props,
Writer writer,
String header)
Write the contents of the given Properties object to the
given Writer.
|
void |
storeToXml(Properties props,
OutputStream os,
String header)
Write the contents of the given Properties object to the
given XML OutputStream.
|
void |
storeToXml(Properties props,
OutputStream os,
String header,
String encoding)
Write the contents of the given Properties object to the
given XML OutputStream.
|
protected String |
unescape(String str) |
public void load(Properties props, InputStream is) throws IOException
PropertiesPersister
load
in interface PropertiesPersister
props
- the Properties object to load intois
- the InputStream to load fromIOException
- in case of I/O errorsProperties.load(java.io.Reader)
public void load(Properties props, Reader reader) throws IOException
PropertiesPersister
load
in interface PropertiesPersister
props
- the Properties object to load intoreader
- the Reader to load fromIOException
- in case of I/O errorsprotected void doLoad(Properties props, Reader reader) throws IOException
IOException
protected boolean endsWithContinuationMarker(String line)
public void store(Properties props, OutputStream os, String header) throws IOException
PropertiesPersister
store
in interface PropertiesPersister
props
- the Properties object to storeos
- the OutputStream to write toheader
- the description of the property listIOException
- in case of I/O errorsProperties.store(java.io.Writer, java.lang.String)
public void store(Properties props, Writer writer, String header) throws IOException
PropertiesPersister
store
in interface PropertiesPersister
props
- the Properties object to storewriter
- the Writer to write toheader
- the description of the property listIOException
- in case of I/O errorsprotected void doStore(Properties props, Writer writer, String header) throws IOException
IOException
public void loadFromXml(Properties props, InputStream is) throws IOException
PropertiesPersister
loadFromXml
in interface PropertiesPersister
props
- the Properties object to load intois
- the InputStream to load fromIOException
- in case of I/O errorsProperties.loadFromXML(java.io.InputStream)
public void storeToXml(Properties props, OutputStream os, String header) throws IOException
PropertiesPersister
storeToXml
in interface PropertiesPersister
props
- the Properties object to storeos
- the OutputStream to write toheader
- the description of the property listIOException
- in case of I/O errorsProperties.storeToXML(java.io.OutputStream, String)
public void storeToXml(Properties props, OutputStream os, String header, String encoding) throws IOException
PropertiesPersister
storeToXml
in interface PropertiesPersister
props
- the Properties object to storeos
- the OutputStream to write toheader
- the description of the property listencoding
- the encoding to useIOException
- in case of I/O errorsProperties.storeToXML(java.io.OutputStream, String, String)