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; |
} |
|
} |