public class URIEditor
extends java.beans.PropertyEditorSupport
java.net.URI
, to directly populate a URI property
instead of using a String property as bridge.
Supports Spring-style URI notation: any fully qualified standard URI ("file:", "http:", etc) and Spring's special "classpath:" pseudo-URL, which will be resolved to a corresponding URI.
By default, this editor will encode Strings into URIs. For instance,
a space will be encoded into %20
. This behavior can be changed
by calling the URIEditor(boolean)
constructor.
Note: A URI is more relaxed than a URL in that it does not require a valid protocol to be specified. Any scheme within a valid URI syntax is allowed, even without a matching protocol handler being registered.
URI
,
URLEditor
Modifier and Type | Field and Description |
---|---|
private java.lang.ClassLoader |
classLoader |
private boolean |
encode |
Constructor and Description |
---|
URIEditor()
Create a new, encoding URIEditor, converting "classpath:" locations into
standard URIs (not trying to resolve them into physical resources).
|
URIEditor(boolean encode)
Create a new URIEditor, converting "classpath:" locations into
standard URIs (not trying to resolve them into physical resources).
|
URIEditor(java.lang.ClassLoader classLoader)
Create a new URIEditor, using the given ClassLoader to resolve
"classpath:" locations into physical resource URLs.
|
URIEditor(java.lang.ClassLoader classLoader,
boolean encode)
Create a new URIEditor, using the given ClassLoader to resolve
"classpath:" locations into physical resource URLs.
|
Modifier and Type | Method and Description |
---|---|
protected java.net.URI |
createURI(java.lang.String value)
Create a URI instance for the given (resolved) String value.
|
java.lang.String |
getAsText() |
void |
setAsText(java.lang.String text) |
@Nullable private final java.lang.ClassLoader classLoader
private final boolean encode
public URIEditor()
public URIEditor(boolean encode)
encode
- indicates whether Strings will be encoded or notpublic URIEditor(@Nullable java.lang.ClassLoader classLoader)
classLoader
- the ClassLoader to use for resolving "classpath:" locations
(may be null
to indicate the default ClassLoader)public URIEditor(@Nullable java.lang.ClassLoader classLoader, boolean encode)
classLoader
- the ClassLoader to use for resolving "classpath:" locations
(may be null
to indicate the default ClassLoader)encode
- indicates whether Strings will be encoded or notpublic void setAsText(java.lang.String text) throws java.lang.IllegalArgumentException
setAsText
in interface java.beans.PropertyEditor
setAsText
in class java.beans.PropertyEditorSupport
java.lang.IllegalArgumentException
protected java.net.URI createURI(java.lang.String value) throws java.net.URISyntaxException
The default implementation encodes the value into a RFC 2396 compliant URI.
value
- the value to convert into a URI instancejava.net.URISyntaxException
- if URI conversion failedpublic java.lang.String getAsText()
getAsText
in interface java.beans.PropertyEditor
getAsText
in class java.beans.PropertyEditorSupport