Sha256: 7765df62b87e9be84f2a0d621e5cd40bae7675493f9b61f2de4d68de196f65a7
Contents?: true
Size: 1.42 KB
Versions: 2
Compression:
Stored size: 1.42 KB
Contents
class Neo4j::Node module Wrapper # this is a plugin in the neo4j-core so that the Ruby wrapper will be wrapped around the Neo4j::Node objects def wrapper most_concrete_class = sorted_wrapper_classes wrapped_node = most_concrete_class.new wrapped_node.init_on_load(self, self.props) wrapped_node end def checked_labels_set @@_checked_labels_set ||= Set.new end def check_label(label_name) unless checked_labels_set.include?(label_name) load_class_from_label(label_name) # do this only once checked_labels_set.add(label_name) end end def sorted_wrapper_classes if self.props.is_a?(Hash) && self.props.has_key?(Neo4j::Config.class_name_property) self.props[Neo4j::Config.class_name_property].constantize else wrappers = _class_wrappers return self if wrappers.nil? wrapper_classes = wrappers.map{|w| Neo4j::ActiveNode::Labels._wrapped_labels[w]} wrapper_classes.sort.first end end def load_class_from_label(label_name) begin label_name.to_s.split("::").inject(Kernel) {|container, name| container.const_get(name.to_s) } rescue NameError nil end end def _class_wrappers labels.find_all do |label_name| check_label(label_name) Neo4j::ActiveNode::Labels._wrapped_labels[label_name].class == Class end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
neo4j-3.0.0.alpha.11 | lib/neo4j/active_node/node_wrapper.rb |
neo4j-3.0.0.alpha.10 | lib/neo4j/active_node/node_wrapper.rb |