Class Mapper


  • public class Mapper
    extends Object
    Developer note.
    This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
    • Field Detail

      • IGNORED_FIELDNAME

        public static final String IGNORED_FIELDNAME
        Special name that can never be used. Used as default for some fields to indicate default state.
        See Also:
        Constant Field Values
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
    • Constructor Detail

      • Mapper

        public Mapper​(Datastore datastore,
                      org.bson.codecs.configuration.CodecRegistry codecRegistry,
                      MapperOptions options)
        Creates a Mapper with the given options.
        Parameters:
        datastore - the datastore to use
        codecRegistry - the codec registry
        options - the options to use
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
    • Method Detail

      • findIdProperty

        public <T> PropertyModel findIdProperty​(Class<?> type)
        Type Parameters:
        T - the type
        Parameters:
        type - the class
        Returns:
        the id property model
        Since:
        2.2
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
      • map

        public List<EntityModel> map​(Class... entityClasses)
        Maps a set of classes
        Parameters:
        entityClasses - the classes to map
        Returns:
        the EntityModel references
      • enforceWriteConcern

        public com.mongodb.client.MongoCollection enforceWriteConcern​(com.mongodb.client.MongoCollection collection,
                                                                      Class type)
        Updates a collection to use a specific WriteConcern
        Parameters:
        collection - the collection to update
        type - the entity type
        Returns:
        the updated collection
      • fromDocument

        public <T> T fromDocument​(Class<T> type,
                                  org.bson.Document document)
        Converts a Document back to a type-safe java object (POJO)
        Type Parameters:
        T - the type of the entity
        Parameters:
        type - the target type
        document - the Document containing the document from mongodb
        Returns:
        the new entity
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
      • getClass

        @Nullable
        public <T> Class<T> getClass​(org.bson.Document document)
        Gets the class as defined by any discriminator field
        Type Parameters:
        T - the class type
        Parameters:
        document - the document to check
        Returns:
        the class reference. might be null
      • getClass

        public Class getClass​(String discriminator)
        Parameters:
        discriminator - the lookup value
        Returns:
        the class mapped to this discrimiator value
      • getClassFromCollection

        public <T> Class<T> getClassFromCollection​(String collection)
        Looks up the class mapped to a named collection.
        Type Parameters:
        T - the class type
        Parameters:
        collection - the collection name
        Returns:
        the Class mapped to this collection name
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
      • getClassesMappedToCollection

        public List<EntityModel> getClassesMappedToCollection​(String collection)
        Finds all the types mapped to a named collection
        Parameters:
        collection - the collection to check
        Returns:
        the mapped types
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
      • getCodecRegistry

        public org.bson.codecs.configuration.CodecRegistry getCodecRegistry()
        Returns:
        the codec registry
      • getCollection

        public <T> com.mongodb.client.MongoCollection<T> getCollection​(Class<T> type)
        Type Parameters:
        T - the class type
        Parameters:
        type - the type look up
        Returns:
        the collection mapped for this class
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
      • getDiscriminatorLookup

        public DiscriminatorLookup getDiscriminatorLookup()
        Returns:
        the DiscriminatorLookup in use
      • map

        public List<EntityModel> map​(List<Class> classes)
        Maps a set of classes
        Parameters:
        classes - the classes to map
        Returns:
        the list of mapped classes
      • getEntityModel

        public EntityModel getEntityModel​(Class type)
        Gets the EntityModel for the object (type). If it isn't mapped, create a new class and cache it (without validating).
        Parameters:
        type - the type to process
        Returns:
        the EntityModel for the object given
      • getId

        @Nullable
        public Object getId​(@Nullable
                            Object entity)
        Gets the ID value for an entity
        Parameters:
        entity - the entity to process
        Returns:
        the ID value
      • getKey

        @Nullable
        @Deprecated(since="2.0",
                    forRemoval=true)
        public <T> Key<T> getKey​(T entity)
        Deprecated, for removal: This API element is subject to removal in a future version.
        Gets the Key for an entity
        Type Parameters:
        T - the type of the entity
        Parameters:
        entity - the entity to process
        Returns:
        the Key
      • getKey

        @Nullable
        @Deprecated(since="2.0",
                    forRemoval=true)
        public <T> Key<T> getKey​(T entity,
                                 String collection)
        Deprecated, for removal: This API element is subject to removal in a future version.
        Gets the Key for an entity and a specific collection
        Type Parameters:
        T - the type of the entity
        Parameters:
        entity - the entity to process
        collection - the collection to use in the Key rather than the mapped collection as defined on the entity's class
        Returns:
        the Key
      • getMappedEntities

        public List<EntityModel> getMappedEntities()
        Returns:
        collection of EntityModels
      • getOptions

        public MapperOptions getOptions()
        Returns:
        the options used by this Mapper
      • setOptions

        @Deprecated(since="2.0",
                    forRemoval=true)
        public void setOptions​(MapperOptions options)
        Deprecated, for removal: This API element is subject to removal in a future version.
        no longer used
        Sets the options this Mapper should use
        Parameters:
        options - the options to use
      • getWriteConcern

        @Nullable
        public com.mongodb.WriteConcern getWriteConcern​(Class clazz)
        Gets the write concern for entity or returns the default write concern for this datastore
        Parameters:
        clazz - the class to use when looking up the WriteConcern
        Returns:
        the write concern for the type
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
      • hasInterceptors

        public boolean hasInterceptors()
        Returns:
        true if there are global interceptors defined
      • isMappable

        public <T> boolean isMappable​(Class<T> type)
        Checks if a type is mappable or not
        Type Parameters:
        T - the type
        Parameters:
        type - the class to check
        Returns:
        true if the type is mappable
      • isMapped

        public boolean isMapped​(Class c)
        Checks to see if a Class has been mapped.
        Parameters:
        c - the Class to check
        Returns:
        true if the Class has been mapped
      • mapExternal

        public <A extends AnnotationEntityModel mapExternal​(@Nullable
                                                              A annotation,
                                                              Class type)
        Maps an external class. This is intended for use on types needed in a system but come from an external source where the more traditional approach of decorating the type in source with Morphia annotations is not possible.
        Type Parameters:
        A - the annotation to apply. Currently only @Embedded is supported
        Parameters:
        annotation - the annotation to apply. pass null to apply the defaults.
        type - the type to map
        Returns:
        the list of mapped classes
        Since:
        2.1
        See Also:
        EmbeddedBuilder
        Developer note.
        This is an experimental item. Its function and presence are subject to change. Feedback on features and usability extremely welcome.
      • mapPackage

        public void mapPackage​(String packageName)
        Tries to map all classes in the package specified.
        Parameters:
        packageName - the name of the package to process
      • mapPackageFromClass

        public void mapPackageFromClass​(Class clazz)
        Maps all the classes found in the package to which the given class belongs.
        Parameters:
        clazz - the class to use when trying to find others to map
      • refresh

        public <T> void refresh​(T entity)
        Refreshes an entity with the current state in the database.
        Type Parameters:
        T - the entity type
        Parameters:
        entity - the entity to refresh
      • toDocument

        public org.bson.Document toDocument​(Object entity)
        Converts an entity (POJO) to a Document. A special field will be added to keep track of the class type.
        Parameters:
        entity - The POJO
        Returns:
        the Document
        Developer note.
        This is an internal item. Its function and presence are subject to change without warning. Its use is highly discouraged.
      • updateCollection

        @Deprecated(since="2.0",
                    forRemoval=true)
        public String updateCollection​(Key key)
        Deprecated, for removal: This API element is subject to removal in a future version.
        Updates the collection value on a Key with the mapped value on the Key's type Class
        Parameters:
        key - the Key to update
        Returns:
        the collection name on the Key
      • updateQueryWithDiscriminators

        public void updateQueryWithDiscriminators​(EntityModel model,
                                                  org.bson.Document query)
        Updates a query with any discriminators from subtypes if polymorphic queries are enabled
        Parameters:
        model - the query model
        query - the query document