org.springframework.beans.propertyeditors

## Class URIEditor

- java.lang.Object
- - java.beans.PropertyEditorSupport
  - - org.springframework.beans.propertyeditors.URIEditor

- All Implemented Interfaces:
    PropertyEditor

      public class URIEditor
      extends PropertyEditorSupport

  Editor for `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.

  Since:
    2.0.2
  Author:
    Juergen Hoeller
  See Also:
    `URI`, `URLEditor`

- - ### Constructor Summary

    Constructors
    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(ClassLoader classLoader)` Create a new URIEditor, using the given ClassLoader to resolve "classpath:" locations into physical resource URLs.
    `URIEditor(ClassLoader classLoader, boolean encode)` Create a new URIEditor, using the given ClassLoader to resolve "classpath:" locations into physical resource URLs.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected URI` | `createURI(String value)` Create a URI instance for the given (resolved) String value.
    `String` | `getAsText()`
    `void` | `setAsText(String text)`

    - ### Methods inherited from class java.beans.PropertyEditorSupport

      `addPropertyChangeListener, firePropertyChange, getCustomEditor, getJavaInitializationString, getSource, getTags, getValue, isPaintable, paintValue, removePropertyChangeListener, setSource, setValue, supportsCustomEditor`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### URIEditor

          public URIEditor()

      Create a new, encoding URIEditor, converting "classpath:" locations into standard URIs (not trying to resolve them into physical resources).

    - #### URIEditor

          public URIEditor(boolean encode)

      Create a new URIEditor, converting "classpath:" locations into standard URIs (not trying to resolve them into physical resources).
      Parameters:
        `encode` - indicates whether Strings will be encoded or not

    - #### URIEditor

          public URIEditor(ClassLoader classLoader)

      Create a new URIEditor, using the given ClassLoader to resolve "classpath:" locations into physical resource URLs.
      Parameters:
        `classLoader` - the ClassLoader to use for resolving "classpath:" locations (may be `null` to indicate the default ClassLoader)

    - #### URIEditor

          public URIEditor(ClassLoader classLoader,
                   boolean encode)

      Create a new URIEditor, using the given ClassLoader to resolve "classpath:" locations into physical resource URLs.
      Parameters:
        `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 not

  - ### Method Detail

    - #### setAsText

          public void setAsText(String text)
                         throws IllegalArgumentException

      Specified by:
        `setAsText` in interface `PropertyEditor`
      Overrides:
        `setAsText` in class `PropertyEditorSupport`
      Throws:
        `IllegalArgumentException`

    - #### createURI

          protected URI createURI(String value)
                           throws URISyntaxException

      Create a URI instance for the given (resolved) String value.

      The default implementation encodes the value into a RFC 2396 compliant URI.

      Parameters:
        `value` - the value to convert into a URI instance
      Returns:
        the URI instance
      Throws:
        `URISyntaxException` - if URI conversion failed

    - #### getAsText

          public String getAsText()

      Specified by:
        `getAsText` in interface `PropertyEditor`
      Overrides:
        `getAsText` in class `PropertyEditorSupport`