Class OwnedMetaClass

    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      boolean equals​(java.lang.Object obj)  
      java.lang.Object getAttribute​(java.lang.Class sender, java.lang.Object receiver, java.lang.String messageName, boolean useSuper)
      Retrieves the value of an attribute (field).
      java.lang.Object getAttribute​(java.lang.Object object, java.lang.String attribute)
      Retrieves an attribute of an instance of the class returned by the getTheClass() method.
      ClassNode getClassNode()
      Obtains a reference to the original AST for the MetaClass if it is available at runtime
      MetaMethod getMetaMethod​(java.lang.String name, java.lang.Class[] argTypes)  
      MetaMethod getMetaMethod​(java.lang.String name, java.lang.Object[] args)
      Retrieves an instance MetaMethod for the given name and argument values, using the types of the argument values to establish the chosen MetaMethod
      java.util.List<MetaMethod> getMetaMethods()
      Retrieves a list of MetaMethods held by this class.
      MetaProperty getMetaProperty​(java.lang.String name)
      Returns a MetaProperty for the given name or null if it doesn't exist
      java.util.List<MetaMethod> getMethods()
      Retrieves a list of MetaMethods held by the class.
      protected abstract java.lang.Object getOwner()  
      protected abstract MetaClass getOwnerMetaClass​(java.lang.Object owner)  
      java.util.List<MetaProperty> getProperties()
      Retrieves a list of MetaProperty instances that the MetaClass has
      java.lang.Object getProperty​(java.lang.Class sender, java.lang.Object receiver, java.lang.String messageName, boolean useSuper, boolean fromInsideClass)
      Retrieves a property on the given receiver for the specified arguments.
      java.lang.Object getProperty​(java.lang.Object object, java.lang.String property)
      Retrieves a property of an instance of the class returned by the getTheClass() method.
      MetaMethod getStaticMetaMethod​(java.lang.String name, java.lang.Class[] argTypes)  
      MetaMethod getStaticMetaMethod​(java.lang.String name, java.lang.Object[] args)
      Retrieves a static MetaMethod for the given name and argument values, using the types of the arguments to establish the chosen MetaMethod
      java.lang.Class getTheClass()
      Retrieves that Java Class that the attached Meta behaviours apply to
      int hashCode()  
      MetaProperty hasProperty​(java.lang.Object obj, java.lang.String name)
      Returns true of the implementing MetaClass has a property of the given name
      java.lang.Object invokeConstructor​(java.lang.Object[] arguments)
      Invokes a constructor for the given arguments.
      java.lang.Object invokeMethod​(java.lang.Class sender, java.lang.Object receiver, java.lang.String methodName, java.lang.Object[] arguments, boolean isCallToSuper, boolean fromInsideClass)
      Invokes a method on the given receiver for the specified arguments.
      java.lang.Object invokeMethod​(java.lang.Object object, java.lang.String methodName, java.lang.Object arguments)
      Invokes a method on the given object, with the given name and single argument.
      java.lang.Object invokeMethod​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments)
      Invokes a method on the given Object with the given name and arguments.
      java.lang.Object invokeMissingMethod​(java.lang.Object instance, java.lang.String methodName, java.lang.Object[] arguments)
      Attempts to invoke the methodMissing method otherwise throws a MissingMethodException
      java.lang.Object invokeMissingProperty​(java.lang.Object instance, java.lang.String propertyName, java.lang.Object optionalValue, boolean isGetter)
      Invokes the propertyMissing method otherwise throws a MissingPropertyException
      java.lang.Object invokeStaticMethod​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments)
      Invokes a static method on the given Object with the given name and arguments.
      boolean isGroovyObject()  
      java.util.List<MetaMethod> respondsTo​(java.lang.Object obj, java.lang.String name)
      Returns an object satisfying Groovy truth if the implementing MetaClass responds to a method with the given name regardless of arguments.
      java.util.List<MetaMethod> respondsTo​(java.lang.Object obj, java.lang.String name, java.lang.Object[] argTypes)
      Returns an object satisfying Groovy truth if the implementing MetaClass responds to a method with the given name and arguments types.
      int selectConstructorAndTransformArguments​(int numberOfConstructors, java.lang.Object[] arguments)
      Internal method to support Groovy runtime.
      void setAttribute​(java.lang.Class sender, java.lang.Object receiver, java.lang.String messageName, java.lang.Object messageValue, boolean useSuper, boolean fromInsideClass)
      Sets the value of an attribute (field).
      void setAttribute​(java.lang.Object object, java.lang.String attribute, java.lang.Object newValue)
      Sets an attribute of an instance of the class returned by the getTheClass() method.
      void setProperty​(java.lang.Class sender, java.lang.Object receiver, java.lang.String messageName, java.lang.Object messageValue, boolean useSuper, boolean fromInsideClass)
      Sets a property on the given receiver for the specified arguments.
      void setProperty​(java.lang.Object object, java.lang.String property, java.lang.Object newValue)
      Sets a property of an instance of the class returned by the getTheClass() method.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • OwnedMetaClass

        public OwnedMetaClass​(MetaClass delegate)
    • Method Detail

      • getAttribute

        public java.lang.Object getAttribute​(java.lang.Object object,
                                             java.lang.String attribute)
        Description copied from interface: MetaObjectProtocol
        Retrieves an attribute of an instance of the class returned by the getTheClass() method.

        What this means is largely down to the MetaClass implementation, however the default case would result in attempt to read a field of the instance.

        Specified by:
        getAttribute in interface MetaObjectProtocol
        Overrides:
        getAttribute in class DelegatingMetaClass
        Parameters:
        object - An instance of the class returned by the getTheClass() method
        attribute - The name of the attribute to retrieve the value for
        Returns:
        The attribute value
        See Also:
        MetaClassImpl
      • getOwner

        protected abstract java.lang.Object getOwner()
      • getMetaMethods

        public java.util.List<MetaMethod> getMetaMethods()
        Description copied from interface: MetaClass
        Retrieves a list of MetaMethods held by this class. This list includes MetaMethods added by groovy.lang.ExpandoMetaClass.
        Specified by:
        getMetaMethods in interface MetaClass
        Overrides:
        getMetaMethods in class DelegatingMetaClass
        Returns:
        A list of MetaMethods
      • respondsTo

        public java.util.List<MetaMethod> respondsTo​(java.lang.Object obj,
                                                     java.lang.String name,
                                                     java.lang.Object[] argTypes)
        Description copied from interface: MetaObjectProtocol

        Returns an object satisfying Groovy truth if the implementing MetaClass responds to a method with the given name and arguments types.

        Note that this method's return value is based on realised methods and does not take into account objects or classes that implement invokeMethod or methodMissing

        This method is "safe" in that it will always return a value and never throw an exception

        Specified by:
        respondsTo in interface MetaObjectProtocol
        Overrides:
        respondsTo in class DelegatingMetaClass
        Parameters:
        obj - The object to inspect
        name - The name of the method of interest
        argTypes - The argument types to match against
        Returns:
        A List of MetaMethods matching the argument types which will be empty if no matching methods exist
      • respondsTo

        public java.util.List<MetaMethod> respondsTo​(java.lang.Object obj,
                                                     java.lang.String name)
        Description copied from interface: MetaObjectProtocol

        Returns an object satisfying Groovy truth if the implementing MetaClass responds to a method with the given name regardless of arguments. In other words this method will return for foo() and foo(String).

        Note that this method's return value is based on realised methods and does not take into account objects or classes that implement invokeMethod or methodMissing

        This method is "safe" in that it will always return a value and never throw an exception

        Specified by:
        respondsTo in interface MetaObjectProtocol
        Overrides:
        respondsTo in class DelegatingMetaClass
        Parameters:
        obj - The object to inspect
        name - The name of the method of interest
        Returns:
        A List of MetaMethods which will be empty if no methods with the given name exist
      • hasProperty

        public MetaProperty hasProperty​(java.lang.Object obj,
                                        java.lang.String name)
        Description copied from interface: MetaObjectProtocol

        Returns true of the implementing MetaClass has a property of the given name

        Note that this method will only return true for realised properties and does not take into account implementation of getProperty or propertyMissing

        Specified by:
        hasProperty in interface MetaObjectProtocol
        Overrides:
        hasProperty in class DelegatingMetaClass
        Parameters:
        obj - The object to inspect
        name - The name of the property
        Returns:
        The MetaProperty or null if it doesn't exist
      • getProperty

        public java.lang.Object getProperty​(java.lang.Object object,
                                            java.lang.String property)
        Description copied from interface: MetaObjectProtocol
        Retrieves a property of an instance of the class returned by the getTheClass() method.

        What this means is largely down to the MetaClass implementation, however the default case would result in an attempt to invoke a JavaBean getter, or if no such getter exists a public field of the instance.

        Specified by:
        getProperty in interface MetaObjectProtocol
        Overrides:
        getProperty in class DelegatingMetaClass
        Parameters:
        object - An instance of the class returned by the getTheClass() method
        property - The name of the property to retrieve the value for
        Returns:
        The properties value
        See Also:
        MetaClassImpl
      • invokeConstructor

        public java.lang.Object invokeConstructor​(java.lang.Object[] arguments)
        Description copied from interface: MetaObjectProtocol
        Invokes a constructor for the given arguments. The MetaClass will attempt to pick the best argument which matches the types of the objects passed within the arguments array
        Specified by:
        invokeConstructor in interface MetaObjectProtocol
        Overrides:
        invokeConstructor in class DelegatingMetaClass
        Parameters:
        arguments - The arguments to the constructor
        Returns:
        An instance of the java.lang.Class that this MetaObjectProtocol object applies to
      • invokeMethod

        public java.lang.Object invokeMethod​(java.lang.Object object,
                                             java.lang.String methodName,
                                             java.lang.Object[] arguments)
        Description copied from interface: MetaObjectProtocol
        Invokes a method on the given Object with the given name and arguments. The MetaClass will attempt to pick the best method for the given name and arguments. If a method cannot be invoked a MissingMethodException will be thrown.
        Specified by:
        invokeMethod in interface MetaObjectProtocol
        Overrides:
        invokeMethod in class DelegatingMetaClass
        Parameters:
        object - The instance which the method is invoked on
        methodName - The name of the method
        arguments - The arguments to the method
        Returns:
        The return value of the method which is null if the return type is void
        See Also:
        MissingMethodException
      • getOwnerMetaClass

        protected abstract MetaClass getOwnerMetaClass​(java.lang.Object owner)
      • invokeStaticMethod

        public java.lang.Object invokeStaticMethod​(java.lang.Object object,
                                                   java.lang.String methodName,
                                                   java.lang.Object[] arguments)
        Description copied from interface: MetaObjectProtocol
        Invokes a static method on the given Object with the given name and arguments.

        The Object can either be an instance of the class that this MetaObjectProtocol instance applies to or the java.lang.Class instance itself. If a method cannot be invoked a MissingMethodException is will be thrown

        Specified by:
        invokeStaticMethod in interface MetaObjectProtocol
        Overrides:
        invokeStaticMethod in class DelegatingMetaClass
        Parameters:
        object - An instance of the class returned by the getTheClass() method or the class itself
        methodName - The name of the method
        arguments - The arguments to the method
        Returns:
        The return value of the method which is null if the return type is void
        See Also:
        MissingMethodException
      • setAttribute

        public void setAttribute​(java.lang.Object object,
                                 java.lang.String attribute,
                                 java.lang.Object newValue)
        Description copied from interface: MetaObjectProtocol
        Sets an attribute of an instance of the class returned by the getTheClass() method.

        What this means is largely down to the MetaClass implementation, however the default case would result in an attempt to set a field of the instance.

        Specified by:
        setAttribute in interface MetaObjectProtocol
        Overrides:
        setAttribute in class DelegatingMetaClass
        Parameters:
        object - An instance of the class returned by the getTheClass() method
        attribute - The name of the attribute to set
        newValue - The new value of the attribute
        See Also:
        MetaClassImpl
      • setProperty

        public void setProperty​(java.lang.Object object,
                                java.lang.String property,
                                java.lang.Object newValue)
        Description copied from interface: MetaObjectProtocol
        Sets a property of an instance of the class returned by the getTheClass() method.

        What this means is largely down to the MetaClass implementation, however the default case would result in an attempt to invoke a JavaBean setter, or if no such setter exists to set a public field of the instance.

        Specified by:
        setProperty in interface MetaObjectProtocol
        Overrides:
        setProperty in class DelegatingMetaClass
        Parameters:
        object - An instance of the class returned by the getTheClass() method
        property - The name of the property to set
        newValue - The new value of the property
        See Also:
        MetaClassImpl
      • getAttribute

        public java.lang.Object getAttribute​(java.lang.Class sender,
                                             java.lang.Object receiver,
                                             java.lang.String messageName,
                                             boolean useSuper)
        Description copied from interface: MetaClass
        Retrieves the value of an attribute (field). This method is to support the Groovy runtime and not for general client API usage.
        Specified by:
        getAttribute in interface MetaClass
        Overrides:
        getAttribute in class DelegatingMetaClass
        Parameters:
        sender - The class of the object that requested the attribute
        receiver - The instance
        messageName - The name of the attribute
        useSuper - Whether to look-up on the super class or not
        Returns:
        The attribute value
      • getProperty

        public java.lang.Object getProperty​(java.lang.Class sender,
                                            java.lang.Object receiver,
                                            java.lang.String messageName,
                                            boolean useSuper,
                                            boolean fromInsideClass)
        Description copied from interface: MetaClass

        Retrieves a property on the given receiver for the specified arguments. The sender is the class that is requesting the property from the object. The MetaClass will attempt to establish the method to invoke based on the name and arguments provided.

        The isCallToSuper and fromInsideClass help the Groovy runtime perform optimisations on the call to go directly to the super class if necessary

        Specified by:
        getProperty in interface MetaClass
        Overrides:
        getProperty in class DelegatingMetaClass
        Parameters:
        sender - The java.lang.Class instance that requested the property
        receiver - The Object which the property is being retrieved from
        messageName - The name of the property
        useSuper - Whether the call is to a super class property
        fromInsideClass - ??
        Returns:
        The properties value
      • getStaticMetaMethod

        public MetaMethod getStaticMetaMethod​(java.lang.String name,
                                              java.lang.Object[] args)
        Description copied from interface: MetaObjectProtocol
        Retrieves a static MetaMethod for the given name and argument values, using the types of the arguments to establish the chosen MetaMethod
        Specified by:
        getStaticMetaMethod in interface MetaObjectProtocol
        Overrides:
        getStaticMetaMethod in class DelegatingMetaClass
        Parameters:
        name - The name of the MetaMethod
        args - The argument types
        Returns:
        A MetaMethod or null if it doesn't exist
      • getMetaMethod

        public MetaMethod getMetaMethod​(java.lang.String name,
                                        java.lang.Object[] args)
        Description copied from interface: MetaObjectProtocol
        Retrieves an instance MetaMethod for the given name and argument values, using the types of the argument values to establish the chosen MetaMethod
        Specified by:
        getMetaMethod in interface MetaObjectProtocol
        Overrides:
        getMetaMethod in class DelegatingMetaClass
        Parameters:
        name - The name of the MetaMethod
        args - Array containing - 1) the argument values (using which their types are then inferred), or 2) the corresponding argument types
        Returns:
        A MetaMethod or null if it doesn't exist
      • getMetaMethod

        public MetaMethod getMetaMethod​(java.lang.String name,
                                        java.lang.Class[] argTypes)
      • invokeMethod

        public java.lang.Object invokeMethod​(java.lang.Class sender,
                                             java.lang.Object receiver,
                                             java.lang.String methodName,
                                             java.lang.Object[] arguments,
                                             boolean isCallToSuper,
                                             boolean fromInsideClass)
        Description copied from interface: MetaClass

        Invokes a method on the given receiver for the specified arguments. The sender is the class that invoked the method on the object. The MetaClass will attempt to establish the method to invoke based on the name and arguments provided.

        The isCallToSuper and fromInsideClass help the Groovy runtime perform optimisations on the call to go directly to the super class if necessary

        Specified by:
        invokeMethod in interface MetaClass
        Overrides:
        invokeMethod in class DelegatingMetaClass
        Parameters:
        sender - The java.lang.Class instance that invoked the method
        receiver - The object which the method was invoked on
        methodName - The name of the method
        arguments - The arguments to the method
        isCallToSuper - Whether the method is a call to a super class method
        fromInsideClass - Whether the call was invoked from the inside or the outside of the class
        Returns:
        The return value of the method
      • invokeMissingMethod

        public java.lang.Object invokeMissingMethod​(java.lang.Object instance,
                                                    java.lang.String methodName,
                                                    java.lang.Object[] arguments)
        Description copied from interface: MetaClass

        Attempts to invoke the methodMissing method otherwise throws a MissingMethodException

        Specified by:
        invokeMissingMethod in interface MetaClass
        Overrides:
        invokeMissingMethod in class DelegatingMetaClass
        Parameters:
        instance - The instance to invoke methodMissing on
        methodName - The name of the method
        arguments - The arguments to the method
        Returns:
        The results of methodMissing or throws MissingMethodException
        See Also:
        MissingMethodException
      • invokeMissingProperty

        public java.lang.Object invokeMissingProperty​(java.lang.Object instance,
                                                      java.lang.String propertyName,
                                                      java.lang.Object optionalValue,
                                                      boolean isGetter)
        Description copied from interface: MetaClass
        Invokes the propertyMissing method otherwise throws a MissingPropertyException
        Specified by:
        invokeMissingProperty in interface MetaClass
        Overrides:
        invokeMissingProperty in class DelegatingMetaClass
        Parameters:
        instance - The instance of the class
        propertyName - The name of the property
        optionalValue - The value of the property which could be null in the case of a getter
        isGetter - Whether the missing property event was the result of a getter or a setter
        Returns:
        The result of the propertyMissing method or throws MissingPropertyException
      • setAttribute

        public void setAttribute​(java.lang.Class sender,
                                 java.lang.Object receiver,
                                 java.lang.String messageName,
                                 java.lang.Object messageValue,
                                 boolean useSuper,
                                 boolean fromInsideClass)
        Description copied from interface: MetaClass
        Sets the value of an attribute (field). This method is to support the Groovy runtime and not for general client API usage.
        Specified by:
        setAttribute in interface MetaClass
        Overrides:
        setAttribute in class DelegatingMetaClass
        Parameters:
        sender - The class of the object that requested the attribute
        receiver - The instance
        messageName - The name of the attribute
        messageValue - The value of the attribute
        useSuper - Whether to look-up on the super class or not
        fromInsideClass - Whether the call happened from the inside or the outside of a class
      • setProperty

        public void setProperty​(java.lang.Class sender,
                                java.lang.Object receiver,
                                java.lang.String messageName,
                                java.lang.Object messageValue,
                                boolean useSuper,
                                boolean fromInsideClass)
        Description copied from interface: MetaClass

        Sets a property on the given receiver for the specified arguments. The sender is the class that is setting the property from the object. The MetaClass will attempt to establish the method to invoke based on the name and arguments provided.

        The isCallToSuper and fromInsideClass help the Groovy runtime perform optimisations on the call to go directly to the super class if necessary

        Specified by:
        setProperty in interface MetaClass
        Overrides:
        setProperty in class DelegatingMetaClass
        Parameters:
        sender - The java.lang.Class instance that is mutating the property
        receiver - The Object which the property is being set on
        messageName - The name of the property
        messageValue - The new value of the property to set
        useSuper - Whether the call is to a super class property
        fromInsideClass - Whether the call was invoked from the inside or the outside of the class