< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeJSAdapter.java

Print this page




 168     private static ScriptObject wrapAdaptee(final ScriptObject adaptee) {
 169         return new JO(adaptee);
 170     }
 171 
 172     @Override
 173     public String getClassName() {
 174         return "JSAdapter";
 175     }
 176 
 177     @Override
 178     public int getInt(final Object key, final int programPoint) {
 179         return (overrides && super.hasOwnProperty(key)) ? super.getInt(key, programPoint) : callAdapteeInt(programPoint, __get__, key);
 180     }
 181 
 182     @Override
 183     public int getInt(final double key, final int programPoint) {
 184         return (overrides && super.hasOwnProperty(key)) ? super.getInt(key, programPoint) : callAdapteeInt(programPoint, __get__, key);
 185     }
 186 
 187     @Override
 188     public int getInt(final long key, final int programPoint) {
 189         return (overrides && super.hasOwnProperty(key)) ? super.getInt(key, programPoint) : callAdapteeInt(programPoint, __get__, key);
 190     }
 191 
 192     @Override
 193     public int getInt(final int key, final int programPoint) {
 194         return (overrides && super.hasOwnProperty(key)) ? super.getInt(key, programPoint) : callAdapteeInt(programPoint, __get__, key);
 195     }
 196 
 197     @Override
 198     public long getLong(final Object key, final int programPoint) {
 199         return (overrides && super.hasOwnProperty(key)) ? super.getLong(key, programPoint) : callAdapteeLong(programPoint, __get__, key);
 200     }
 201 
 202     @Override
 203     public long getLong(final double key, final int programPoint) {
 204         return (overrides && super.hasOwnProperty(key)) ? super.getLong(key, programPoint) : callAdapteeLong(programPoint, __get__, key);
 205     }
 206 
 207     @Override
 208     public long getLong(final long key, final int programPoint) {
 209         return (overrides && super.hasOwnProperty(key)) ? super.getLong(key, programPoint) : callAdapteeLong(programPoint, __get__, key);
 210     }
 211 
 212     @Override
 213     public long getLong(final int key, final int programPoint) {
 214         return (overrides && super.hasOwnProperty(key)) ? super.getLong(key, programPoint) : callAdapteeLong(programPoint, __get__, key);
 215     }
 216 
 217     @Override
 218     public double getDouble(final Object key, final int programPoint) {
 219         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 220     }
 221 
 222     @Override
 223     public double getDouble(final double key, final int programPoint) {
 224         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 225     }
 226 
 227     @Override
 228     public double getDouble(final long key, final int programPoint) {
 229         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 230     }
 231 
 232     @Override
 233     public double getDouble(final int key, final int programPoint) {
 234         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 235     }
 236 
 237     @Override
 238     public Object get(final Object key) {
 239         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 240     }
 241 
 242     @Override
 243     public Object get(final double key) {
 244         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 245     }
 246 
 247     @Override
 248     public Object get(final long key) {
 249         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 250     }
 251 
 252     @Override
 253     public Object get(final int key) {
 254         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 255     }
 256 
 257     @Override
 258     public void set(final Object key, final int value, final int flags) {
 259         if (overrides && super.hasOwnProperty(key)) {
 260             super.set(key, value, flags);
 261         } else {
 262             callAdaptee(__put__, key, value, flags);
 263         }
 264     }
 265 
 266     @Override
 267     public void set(final Object key, final long value, final int flags) {
 268         if (overrides && super.hasOwnProperty(key)) {
 269             super.set(key, value, flags);
 270         } else {
 271             callAdaptee(__put__, key, value, flags);
 272         }
 273     }
 274 
 275     @Override
 276     public void set(final Object key, final double value, final int flags) {
 277         if (overrides && super.hasOwnProperty(key)) {
 278             super.set(key, value, flags);
 279         } else {
 280             callAdaptee(__put__, key, value, flags);
 281         }
 282     }
 283 
 284     @Override
 285     public void set(final Object key, final Object value, final int flags) {
 286         if (overrides && super.hasOwnProperty(key)) {
 287             super.set(key, value, flags);
 288         } else {
 289             callAdaptee(__put__, key, value, flags);
 290         }
 291     }
 292 
 293     @Override
 294     public void set(final double key, final int value, final int flags) {
 295         if (overrides && super.hasOwnProperty(key)) {
 296             super.set(key, value, flags);
 297         } else {
 298             callAdaptee(__put__, key, value, flags);
 299         }
 300     }
 301 
 302     @Override
 303     public void set(final double key, final long value, final int flags) {
 304         if (overrides && super.hasOwnProperty(key)) {
 305             super.set(key, value, flags);
 306         } else {
 307             callAdaptee(__put__, key, value, flags);
 308         }
 309     }
 310 
 311     @Override
 312     public void set(final double key, final double value, final int flags) {
 313         if (overrides && super.hasOwnProperty(key)) {
 314             super.set(key, value, flags);
 315         } else {
 316             callAdaptee(__put__, key, value, flags);
 317         }
 318     }
 319 
 320     @Override
 321     public void set(final double key, final Object value, final int flags) {
 322         if (overrides && super.hasOwnProperty(key)) {
 323             super.set(key, value, flags);
 324         } else {
 325             callAdaptee(__put__, key, value, flags);
 326         }
 327     }
 328 
 329     @Override
 330     public void set(final long key, final int value, final int flags) {
 331         if (overrides && super.hasOwnProperty(key)) {
 332             super.set(key, value, flags);
 333         } else {
 334             callAdaptee(__put__, key, value, flags);
 335         }
 336     }
 337 
 338     @Override
 339     public void set(final long key, final long value, final int flags) {
 340         if (overrides && super.hasOwnProperty(key)) {
 341             super.set(key, value, flags);
 342         } else {
 343             callAdaptee(__put__, key, value, flags);
 344         }
 345     }
 346 
 347     @Override
 348     public void set(final long key, final double value, final int flags) {
 349         if (overrides && super.hasOwnProperty(key)) {
 350             super.set(key, value, flags);
 351         } else {
 352             callAdaptee(__put__, key, value, flags);
 353         }
 354     }
 355 
 356     @Override
 357     public void set(final long key, final Object value, final int flags) {
 358         if (overrides && super.hasOwnProperty(key)) {
 359             super.set(key, value, flags);
 360         } else {
 361             callAdaptee(__put__, key, value, flags);
 362         }
 363     }
 364 
 365     @Override
 366     public void set(final int key, final int value, final int flags) {
 367         if (overrides && super.hasOwnProperty(key)) {
 368             super.set(key, value, flags);
 369         } else {
 370             callAdaptee(__put__, key, value, flags);
 371         }
 372     }
 373 
 374     @Override
 375     public void set(final int key, final long value, final int flags) {
 376         if (overrides && super.hasOwnProperty(key)) {
 377             super.set(key, value, flags);
 378         } else {
 379             callAdaptee(__put__, key, value, flags);
 380         }
 381     }
 382 
 383     @Override
 384     public void set(final int key, final double value, final int flags) {
 385         if (overrides && super.hasOwnProperty(key)) {
 386             super.set(key, value, flags);
 387         } else {
 388             callAdaptee(__put__, key, value, flags);
 389         }
 390     }
 391 
 392     @Override
 393     public void set(final int key, final Object value, final int flags) {
 394         if (overrides && super.hasOwnProperty(key)) {
 395             super.set(key, value, flags);
 396         } else {
 397             callAdaptee(__put__, key, value, flags);
 398         }
 399     }
 400 
 401     @Override
 402     public boolean has(final Object key) {
 403         if (overrides && super.hasOwnProperty(key)) {
 404             return true;
 405         }
 406 
 407         return JSType.toBoolean(callAdaptee(Boolean.FALSE, __has__, key));
 408     }
 409 
 410     @Override
 411     public boolean has(final int key) {
 412         if (overrides && super.hasOwnProperty(key)) {
 413             return true;
 414         }
 415 
 416         return JSType.toBoolean(callAdaptee(Boolean.FALSE, __has__, key));
 417     }
 418 
 419     @Override
 420     public boolean has(final long key) {
 421         if (overrides && super.hasOwnProperty(key)) {
 422             return true;
 423         }
 424 
 425         return JSType.toBoolean(callAdaptee(Boolean.FALSE, __has__, key));
 426     }
 427 
 428     @Override
 429     public boolean has(final double key) {
 430         if (overrides && super.hasOwnProperty(key)) {
 431             return true;
 432         }
 433 
 434         return JSType.toBoolean(callAdaptee(Boolean.FALSE, __has__, key));
 435     }
 436 
 437     @Override
 438     public boolean delete(final int key, final boolean strict) {
 439         if (overrides && super.hasOwnProperty(key)) {
 440             return super.delete(key, strict);
 441         }
 442 
 443         return JSType.toBoolean(callAdaptee(Boolean.TRUE, __delete__, key, strict));
 444     }
 445 
 446     @Override
 447     public boolean delete(final long key, final boolean strict) {
 448         if (overrides && super.hasOwnProperty(key)) {
 449             return super.delete(key, strict);
 450         }
 451 
 452         return JSType.toBoolean(callAdaptee(Boolean.TRUE, __delete__, key, strict));
 453     }
 454 
 455     @Override
 456     public boolean delete(final double key, final boolean strict) {
 457         if (overrides && super.hasOwnProperty(key)) {
 458             return super.delete(key, strict);
 459         }
 460 
 461         return JSType.toBoolean(callAdaptee(Boolean.TRUE, __delete__, key, strict));
 462     }
 463 
 464     @Override
 465     public boolean delete(final Object key, final boolean strict) {
 466         if (overrides && super.hasOwnProperty(key)) {
 467             return super.delete(key, strict);
 468         }
 469 
 470         return JSType.toBoolean(callAdaptee(Boolean.TRUE, __delete__, key, strict));
 471     }
 472 
 473     @Override
 474     public Iterator<String> propertyIterator() {
 475         // Try __getIds__ first, if not found then try __getKeys__


 650             try {
 651                 final GuardedInvocation inv = super.findSetMethod(desc, request);
 652                 if (inv != null) {
 653                     return inv;
 654                 }
 655             } catch (final Exception e) {
 656                 //ignored
 657             }
 658         }
 659 
 660         return findHook(desc, __put__);
 661     }
 662 
 663     // -- Internals only below this point
 664     private Object callAdaptee(final String name, final Object... args) {
 665         return callAdaptee(UNDEFINED, name, args);
 666     }
 667 
 668     private double callAdapteeDouble(final int programPoint, final String name, final Object... args) {
 669         return JSType.toNumberMaybeOptimistic(callAdaptee(name, args), programPoint);
 670     }
 671 
 672     private long callAdapteeLong(final int programPoint, final String name, final Object... args) {
 673         return JSType.toLongMaybeOptimistic(callAdaptee(name, args), programPoint);
 674     }
 675 
 676     private int callAdapteeInt(final int programPoint, final String name, final Object... args) {
 677         return JSType.toInt32MaybeOptimistic(callAdaptee(name, args), programPoint);
 678     }
 679 
 680     private Object callAdaptee(final Object retValue, final String name, final Object... args) {
 681         final Object func = adaptee.get(name);
 682         if (func instanceof ScriptFunction) {
 683             return ScriptRuntime.apply((ScriptFunction)func, adaptee, args);
 684         }
 685         return retValue;
 686     }
 687 
 688     private GuardedInvocation findHook(final CallSiteDescriptor desc, final String hook) {
 689         return findHook(desc, hook, true);
 690     }
 691 
 692     private GuardedInvocation findHook(final CallSiteDescriptor desc, final String hook, final boolean useName) {
 693         final FindProperty findData = adaptee.findProperty(hook, true);




 168     private static ScriptObject wrapAdaptee(final ScriptObject adaptee) {
 169         return new JO(adaptee);
 170     }
 171 
 172     @Override
 173     public String getClassName() {
 174         return "JSAdapter";
 175     }
 176 
 177     @Override
 178     public int getInt(final Object key, final int programPoint) {
 179         return (overrides && super.hasOwnProperty(key)) ? super.getInt(key, programPoint) : callAdapteeInt(programPoint, __get__, key);
 180     }
 181 
 182     @Override
 183     public int getInt(final double key, final int programPoint) {
 184         return (overrides && super.hasOwnProperty(key)) ? super.getInt(key, programPoint) : callAdapteeInt(programPoint, __get__, key);
 185     }
 186 
 187     @Override





 188     public int getInt(final int key, final int programPoint) {
 189         return (overrides && super.hasOwnProperty(key)) ? super.getInt(key, programPoint) : callAdapteeInt(programPoint, __get__, key);
 190     }
 191 
 192     @Override




















 193     public double getDouble(final Object key, final int programPoint) {
 194         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 195     }
 196 
 197     @Override
 198     public double getDouble(final double key, final int programPoint) {
 199         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 200     }
 201 
 202     @Override





 203     public double getDouble(final int key, final int programPoint) {
 204         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 205     }
 206 
 207     @Override
 208     public Object get(final Object key) {
 209         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 210     }
 211 
 212     @Override
 213     public Object get(final double key) {
 214         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 215     }
 216 
 217     @Override





 218     public Object get(final int key) {
 219         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 220     }
 221 
 222     @Override
 223     public void set(final Object key, final int value, final int flags) {
 224         if (overrides && super.hasOwnProperty(key)) {
 225             super.set(key, value, flags);
 226         } else {
 227             callAdaptee(__put__, key, value, flags);
 228         }
 229     }
 230 
 231     @Override









 232     public void set(final Object key, final double value, final int flags) {
 233         if (overrides && super.hasOwnProperty(key)) {
 234             super.set(key, value, flags);
 235         } else {
 236             callAdaptee(__put__, key, value, flags);
 237         }
 238     }
 239 
 240     @Override
 241     public void set(final Object key, final Object value, final int flags) {
 242         if (overrides && super.hasOwnProperty(key)) {
 243             super.set(key, value, flags);
 244         } else {
 245             callAdaptee(__put__, key, value, flags);
 246         }
 247     }
 248 
 249     @Override
 250     public void set(final double key, final int value, final int flags) {
 251         if (overrides && super.hasOwnProperty(key)) {
 252             super.set(key, value, flags);
 253         } else {
 254             callAdaptee(__put__, key, value, flags);
 255         }
 256     }
 257 
 258     @Override









 259     public void set(final double key, final double value, final int flags) {
 260         if (overrides && super.hasOwnProperty(key)) {
 261             super.set(key, value, flags);
 262         } else {
 263             callAdaptee(__put__, key, value, flags);
 264         }
 265     }
 266 
 267     @Override
 268     public void set(final double key, final Object value, final int flags) {
 269         if (overrides && super.hasOwnProperty(key)) {
 270             super.set(key, value, flags);
 271         } else {
 272             callAdaptee(__put__, key, value, flags);
 273         }
 274     }
 275 
 276     @Override




































 277     public void set(final int key, final int value, final int flags) {
 278         if (overrides && super.hasOwnProperty(key)) {
 279             super.set(key, value, flags);
 280         } else {
 281             callAdaptee(__put__, key, value, flags);
 282         }
 283     }
 284 
 285     @Override









 286     public void set(final int key, final double value, final int flags) {
 287         if (overrides && super.hasOwnProperty(key)) {
 288             super.set(key, value, flags);
 289         } else {
 290             callAdaptee(__put__, key, value, flags);
 291         }
 292     }
 293 
 294     @Override
 295     public void set(final int key, final Object value, final int flags) {
 296         if (overrides && super.hasOwnProperty(key)) {
 297             super.set(key, value, flags);
 298         } else {
 299             callAdaptee(__put__, key, value, flags);
 300         }
 301     }
 302 
 303     @Override
 304     public boolean has(final Object key) {
 305         if (overrides && super.hasOwnProperty(key)) {
 306             return true;
 307         }
 308 
 309         return JSType.toBoolean(callAdaptee(Boolean.FALSE, __has__, key));
 310     }
 311 
 312     @Override
 313     public boolean has(final int key) {
 314         if (overrides && super.hasOwnProperty(key)) {
 315             return true;
 316         }
 317 
 318         return JSType.toBoolean(callAdaptee(Boolean.FALSE, __has__, key));
 319     }
 320 
 321     @Override









 322     public boolean has(final double key) {
 323         if (overrides && super.hasOwnProperty(key)) {
 324             return true;
 325         }
 326 
 327         return JSType.toBoolean(callAdaptee(Boolean.FALSE, __has__, key));
 328     }
 329 
 330     @Override
 331     public boolean delete(final int key, final boolean strict) {
 332         if (overrides && super.hasOwnProperty(key)) {
 333             return super.delete(key, strict);
 334         }
 335 
 336         return JSType.toBoolean(callAdaptee(Boolean.TRUE, __delete__, key, strict));
 337     }
 338 
 339     @Override









 340     public boolean delete(final double key, final boolean strict) {
 341         if (overrides && super.hasOwnProperty(key)) {
 342             return super.delete(key, strict);
 343         }
 344 
 345         return JSType.toBoolean(callAdaptee(Boolean.TRUE, __delete__, key, strict));
 346     }
 347 
 348     @Override
 349     public boolean delete(final Object key, final boolean strict) {
 350         if (overrides && super.hasOwnProperty(key)) {
 351             return super.delete(key, strict);
 352         }
 353 
 354         return JSType.toBoolean(callAdaptee(Boolean.TRUE, __delete__, key, strict));
 355     }
 356 
 357     @Override
 358     public Iterator<String> propertyIterator() {
 359         // Try __getIds__ first, if not found then try __getKeys__


 534             try {
 535                 final GuardedInvocation inv = super.findSetMethod(desc, request);
 536                 if (inv != null) {
 537                     return inv;
 538                 }
 539             } catch (final Exception e) {
 540                 //ignored
 541             }
 542         }
 543 
 544         return findHook(desc, __put__);
 545     }
 546 
 547     // -- Internals only below this point
 548     private Object callAdaptee(final String name, final Object... args) {
 549         return callAdaptee(UNDEFINED, name, args);
 550     }
 551 
 552     private double callAdapteeDouble(final int programPoint, final String name, final Object... args) {
 553         return JSType.toNumberMaybeOptimistic(callAdaptee(name, args), programPoint);




 554     }
 555 
 556     private int callAdapteeInt(final int programPoint, final String name, final Object... args) {
 557         return JSType.toInt32MaybeOptimistic(callAdaptee(name, args), programPoint);
 558     }
 559 
 560     private Object callAdaptee(final Object retValue, final String name, final Object... args) {
 561         final Object func = adaptee.get(name);
 562         if (func instanceof ScriptFunction) {
 563             return ScriptRuntime.apply((ScriptFunction)func, adaptee, args);
 564         }
 565         return retValue;
 566     }
 567 
 568     private GuardedInvocation findHook(final CallSiteDescriptor desc, final String hook) {
 569         return findHook(desc, hook, true);
 570     }
 571 
 572     private GuardedInvocation findHook(final CallSiteDescriptor desc, final String hook, final boolean useName) {
 573         final FindProperty findData = adaptee.findProperty(hook, true);


< prev index next >