module Neo4j
# This mixin is used to wrap Neo4j Java Nodes in Ruby objects.
#
# @example Declare and Use a Lucene Index
#
# class Contact
# include Neo4j::NodeMixin
# property :phone, :index => :exact
# end
#
# # Find an contact with a phone number
# Contact.find('phone: 12345').first #=> a phone object !
#
#
# = Class Method Modules
# * {Neo4j::Wrapper::ClassMethods}
# * {Neo4j::Wrapper::NodeMixin::ClassMethods} - redefines the new method
# * {Neo4j::Wrapper::Property::ClassMethods} - defines property method
# * {Neo4j::Wrapper::HasN::ClassMethods} - defines has_n and has_one method
# * {Neo4j::Wrapper::Find} - defines find method
# * {Neo4j::Wrapper::Rule::ClassMethods} - defines rule method
# * {http://rdoc.info/github/andreasronge/neo4j-core/master/Neo4j/Core/Index/ClassMethods Neo4j::Core::Index::ClassMethods}
#
# = Instance Method Modules
# * {http://rdoc.info/github/andreasronge/neo4j-core/master/Neo4j/Core/Index Neo4j::Core::Index}
module NodeMixin
include Neo4j::Wrapper::NodeMixin::Delegates
include Neo4j::Wrapper::NodeMixin::Initialize
include Neo4j::Wrapper::HasN::InstanceMethods
include Neo4j::Wrapper::Rule::InstanceMethods
include Neo4j::Wrapper::Property::InstanceMethods
include Neo4j::Wrapper::Equal
include Neo4j::Core::Index
# @private
def self.included(klass)
klass.extend Neo4j::Wrapper::ClassMethods
klass.extend Neo4j::Wrapper::NodeMixin::ClassMethods
klass.extend Neo4j::Wrapper::Property::ClassMethods
klass.extend Neo4j::Wrapper::HasN::ClassMethods
klass.extend Neo4j::Core::Index::ClassMethods
klass.extend Neo4j::Wrapper::Find
klass.extend Neo4j::Wrapper::Rule::ClassMethods
klass.send(:include, Neo4j::Wrapper::Rule::Functions)
klass.setup_node_index
def klass.inherited(sub_klass)
setup_neo4j_subclass(sub_klass)
super
end
super
end
end
end