зеркало из https://github.com/mozilla/pjs.git
Deprecating PropertyException as a part of common exception root changes, see 244492.
This commit is contained in:
Родитель
cb08a88e11
Коммит
ddaa32365c
|
@ -15,7 +15,6 @@ apiClasses=\
|
|||
src/org/mozilla/javascript/GeneratedClassLoader.java,\
|
||||
src/org/mozilla/javascript/ImporterTopLevel.java,\
|
||||
src/org/mozilla/javascript/JavaScriptException.java,\
|
||||
src/org/mozilla/javascript/PropertyException.java,\
|
||||
src/org/mozilla/javascript/RhinoException.java,\
|
||||
src/org/mozilla/javascript/Script.java,\
|
||||
src/org/mozilla/javascript/Scriptable.java,\
|
||||
|
|
|
@ -58,13 +58,8 @@ public final class LazilyLoadedCtor {
|
|||
setter = FunctionObject.findSingleMethod(methods, "setProperty");
|
||||
}
|
||||
|
||||
try {
|
||||
scope.defineProperty(ctorName, this, getter, setter,
|
||||
ScriptableObject.DONTENUM);
|
||||
}
|
||||
catch (PropertyException e) {
|
||||
throw Context.throwAsScriptRuntimeEx(e);
|
||||
}
|
||||
scope.defineProperty(ctorName, this, getter, setter,
|
||||
ScriptableObject.DONTENUM);
|
||||
}
|
||||
|
||||
public Object getProperty(ScriptableObject obj) {
|
||||
|
@ -86,7 +81,7 @@ public final class LazilyLoadedCtor {
|
|||
throw (RuntimeException)target;
|
||||
}
|
||||
removeOnError = true;
|
||||
} catch (PropertyException ex) {
|
||||
} catch (RhinoException ex) {
|
||||
removeOnError = true;
|
||||
} catch (InstantiationException ex) {
|
||||
removeOnError = true;
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Rhino code, released
|
||||
* May 6, 1999.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1997-1999 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Norris Boyd
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU Public License (the "GPL"), in which case the
|
||||
* provisions of the GPL are applicable instead of those above.
|
||||
* If you wish to allow use of your version of this file only
|
||||
* under the terms of the GPL and not to allow others to use your
|
||||
* version of this file under the NPL, indicate your decision by
|
||||
* deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this
|
||||
* file under either the NPL or the GPL.
|
||||
*/
|
||||
|
||||
// API class
|
||||
|
||||
package org.mozilla.javascript;
|
||||
|
||||
/**
|
||||
* Thrown if errors are detected while attempting to define a property of
|
||||
* a host object from a Java class or method, or if a property is not found.
|
||||
*/
|
||||
public class PropertyException extends Exception {
|
||||
|
||||
public PropertyException(String detail) {
|
||||
super(detail);
|
||||
}
|
||||
|
||||
static PropertyException withMessage0(String messageId) {
|
||||
return new PropertyException(Context.getMessage0(messageId));
|
||||
}
|
||||
|
||||
static PropertyException withMessage1(String messageId, Object arg1) {
|
||||
return new PropertyException(Context.getMessage1(messageId, arg1));
|
||||
}
|
||||
|
||||
static PropertyException withMessage2
|
||||
(String messageId, Object arg1, Object arg2)
|
||||
{
|
||||
return new PropertyException
|
||||
(Context.getMessage2(messageId, arg1, arg2));
|
||||
}
|
||||
|
||||
}
|
|
@ -309,7 +309,6 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
* ignored the start argument.
|
||||
*/
|
||||
public final int getAttributes(String name, Scriptable start)
|
||||
throws PropertyException
|
||||
{
|
||||
return getAttributes(name);
|
||||
}
|
||||
|
@ -319,7 +318,6 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
* ignored the start argument.
|
||||
*/
|
||||
public final int getAttributes(int index, Scriptable start)
|
||||
throws PropertyException
|
||||
{
|
||||
return getAttributes(index);
|
||||
}
|
||||
|
@ -330,7 +328,6 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
*/
|
||||
public final void setAttributes(String name, Scriptable start,
|
||||
int attributes)
|
||||
throws PropertyException
|
||||
{
|
||||
setAttributes(name, attributes);
|
||||
}
|
||||
|
@ -341,7 +338,6 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
*/
|
||||
public void setAttributes(int index, Scriptable start,
|
||||
int attributes)
|
||||
throws PropertyException
|
||||
{
|
||||
setAttributes(index, attributes);
|
||||
}
|
||||
|
@ -726,9 +722,6 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
* during execution of methods of the named class
|
||||
* @exception ClassDefinitionException if an appropriate
|
||||
* constructor cannot be found to create the prototype
|
||||
* @exception PropertyException if getter and setter
|
||||
* methods do not conform to the requirements of the
|
||||
* defineProperty method
|
||||
* @see org.mozilla.javascript.Function
|
||||
* @see org.mozilla.javascript.FunctionObject
|
||||
* @see org.mozilla.javascript.ScriptableObject#READONLY
|
||||
|
@ -736,8 +729,7 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
*/
|
||||
public static void defineClass(Scriptable scope, Class clazz)
|
||||
throws IllegalAccessException, InstantiationException,
|
||||
InvocationTargetException, ClassDefinitionException,
|
||||
PropertyException
|
||||
InvocationTargetException, ClassDefinitionException
|
||||
{
|
||||
defineClass(scope, clazz, false);
|
||||
}
|
||||
|
@ -765,16 +757,12 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
* during execution of methods of the named class
|
||||
* @exception ClassDefinitionException if an appropriate
|
||||
* constructor cannot be found to create the prototype
|
||||
* @exception PropertyException if getter and setter
|
||||
* methods do not conform to the requirements of the
|
||||
* defineProperty method
|
||||
* @since 1.4R3
|
||||
*/
|
||||
public static void defineClass(Scriptable scope, Class clazz,
|
||||
boolean sealed)
|
||||
throws IllegalAccessException, InstantiationException,
|
||||
InvocationTargetException, ClassDefinitionException,
|
||||
PropertyException
|
||||
InvocationTargetException, ClassDefinitionException
|
||||
{
|
||||
Method[] methods = FunctionObject.getMethodList(clazz);
|
||||
for (int i=0; i < methods.length; i++) {
|
||||
|
@ -904,8 +892,9 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
continue; // deal with set when we see get
|
||||
if (prefix == getterPrefix) {
|
||||
if (!(proto instanceof ScriptableObject)) {
|
||||
throw PropertyException.withMessage2
|
||||
("msg.extend.scriptable", proto.getClass().toString(), name);
|
||||
throw Context.reportRuntimeError2(
|
||||
"msg.extend.scriptable",
|
||||
proto.getClass().toString(), name);
|
||||
}
|
||||
Method setter = FunctionObject.findSingleMethod(
|
||||
methods,
|
||||
|
@ -999,16 +988,10 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
* and "setFoo" methods.
|
||||
* @param clazz the Java class to search for the getter and setter
|
||||
* @param attributes the attributes of the JavaScript property
|
||||
* @exception PropertyException if multiple methods
|
||||
* are found for the getter or setter, or if the getter
|
||||
* or setter do not conform to the forms described in
|
||||
* <code>defineProperty(String, Object, Method, Method,
|
||||
* int)</code>
|
||||
* @see org.mozilla.javascript.Scriptable#put
|
||||
*/
|
||||
public void defineProperty(String propertyName, Class clazz,
|
||||
int attributes)
|
||||
throws PropertyException
|
||||
{
|
||||
int length = propertyName.length();
|
||||
if (length == 0) throw new IllegalArgumentException();
|
||||
|
@ -1071,12 +1054,9 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
* @param getter the method to invoke to get the value of the property
|
||||
* @param setter the method to invoke to set the value of the property
|
||||
* @param attributes the attributes of the JavaScript property
|
||||
* @exception PropertyException if the getter or setter
|
||||
* do not conform to the forms specified above
|
||||
*/
|
||||
public void defineProperty(String propertyName, Object delegateTo,
|
||||
Method getter, Method setter, int attributes)
|
||||
throws PropertyException
|
||||
{
|
||||
if (delegateTo == null && (Modifier.isStatic(getter.getModifiers())))
|
||||
delegateTo = HAS_STATIC_ACCESSORS;
|
||||
|
@ -1085,40 +1065,40 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
if (parmTypes.length != 1 ||
|
||||
parmTypes[0] != ScriptRuntime.ScriptableObjectClass)
|
||||
{
|
||||
throw PropertyException.withMessage1
|
||||
("msg.bad.getter.parms", getter.toString());
|
||||
throw Context.reportRuntimeError1(
|
||||
"msg.bad.getter.parms", getter.toString());
|
||||
}
|
||||
} else if (delegateTo != null) {
|
||||
throw PropertyException.withMessage1
|
||||
("msg.obj.getter.parms", getter.toString());
|
||||
throw Context.reportRuntimeError1(
|
||||
"msg.obj.getter.parms", getter.toString());
|
||||
}
|
||||
if (setter != null) {
|
||||
if ((delegateTo == HAS_STATIC_ACCESSORS) !=
|
||||
(Modifier.isStatic(setter.getModifiers())))
|
||||
{
|
||||
throw PropertyException.withMessage0("msg.getter.static");
|
||||
throw Context.reportRuntimeError0("msg.getter.static");
|
||||
}
|
||||
parmTypes = setter.getParameterTypes();
|
||||
if (parmTypes.length == 2) {
|
||||
if (parmTypes[0] != ScriptRuntime.ScriptableObjectClass) {
|
||||
throw PropertyException.withMessage0("msg.setter2.parms");
|
||||
throw Context.reportRuntimeError0("msg.setter2.parms");
|
||||
}
|
||||
if (delegateTo == null) {
|
||||
throw PropertyException.withMessage1
|
||||
("msg.setter1.parms", setter.toString());
|
||||
throw Context.reportRuntimeError1(
|
||||
"msg.setter1.parms", setter.toString());
|
||||
}
|
||||
} else if (parmTypes.length == 1) {
|
||||
if (delegateTo != null) {
|
||||
throw PropertyException.withMessage1
|
||||
("msg.setter2.expected", setter.toString());
|
||||
throw Context.reportRuntimeError1(
|
||||
"msg.setter2.expected", setter.toString());
|
||||
}
|
||||
} else {
|
||||
throw PropertyException.withMessage0("msg.setter.parms");
|
||||
throw Context.reportRuntimeError0("msg.setter.parms");
|
||||
}
|
||||
Class setterType = parmTypes[parmTypes.length - 1];
|
||||
int setterTypeTag = FunctionObject.getTypeTag(setterType);
|
||||
if (setterTypeTag == FunctionObject.JAVA_UNSUPPORTED_TYPE) {
|
||||
throw PropertyException.withMessage2(
|
||||
throw Context.reportRuntimeError2(
|
||||
"msg.setter2.expected", setterType.getName(),
|
||||
setter.toString());
|
||||
}
|
||||
|
@ -1153,22 +1133,18 @@ public abstract class ScriptableObject implements Scriptable, Serializable,
|
|||
* @param names the names of the Methods to add as function properties
|
||||
* @param clazz the class to search for the Methods
|
||||
* @param attributes the attributes of the new properties
|
||||
* @exception PropertyException if any of the names
|
||||
* has no corresponding method or more than one corresponding
|
||||
* method in the class
|
||||
* @see org.mozilla.javascript.FunctionObject
|
||||
*/
|
||||
public void defineFunctionProperties(String[] names, Class clazz,
|
||||
int attributes)
|
||||
throws PropertyException
|
||||
{
|
||||
Method[] methods = FunctionObject.getMethodList(clazz);
|
||||
for (int i=0; i < names.length; i++) {
|
||||
String name = names[i];
|
||||
Method m = FunctionObject.findSingleMethod(methods, name);
|
||||
if (m == null) {
|
||||
throw PropertyException.withMessage2
|
||||
("msg.method.not.found", name, clazz.getName());
|
||||
throw Context.reportRuntimeError2(
|
||||
"msg.method.not.found", name, clazz.getName());
|
||||
}
|
||||
FunctionObject f = new FunctionObject(name, m, this);
|
||||
defineProperty(name, f, attributes);
|
||||
|
|
|
@ -64,12 +64,8 @@ public class Global extends ImporterTopLevel {
|
|||
"loadClass", "defineClass", "spawn", "sync",
|
||||
"serialize", "deserialize", "runCommand",
|
||||
"seal", "readFile", "readUrl" };
|
||||
try {
|
||||
defineFunctionProperties(names, Global.class,
|
||||
ScriptableObject.DONTENUM);
|
||||
} catch (PropertyException e) {
|
||||
throw new Error(); // shouldn't occur.
|
||||
}
|
||||
defineFunctionProperties(names, Global.class,
|
||||
ScriptableObject.DONTENUM);
|
||||
|
||||
// Set up "environment" in the global scope to provide access to the
|
||||
// System environment variables.
|
||||
|
@ -178,15 +174,12 @@ public class Global extends ImporterTopLevel {
|
|||
* during execution of methods of the named class
|
||||
* @exception ClassDefinitionException if the format of the
|
||||
* class causes this exception in ScriptableObject.defineClass
|
||||
* @exception PropertyException if the format of the
|
||||
* class causes this exception in ScriptableObject.defineClass
|
||||
* @see org.mozilla.javascript.ScriptableObject#defineClass
|
||||
*/
|
||||
public static void defineClass(Context cx, Scriptable thisObj,
|
||||
Object[] args, Function funObj)
|
||||
throws IllegalAccessException, InstantiationException,
|
||||
InvocationTargetException, ClassDefinitionException,
|
||||
PropertyException
|
||||
InvocationTargetException, ClassDefinitionException
|
||||
{
|
||||
Class clazz = getClass(args);
|
||||
ScriptableObject.defineClass(thisObj, clazz);
|
||||
|
|
Загрузка…
Ссылка в новой задаче