Improve JS Image constructor:
* Implement Image constructor from helma.util.MimePart * Improve error reporting: Include original exception message for IOExceptions, include argument info to detect wrong arguments
This commit is contained in:
parent
9bcdfd7cd0
commit
343fad7638
1 changed files with 22 additions and 6 deletions
|
@ -17,6 +17,8 @@
|
||||||
package helma.scripting.rhino.extensions;
|
package helma.scripting.rhino.extensions;
|
||||||
|
|
||||||
import helma.image.*;
|
import helma.image.*;
|
||||||
|
import helma.util.MimePart;
|
||||||
|
|
||||||
import java.awt.image.*;
|
import java.awt.image.*;
|
||||||
import org.mozilla.javascript.Context;
|
import org.mozilla.javascript.Context;
|
||||||
import org.mozilla.javascript.Function;
|
import org.mozilla.javascript.Function;
|
||||||
|
@ -34,7 +36,6 @@ import java.io.InputStream;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
|
@ -63,8 +64,11 @@ public class ImageObject {
|
||||||
|
|
||||||
public static Object imageCtor (Context cx, Object[] args,
|
public static Object imageCtor (Context cx, Object[] args,
|
||||||
Function ctorObj, boolean inNewExpr) {
|
Function ctorObj, boolean inNewExpr) {
|
||||||
|
|
||||||
Object img = null;
|
Object img = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
ImageGenerator generator = ImageGenerator.getInstance();
|
ImageGenerator generator = ImageGenerator.getInstance();
|
||||||
|
|
||||||
if (args.length == 1) {
|
if (args.length == 1) {
|
||||||
|
@ -85,6 +89,11 @@ public class ImageObject {
|
||||||
// try the local file now:
|
// try the local file now:
|
||||||
img = generator.createImage(str);
|
img = generator.createImage(str);
|
||||||
}
|
}
|
||||||
|
} else if (args[0] instanceof NativeJavaObject) {
|
||||||
|
Object arg = ((NativeJavaObject) args[0]).unwrap();
|
||||||
|
if (arg instanceof MimePart) {
|
||||||
|
img = generator.createImage(((MimePart) arg).getContent());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (args.length == 2) {
|
} else if (args.length == 2) {
|
||||||
if (args[0] instanceof Number &&
|
if (args[0] instanceof Number &&
|
||||||
|
@ -102,16 +111,23 @@ public class ImageObject {
|
||||||
else if (filter instanceof BufferedImageOp)
|
else if (filter instanceof BufferedImageOp)
|
||||||
img = generator.createImage((ImageWrapper) wrapper, (BufferedImageOp) filter);
|
img = generator.createImage((ImageWrapper) wrapper, (BufferedImageOp) filter);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
throw new RuntimeException("Error creating Image from args "+args[0]+","+args[1]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception error) {
|
} catch (IOException iox) {
|
||||||
System.err.println("Error creating Image: " + error);
|
throw new RuntimeException("Error creating Image: " + iox);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (img == null) {
|
if (img == null) {
|
||||||
throw new RuntimeException("Error creating image: Bad parameters or setup problem.");
|
switch (args.length) {
|
||||||
|
case 0:
|
||||||
|
throw new RuntimeException("Error creating Image: Called without arguments");
|
||||||
|
case 1:
|
||||||
|
throw new RuntimeException("Error creating Image from " + args[0]);
|
||||||
|
case 2:
|
||||||
|
throw new RuntimeException("Error creating Image from " + args[0] + ", " + args[1]);
|
||||||
|
default:
|
||||||
|
throw new RuntimeException("Error creating Image: Wrong number of arguments");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Context.toObject(img, ctorObj.getParentScope());
|
return Context.toObject(img, ctorObj.getParentScope());
|
||||||
|
|
Loading…
Add table
Reference in a new issue