All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mozilla.javascript.commonjs.module.provider.ModuleSource Maven / Gradle / Ivy

Go to download

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