Subversion Repositories pub

Compare Revisions

Ignore whitespace Rev 67 → Rev 68

/pluggablejs/trunk/src/net/outlyer/plugins/utils/LanguageExtensions_V1.java
1,11 → 1,5
package net.outlyer.plugins.utils;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import javax.script.ScriptException;
import net.outlyer.plugins.SandboxAccessorImpl;
 
/*
* Copyright (c) 2008, Toni Corvera. All rights reserved.
*
32,6 → 26,16
 
// $Id$
 
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import javax.script.ScriptException;
import net.outlyer.plugins.PluginException;
import net.outlyer.plugins.PluginReader;
import net.outlyer.plugins.Sandbox;
import net.outlyer.plugins.SandboxAccessorImpl;
 
/**
* Initial version of LanguageExtensions.
* @see LanguageExtensions
61,19 → 65,53
* Load an external file
* @deprecated Not yet stabilised
*/
public Object include(final String fileName) { // TODO: Support jar URIs
public Object include(final String path) { // TODO: Support jar URIs
try {
return getSandbox().getCurrentEngine().eval(new FileReader(new File(fileName)));
if (path.startsWith("file:/") || path.startsWith("jar:file:/")) {
return include(new URI(path));
}
final File f = new File(path);
if (f.isAbsolute()) {
return include(f.toURI());
}
// Get a reasonable path
final Sandbox s = getSandbox();
final URI callerUri = s.loadedFrom();
// This isn't very elegant but works (in most cases?)...
final String c = callerUri.toString();
final int idx = callerUri.toString().lastIndexOf('/');
final URI reqUri = new URI(c.substring(0, idx)+"/"+path).normalize();
return include(reqUri);
}
catch (final FileNotFoundException e) {
catch (final URISyntaxException e) {
e.printStackTrace();
}
return null;
}
 
public Object include(final URI uri) {
if (null == uri) {
// TODO: Handle better
return null;
}
if (null == uri.getScheme() ||
(!"file".equals(uri.getScheme()) && !"jar".equals(uri.getScheme()))) {
throw new IllegalArgumentException("Only file and jar-contained files can be included");
}
 
try {
return getSandbox().inject(new PluginReader(uri));
}
catch (final IOException e) {
// FIXME: Handle better
System.err.println("Failed to read " + fileName);
System.err.println("Failed to read " + uri);
}
catch (final ScriptException e) {
catch (final PluginException e) {
// FIXME: Handle better
System.err.println("Exception: " + e.getMessage());
}
return null;
}
 
}