Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.dynjs.runtime;
  
  import java.util.HashMap;
  import java.util.Map;
  
  
  public class PropertyDescriptor {
  
     @SuppressWarnings("serial")
     private static final Map<StringObjectDEFAULTS = new HashMap<StringObject>() {
         {
             put("Value".);
             put("Set".);
             put("Get".);
             put("Writable"false);
             put("Configurable"false);
             put("Enumerable"false);
         }
     };
 
     private Object value;
     private Object set;
     private Object get;
     private Object writable;
     private Object configurable;
     private Object enumerable;
     private Object initialized;
 
     public static PropertyDescriptor newAccessorPropertyDescriptor(final boolean withDefaults) {
         return new PropertyDescriptor() {
             {
                 if (withDefaults) {
                     set("Set".get("Set"));
                     set("Get".get("Get"));
                     set("Configurable".get("Configurable"));
                     set("Enumerable".get("Enumerable"));
                 }
             }
         };
     }
 
     public static PropertyDescriptor newDataPropertyDescriptor(final boolean withDefaults) {
         return new PropertyDescriptor() {
             {
                 if (withDefaults) {
                     set("Value".get("Value"));
                     set("Writable".get("Writable"));
                     set("Configurable".get("Configurable"));
                     set("Enumerable".get("Enumerable")); 
                 }
             }
         };
     }
 
         return newPropertyDescriptorForObjectInitializer(nullvalue);
     }
 
     public static PropertyDescriptor newPropertyDescriptorForObjectInitializer(String nameObject value) {
         if (name != null && (value instanceof JSFunction)) {
             ((JSFunctionvalue).setDebugContext("Object." + name);
         }
         PropertyDescriptor d = new PropertyDescriptor();
         d.value = value;
         d.writable = .;
         d.configurable = .;
         d.enumerable = .;
         return d;
     }
 
     public static PropertyDescriptor newPropertyDescriptorForObjectInitializerGet(Object origString nameJSFunction value) {
         value.setDebugContext("Object.get " + name);
         PropertyDescriptor d = null;
 
         if (orig == .) {
             d = new PropertyDescriptor();
         } else {
             d = (PropertyDescriptororig;
         }
         d.get = value;
         d.configurable = .;
         d.enumerable = .;
         return d;
     }
 
     public static PropertyDescriptor newPropertyDescriptorForObjectInitializerSet(Object origString nameJSFunction value) {
         value.setDebugContext("Object.set " + name);
         PropertyDescriptor d = null;
 
         if (orig == .) {
             d = new PropertyDescriptor();
         } else {
             d = (PropertyDescriptororig;
         }
         d.set = value;
         d.configurable = .;
         d.enumerable = .;
         return d;
    }
    public PropertyDescriptor() {
    }
    public String toString() {
        return "[PropertyDescriptor value=" + this. + "; writable=" + this. + "; enumerable=" + this. + "; configurable=" + this. + "; setter=" + this."; getter=" + this. + "]"
    }
    public boolean isWritable() {
        if (this. == null) {
            return false;
        }
        if (this. == .) {
            return false;
        }
        return (Booleanthis.;
    }
    public boolean hasWritable() {
        return this. != null;
    }
    public void setWritable(boolean writable) {
        this. = writable;
    }
    public boolean isConfigurable() {
        if (this. == null) {
            return false;
        }
        if (this. == .) {
            return false;
        }
        return (Booleanthis.;
    }
    public boolean hasConfigurable() {
        return this. != null;
    }
    public void setConfigurable(boolean configurable) {
        this. = configurable;
    }
    public boolean isEnumerable() {
        if (this. == null) {
            return false;
        }
        if (this. == .) {
            return false;
        }
        return (Booleanthis.;
    }
    public void setEnumerable(boolean enumerable) {
        this. = enumerable;
    }
    public boolean hasEnumerable() {
        return this. != null;
    }
    public Object getValue() {
        return this.;
    }
    public void setValue(Object value) {
        this. = value;
    }
    
    public boolean hasValue() {
        return this. != null;
    }
    public Object getSetter() {
        return this.;
    }
    public void setSetter(JSFunction setter) {
        this. = setter;
    }
    
    public boolean hasSet() {
        return this. != null;
    }
    public Object getGetter() {
        return this.;
    }
    public void setGetter(JSFunction getter) {
        this. = getter;
    }
    
    public boolean hasGet() {
        return this. != null;
    }
    public boolean isEmpty() {
        return this. == null && this. == null && this. == null &&
                this. == null && this. == null && this. == null;
    }
    public void set(String nameObject value) {
        switch (name) {
        case "Value":
            this. = value;
            break;
        case "Set":
            this. = value;
            break;
        case "Get":
            this. = value;
            break;
        case "Writable":
            this. = value;
            break;
        case "Configurable":
            this. = value;
            break;
        case "Enumerable":
            this. = value;
            break;
        case "Initialized":
            this. = value;
            break;
        }
    }
    public Object get(String name) {
        switch (name) {
        case "Value":
            return (this. != null ? this. : .);
        case "Set":
            return (this. != null ? this. : .);
        case "Get":
            return (this. != null ? this. : .);
        case "Writable":
            return (this. != null ? this. : .);
        case "Configurable":
            return (this. != null ? this. : .);
        case "Enumerable":
            return (this. != null ? this. : .);
        case "Initialized":
            return (this. != null ? this. : .);
        }
        return .;
    }
    public boolean isPresent(String name) {
        switch (name) {
        case "Value":
            return this. != null;
        case "Set":
            return this. != null;
        case "Get":
            return this. != null;
        case "Writable":
            return this. != null;
        case "Configurable":
            return this. != null;
        case "Enumerable":
            return this. != null;
        }
        return false;
    }
    public Object getWithDefault(String name) {
        Object v = get(name);
        if (v == null) {
            return .get(name);
        }
        return v;
    }
    public PropertyDescriptor duplicate(String... attributes) {
        PropertyDescriptor d = new PropertyDescriptor();
        for (int i = 0; i < attributes.length; ++i) {
            switch (attributes[i]) {
            case "Value":
                d.value = this.;
                break;
            case "Set":
                d.set = this.;
                break;
            case "Get":
                d.get = this.;
                break;
            case "Writable":
                d.writable = this.;
                break;
            case "Configurable":
                d.configurable = this.;
                break;
            case "Enumerable":
                d.enumerable = this.;
                break;
            }
        }
        return d;
    }
    public PropertyDescriptor duplicateWithDefaults(String... attributes) {
        PropertyDescriptor d = new PropertyDescriptor();
        for (int i = 0; i < attributes.length; ++i) {
            switch (attributes[i]) {
            case "Value":
                d.value = (this. != null ? this. : .);
                break;
            case "Set":
                d.set = (this. != null ? this. : .);
                break;
            case "Get":
                d.get = (this. != null ? this. : .);
                break;
            case "Writable":
                d.writable = (this. != null ? this. : .);
                break;
            case "Configurable":
                d.configurable = (this. != null ? this. : .);
                break;
            case "Enumerable":
                d.enumerable = (this. != null ? this. : .);
                break;
            }
        }
        return d;
    }
    public void copyAll(PropertyDescriptor from) {
        if (from.value != null) {
            this. = from.value;
        }
        if (from.set != null) {
            this. = from.set;
        }
        if (from.get != null) {
            this. = from.get;
        }
        if (from.writable != null) {
            this. = from.writable;
        }
        if (from.configurable != null) {
            this. = from.configurable;
        }
        if (from.enumerable != null) {
            this. = from.enumerable;
        }
    }
    public boolean isAccessorDescriptor() {
        // 8.10.1
        if (this. == null && this. == null) {
            return false;
        }
        return true;
    }
    public boolean isDataDescriptor() {
        // 8.10.2
        if (this. == null && this. == null) {
            return false;
        }
        return true;
    }
    public boolean isGenericDescriptor() {
        // 8.10.3
        if (isAccessorDescriptor() == false && isDataDescriptor() == false) {
            return true;
        }
        return false;
    }
    public static Object fromPropertyDescriptor(ExecutionContext contextObject d) {
        // 8.10.4
        if (d == .) {
            return .;
        }
        final PropertyDescriptor desc = (PropertyDescriptord;
        JSObject obj = new DynObject(context.getGlobalObject());
        if (desc.isDataDescriptor()) {
            obj.defineOwnProperty(context"value"new PropertyDescriptor() {
                {
                    set("Value"desc.get("Value"));
                    set("Writable"true);
                    set("Configurable"true);
                    set("Enumerable"true);
                }
            }, false);
            obj.defineOwnProperty(context"writable"new PropertyDescriptor() {
                {
                    set("Value"desc.get("Writable"));
                    set("Writable"true);
                    set("Configurable"true);
                    set("Enumerable"true);
                }
            }, false);
        } else {
            obj.defineOwnProperty(context"get"new PropertyDescriptor() {
                {
                    set("Value"desc.get("Get"));
                    set("Writable"true);
                    set("Configurable"true);
                    set("Enumerable"true);
                }
            }, false);
            obj.defineOwnProperty(context"set"new PropertyDescriptor() {
                {
                    set("Value"desc.get("Set"));
                    set("Writable"true);
                    set("Configurable"true);
                    set("Enumerable"true);
                }
            }, false);
        }
        obj.defineOwnProperty(context"enumerable"new PropertyDescriptor() {
            {
                set("Value"desc.get("Enumerable"));
                set("Writable"true);
                set("Configurable"true);
                set("Enumerable"true);
            }
        }, false);
        obj.defineOwnProperty(context"configurable"new PropertyDescriptor() {
            {
                set("Value"desc.get("Configurable"));
                set("Writable"true);
                set("Configurable"true);
                set("Enumerable"true);
            }
        }, false);
        return obj;
    }
    public static PropertyDescriptor toPropertyDescriptor(ExecutionContext contextObject o) {
        // 8.10.5
        if (!(o instanceof JSObject)) {
            throw new ThrowException(contextcontext.createTypeError("attribtues must be an object"));
        }
        JSObject obj = (JSObjecto;
        PropertyDescriptor d = new PropertyDescriptor();
        if (obj.hasProperty(context"enumerable")) {
            d.set("Enumerable", Types.toBoolean(obj.get(context"enumerable")));
        }
        if (obj.hasProperty(context"configurable")) {
            d.set("Configurable", Types.toBoolean(obj.get(context"configurable")));
        }
        if (obj.hasProperty(context"value")) {
            d.set("Value"obj.get(context"value"));
        }
        if (obj.hasProperty(context"writable")) {
            d.set("Writable", Types.toBoolean(obj.get(context"writable")));
        }
        if (obj.hasProperty(context"get")) {
            Object getter = obj.get(context"get");
            if ((!Types.isCallable(getter)) && (getter != .)) {
                throw new ThrowException(contextcontext.createTypeError("get must be callable"));
            }
            d.set("Get"getter);
        }
        if (obj.hasProperty(context"set")) {
            Object setter = obj.get(context"set");
            if ((!Types.isCallable(setter)) && (setter != .)) {
                throw new ThrowException(contextcontext.createTypeError("set must be callable"));
            }
            d.set("Set"setter);
        }
        if ((d.get("Get") != .) || (d.get("Set") != .)) {
            if ((d.get("Writable") != .) || (d.get("Value") != .)) {
                throw new ThrowException(contextcontext.createTypeError("may not be both a data property and an accessor property"));
            }
        }
        return d;
    }
New to GrepCode? Check out our FAQ X