pacer-neo4j2 2.0.1-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/Gemfile +4 -0
- data/README.md +23 -0
- data/Rakefile +35 -0
- data/lib/pacer-neo4j2/algo/block_cost_evaluator.rb +38 -0
- data/lib/pacer-neo4j2/algo/block_estimate_evaluator.rb +32 -0
- data/lib/pacer-neo4j2/algo/block_path_expander.rb +61 -0
- data/lib/pacer-neo4j2/algo/cypher_transform.rb +129 -0
- data/lib/pacer-neo4j2/algo/path_pipe.rb +79 -0
- data/lib/pacer-neo4j2/algo/path_wrapper.rb +134 -0
- data/lib/pacer-neo4j2/algo/traversal_branch_wrapper.rb +47 -0
- data/lib/pacer-neo4j2/algo/wrapping.rb +34 -0
- data/lib/pacer-neo4j2/algo.rb +406 -0
- data/lib/pacer-neo4j2/blueprints_graph.rb +42 -0
- data/lib/pacer-neo4j2/graph.rb +243 -0
- data/lib/pacer-neo4j2/lucene_filter.rb +112 -0
- data/lib/pacer-neo4j2/raw_vertex_wrapping_pipe.rb +18 -0
- data/lib/pacer-neo4j2/rspec.rb +39 -0
- data/lib/pacer-neo4j2/transaction_event_handler.rb +40 -0
- data/lib/pacer-neo4j2/tx_data_wrapper.rb +101 -0
- data/lib/pacer-neo4j2/version.rb +9 -0
- data/lib/pacer-neo4j2-2.0.1-standalone.jar +0 -0
- data/lib/pacer-neo4j2.rb +99 -0
- data/pacer-neo4j2.gemspec +22 -0
- data/pom/standalone.xml +22 -0
- data/pom.xml +95 -0
- metadata +84 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
module Pacer
|
2
|
+
module Neo4j2
|
3
|
+
class Graph
|
4
|
+
def lucene(query, opts = {})
|
5
|
+
opts = { back: self, element_type: :vertex }.merge opts
|
6
|
+
chain_route(opts.merge(query: query,
|
7
|
+
filter: :lucene,
|
8
|
+
index: choose_index(opts)))
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def choose_index(opts)
|
14
|
+
et = opts[:element_type]
|
15
|
+
idx = opts[:index]
|
16
|
+
case idx
|
17
|
+
when String, Symbol
|
18
|
+
index(idx, et).index.raw_index
|
19
|
+
when Pacer::Wrappers::IndexWrapper
|
20
|
+
idx.index.raw_index
|
21
|
+
when com.tinkerpop.blueprints.Index
|
22
|
+
idx.raw_index
|
23
|
+
else
|
24
|
+
lucene_auto_index(et)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
module Filter
|
32
|
+
module LuceneFilter
|
33
|
+
import org.neo4j.index.lucene.QueryContext
|
34
|
+
|
35
|
+
attr_accessor :index, :query, :sort_by, :reverse_numeric, :sort_numeric, :sort_by_score, :top, :fast
|
36
|
+
|
37
|
+
def count(max = nil)
|
38
|
+
iter = query_result
|
39
|
+
c = iter.count
|
40
|
+
if c >= 0
|
41
|
+
c
|
42
|
+
elsif max
|
43
|
+
iter.inject(0) do |n, _|
|
44
|
+
if n == max
|
45
|
+
return :max
|
46
|
+
else
|
47
|
+
n + 1
|
48
|
+
end
|
49
|
+
end
|
50
|
+
else
|
51
|
+
iter.inject(0) { |n, _| n + 1 }
|
52
|
+
end
|
53
|
+
ensure
|
54
|
+
iter.close
|
55
|
+
end
|
56
|
+
|
57
|
+
def sort_by_score!
|
58
|
+
self.sort_by_score = true
|
59
|
+
self
|
60
|
+
end
|
61
|
+
|
62
|
+
def sort(*keys)
|
63
|
+
self.sort_by = keys
|
64
|
+
self
|
65
|
+
end
|
66
|
+
|
67
|
+
def top_hits(n)
|
68
|
+
self.top = n
|
69
|
+
self
|
70
|
+
end
|
71
|
+
|
72
|
+
def fast!
|
73
|
+
self.fast = true
|
74
|
+
self
|
75
|
+
end
|
76
|
+
|
77
|
+
protected
|
78
|
+
|
79
|
+
def build_query
|
80
|
+
qc = QueryContext.new(query)
|
81
|
+
qc = qc.tradeCorrectnessForSpeed if fast
|
82
|
+
qc = qc.top(top) if top
|
83
|
+
if sort_by_score
|
84
|
+
qc.sortByScore
|
85
|
+
elsif sort_by
|
86
|
+
qc.sort(*[*sort_by].map(&:to_s))
|
87
|
+
elsif sort_numeric
|
88
|
+
qc.sortNumeric(sort_numeric, false)
|
89
|
+
elsif reverse_numeric
|
90
|
+
qc.sortNumeric(reverse_numeric, true)
|
91
|
+
else
|
92
|
+
qc
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def query_result
|
97
|
+
index.query build_query
|
98
|
+
end
|
99
|
+
|
100
|
+
def source_iterator
|
101
|
+
pipe = Pacer::Neo4j2::RawVertexWrappingPipe.new graph
|
102
|
+
pipe.setStarts query_result
|
103
|
+
pipe.enablePath(true)
|
104
|
+
pipe
|
105
|
+
end
|
106
|
+
|
107
|
+
def inspect_string
|
108
|
+
"#{ inspect_class_name }(#{ query }) ~ #{ query_result.count }"
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Pacer
|
2
|
+
module Neo4j2
|
3
|
+
class RawVertexWrappingPipe < Pacer::Pipes::RubyPipe
|
4
|
+
import com.tinkerpop.blueprints.impls.neo4j2.Neo4j2Vertex
|
5
|
+
|
6
|
+
attr_reader :graph
|
7
|
+
|
8
|
+
def initialize(graph)
|
9
|
+
super()
|
10
|
+
@graph = graph.blueprints_graph
|
11
|
+
end
|
12
|
+
|
13
|
+
def processNextStart
|
14
|
+
Neo4j2Vertex.new starts.next, graph
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class RSpec::GraphRunner
|
2
|
+
module Neo4j2
|
3
|
+
def all(usage_style = :read_write, indices = true, &block)
|
4
|
+
super
|
5
|
+
neo4j2(usage_style, indices, &block)
|
6
|
+
end
|
7
|
+
|
8
|
+
def neo4j2(usage_style = :read_write, indices = true, &block)
|
9
|
+
for_graph('neo4j2', usage_style, indices, true, neo2_graph, neo2_graph2, neo2_graph_no_indices, block)
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
|
14
|
+
def neo2_graph
|
15
|
+
return @neo_graph if @neo_graph
|
16
|
+
path1 = File.expand_path('tmp/spec.neo4j2')
|
17
|
+
dir = Pathname.new(path1)
|
18
|
+
dir.rmtree if dir.exist?
|
19
|
+
@neo_graph = Pacer.neo4j2(path1)
|
20
|
+
end
|
21
|
+
|
22
|
+
def neo2_graph2
|
23
|
+
return @neo_graph2 if @neo_graph2
|
24
|
+
path2 = File.expand_path('tmp/spec.neo4j2.2')
|
25
|
+
dir = Pathname.new(path2)
|
26
|
+
dir.rmtree if dir.exist?
|
27
|
+
@neo_graph2 = Pacer.neo4j2(path2)
|
28
|
+
end
|
29
|
+
|
30
|
+
def neo2_graph_no_indices
|
31
|
+
return @neo_graph_no_indices if @neo_graph_no_indices
|
32
|
+
path3 = File.expand_path('tmp/spec_no_indices.neo4j2')
|
33
|
+
dir = Pathname.new(path3)
|
34
|
+
dir.rmtree if dir.exist?
|
35
|
+
@neo_graph_no_indices = Pacer.neo4j2(path3)
|
36
|
+
@neo_graph_no_indices
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Pacer
|
2
|
+
module Neo4j2
|
3
|
+
class TransactionEventHandler
|
4
|
+
include org.neo4j.graphdb.event.TransactionEventHandler
|
5
|
+
|
6
|
+
attr_reader :graph
|
7
|
+
attr_accessor :on_commit, :on_commit_failed, :before_commit
|
8
|
+
|
9
|
+
def initialize(graph)
|
10
|
+
@graph = graph
|
11
|
+
end
|
12
|
+
|
13
|
+
def unregister!
|
14
|
+
graph.drop_handler self
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
# Return value is passed to afterCommit or afterRollback, but some values can cause crashes.
|
20
|
+
def beforeCommit(data)
|
21
|
+
before_commit.call TxDataWrapper.new data, graph if before_commit
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def afterCommit(data, ignore)
|
26
|
+
on_commit.call TxDataWrapper.new data, graph if on_commit
|
27
|
+
end
|
28
|
+
|
29
|
+
# This is actually only called if the commit fails and then it internally tries to
|
30
|
+
# rollback. It seems that it's actually possible for it to fail to rollback here, too...
|
31
|
+
#
|
32
|
+
# An exception in beforeCommit can definitely trigger this.
|
33
|
+
#
|
34
|
+
# Regular rollbacks do not get seen by the transaction system and no callback happens.
|
35
|
+
def afterRollback(data, ignore)
|
36
|
+
on_commit_failed.call TxDataWrapper.new data, graph if on_commit_failed
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
module Pacer
|
2
|
+
module Neo4j2
|
3
|
+
# Uses the interface defined here:
|
4
|
+
# http://api.neo4j.org/1.8/org/neo4j/graphdb/Path.html
|
5
|
+
#
|
6
|
+
# Note that I have removed methods that I didn't understand, assuming they are internal.
|
7
|
+
class TxDataWrapper
|
8
|
+
include Algo::Wrapping
|
9
|
+
|
10
|
+
attr_reader :graph, :tx
|
11
|
+
|
12
|
+
def initialize(tx, graph)
|
13
|
+
@tx = tx
|
14
|
+
@graph = graph
|
15
|
+
end
|
16
|
+
|
17
|
+
def created_v
|
18
|
+
tx.createdNodes.map { |n| wrap_vertex n }
|
19
|
+
end
|
20
|
+
|
21
|
+
def deleted_v
|
22
|
+
tx.deletedNodes.map { |n| wrap_vertex n }
|
23
|
+
end
|
24
|
+
|
25
|
+
def created_e
|
26
|
+
tx.createdRelationships.map { |n| wrap_edge n }
|
27
|
+
end
|
28
|
+
|
29
|
+
def deleted_e
|
30
|
+
tx.deletedRelationships.map { |n| wrap_edge n }
|
31
|
+
end
|
32
|
+
|
33
|
+
def created_v_ids
|
34
|
+
tx.createdNodes.map { |n| n.getId }
|
35
|
+
end
|
36
|
+
|
37
|
+
def deleted_v_ids
|
38
|
+
tx.deletedNodes.map { |n| n.getId }
|
39
|
+
end
|
40
|
+
|
41
|
+
def created_e_ids
|
42
|
+
tx.createdRelationships.map { |n| n.getId }
|
43
|
+
end
|
44
|
+
|
45
|
+
def deleted_e_ids
|
46
|
+
tx.deletedRelationships.map { |n| n.getId }
|
47
|
+
end
|
48
|
+
|
49
|
+
def deleted?(e)
|
50
|
+
tx.is_deleted e.element.rawElement
|
51
|
+
end
|
52
|
+
|
53
|
+
def changed_v
|
54
|
+
tx.assignedNodeProperties.map do |p|
|
55
|
+
{ element_type: :vertex,
|
56
|
+
id: p.entity.getId,
|
57
|
+
key: p.key,
|
58
|
+
was: graph.decode_property(p.previouslyCommitedValue),
|
59
|
+
is: graph.decode_property(p.value) }
|
60
|
+
end +
|
61
|
+
tx.removedNodeProperties.map do |p|
|
62
|
+
{ element_type: :vertex,
|
63
|
+
id: p.entity.getId,
|
64
|
+
key: p.key,
|
65
|
+
was: graph.decode_property(p.previouslyCommitedValue),
|
66
|
+
is: nil }
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def changed_e
|
71
|
+
tx.assignedRelationshipProperties.map do |p|
|
72
|
+
{ element_type: :edge,
|
73
|
+
id: p.entity.getId,
|
74
|
+
key: p.key,
|
75
|
+
was: graph.decode_property(p.previouslyCommitedValue),
|
76
|
+
is: graph.decode_property(p.value) }
|
77
|
+
end +
|
78
|
+
tx.removedRelationshipProperties.map do |p|
|
79
|
+
{ element_type: :edge,
|
80
|
+
id: p.entity.getId,
|
81
|
+
key: p.key,
|
82
|
+
was: graph.decode_property(p.previouslyCommitedValue),
|
83
|
+
is: nil }
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def changes
|
88
|
+
changed_v + changed_e
|
89
|
+
end
|
90
|
+
|
91
|
+
def summary
|
92
|
+
{ created_v: created_v_ids,
|
93
|
+
deleted_v: deleted_v_ids,
|
94
|
+
created_e: created_e_ids,
|
95
|
+
deleted_e: deleted_e_ids,
|
96
|
+
changed_v: changed_v,
|
97
|
+
changed_e: changed_e }
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
Binary file
|
data/lib/pacer-neo4j2.rb
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'pacer' unless defined? Pacer
|
2
|
+
|
3
|
+
lib_path = File.expand_path(File.join(File.dirname(__FILE__), '../lib'))
|
4
|
+
$:.unshift lib_path unless $:.any? { |path| path == lib_path }
|
5
|
+
|
6
|
+
require 'pacer-neo4j2/version'
|
7
|
+
|
8
|
+
require Pacer::Neo4j2::JAR
|
9
|
+
|
10
|
+
require 'pacer-neo4j2/graph'
|
11
|
+
require 'pacer-neo4j2/algo/wrapping'
|
12
|
+
require 'pacer-neo4j2/algo/path_pipe'
|
13
|
+
require 'pacer-neo4j2/algo/block_cost_evaluator'
|
14
|
+
require 'pacer-neo4j2/algo/block_estimate_evaluator'
|
15
|
+
require 'pacer-neo4j2/algo/block_path_expander'
|
16
|
+
require 'pacer-neo4j2/algo/path_wrapper'
|
17
|
+
require 'pacer-neo4j2/algo/traversal_branch_wrapper'
|
18
|
+
require 'pacer-neo4j2/algo/cypher_transform'
|
19
|
+
require 'pacer-neo4j2/algo'
|
20
|
+
require 'pacer-neo4j2/raw_vertex_wrapping_pipe'
|
21
|
+
require 'pacer-neo4j2/lucene_filter'
|
22
|
+
require 'pacer-neo4j2/transaction_event_handler'
|
23
|
+
require 'pacer-neo4j2/tx_data_wrapper'
|
24
|
+
require 'pacer-neo4j2/blueprints_graph'
|
25
|
+
|
26
|
+
Pacer::FunctionResolver.clear_cache
|
27
|
+
|
28
|
+
module Pacer
|
29
|
+
# Add 'static methods' to the Pacer namespace.
|
30
|
+
class << self
|
31
|
+
# Return a graph for the given path. Will create a graph if none exists at
|
32
|
+
# that location. (The graph is only created if data is actually added to it).
|
33
|
+
#
|
34
|
+
# If the graph is opened from a path, it will be registered to be closed by
|
35
|
+
# Ruby's at_exit callback, but if an already open graph is given, it will
|
36
|
+
# not.
|
37
|
+
#
|
38
|
+
# Please note that Pacer turns on Neo4j's checkElementsInTransaction
|
39
|
+
# feature by default. For some sort of performance improvement at
|
40
|
+
# the expense of an odd consistency model within transactions that
|
41
|
+
# require considerable more complexity in client code, you can use
|
42
|
+
# `graph.setCheckElementsInTransaction(false)` to disable the
|
43
|
+
# feature.
|
44
|
+
#
|
45
|
+
# It is recommended that *in production* the `allow_auto_tx` and
|
46
|
+
# `allow_auto_read_tx` options be set to `false` to prevent hard-to-debug
|
47
|
+
# errors caused by Blueprints' automatically starting transactions which it
|
48
|
+
# never automatically commits or rolls back. When working in the console,
|
49
|
+
# however, reenabling automatic read transactons is generally recommended,
|
50
|
+
# together with periodic use of `rollback_implicit_transaction`
|
51
|
+
def neo4j2(path_or_graph, args = nil)
|
52
|
+
if path_or_graph.is_a? String
|
53
|
+
path = File.expand_path(path_or_graph)
|
54
|
+
open = proc do
|
55
|
+
raw_graph = Pacer.open_graphs[path]
|
56
|
+
if raw_graph
|
57
|
+
graph = Pacer::Neo4j2::BlueprintsGraph.new(raw_graph)
|
58
|
+
else
|
59
|
+
if args
|
60
|
+
graph = Pacer::Neo4j2::BlueprintsGraph.new(path, args.to_hash_map)
|
61
|
+
else
|
62
|
+
graph = Pacer::Neo4j2::BlueprintsGraph.new(path)
|
63
|
+
end
|
64
|
+
graph.allow_auto_tx = false
|
65
|
+
graph.allow_auto_read_tx = false
|
66
|
+
Pacer.open_graphs[path] = graph.raw_graph
|
67
|
+
graph.setCheckElementsInTransaction true
|
68
|
+
end
|
69
|
+
graph
|
70
|
+
end
|
71
|
+
shutdown = proc do |g|
|
72
|
+
g.blueprints_graph.shutdown
|
73
|
+
Pacer.open_graphs.delete path
|
74
|
+
end
|
75
|
+
Neo4j2::Graph.new(Pacer::YamlEncoder, open, shutdown)
|
76
|
+
else
|
77
|
+
# Don't register the new graph so that it won't be automatically closed.
|
78
|
+
Neo4j2::Graph.new Pacer::YamlEncoder, proc { Pacer::Neo4j2::BlueprintsGraph.new(path_or_graph) }
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def neo2_batch(path)
|
83
|
+
bp_neo_class = com.tinkerpop.blueprints.impls.neo4jbatch.Neo4j2BatchGraph
|
84
|
+
path = File.expand_path(path)
|
85
|
+
open = proc do
|
86
|
+
graph = bp_neo_class.new(path)
|
87
|
+
Pacer.open_graphs[path] = :open_batch_graph
|
88
|
+
graph
|
89
|
+
end
|
90
|
+
shutdown = proc do |g|
|
91
|
+
g.blueprints_graph.shutdown
|
92
|
+
Pacer.open_graphs.delete path
|
93
|
+
end
|
94
|
+
g = PacerGraph.new(Pacer::YamlEncoder, open, shutdown)
|
95
|
+
g.disable_transactions = true
|
96
|
+
g
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "pacer-neo4j2/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "pacer-neo4j2"
|
7
|
+
s.version = Pacer::Neo4j2::VERSION
|
8
|
+
s.platform = 'java'
|
9
|
+
s.authors = ["Darrick Wiebe"]
|
10
|
+
s.email = ["dw@xnlogic.com"]
|
11
|
+
s.homepage = "http://neo4j.org"
|
12
|
+
s.summary = %q{Neo4J jars and related code for Pacer}
|
13
|
+
s.description = s.summary
|
14
|
+
|
15
|
+
s.add_dependency 'pacer', Pacer::Neo4j2::PACER_REQ
|
16
|
+
|
17
|
+
s.rubyforge_project = "pacer-neo4j2"
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n") + [Pacer::Neo4j2::JAR_PATH]
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
end
|
data/pom/standalone.xml
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
<assembly>
|
2
|
+
<id>standalone</id>
|
3
|
+
<formats>
|
4
|
+
<format>jar</format>
|
5
|
+
</formats>
|
6
|
+
<includeBaseDirectory>false</includeBaseDirectory>
|
7
|
+
|
8
|
+
<fileSets>
|
9
|
+
<fileSet>
|
10
|
+
<directory>target/classes</directory>
|
11
|
+
<outputDirectory>/</outputDirectory>
|
12
|
+
</fileSet>
|
13
|
+
</fileSets>
|
14
|
+
|
15
|
+
<dependencySets>
|
16
|
+
<dependencySet>
|
17
|
+
<outputDirectory>/</outputDirectory>
|
18
|
+
<unpack>true</unpack>
|
19
|
+
<scope>runtime</scope>
|
20
|
+
</dependencySet>
|
21
|
+
</dependencySets>
|
22
|
+
</assembly>
|
data/pom.xml
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
4
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
5
|
+
<modelVersion>4.0.0</modelVersion>
|
6
|
+
<groupId>com.tinkerpop.pacer</groupId>
|
7
|
+
<artifactId>pacer-neo4j2</artifactId>
|
8
|
+
<!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-neo4j2/version.rb -->
|
9
|
+
<properties>
|
10
|
+
<blueprints.version>2.6.0-SNAPSHOT</blueprints.version>
|
11
|
+
<gem.version>2.0.1</gem.version>
|
12
|
+
</properties>
|
13
|
+
<!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-neo4j2/version.rb -->
|
14
|
+
<version>${gem.version}</version>
|
15
|
+
<packaging>pom</packaging>
|
16
|
+
<url>https://github.com/pangloss/pacer</url>
|
17
|
+
<name>Pacer Neo4J dependencies and related code.</name>
|
18
|
+
<description>
|
19
|
+
</description>
|
20
|
+
<inceptionYear>2011</inceptionYear>
|
21
|
+
<developers>
|
22
|
+
<developer>
|
23
|
+
<name>Darrick Wiebe</name>
|
24
|
+
<email>darrick@innatesoftware.com</email>
|
25
|
+
<url>http://github.com/pangloss</url>
|
26
|
+
</developer>
|
27
|
+
</developers>
|
28
|
+
<dependencies>
|
29
|
+
<dependency>
|
30
|
+
<groupId>com.tinkerpop.blueprints</groupId>
|
31
|
+
<artifactId>blueprints-neo4j2-graph</artifactId>
|
32
|
+
<version>${blueprints.version}</version>
|
33
|
+
</dependency>
|
34
|
+
</dependencies>
|
35
|
+
|
36
|
+
<build>
|
37
|
+
<directory>${basedir}/target</directory>
|
38
|
+
<finalName>${project.artifactId}-${project.version}</finalName>
|
39
|
+
<resources>
|
40
|
+
<resource>
|
41
|
+
<directory>${basedir}/src/main/resources
|
42
|
+
</directory>
|
43
|
+
</resource>
|
44
|
+
</resources>
|
45
|
+
<testResources>
|
46
|
+
<testResource>
|
47
|
+
<directory>${basedir}/src/test/resources
|
48
|
+
</directory>
|
49
|
+
</testResource>
|
50
|
+
</testResources>
|
51
|
+
<plugins>
|
52
|
+
<plugin>
|
53
|
+
<artifactId>maven-compiler-plugin</artifactId>
|
54
|
+
<configuration>
|
55
|
+
<source>1.6</source>
|
56
|
+
<target>1.6</target>
|
57
|
+
</configuration>
|
58
|
+
</plugin>
|
59
|
+
<plugin>
|
60
|
+
<artifactId>maven-assembly-plugin</artifactId>
|
61
|
+
<version>2.2-beta-4</version>
|
62
|
+
<executions>
|
63
|
+
<execution>
|
64
|
+
<phase>package</phase>
|
65
|
+
<goals>
|
66
|
+
<goal>attached</goal>
|
67
|
+
</goals>
|
68
|
+
</execution>
|
69
|
+
</executions>
|
70
|
+
<configuration>
|
71
|
+
<descriptors>
|
72
|
+
<descriptor>pom/standalone.xml</descriptor>
|
73
|
+
</descriptors>
|
74
|
+
<finalName>${project.artifactId}-${project.version}</finalName>
|
75
|
+
<outputDirectory>lib</outputDirectory>
|
76
|
+
<workDirectory>target/assembly/work</workDirectory>
|
77
|
+
<tarLongFileMode>warn</tarLongFileMode>
|
78
|
+
</configuration>
|
79
|
+
</plugin>
|
80
|
+
<plugin>
|
81
|
+
<groupId>org.apache.maven.plugins</groupId>
|
82
|
+
<artifactId>maven-javadoc-plugin</artifactId>
|
83
|
+
<version>2.6.1</version>
|
84
|
+
</plugin>
|
85
|
+
</plugins>
|
86
|
+
<extensions>
|
87
|
+
<extension>
|
88
|
+
<groupId>org.apache.maven.wagon</groupId>
|
89
|
+
<artifactId>wagon-ftp</artifactId>
|
90
|
+
<version>1.0-alpha-6</version>
|
91
|
+
</extension>
|
92
|
+
</extensions>
|
93
|
+
</build>
|
94
|
+
|
95
|
+
</project>
|
metadata
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pacer-neo4j2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.1
|
5
|
+
platform: java
|
6
|
+
authors:
|
7
|
+
- Darrick Wiebe
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-08-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pacer
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.5.0
|
20
|
+
requirement: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - '>='
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 1.5.0
|
25
|
+
prerelease: false
|
26
|
+
type: :runtime
|
27
|
+
description: Neo4J jars and related code for Pacer
|
28
|
+
email:
|
29
|
+
- dw@xnlogic.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- .gitignore
|
35
|
+
- Gemfile
|
36
|
+
- README.md
|
37
|
+
- Rakefile
|
38
|
+
- lib/pacer-neo4j2.rb
|
39
|
+
- lib/pacer-neo4j2/algo.rb
|
40
|
+
- lib/pacer-neo4j2/algo/block_cost_evaluator.rb
|
41
|
+
- lib/pacer-neo4j2/algo/block_estimate_evaluator.rb
|
42
|
+
- lib/pacer-neo4j2/algo/block_path_expander.rb
|
43
|
+
- lib/pacer-neo4j2/algo/cypher_transform.rb
|
44
|
+
- lib/pacer-neo4j2/algo/path_pipe.rb
|
45
|
+
- lib/pacer-neo4j2/algo/path_wrapper.rb
|
46
|
+
- lib/pacer-neo4j2/algo/traversal_branch_wrapper.rb
|
47
|
+
- lib/pacer-neo4j2/algo/wrapping.rb
|
48
|
+
- lib/pacer-neo4j2/blueprints_graph.rb
|
49
|
+
- lib/pacer-neo4j2/graph.rb
|
50
|
+
- lib/pacer-neo4j2/lucene_filter.rb
|
51
|
+
- lib/pacer-neo4j2/raw_vertex_wrapping_pipe.rb
|
52
|
+
- lib/pacer-neo4j2/rspec.rb
|
53
|
+
- lib/pacer-neo4j2/transaction_event_handler.rb
|
54
|
+
- lib/pacer-neo4j2/tx_data_wrapper.rb
|
55
|
+
- lib/pacer-neo4j2/version.rb
|
56
|
+
- pacer-neo4j2.gemspec
|
57
|
+
- pom.xml
|
58
|
+
- pom/standalone.xml
|
59
|
+
- lib/pacer-neo4j2-2.0.1-standalone.jar
|
60
|
+
homepage: http://neo4j.org
|
61
|
+
licenses: []
|
62
|
+
metadata: {}
|
63
|
+
post_install_message:
|
64
|
+
rdoc_options: []
|
65
|
+
require_paths:
|
66
|
+
- lib
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
requirements: []
|
78
|
+
rubyforge_project: pacer-neo4j2
|
79
|
+
rubygems_version: 2.1.9
|
80
|
+
signing_key:
|
81
|
+
specification_version: 4
|
82
|
+
summary: Neo4J jars and related code for Pacer
|
83
|
+
test_files: []
|
84
|
+
has_rdoc:
|