< prev index next >

src/jdk/nashorn/internal/objects/NativeJSAdapter.java

Print this page




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


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




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





 182     public int getInt(final int key, final int programPoint) {
 183         return (overrides && super.hasOwnProperty(key)) ? super.getInt(key, programPoint) : callAdapteeInt(programPoint, __get__, key);
 184     }
 185 
 186     @Override




















 187     public double getDouble(final Object key, final int programPoint) {
 188         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 189     }
 190 
 191     @Override
 192     public double getDouble(final double key, final int programPoint) {
 193         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 194     }
 195 
 196     @Override





 197     public double getDouble(final int key, final int programPoint) {
 198         return (overrides && super.hasOwnProperty(key)) ? super.getDouble(key, programPoint) : callAdapteeDouble(programPoint, __get__, key);
 199     }
 200 
 201     @Override
 202     public Object get(final Object key) {
 203         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 204     }
 205 
 206     @Override
 207     public Object get(final double key) {
 208         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 209     }
 210 
 211     @Override





 212     public Object get(final int key) {
 213         return (overrides && super.hasOwnProperty(key)) ? super.get(key) : callAdaptee(__get__, key);
 214     }
 215 
 216     @Override
 217     public void set(final Object key, final int value, final int flags) {
 218         if (overrides && super.hasOwnProperty(key)) {
 219             super.set(key, value, flags);
 220         } else {
 221             callAdaptee(__put__, key, value, flags);
 222         }
 223     }
 224 
 225     @Override









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









 253     public void set(final double key, final double value, final int flags) {
 254         if (overrides && super.hasOwnProperty(key)) {
 255             super.set(key, value, flags);
 256         } else {
 257             callAdaptee(__put__, key, value, flags);
 258         }
 259     }
 260 
 261     @Override
 262     public void set(final double key, final Object value, final int flags) {
 263         if (overrides && super.hasOwnProperty(key)) {
 264             super.set(key, value, flags);
 265         } else {
 266             callAdaptee(__put__, key, value, flags);
 267         }
 268     }
 269 
 270     @Override




































 271     public void set(final int key, final int value, final int flags) {
 272         if (overrides && super.hasOwnProperty(key)) {
 273             super.set(key, value, flags);
 274         } else {
 275             callAdaptee(__put__, key, value, flags);
 276         }
 277     }
 278 
 279     @Override









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









 316     public boolean has(final double key) {
 317         if (overrides && super.hasOwnProperty(key)) {
 318             return true;
 319         }
 320 
 321         return JSType.toBoolean(callAdaptee(Boolean.FALSE, __has__, key));
 322     }
 323 
 324     @Override
 325     public boolean delete(final int key, final boolean strict) {
 326         if (overrides && super.hasOwnProperty(key)) {
 327             return super.delete(key, strict);
 328         }
 329 
 330         return JSType.toBoolean(callAdaptee(Boolean.TRUE, __delete__, key, strict));
 331     }
 332 
 333     @Override









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


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




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


< prev index next >