
org.mozilla.javascript.commonjs.module.provider.ModuleSource Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rhino-runtime Show documentation
Show all versions of rhino-runtime Show documentation
Rhino is an open-source implementation of JavaScript written entirely in Java.
It is typically embedded into Java applications to provide scripting to end users.
The newest version!
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.javascript.commonjs.module.provider;
import java.io.Reader;
import java.io.Serializable;
import java.net.URI;
/**
* Represents the source text of the module as a tuple of a reader, a URI, a security domain, and a
* cache validator.
*
* Cache validators
*
* Validators are used by caches subclassed from {@link CachingModuleScriptProviderBase} to avoid
* repeated loading of unmodified resources as well as automatic reloading of modified resources.
* Such a validator can be any value that can be used to detect modification or non-modification of
* the resource that provided the source of the module. It can be as simple as a tuple of a URI or a
* file path, and a last-modified date, or an ETag (in case of HTTP). It is left to the
* implementation. It is also allowed to carry expiration information (i.e. in case of HTTP
* expiration header, or if a default expiration is used by the source provider to avoid too
* frequent lookup of the resource), and to short-circuit the validation in case the validator
* indicates the cached representation has not yet expired. All these are plainly recommendations;
* the validators are considered opaque and should only make sure to implement {@link
* Object#equals(Object)} as caches themselves can rely on it to compare them semantically. Also, it
* is advisable to have them be serializable.
*
* @author Attila Szegedi
* @version $Id: ModuleSource.java,v 1.3 2011/04/07 20:26:12 hannes%helma.at Exp $
*/
public class ModuleSource implements Serializable {
private static final long serialVersionUID = 1L;
private final Reader reader;
private final Object securityDomain;
private final URI uri;
private final URI base;
private final Object validator;
/**
* Creates a new module source.
*
* @param reader the reader returning the source text of the module.
* @param securityDomain the object representing the security domain for the module's source
* (passed to Rhino script compiler).
* @param uri the URI of the module's source text
* @param validator a validator that can be used for subsequent cache validation of the source
* text.
*/
public ModuleSource(Reader reader, Object securityDomain, URI uri, URI base, Object validator) {
this.reader = reader;
this.securityDomain = securityDomain;
this.uri = uri;
this.base = base;
this.validator = validator;
}
/**
* Returns the reader returning the source text of the module. Note that subsequent calls to
* this method return the same object, thus it is not possible to read the source twice.
*
* @return the reader returning the source text of the module.
*/
public Reader getReader() {
return reader;
}
/**
* Returns the object representing the security domain for the module's source.
*
* @return the object representing the security domain for the module's source.
*/
public Object getSecurityDomain() {
return securityDomain;
}
/**
* Returns the URI of the module source text.
*
* @return the URI of the module source text.
*/
public URI getUri() {
return uri;
}
/**
* Returns the base URI from which this module source was loaded, or null if it was loaded from
* an absolute URI.
*
* @return the base URI, or null.
*/
public URI getBase() {
return base;
}
/**
* Returns the validator that can be used for subsequent cache validation of the source text.
*
* @return the validator that can be used for subsequent cache validation of the source text.
*/
public Object getValidator() {
return validator;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy