Sha256: 87ee97f084c2e60bb03c2d92525fcf2d9c9eefab14b1f579f629a68403aa5e6c
Contents?: true
Size: 1.42 KB
Versions: 1
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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
neo4j-3.0.0.alpha.9 | lib/neo4j/wrapper.rb |