Package com.google.web.bindery.autobean.shared

## Interface AutoBean<T>

- Type Parameters:
    `T` - the type of interface that will be wrapped.

      public interface AutoBean<T>

  A controller for an implementation of a bean interface. Instances of AutoBeans are obtained from an `AutoBeanFactory`.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface | Description
    --- | --- | ---
    `static interface` | `AutoBean.PropertyName` | An annotation that allows inferred property names to be overridden.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `accept​(AutoBeanVisitor visitor)` | Accept an AutoBeanVisitor.
    `T` | `as()` | Returns a proxy implementation of the `T` interface which will delegate to the underlying wrapped object, if any.
    `AutoBean<T>` | `clone​(boolean deep)` | Deprecated. with no replacement
    `AutoBeanFactory` | `getFactory()` | Returns the AutoBeanFactory that created the AutoBean.
    `<Q> Q` | `getTag​(java.lang.String tagName)` | Retrieve a tag value that was previously provided to `setTag(String, Object)`.
    `java.lang.Class<T>` | `getType()` | Returns the wrapped interface type.
    `boolean` | `isFrozen()` | Returns the value most recently passed to `setFrozen(boolean)`, or `false` if it has never been called.
    `boolean` | `isWrapper()` | Returns `true` if the AutoBean was provided with an external object.
    `void` | `setFrozen​(boolean frozen)` | Disallows any method calls other than getters.
    `void` | `setTag​(java.lang.String tagName, java.lang.Object value)` | A tag is an arbitrary piece of external metadata to be associated with the wrapped value.
    `T` | `unwrap()` | If the AutoBean wraps an object, return the underlying object.

- - ### Method Detail

    - #### accept

          void accept​(AutoBeanVisitor visitor)

      Accept an AutoBeanVisitor.
      Parameters:
        `visitor` - an `AutoBeanVisitor`

    - #### as

          T as()

      Returns a proxy implementation of the `T` interface which will delegate to the underlying wrapped object, if any.
      Returns:
        a proxy that delegates to the wrapped object

    - #### clone

          @Deprecated
          AutoBean<T> clone​(boolean deep)

      Deprecated.
      with no replacement
      This method always throws an `UnsupportedOperationException`. The implementation of this method in previous releases was not sufficiently robust and there are no further uses of this method within the GWT code base. Furthermore, there are many different semantics that can be applied to a cloning process that cannot be adequately addressed with a single implementation.

      A simple clone of an acyclic datastructure can be created by using `AutoBeanCodex` to encode and decode the root object. Other cloning algorithms are best implemented by using an `AutoBeanVisitor`.

      Throws:
        `java.lang.UnsupportedOperationException`

    - #### getFactory

          AutoBeanFactory getFactory()

      Returns the AutoBeanFactory that created the AutoBean.
      Returns:
        an AutoBeanFactory

    - #### getTag

          <Q> Q getTag​(java.lang.String tagName)

      Retrieve a tag value that was previously provided to `setTag(String, Object)`.
      Parameters:
        `tagName` - the tag name
      Returns:
        the tag value
      See Also:
        `setTag(String, Object)`

    - #### getType

          java.lang.Class<T> getType()

      Returns the wrapped interface type.

    - #### isFrozen

          boolean isFrozen()

      Returns the value most recently passed to `setFrozen(boolean)`, or `false` if it has never been called.
      Returns:
        `true` if this instance is frozen

    - #### isWrapper

          boolean isWrapper()

      Returns `true` if the AutoBean was provided with an external object.
      Returns:
        `true` if this instance is a wrapper

    - #### setFrozen

          void setFrozen​(boolean frozen)

      Disallows any method calls other than getters. All setter and call operations will throw an `IllegalStateException`.
      Parameters:
        `frozen` - if `true`, freeze this instance

    - #### setTag

          void setTag​(java.lang.String tagName,
                      java.lang.Object value)

      A tag is an arbitrary piece of external metadata to be associated with the wrapped value.
      Parameters:
        `tagName` - the tag name
        `value` - the wrapped value
      See Also:
        `getTag(String)`

    - #### unwrap

          T unwrap()

      If the AutoBean wraps an object, return the underlying object. The AutoBean will no longer function once unwrapped.
      Returns:
        the previously-wrapped object
      Throws:
        `java.lang.IllegalStateException` - if the AutoBean is not a wrapper