* Make TypeManager.createPrototypes() and TypeManager.checkPrototypes() throw IOException
* Propagate IOException in the callers of the above methods
This commit is contained in:
parent
e5514d7099
commit
11257b4765
5 changed files with 16 additions and 18 deletions
|
@ -277,7 +277,11 @@ public final class Application implements IPathElement, Runnable {
|
||||||
|
|
||||||
// create and init type mananger
|
// create and init type mananger
|
||||||
typemgr = new TypeManager(this);
|
typemgr = new TypeManager(this);
|
||||||
typemgr.createPrototypes();
|
try {
|
||||||
|
typemgr.createPrototypes();
|
||||||
|
} catch (Exception x) {
|
||||||
|
logError("Error creating prototypes", x);
|
||||||
|
}
|
||||||
|
|
||||||
// set the context classloader. Note that this must be done before
|
// set the context classloader. Note that this must be done before
|
||||||
// using the logging framework so that a new LogFactory gets created
|
// using the logging framework so that a new LogFactory gets created
|
||||||
|
|
|
@ -94,14 +94,14 @@ public final class TypeManager {
|
||||||
* Run through application's prototype directories and create prototypes, but don't
|
* Run through application's prototype directories and create prototypes, but don't
|
||||||
* compile or evaluate any scripts.
|
* compile or evaluate any scripts.
|
||||||
*/
|
*/
|
||||||
public void createPrototypes() {
|
public void createPrototypes() throws IOException {
|
||||||
// create standard prototypes.
|
// create standard prototypes.
|
||||||
for (int i = 0; i < standardTypes.length; i++) {
|
for (int i = 0; i < standardTypes.length; i++) {
|
||||||
createPrototype(standardTypes[i], null);
|
createPrototype(standardTypes[i], null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// loop through directories and create prototypes
|
// loop through directories and create prototypes
|
||||||
checkFiles();
|
checkRepositories();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -109,14 +109,12 @@ public final class TypeManager {
|
||||||
* has been updated.
|
* has been updated.
|
||||||
* If so, update prototypes and scripts.
|
* If so, update prototypes and scripts.
|
||||||
*/
|
*/
|
||||||
public synchronized void checkPrototypes() {
|
public synchronized void checkPrototypes() throws IOException {
|
||||||
if ((System.currentTimeMillis() - lastCheck) < 1000L) {
|
if ((System.currentTimeMillis() - lastCheck) < 1000L) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
checkRepositories();
|
||||||
checkFiles();
|
|
||||||
} catch (Exception ignore) {}
|
|
||||||
|
|
||||||
lastCheck = System.currentTimeMillis();
|
lastCheck = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
@ -162,17 +160,13 @@ public final class TypeManager {
|
||||||
* Run through application's prototype sources and check if
|
* Run through application's prototype sources and check if
|
||||||
* there are any prototypes to be created.
|
* there are any prototypes to be created.
|
||||||
*/
|
*/
|
||||||
private void checkFiles() {
|
private void checkRepositories() throws IOException {
|
||||||
// check if any files have been created/removed since last time we checked...
|
// check if any files have been created/removed since last time we checked...
|
||||||
for (int i = 0; i < repositories.length; i++) {
|
for (int i = 0; i < repositories.length; i++) {
|
||||||
try {
|
if (repositories[i].lastModified() > modified[i]) {
|
||||||
if (repositories[i].lastModified() > modified[i]) {
|
modified[i] = repositories[i].lastModified();
|
||||||
modified[i] = repositories[i].lastModified();
|
|
||||||
|
|
||||||
checkRepository(repositories[i]);
|
checkRepository(repositories[i]);
|
||||||
}
|
|
||||||
} catch (IOException iox) {
|
|
||||||
iox.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ public interface ScriptingEngine {
|
||||||
* evaluation is entered to let the Engine know it should update
|
* evaluation is entered to let the Engine know it should update
|
||||||
* its prototype information
|
* its prototype information
|
||||||
*/
|
*/
|
||||||
public void updatePrototypes();
|
public void updatePrototypes() throws IOException, ScriptingException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called when an execution context for a request
|
* This method is called when an execution context for a request
|
||||||
|
|
|
@ -310,7 +310,7 @@ public final class RhinoCore implements ScopeProvider {
|
||||||
* here is to check for update those prototypes which already have been compiled
|
* here is to check for update those prototypes which already have been compiled
|
||||||
* before. Others will be updated/compiled on demand.
|
* before. Others will be updated/compiled on demand.
|
||||||
*/
|
*/
|
||||||
public synchronized void updatePrototypes() {
|
public synchronized void updatePrototypes() throws IOException {
|
||||||
if ((System.currentTimeMillis() - lastUpdate) < 1000L) {
|
if ((System.currentTimeMillis() - lastUpdate) < 1000L) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,7 +149,7 @@ public class RhinoEngine implements ScriptingEngine {
|
||||||
* This method is called before an execution context is entered to let the
|
* This method is called before an execution context is entered to let the
|
||||||
* engine know it should update its prototype information.
|
* engine know it should update its prototype information.
|
||||||
*/
|
*/
|
||||||
public void updatePrototypes() {
|
public void updatePrototypes() throws IOException {
|
||||||
context = Context.enter();
|
context = Context.enter();
|
||||||
context.setCompileFunctionsWithDynamicScope(true);
|
context.setCompileFunctionsWithDynamicScope(true);
|
||||||
context.setApplicationClassLoader(app.getClassLoader());
|
context.setApplicationClassLoader(app.getClassLoader());
|
||||||
|
|
Loading…
Add table
Reference in a new issue