java.lang.Object
org.eclipse.persistence.internal.jpa.metamodel.TypeImpl<X>
org.eclipse.persistence.internal.jpa.metamodel.ManagedTypeImpl<X>
Type Parameters:
X - The represented type.
All Implemented Interfaces:
ManagedType<X>, Type<X>, Serializable
Direct Known Subclasses:
EmbeddableTypeImpl, IdentifiableTypeImpl

public abstract class ManagedTypeImpl<X> extends TypeImpl<X> implements ManagedType<X>

Purpose: Provides the implementation for the ManagedType interface of the JPA 2.0 Metamodel API (part of the JSR-317 EJB 3.1 Criteria API)

Description: Instances of the type ManagedType represent entities, mapped superclasses and embeddable types.

Since:
EclipseLink 1.2 - JPA 2.0
See Also:
  • Field Details

    • descriptor

      protected ClassDescriptor descriptor
      Native RelationalDescriptor that contains all the mappings of this type
    • metamodel

      protected MetamodelImpl metamodel
      Reference to the metamodel that this managed type belongs to
  • Constructor Details

    • ManagedTypeImpl

      protected ManagedTypeImpl(MetamodelImpl metamodel, ClassDescriptor descriptor)
      INTERNAL: This constructor will create a ManagedType but will not initialize its member mappings. This is accomplished by delayed initialization in MetamodelImpl.initialize() in order that we have access to all types when resolving relationships in mappings.
      Parameters:
      metamodel - - the metamodel that this managedType is associated with
      descriptor - - the RelationalDescriptor that defines this managedType
  • Method Details

    • getAttribute

      public Attribute<X,?> getAttribute(String name)
      Return the attribute of the managed type that corresponds to the specified name.
      Specified by:
      getAttribute in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      attribute with given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not present in the managed type
    • getAttributes

      public Set<Attribute<? super X,?>> getAttributes()
      Return the attributes of the managed type.
      Specified by:
      getAttributes in interface ManagedType<X>
    • getCollection

      public CollectionAttribute<? super X,?> getCollection(String name)
      Return the Collection-valued attribute of the managed type that corresponds to the specified name.
      Specified by:
      getCollection in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      CollectionAttribute of the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not present in the managed type
    • getCollection

      public <E> CollectionAttribute<? super X,E> getCollection(String name, Class<E> elementType)
      Return the Collection-valued attribute of the managed type that corresponds to the specified name and Java element type.
      Specified by:
      getCollection in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      elementType - the element type of the represented attribute
      Returns:
      CollectionAttribute of the given name and element type
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not present in the managed type
    • getPluralAttributes

      public Set<PluralAttribute<? super X,?,?>> getPluralAttributes()
      Return all collection-valued attributes of the managed type.
      Specified by:
      getPluralAttributes in interface ManagedType<X>
      Returns:
      collection valued attributes
    • getDeclaredAttribute

      protected Attribute<X,?> getDeclaredAttribute(String name, boolean attributeKnownToExistOnLeafTarget)
      INTERNAL: Return the declared attribute of the managed type that corresponds to the specified name.
      Parameters:
      name - the name of the represented attribute
      attributeKnownToExistOnLeafTarget - true if we already know the attribute exists on the leaf
      Returns:
      attribute with given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not declared in the managed type
    • getDeclaredAttribute

      public Attribute<X,?> getDeclaredAttribute(String name)
      Return the declared attribute of the managed type that corresponds to the specified name.
      Specified by:
      getDeclaredAttribute in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      attribute with given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not declared in the managed type
    • getDeclaredAttributes

      public Set<Attribute<X,?>> getDeclaredAttributes()
      Return the attributes declared by the managed type.
      Specified by:
      getDeclaredAttributes in interface ManagedType<X>
    • getDeclaredCollection

      public CollectionAttribute<X,?> getDeclaredCollection(String name)
      Return the Collection-valued attribute declared by the managed type that corresponds to the specified name.
      Specified by:
      getDeclaredCollection in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      declared CollectionAttribute of the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not declared in the managed type
    • getDeclaredCollection

      public <E> CollectionAttribute<X,E> getDeclaredCollection(String name, Class<E> elementType)
      Return the Collection-valued attribute declared by the managed type that corresponds to the specified name and Java element type.
      Specified by:
      getDeclaredCollection in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      elementType - the element type of the represented attribute
      Returns:
      declared CollectionAttribute of the given name and element type
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not declared in the managed type
    • getDeclaredPluralAttributes

      public Set<PluralAttribute<X,?,?>> getDeclaredPluralAttributes()
      Return all collection-valued attributes declared by the managed type.
      Specified by:
      getDeclaredPluralAttributes in interface ManagedType<X>
      Returns:
      declared collection valued attributes
    • create

      protected static ManagedTypeImpl<?> create(MetamodelImpl metamodel, ClassDescriptor descriptor)
      INTERNAL: Return an instance of a ManagedType based on the RelationalDescriptor parameter
    • getDeclaredList

      public <E> ListAttribute<X,E> getDeclaredList(String name, Class<E> elementType)
      Return the List-valued attribute declared by the managed type that corresponds to the specified name and Java element type.
      Specified by:
      getDeclaredList in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      elementType - the element type of the represented attribute
      Returns:
      declared ListAttribute of the given name and element type
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not declared in the managed type
    • getDeclaredList

      public ListAttribute<X,?> getDeclaredList(String name)
      Return the List-valued attribute declared by the managed type that corresponds to the specified name.
      Specified by:
      getDeclaredList in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      declared ListAttribute of the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not declared in the managed type
    • getDeclaredMap

      public MapAttribute<X,?,?> getDeclaredMap(String name)
      Return the Map-valued attribute of the managed type that corresponds to the specified name.
      Specified by:
      getDeclaredMap in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      MapAttribute of the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not present in the managed type
    • getDeclaredMap

      public <K, V> MapAttribute<X,K,V> getDeclaredMap(String name, Class<K> keyType, Class<V> valueType)
      Return the Map-valued attribute of the managed type that corresponds to the specified name and Java key and value types.
      Specified by:
      getDeclaredMap in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      keyType - the key type of the represented attribute
      valueType - the value type of the represented attribute
      Returns:
      MapAttribute of the given name and key and value types
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not present in the managed type
    • getDeclaredSet

      public SetAttribute<X,?> getDeclaredSet(String name)
      Return the Set-valued attribute declared by the managed type that corresponds to the specified name.
      Specified by:
      getDeclaredSet in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      declared SetAttribute of the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not declared in the managed type
    • getDeclaredSet

      public <E> SetAttribute<X,E> getDeclaredSet(String name, Class<E> elementType)
      Return the Set-valued attribute declared by the managed type that corresponds to the specified name and Java element type.
      Specified by:
      getDeclaredSet in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      elementType - the element type of the represented attribute
      Returns:
      declared SetAttribute of the given name and element type
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not declared in the managed type
    • getDeclaredSingularAttribute

      public SingularAttribute<X,?> getDeclaredSingularAttribute(String name)
      Return the declared single-valued attribute of the managed type that corresponds to the specified name in the represented type.
      Specified by:
      getDeclaredSingularAttribute in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      declared single-valued attribute of the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not declared in the managed type
    • getDeclaredSingularAttribute

      public <Y> SingularAttribute<X,Y> getDeclaredSingularAttribute(String name, Class<Y> type)
      Return the declared single-valued attribute of the managed type that corresponds to the specified name and Java type in the represented type.
      Specified by:
      getDeclaredSingularAttribute in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      type - the type of the represented attribute
      Returns:
      declared single-valued attribute of the given name and type
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not declared in the managed type
    • getDeclaredSingularAttributes

      public Set<SingularAttribute<X,?>> getDeclaredSingularAttributes()
      Return the single-valued attributes declared by the managed type.
      Specified by:
      getDeclaredSingularAttributes in interface ManagedType<X>
      Returns:
      declared single-valued attributes
    • getDescriptor

      public ClassDescriptor getDescriptor()
      INTERNAL: Return the RelationalDescriptor associated with this ManagedType
    • getList

      public ListAttribute<? super X,?> getList(String name)
      Return the List-valued attribute of the managed type that corresponds to the specified name.
      Specified by:
      getList in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      ListAttribute of the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not present in the managed type
    • getList

      public <E> ListAttribute<? super X,E> getList(String name, Class<E> elementType)
      Return the List-valued attribute of the managed type that corresponds to the specified name and Java element type.
      Specified by:
      getList in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      elementType - the element type of the represented attribute
      Returns:
      ListAttribute of the given name and element type
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not present in the managed type
    • getMap

      public MapAttribute<? super X,?,?> getMap(String name)
      Return the Map-valued attribute of the managed type that corresponds to the specified name.
      Specified by:
      getMap in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      MapAttribute of the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not present in the managed type
    • getMap

      public <K, V> MapAttribute<? super X,K,V> getMap(String name, Class<K> keyType, Class<V> valueType)
      Return the Map-valued attribute of the managed type that corresponds to the specified name and Java key and value types.
      Specified by:
      getMap in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      keyType - the key type of the represented attribute
      valueType - the value type of the represented attribute
      Returns:
      MapAttribute of the given name and key and value types
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not present in the managed type
    • getMembers

      protected Map<String,Attribute<X,?>> getMembers()
      INTERNAL: Return the Map of AttributeImpl members keyed by String.
    • getMetamodel

      protected MetamodelImpl getMetamodel()
      INTERNAL: Return the Metamodel that this ManagedType is associated with.
    • getSet

      public SetAttribute<? super X,?> getSet(String name)
      Return the Set-valued attribute of the managed type that corresponds to the specified name.
      Specified by:
      getSet in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      SetAttribute of the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not present in the managed type
    • getSet

      public <E> SetAttribute<? super X,E> getSet(String name, Class<E> elementType)
      Return the Set-valued attribute of the managed type that corresponds to the specified name and Java element type.
      Specified by:
      getSet in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      elementType - the element type of the represented attribute
      Returns:
      SetAttribute of the given name and element type
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not present in the managed type
    • getSingularAttribute

      public SingularAttribute<? super X,?> getSingularAttribute(String name)
      Return the single-valued attribute of the managed type that corresponds to the specified name in the represented type.
      Specified by:
      getSingularAttribute in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      Returns:
      single-valued attribute with the given name
      Throws:
      IllegalArgumentException - if attribute of the given name is not present in the managed type
    • getSingularAttribute

      public <Y> SingularAttribute<? super X,Y> getSingularAttribute(String name, Class<Y> type)
      Return the single-valued attribute of the managed type that corresponds to the specified name and Java type in the represented type.
      Specified by:
      getSingularAttribute in interface ManagedType<X>
      Parameters:
      name - the name of the represented attribute
      type - the type of the represented attribute
      Returns:
      single-valued attribute with given name and type
      Throws:
      IllegalArgumentException - if attribute of the given name and type is not present in the managed type
    • getSingularAttributes

      public Set<SingularAttribute<? super X,?>> getSingularAttributes()
      Return the single-valued attributes of the managed type.
      Specified by:
      getSingularAttributes in interface ManagedType<X>
      Returns:
      single-valued attributes
    • initialize

      protected void initialize()
      INTERNAL: Initialize the members of this ManagedType based on the mappings defined on the descriptor. We process the appropriate Map, List, Set, Collection or Object/primitive types.

      Initialization should occur after all types in the metamodel have been created already.

    • getTypeClassFromAttributeOrMethodLevelAccessor

      protected Class<?> getTypeClassFromAttributeOrMethodLevelAccessor(DatabaseMapping mapping)
      INTERNAL: Get the elementType directly from the class using a reflective method call directly on the containing java class associated with this managedType.
    • isIdentifiableType

      protected boolean isIdentifiableType()
      INTERNAL: Return whether this type is identifiable. This would be EntityType and MappedSuperclassType
      Specified by:
      isIdentifiableType in class TypeImpl<X>
    • isManagedType

      protected boolean isManagedType()
      INTERNAL: Return whether this type is identifiable. This would be EmbeddableType as well as EntityType and MappedSuperclassType
      Specified by:
      isManagedType in class TypeImpl<X>
    • toStringHelper

      protected void toStringHelper(StringBuffer aBuffer)
      INTERNAL: Append the partial string representation of the receiver to the StringBuffer.
      Specified by:
      toStringHelper in class TypeImpl<X>