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 Show documentation
Show all versions of rhino 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 - 2024 Weber Informatics LLC | Privacy Policy