Package org.springframework.scripting.support

# Class ResourceScriptSource

java.lang.Object
org.springframework.scripting.support.ResourceScriptSource

All Implemented Interfaces:
  `ScriptSource`

public class ResourceScriptSource extends Object implements ScriptSource
`ScriptSource` implementation based on Spring's `Resource` abstraction. Loads the script text from the underlying Resource's `File` or `InputStream`, and tracks the last-modified timestamp of the file (if possible).

Since:
  2.0
Author:
  Rob Harrop, Juergen Hoeller
See Also:
  - `InputStreamSource.getInputStream()`
  - `Resource.getFile()`
  - `ResourceLoader`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`
Logger available to subclasses.

## Constructor Summary

Constructors
Constructor
Description
`ResourceScriptSource(org.springframework.core.io.Resource resource)`
Create a new ResourceScriptSource for the given resource.
`ResourceScriptSource(org.springframework.core.io.support.EncodedResource resource)`
Create a new ResourceScriptSource for the given resource.

## Method Summary

Modifier and Type
Method
Description
`final org.springframework.core.io.Resource`
`getResource()`
Return the `Resource` to load the script from.
`String`
`getScriptAsString()`
Retrieve the current script source text as String.
`boolean`
`isModified()`
Indicate whether the underlying script data has been modified since the last time `ScriptSource.getScriptAsString()` was called.
`protected long`
`retrieveLastModifiedTime()`
Retrieve the current last-modified timestamp of the underlying resource.
`void`
`setEncoding(String encoding)`
Set the encoding used for reading the script resource.
`String`
`suggestedClassName()`
Determine a class name for the underlying script.
`String`
`toString()`

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

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

## Field Details

### logger

protected final org.apache.commons.logging.Log logger
Logger available to subclasses.

## Constructor Details

### ResourceScriptSource

public ResourceScriptSource(org.springframework.core.io.support.EncodedResource resource)
Create a new ResourceScriptSource for the given resource.

Parameters:
  `resource` - the EncodedResource to load the script from

### ResourceScriptSource

public ResourceScriptSource(org.springframework.core.io.Resource resource)
Create a new ResourceScriptSource for the given resource.

Parameters:
  `resource` - the Resource to load the script from (using UTF-8 encoding)

## Method Details

### getResource

public final org.springframework.core.io.Resource getResource()
Return the `Resource` to load the script from.

### setEncoding

public void setEncoding(@Nullable String encoding)
Set the encoding used for reading the script resource.

The default value for regular Resources is "UTF-8". A `null` value implies the platform default.

### getScriptAsString

public String getScriptAsString() throws IOException
Description copied from interface: `ScriptSource`
Retrieve the current script source text as String.

Specified by:
  `getScriptAsString` in interface `ScriptSource`
Returns:
  the script text
Throws:
  `IOException` - if script retrieval failed

### isModified

public boolean isModified()
Description copied from interface: `ScriptSource`
Indicate whether the underlying script data has been modified since the last time `ScriptSource.getScriptAsString()` was called. Returns `true` if the script has not been read yet.

Specified by:
  `isModified` in interface `ScriptSource`
Returns:
  whether the script data has been modified

### retrieveLastModifiedTime

protected long retrieveLastModifiedTime()
Retrieve the current last-modified timestamp of the underlying resource.

Returns:
  the current timestamp, or 0 if not determinable

### suggestedClassName

@Nullable public String suggestedClassName()
Description copied from interface: `ScriptSource`
Determine a class name for the underlying script.

Specified by:
  `suggestedClassName` in interface `ScriptSource`
Returns:
  the suggested class name, or `null` if none available

### toString

public String toString()

Overrides:
  `toString` in class `Object`