Class FacetAccessorImpl

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.Object delegate  
      private java.util.Map<java.lang.Class<?>,​java.lang.Object> facetMap  
    • Constructor Summary

      Constructors 
      Constructor Description
      FacetAccessorImpl​(java.lang.Object delegate)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      <T> void addFacet​(T obj)
      Add a facet to the object.
      <T> T facet​(java.lang.Class<T> cls)
      Access the Facet of Class T from the object.
      java.util.Collection<java.lang.Object> facets()
      Return a list of all facets on this object.
      java.lang.Object get​(java.lang.reflect.Field field)
      Fetch the value of the field from whichever facet contains the field.
      java.lang.Object invoke​(java.lang.reflect.Method method, java.lang.Object... args)
      Invoke method on the appropriate facet of this object, that is, on the facet corresponding to method.getDeclaringClass.
      void removeFacet​(java.lang.Class<?> cls)
      Remove the facet (if any) of the given type.
      void set​(java.lang.reflect.Field field, java.lang.Object value)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • delegate

        private java.lang.Object delegate
      • facetMap

        private java.util.Map<java.lang.Class<?>,​java.lang.Object> facetMap
    • Constructor Detail

      • FacetAccessorImpl

        public FacetAccessorImpl​(java.lang.Object delegate)
    • Method Detail

      • facet

        public <T> T facet​(java.lang.Class<T> cls)
        Description copied from interface: FacetAccessor
        Access the Facet of Class T from the object.
        Specified by:
        facet in interface FacetAccessor
        Type Parameters:
        T - The Type (as a Class) of the Facet.
        Parameters:
        cls - The class of the facet.
        Returns:
        Instance of cls for this facet. Null if no such facet is available.
      • facets

        public java.util.Collection<java.lang.Object> facets()
        Description copied from interface: FacetAccessor
        Return a list of all facets on this object.
        Specified by:
        facets in interface FacetAccessor
        Returns:
        Collection of all facets.
      • addFacet

        public <T> void addFacet​(T obj)
        Description copied from interface: FacetAccessor
        Add a facet to the object. The type T must not already be available as a facet.
        Specified by:
        addFacet in interface FacetAccessor
      • invoke

        public java.lang.Object invoke​(java.lang.reflect.Method method,
                                       java.lang.Object... args)
        Description copied from interface: FacetAccessor
        Invoke method on the appropriate facet of this object, that is, on the facet corresponding to method.getDeclaringClass.
        Specified by:
        invoke in interface FacetAccessor
        Parameters:
        method - The method to invoke.
        args - Arguments to the method.
        Returns:
        restult of the invoke call.
      • get

        public java.lang.Object get​(java.lang.reflect.Field field)
        Description copied from interface: FacetAccessor
        Fetch the value of the field from whichever facet contains the field. Read-only because that's all that the intended application needs.
        Specified by:
        get in interface FacetAccessor
        Parameters:
        field - The field to access
        Returns:
        The value of the field
      • set

        public void set​(java.lang.reflect.Field field,
                        java.lang.Object value)
        Specified by:
        set in interface FacetAccessor
      • removeFacet

        public void removeFacet​(java.lang.Class<?> cls)
        Description copied from interface: FacetAccessor
        Remove the facet (if any) of the given type.
        Specified by:
        removeFacet in interface FacetAccessor
        Parameters:
        cls - The class of the facet to remove.