package org.ovirt.engine.ui.webadmin.plugin.jsni; /** * Base class for JS objects implementing a contract (interface) by declaring corresponding native functions. * <p> * Unlike the traditional concept of interface abstract type in object-oriented languages, an <em>interface object</em> * does not necessarily have to declare all functions of the given interface in order to "implement" such interface. In * fact, an empty object can be used as a valid interface object. Missing functions will be treated as empty (no-op) * functions with default return values, as defined by the contract of such functions. * <p> * An interface object can "implement" multiple interfaces by declaring functions of those interfaces. */ public abstract class JsInterfaceObject extends JsObjectWithProperties { protected JsInterfaceObject() { } /** * Returns the given function contained in this interface object, or an empty (no-op) function. */ protected final JsFunction getFunction(String functionName) { return JsFunction.get(this, functionName); } }