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

Print this page

        

*** 23,32 **** --- 23,33 ---- * questions. */ package jdk.nashorn.internal.objects; + import static jdk.nashorn.internal.runtime.ECMAErrors.typeError; import static jdk.nashorn.internal.runtime.UnwarrantedOptimismException.isValid; import jdk.internal.dynalink.CallSiteDescriptor; import jdk.internal.dynalink.beans.StaticClass; import jdk.internal.dynalink.linker.GuardedInvocation;
*** 34,46 **** --- 35,49 ---- import jdk.nashorn.internal.objects.annotations.Attribute; import jdk.nashorn.internal.objects.annotations.Constructor; import jdk.nashorn.internal.objects.annotations.Function; import jdk.nashorn.internal.objects.annotations.ScriptClass; import jdk.nashorn.internal.runtime.Context; + import jdk.nashorn.internal.runtime.JSType; import jdk.nashorn.internal.runtime.NativeJavaPackage; import jdk.nashorn.internal.runtime.PropertyMap; import jdk.nashorn.internal.runtime.ScriptObject; + import jdk.nashorn.internal.runtime.ScriptRuntime; import jdk.nashorn.internal.runtime.UnwarrantedOptimismException; /** * This is "JavaImporter" constructor. This constructor allows you to use Java types omitting explicit package names. * Objects of this constructor are used along with {@code "with"} statements and as such are not usable in ECMAScript
*** 92,128 **** public static NativeJavaImporter constructor(final boolean isNew, final Object self, final Object... args) { return new NativeJavaImporter(args); } /** ! * "No such property" call placeholder. ! * ! * This can never be called as we override {@link ScriptObject#noSuchProperty}. We do declare it here as it's a signal ! * to {@link jdk.nashorn.internal.runtime.WithObject} that it's worth trying doing a {@code noSuchProperty} on this object. * * @param self self reference * @param name property name ! * @return never returns */ @Function(attributes = Attribute.NOT_ENUMERABLE) public static Object __noSuchProperty__(final Object self, final Object name) { ! throw new AssertionError("__noSuchProperty__ placeholder called"); } /** ! * "No such method call" placeholder ! * ! * This can never be called as we override {@link ScriptObject#noSuchMethod}. We do declare it here as it's a signal ! * to {@link jdk.nashorn.internal.runtime.WithObject} that it's worth trying doing a noSuchProperty on this object. * * @param self self reference * @param args arguments to method ! * @return never returns */ @Function(attributes = Attribute.NOT_ENUMERABLE) public static Object __noSuchMethod__(final Object self, final Object... args) { ! throw new AssertionError("__noSuchMethod__ placeholder called"); } @Override public GuardedInvocation noSuchProperty(final CallSiteDescriptor desc, final LinkRequest request) { return createAndSetProperty(desc) ? super.lookup(desc, request) : super.noSuchProperty(desc, request); --- 95,128 ---- public static NativeJavaImporter constructor(final boolean isNew, final Object self, final Object... args) { return new NativeJavaImporter(args); } /** ! * "No such property" handler. * * @param self self reference * @param name property name ! * @return value of the missing property */ @Function(attributes = Attribute.NOT_ENUMERABLE) public static Object __noSuchProperty__(final Object self, final Object name) { ! if (! (self instanceof NativeJavaImporter)) { ! throw typeError("not.a.java.importer", ScriptRuntime.safeToString(self)); ! } ! return ((NativeJavaImporter)self).createProperty(JSType.toString(name)); } /** ! * "No such method call" handler * * @param self self reference * @param args arguments to method ! * @return never returns always throw TypeError */ @Function(attributes = Attribute.NOT_ENUMERABLE) public static Object __noSuchMethod__(final Object self, final Object... args) { ! throw typeError("not.a.function", ScriptRuntime.safeToString(args[0])); } @Override public GuardedInvocation noSuchProperty(final CallSiteDescriptor desc, final LinkRequest request) { return createAndSetProperty(desc) ? super.lookup(desc, request) : super.noSuchProperty(desc, request);