Class FetchGroup<T>

java.lang.Object
org.datanucleus.FetchGroup<T>
Type Parameters:
T - Class that this FetchGroup is for
All Implemented Interfaces:
Serializable

public class FetchGroup<T> extends Object implements Serializable
Group of fields for fetching, to be used by a FetchPlan. Defined at runtime, via the API (aka dynamic fetch group). Shared by FetchPlan's, so can be used by multiple threads.
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • DEFAULT

      public static final String DEFAULT
      See Also:
    • RELATIONSHIP

      public static final String RELATIONSHIP
      See Also:
    • MULTIVALUED

      public static final String MULTIVALUED
      See Also:
    • BASIC

      public static final String BASIC
      See Also:
    • ALL

      public static final String ALL
      See Also:
    • nucleusCtx

      private NucleusContext nucleusCtx
      Context.
    • name

      private String name
      Name of the group.
    • cls

      private Class<T> cls
      The class that this group is for.
    • postLoad

      private boolean postLoad
      Whether the postLoad callback is to be called when this group is loaded.
    • memberNames

      private Set<String> memberNames
      Names of the fields/properties of the class that are part of this group.
    • recursionDepthByMemberName

      private Map<String,Integer> recursionDepthByMemberName
      Map of recursion depth, keyed by the member name. Only has entries when not using default.
    • planListeners

      private Collection<FetchPlan> planListeners
      FetchPlans listening to this group for changes.
    • unmodifiable

      private boolean unmodifiable
      Whether this group can be modified.
  • Constructor Details

    • FetchGroup

      public FetchGroup(NucleusContext nucleusCtx, String name, Class<T> cls)
      Constructor.
      Parameters:
      nucleusCtx - Context
      name - Name of the group
      cls - The class
    • FetchGroup

      public FetchGroup(FetchGroup<T> grp)
      Constructor to take a copy of the supplied group, but modifiable.
      Parameters:
      grp - The existing group
  • Method Details

    • getName

      public String getName()
      Accessor for the group name.
      Returns:
      Name of the group
    • getType

      public Class<T> getType()
      Accessor for the class that this group is for.
      Returns:
      the class
    • setPostLoad

      public void setPostLoad(boolean postLoad)
      Mutator for whether the postLoad callback should be called on loading this fetch group.
      Parameters:
      postLoad - Whether the postLoad callback should be called.
    • getPostLoad

      public boolean getPostLoad()
      Accessor for whether to call postLoad when this group is loaded.
      Returns:
      Whether to call postLoad
    • getRecursionDepth

      public int getRecursionDepth(String memberName)
      Accessor for the recursion depth for the specified field/property.
      Parameters:
      memberName - Name of field/property
      Returns:
      The recursion depth
    • setRecursionDepth

      public FetchGroup setRecursionDepth(String memberName, int recursionDepth)
      Method to set the recursion depth for the specified field/property.
      Parameters:
      memberName - Name of field/property
      recursionDepth - Recursion depth
      Returns:
      The fetch group
    • setUnmodifiable

      public FetchGroup setUnmodifiable()
      Method to make the group unmodifiable. Once unmodifiable it cannot be made modifiable again.
      Returns:
      This group
    • isUnmodifiable

      public boolean isUnmodifiable()
      Accessor for modifiability status of this group.
      Returns:
      Whether it is no longer modifiable
    • addCategory

      public FetchGroup addCategory(String categoryName)
      Convenience method to add the members for the specified category. Supports the categories defined in the JDO spec.
      Parameters:
      categoryName - Name of the category
      Returns:
      This group
    • removeCategory

      public FetchGroup removeCategory(String categoryName)
      Convenience method to remove the members for the specified category. Supports the categories defined in the JDO spec.
      Parameters:
      categoryName - Name of the category
      Returns:
      This group
    • getMemberNamesForCategory

      private String[] getMemberNamesForCategory(String categoryName)
      Convenience accessor to return the member names for the specified category name.
      Parameters:
      categoryName - Name of the category
      Returns:
      The member names
    • getMembers

      public Set<String> getMembers()
    • addMember

      public FetchGroup addMember(String memberName)
      Method to add a field of the class to the fetch group.
      Parameters:
      memberName - Name of the field/property
      Returns:
      This FetchGroup
      Throws:
      NucleusUserException - if the field/property doesn't exist for this class
    • removeMember

      public FetchGroup removeMember(String memberName)
      Method to remove a field of the class from the fetch group.
      Parameters:
      memberName - Name of the field/property
      Returns:
      This FetchGroup
      Throws:
      NucleusUserException - if the field/property doesn't exist for this class
    • addMembers

      public FetchGroup addMembers(String[] members)
    • removeMembers

      public FetchGroup removeMembers(String[] members)
    • notifyListeners

      private void notifyListeners()
      Method to notify all FetchPlan listeners that this group has changed.
    • getListenerFPs

      public Collection<FetchPlan> getListenerFPs()
    • registerListener

      public void registerListener(FetchPlan plan)
      Method to register a listener for changes to this FetchGroup.
      Parameters:
      plan - The FetchPlan that is listening
    • deregisterListener

      public void deregisterListener(FetchPlan plan)
      Method to deregister a listener for changes to this FetchGroup.
      Parameters:
      plan - The FetchPlan that is no longer listening
    • disconnectFromListeners

      public void disconnectFromListeners()
      Method to disconnect this fetch group from all listeners since the group is removed from use.
    • assertUnmodifiable

      private void assertUnmodifiable()
      Method to throw an exception if the fetch group is currently unmodifiable.
    • assertNotMember

      private void assertNotMember(String memberName)
      Method to throw an exception if the specified member is not a member of this class.
      Parameters:
      memberName - Name of the field/property
      Throws:
      NucleusUserException
    • getMetaDataForClass

      private AbstractClassMetaData getMetaDataForClass()
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object