pacer 0.9.1.1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. data/.autotest +8 -0
  2. data/.document +5 -0
  3. data/.gitignore +26 -0
  4. data/.rspec +1 -0
  5. data/.rvmrc +0 -0
  6. data/CONTRIBUTORS +5 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.txt +24 -0
  9. data/README.md +187 -0
  10. data/Rakefile +49 -0
  11. data/autotest/discover.rb +1 -0
  12. data/bin/autospec +16 -0
  13. data/bin/autotest +16 -0
  14. data/bin/rake +16 -0
  15. data/bin/rcov +16 -0
  16. data/bin/rspec +16 -0
  17. data/bin/yard +16 -0
  18. data/bin/yardoc +16 -0
  19. data/lib/pacer/blueprints/extensions.rb +77 -0
  20. data/lib/pacer/blueprints/multi_graph.rb +121 -0
  21. data/lib/pacer/blueprints/ruby_graph.rb +199 -0
  22. data/lib/pacer/blueprints/tg.rb +100 -0
  23. data/lib/pacer/blueprints.rb +4 -0
  24. data/lib/pacer/core/graph/edges_route.rb +92 -0
  25. data/lib/pacer/core/graph/element_route.rb +171 -0
  26. data/lib/pacer/core/graph/graph_index_route.rb +48 -0
  27. data/lib/pacer/core/graph/graph_route.rb +55 -0
  28. data/lib/pacer/core/graph/mixed_route.rb +96 -0
  29. data/lib/pacer/core/graph/vertices_route.rb +220 -0
  30. data/lib/pacer/core/graph.rb +13 -0
  31. data/lib/pacer/core/route.rb +502 -0
  32. data/lib/pacer/core/side_effect.rb +11 -0
  33. data/lib/pacer/core.rb +8 -0
  34. data/lib/pacer/exceptions.rb +11 -0
  35. data/lib/pacer/extensions/block_filter_element.rb +22 -0
  36. data/lib/pacer/extensions.rb +6 -0
  37. data/lib/pacer/filter/block_filter.rb +31 -0
  38. data/lib/pacer/filter/collection_filter.rb +109 -0
  39. data/lib/pacer/filter/empty_filter.rb +70 -0
  40. data/lib/pacer/filter/future_filter.rb +68 -0
  41. data/lib/pacer/filter/index_filter.rb +30 -0
  42. data/lib/pacer/filter/loop_filter.rb +95 -0
  43. data/lib/pacer/filter/object_filter.rb +55 -0
  44. data/lib/pacer/filter/property_filter/edge_filters.rb +93 -0
  45. data/lib/pacer/filter/property_filter/filters.rb +269 -0
  46. data/lib/pacer/filter/property_filter.rb +111 -0
  47. data/lib/pacer/filter/random_filter.rb +13 -0
  48. data/lib/pacer/filter/range_filter.rb +104 -0
  49. data/lib/pacer/filter/uniq_filter.rb +12 -0
  50. data/lib/pacer/filter/where_filter/node_visitor.rb +280 -0
  51. data/lib/pacer/filter/where_filter.rb +47 -0
  52. data/lib/pacer/filter.rb +17 -0
  53. data/lib/pacer/function_resolver.rb +43 -0
  54. data/lib/pacer/graph/edge_mixin.rb +127 -0
  55. data/lib/pacer/graph/element_mixin.rb +202 -0
  56. data/lib/pacer/graph/graph_indices_mixin.rb +93 -0
  57. data/lib/pacer/graph/graph_mixin.rb +361 -0
  58. data/lib/pacer/graph/graph_transactions_mixin.rb +207 -0
  59. data/lib/pacer/graph/index_mixin.rb +30 -0
  60. data/lib/pacer/graph/vertex_mixin.rb +119 -0
  61. data/lib/pacer/graph.rb +14 -0
  62. data/lib/pacer/pipe/blackbox_pipeline.rb +48 -0
  63. data/lib/pacer/pipe/block_filter_pipe.rb +38 -0
  64. data/lib/pacer/pipe/collection_filter_pipe.rb +10 -0
  65. data/lib/pacer/pipe/cross_product_transform_pipe.rb +48 -0
  66. data/lib/pacer/pipe/enumerable_pipe.rb +30 -0
  67. data/lib/pacer/pipe/expandable_pipe.rb +63 -0
  68. data/lib/pacer/pipe/id_collection_filter_pipe.rb +33 -0
  69. data/lib/pacer/pipe/is_empty_pipe.rb +30 -0
  70. data/lib/pacer/pipe/is_unique_pipe.rb +61 -0
  71. data/lib/pacer/pipe/label_collection_filter_pipe.rb +21 -0
  72. data/lib/pacer/pipe/label_prefix_pipe.rb +21 -0
  73. data/lib/pacer/pipe/loop_pipe.rb +86 -0
  74. data/lib/pacer/pipe/map_pipe.rb +36 -0
  75. data/lib/pacer/pipe/never_pipe.rb +9 -0
  76. data/lib/pacer/pipe/process_pipe.rb +37 -0
  77. data/lib/pacer/pipe/property_comparison_pipe.rb +40 -0
  78. data/lib/pacer/pipe/ruby_pipe.rb +25 -0
  79. data/lib/pacer/pipe/simple_visitor_pipe.rb +43 -0
  80. data/lib/pacer/pipe/stream_sort_pipe.rb +84 -0
  81. data/lib/pacer/pipe/stream_uniq_pipe.rb +33 -0
  82. data/lib/pacer/pipe/type_filter_pipe.rb +22 -0
  83. data/lib/pacer/pipe/unary_transform_pipe.rb +59 -0
  84. data/lib/pacer/pipe/variable_store_iterator_wrapper.rb +26 -0
  85. data/lib/pacer/pipe/visitor_pipe.rb +67 -0
  86. data/lib/pacer/pipes.rb +61 -0
  87. data/lib/pacer/route/mixin/bulk_operations.rb +52 -0
  88. data/lib/pacer/route/mixin/route_operations.rb +107 -0
  89. data/lib/pacer/route/mixin/variable_route_module.rb +26 -0
  90. data/lib/pacer/route/mixins.rb +3 -0
  91. data/lib/pacer/route.rb +228 -0
  92. data/lib/pacer/routes.rb +6 -0
  93. data/lib/pacer/side_effect/aggregate.rb +31 -0
  94. data/lib/pacer/side_effect/counted.rb +30 -0
  95. data/lib/pacer/side_effect/group_count.rb +44 -0
  96. data/lib/pacer/side_effect/is_unique.rb +32 -0
  97. data/lib/pacer/side_effect/section.rb +25 -0
  98. data/lib/pacer/side_effect/visitor.rb +37 -0
  99. data/lib/pacer/side_effect.rb +11 -0
  100. data/lib/pacer/support/array_list.rb +28 -0
  101. data/lib/pacer/support/enumerable.rb +100 -0
  102. data/lib/pacer/support/hash.rb +9 -0
  103. data/lib/pacer/support/iterator_mixins.rb +110 -0
  104. data/lib/pacer/support/native_exception.rb +22 -0
  105. data/lib/pacer/support/proc.rb +16 -0
  106. data/lib/pacer/support.rb +10 -0
  107. data/lib/pacer/transform/cap.rb +50 -0
  108. data/lib/pacer/transform/gather.rb +9 -0
  109. data/lib/pacer/transform/has_count_cap.rb +41 -0
  110. data/lib/pacer/transform/join.rb +181 -0
  111. data/lib/pacer/transform/map.rb +23 -0
  112. data/lib/pacer/transform/path.rb +50 -0
  113. data/lib/pacer/transform/process.rb +23 -0
  114. data/lib/pacer/transform/scatter.rb +23 -0
  115. data/lib/pacer/transform/sort_section.rb +103 -0
  116. data/lib/pacer/transform/stream_sort.rb +21 -0
  117. data/lib/pacer/transform/stream_uniq.rb +21 -0
  118. data/lib/pacer/transform.rb +16 -0
  119. data/lib/pacer/utils/graph_analysis.rb +112 -0
  120. data/lib/pacer/utils/trie.rb +93 -0
  121. data/lib/pacer/utils/tsort.rb +65 -0
  122. data/lib/pacer/utils/y_files.rb +127 -0
  123. data/lib/pacer/utils.rb +10 -0
  124. data/lib/pacer/version.rb +13 -0
  125. data/lib/pacer/wrappers/edge_wrapper.rb +51 -0
  126. data/lib/pacer/wrappers/element_wrapper.rb +78 -0
  127. data/lib/pacer/wrappers/new_element.rb +106 -0
  128. data/lib/pacer/wrappers/vertex_wrapper.rb +51 -0
  129. data/lib/pacer/wrappers.rb +19 -0
  130. data/lib/pacer-0.9.1.1-standalone.jar +0 -0
  131. data/lib/pacer.rb +290 -0
  132. data/pacer.gemspec +30 -0
  133. data/pom/standalone.xml +22 -0
  134. data/pom.xml +124 -0
  135. data/samples/grateful-dead.xml +26380 -0
  136. data/samples/grateful_dead.rb +63 -0
  137. data/samples/profile.rb +15 -0
  138. data/spec/data/grateful-dead.xml +26380 -0
  139. data/spec/data/pacer.graphml +319 -0
  140. data/spec/pacer/blueprints/dex_spec.rb +172 -0
  141. data/spec/pacer/blueprints/neo4j_spec.rb +177 -0
  142. data/spec/pacer/blueprints/tg_spec.rb +128 -0
  143. data/spec/pacer/core/graph/edges_route_spec.rb +52 -0
  144. data/spec/pacer/core/graph/element_route_spec.rb +46 -0
  145. data/spec/pacer/core/graph/graph_route_spec.rb +94 -0
  146. data/spec/pacer/core/graph/vertices_route_spec.rb +169 -0
  147. data/spec/pacer/core/route_spec.rb +197 -0
  148. data/spec/pacer/filter/collection_filter_spec.rb +19 -0
  149. data/spec/pacer/filter/empty_filter_spec.rb +29 -0
  150. data/spec/pacer/filter/future_filter_spec.rb +97 -0
  151. data/spec/pacer/filter/loop_filter_spec.rb +31 -0
  152. data/spec/pacer/filter/property_filter_spec.rb +111 -0
  153. data/spec/pacer/filter/random_filter_spec.rb +17 -0
  154. data/spec/pacer/filter/uniq_filter_spec.rb +18 -0
  155. data/spec/pacer/filter/where_filter_spec.rb +93 -0
  156. data/spec/pacer/graph/edge_mixin_spec.rb +116 -0
  157. data/spec/pacer/graph/element_mixin_spec.rb +297 -0
  158. data/spec/pacer/graph/graph_mixin_spec.rb +538 -0
  159. data/spec/pacer/graph/index_mixin_spec.rb +0 -0
  160. data/spec/pacer/graph/vertex_mixin_spec.rb +192 -0
  161. data/spec/pacer/pipe/block_filter_pipe_spec.rb +0 -0
  162. data/spec/pacer/pipe/labels_filter_pipe_spec.rb +0 -0
  163. data/spec/pacer/pipe/ruby_pipe_spec.rb +0 -0
  164. data/spec/pacer/pipe/type_filter_pipe_spec.rb +0 -0
  165. data/spec/pacer/route/mixin/base_spec.rb +419 -0
  166. data/spec/pacer/route/mixin/bulk_operations_spec.rb +30 -0
  167. data/spec/pacer/route/mixin/route_operations_spec.rb +127 -0
  168. data/spec/pacer/support/array_list_spec.rb +0 -0
  169. data/spec/pacer/support/enumerable_spec.rb +115 -0
  170. data/spec/pacer/transform/join_spec.rb +138 -0
  171. data/spec/pacer/transform/path_spec.rb +54 -0
  172. data/spec/pacer/utils/tsort_spec.rb +89 -0
  173. data/spec/pacer/wrapper/edge_wrapper_spec.rb +33 -0
  174. data/spec/pacer/wrapper/element_wrapper_spec.rb +169 -0
  175. data/spec/pacer/wrapper/vertex_wrapper_spec.rb +33 -0
  176. data/spec/pacer_spec.rb +0 -0
  177. data/spec/spec_helper.rb +91 -0
  178. data/spec/support/contexts.rb +14 -0
  179. data/spec/support/graph_runner.rb +142 -0
  180. data/spec/support/matchers.rb +19 -0
  181. data/spec/support/use_transactions.rb +31 -0
  182. data/spec/tackle/simple_mixin.rb +21 -0
  183. data/spec/tackle/tinkerpop_graph_mixins.rb +60 -0
  184. metadata +364 -0
@@ -0,0 +1,51 @@
1
+ module Pacer::Wrappers
2
+ class VertexWrapper < ElementWrapper
3
+ include Pacer::Vertex
4
+ include Pacer::Core::Graph::VerticesRoute
5
+ include Pacer::ElementMixin
6
+ include Pacer::VertexMixin
7
+
8
+ def_delegators :@element,
9
+ :getId, :getPropertyKeys, :getProperty, :setProperty, :removeProperty,
10
+ :getOutEdges, :getInEdges,
11
+ :getRawVertex,
12
+ :graph, :graph=, :<=>, :==
13
+
14
+ class << self
15
+ def wrapper_for(exts)
16
+ @wrappers = {} unless defined? @wrappers
17
+ @wrappers[exts.to_set] ||= build_vertex_wrapper(exts)
18
+ end
19
+
20
+ def clear_cache
21
+ @wrappers = {}
22
+ end
23
+
24
+ protected
25
+
26
+ def build_vertex_wrapper(exts)
27
+ build_extension_wrapper(exts, [:Route, :Vertex], VertexWrapper)
28
+ end
29
+ end
30
+
31
+ # This method must be defined here rather than in the superclass in order
32
+ # to correctly override the method in an included module
33
+ def extensions
34
+ self.class.extensions
35
+ end
36
+
37
+ # This method must be defined here rather than in the superclass in order
38
+ # to correctly override the method in an included module
39
+ def element
40
+ @element
41
+ end
42
+
43
+ def add_extensions(exts)
44
+ if exts.any?
45
+ self.class.wrap(element, extensions + exts.to_a)
46
+ else
47
+ self
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,19 @@
1
+ require 'forwardable'
2
+
3
+ module Pacer
4
+ def self.vertex_wrapper(*exts)
5
+ Wrappers::VertexWrapper.wrapper_for(exts)
6
+ end
7
+
8
+ def self.edge_wrapper(*exts)
9
+ Wrappers::EdgeWrapper.wrapper_for(exts)
10
+ end
11
+
12
+ module Wrappers
13
+ end
14
+ end
15
+
16
+ require 'pacer/wrappers/new_element'
17
+ require 'pacer/wrappers/element_wrapper'
18
+ require 'pacer/wrappers/vertex_wrapper'
19
+ require 'pacer/wrappers/edge_wrapper'
Binary file
data/lib/pacer.rb ADDED
@@ -0,0 +1,290 @@
1
+ if not defined?(JRUBY_VERSION) or JRUBY_VERSION =~ /^(0|1\.[0-5]|1\.6\.[0-3])/
2
+ # NOTE: This is because JRuby 1.6.4 fixes a bug that made it impossible to
3
+ # instantiate Java classes with a varargs constructor signature with 0
4
+ # arguments. Marko would not accept a patch to create a 0 args constructor to
5
+ # work around the problem, therefore this version of Pacer will not work
6
+ # under any older versions of JRuby. The oldest Pacer version that will work
7
+ # is 0.8.1.
8
+ raise Exception, 'Pacer >= 0.8.2 requires JRuby version 1.6.4 or higher. It is strongly recommended that you use the latest JRuby release.'
9
+ end
10
+
11
+ if RUBY_VERSION == '1.8.7'
12
+ STDERR.puts <<WARNING
13
+ WARNING: Pacer is developed using JRuby in 1.9 mode. I recommend you
14
+ restart JRuby in 1.9 mode, either with the --1.9 flag, or by
15
+ defaulting to 1.9 mode by setting the environment variable
16
+ JRUBY_OPTS=--1.9
17
+ WARNING
18
+ end
19
+
20
+ require 'java'
21
+ require 'pp'
22
+ require 'rubygems'
23
+
24
+ module Pacer
25
+ unless const_defined? :PATH
26
+ PATH = File.expand_path(File.join(File.dirname(__FILE__), '..'))
27
+ lib_path = File.join(PATH, 'lib')
28
+ $:.unshift lib_path unless $:.any? { |path| path == lib_path }
29
+ end
30
+
31
+ require 'pacer/version'
32
+
33
+ if RUBY_VERSION =~ /^1.9/
34
+ Enumerator = ::Enumerator
35
+ else
36
+ Enumerator = Enumerable::Enumerator
37
+ end
38
+
39
+ require JAR
40
+
41
+ require 'pacer/exceptions'
42
+ require 'pacer/graph'
43
+ require 'pacer/pipes'
44
+ require 'pacer/core'
45
+ require 'pacer/routes'
46
+ require 'pacer/wrappers'
47
+ require 'pacer/route'
48
+ require 'pacer/extensions'
49
+ require 'pacer/blueprints'
50
+ require 'pacer/support'
51
+ require 'pacer/utils'
52
+ require 'pacer/filter'
53
+ require 'pacer/transform'
54
+ require 'pacer/side_effect'
55
+ require 'pacer/function_resolver'
56
+
57
+ class << self
58
+ # A global place for pacer to put debug info if it's tucked deep in
59
+ # its internals. Should typically not be used unless a mysterious
60
+ # bug needs to be analyzed but that never really happens ;)
61
+ attr_accessor :debug_info
62
+
63
+ # Returns the time pacer was last reloaded (or when it was started).
64
+ def reload_time
65
+ if defined? @reload_time
66
+ @reload_time
67
+ else
68
+ START_TIME
69
+ end
70
+ end
71
+
72
+ # Reload all Ruby modified files in the Pacer library. Useful for debugging
73
+ # in the console. Does not do any of the fancy stuff that Rails reloading
74
+ # does. Certain types of changes will still require restarting the
75
+ # session.
76
+ def reload!
77
+ require 'pathname'
78
+ Pathname.new(File.expand_path(__FILE__)).parent.find do |path|
79
+ if path.extname == '.rb' and path.mtime > reload_time
80
+ puts path.to_s
81
+ load path.to_s
82
+ end
83
+ end
84
+ clear_plugin_cache
85
+ @reload_time = Time.now
86
+ end
87
+
88
+ # Set to true to prevent inspecting any route from printing
89
+ # the matching elements to the screen.
90
+ def hide_route_elements=(bool)
91
+ @hide_route_elements = bool
92
+ end
93
+
94
+ # Returns whether elements should be displayed. Also yields,
95
+ # temporarily setting the value to true to prevent a route
96
+ # containing routes from printing the contained routes' elements or
97
+ # going recursive if the route were to somehow contain itself.
98
+ #
99
+ # @todo don't use negative method names.
100
+ #
101
+ # @yield print elements while inside this block
102
+ # @return [true, false] should you not print elemets?
103
+ def hide_route_elements
104
+ @hide_route_elements = nil unless defined? @hide_route_elements
105
+ if block_given?
106
+ if @hide_route_elements
107
+ yield
108
+ else
109
+ begin
110
+ @hide_route_elements = true
111
+ yield
112
+ ensure
113
+ @hide_route_elements = false
114
+ end
115
+ end
116
+ else
117
+ @hide_route_elements
118
+ end
119
+ end
120
+
121
+ # Returns how many terminal columns we have.
122
+ # @return [Fixnum] number of terminal columns
123
+ def columns
124
+ if defined? @columns
125
+ @columns
126
+ else
127
+ 150
128
+ end
129
+ end
130
+
131
+ # Tell Pacer how many terminal columns we have so it can print
132
+ # elements out in nice columns.
133
+ # @param [Fixnum] n number of terminal columns
134
+ def columns=(n)
135
+ @columns = n
136
+ end
137
+
138
+ # Returns how many matching items should be displayed by #inspect before we
139
+ # give up and display nothing but the route definition.
140
+ # @return [Fixnum] maximum number of elements to display
141
+ def inspect_limit
142
+ if defined? @inspect_limit
143
+ @inspect_limit
144
+ else
145
+ 500
146
+ end
147
+ end
148
+
149
+ # Set the maximum number of elements to print on the screen when
150
+ # inspecting a route.
151
+ # @param [Fixnum] n maximum number of elements to display
152
+ def inspect_limit=(n)
153
+ @inspect_limit = n
154
+ end
155
+
156
+ # Set Pacer's general verbosity.
157
+ # @param [:very, true, false] default is true, :very is more
158
+ # verbose, false is quiet
159
+ def verbose=(v)
160
+ @verbose = v
161
+ end
162
+
163
+ # Current verbosity setting
164
+ # @return [:very, true, false]
165
+ def verbose?
166
+ @verbose = nil unless defined? @verbose
167
+ @verbose = true if @verbose.nil?
168
+ @verbose
169
+ end
170
+ alias verbose verbose?
171
+
172
+ # Clear all cached data that may become invalid when {#reload!} is
173
+ # called.
174
+ #
175
+ # @todo reimpliment as callbacks to keep the code all in one place.
176
+ def clear_plugin_cache
177
+ Wrappers::VertexWrapper.clear_cache
178
+ Wrappers::EdgeWrapper.clear_cache
179
+ FunctionResolver.clear_cache
180
+ end
181
+
182
+ # Is the object a vertex?
183
+ def vertex?(element)
184
+ element.is_a? Pacer::Vertex or
185
+ (element.respond_to? :element and
186
+ element.element.is_a? Pacer::Vertex)
187
+ end
188
+
189
+ # Is the object an edge?
190
+ def edge?(element)
191
+ element.is_a? Pacer::Edge
192
+ (element.respond_to? :element and
193
+ element.element.is_a? Pacer::Edge)
194
+ end
195
+
196
+ def vertex_route?(obj)
197
+ obj.is_a? Pacer::Core::Graph::VerticesRoute
198
+ end
199
+ alias vertices_route? vertex_route?
200
+
201
+ def edge_route?(obj)
202
+ obj.is_a? Pacer::Core::Graph::EdgesRoute
203
+ end
204
+ alias edges_route? edge_route?
205
+
206
+ # Blueprints constant for manual index.
207
+ # @return [com.tinkerpop.blueprints.pgm.Index::Type::MANUAL]
208
+ def manual_index
209
+ com.tinkerpop.blueprints.pgm.Index::Type::MANUAL
210
+ end
211
+
212
+ # Blueprints constant for automatic index.
213
+ # @return [com.tinkerpop.blueprints.pgm.Index::Type::AUTOMATIC]
214
+ def automatic_index
215
+ com.tinkerpop.blueprints.pgm.Index::Type::AUTOMATIC
216
+ end
217
+
218
+ # If a pipe is giving you trouble, you can get all of the
219
+ # intermediate pipes by using this method.
220
+ #
221
+ # @example how to use it:
222
+ # Pacer.debug_pipe(graph.v.out_e)
223
+ #
224
+ # Each returned pipe can be iterated with it's #next method to see
225
+ # what it would have returned if it were the end pipe.
226
+ #
227
+ # @return [[java.util.Iterator, Array<Hash>, com.tinkerpop.pipes.Pipe]]
228
+ # the iterator is the data source. Each Hash in the array is
229
+ # information about one pipe in the pipeline that was created.
230
+ # These are in order of creation, not necessarily of attachment.
231
+ # However the hash will contain what pipe was used as the source
232
+ # for the given pipe along with all arguments used to create the
233
+ # pipe as well as other information if it seemed useful.
234
+ def debug_pipe(pipe)
235
+ @debug_pipes = []
236
+ result = pipe.send :iterator
237
+ [debug_source, debug_pipes, result]
238
+ end
239
+
240
+ def debug_pipe!
241
+ @debug_pipes = []
242
+ end
243
+
244
+ # All of the currently open graphs that are tied to the filesystem
245
+ # or a url or address.
246
+ # @return [Hash] address => graph
247
+ def open_graphs
248
+ @open_graphs = Hash.new { |h, k| h[k] = {} } unless defined? @open_graphs
249
+ @open_graphs
250
+ end
251
+
252
+ def next_graph_id
253
+ @next_graph_id = 0 unless defined? @next_graph_id
254
+ @next_graph_id += 1
255
+ end
256
+
257
+ # Tell pacer to record that we're starting a graph.
258
+ #
259
+ # @param [Class] type type of graph
260
+ # @param [String] key address of the graph
261
+ # @yield the block should return the instantiated graph.
262
+ # @return [GraphMixin] the instantiated graph
263
+ def starting_graph(type, key)
264
+ graph = open_graphs[type][key]
265
+ return graph if graph
266
+ graph = yield
267
+ open_graphs[type][key] = graph
268
+ end
269
+
270
+ # Used internally to collect debug information while using
271
+ # {#debug_pipe}
272
+ attr_accessor :debug_source
273
+ # Used internally to collect debug information while using
274
+ # {#debug_pipe}
275
+ attr_reader :debug_pipes
276
+ end
277
+ end
278
+
279
+ at_exit do
280
+ # Close all open graphs
281
+ Pacer.open_graphs.each do |type, graphs|
282
+ graphs.each do |path, graph|
283
+ begin
284
+ graph.shutdown
285
+ rescue Exception, StandardError => e
286
+ pp e
287
+ end
288
+ end
289
+ end
290
+ end
data/pacer.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "pacer/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "pacer"
7
+ s.version = Pacer::VERSION
8
+ s.platform = 'java'
9
+ s.authors = ["Darrick Wiebe"]
10
+ s.email = "darrick@innatesoftware.com"
11
+ s.homepage = "http://github.com/pangloss/pacer"
12
+ s.license = "MIT"
13
+ s.summary = %Q{A very efficient and easy to use graph traversal engine.}
14
+ s.description = %Q{Pacer defines routes through a graph and then traverses them very quickly.}
15
+
16
+ s.add_dependency 'fastercsv', '>= 1.5.4'
17
+ s.add_development_dependency 'rspec', '~> 2.7.0'
18
+ s.add_development_dependency 'rr', '~> 1.0'
19
+ s.add_development_dependency 'rcov'
20
+ s.add_development_dependency 'yard'
21
+ s.add_development_dependency 'rake'
22
+
23
+ s.add_development_dependency 'pacer-neo4j', '1.0.7.1'
24
+ s.add_development_dependency 'autotest'
25
+
26
+ s.files = `git ls-files`.split("\n") + [Pacer::JAR_PATH]
27
+ s.test_files = `git ls-files -- spec/*`.split("\n")
28
+ s.require_paths = ['lib']
29
+ end
30
+
@@ -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,124 @@
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</artifactId>
8
+ <!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-neo4j/version.rb -->
9
+ <properties>
10
+ <gem.version>0.9.1.1</gem.version>
11
+ <blueprints.version>1.0</blueprints.version>
12
+ <pipes.version>0.8</pipes.version>
13
+ </properties>
14
+ <!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-neo4j/version.rb -->
15
+ <version>${gem.version}</version>
16
+ <packaging>pom</packaging>
17
+ <url>https://github.com/pangloss/pacer</url>
18
+ <name>Pacer Tinkerpop core dependencies including Blueprints Core
19
+ and Pipes.</name>
20
+ <description>
21
+ </description>
22
+ <inceptionYear>2011</inceptionYear>
23
+ <developers>
24
+ <developer>
25
+ <name>Darrick Wiebe</name>
26
+ <email>darrick@innatesoftware.com</email>
27
+ <url>http://github.com/pangloss</url>
28
+ </developer>
29
+ </developers>
30
+ <dependencies>
31
+ <!-- PROPERTY GRAPH MODEL SUPPORT -->
32
+ <dependency>
33
+ <groupId>com.tinkerpop.blueprints</groupId>
34
+ <artifactId>blueprints-core</artifactId>
35
+ <version>${blueprints.version}</version>
36
+ </dependency>
37
+ <!-- GRAPH TRAVERSAL SUPPORT -->
38
+ <dependency>
39
+ <groupId>com.tinkerpop</groupId>
40
+ <artifactId>pipes</artifactId>
41
+ <version>${pipes.version}</version>
42
+ </dependency>
43
+ </dependencies>
44
+
45
+ <repositories>
46
+ <repository>
47
+ <id>tinkerpop-repository</id>
48
+ <name>TinkerPop Maven2 Repository</name>
49
+ <url>http://tinkerpop.com/maven2</url>
50
+ <snapshots>
51
+ <enabled>true</enabled>
52
+ <updatePolicy>always</updatePolicy>
53
+ </snapshots>
54
+ </repository>
55
+ </repositories>
56
+
57
+ <distributionManagement>
58
+ <repository>
59
+ <id>tinkerpop-repository</id>
60
+ <name>TinkerPop Maven2 Repository</name>
61
+ <url>ftp://ftp.tinkerpop.com:21/public/maven2/</url>
62
+ </repository>
63
+ </distributionManagement>
64
+
65
+ <build>
66
+ <directory>${basedir}/target</directory>
67
+ <finalName>${project.artifactId}-${project.version}</finalName>
68
+ <resources>
69
+ <resource>
70
+ <directory>${basedir}/src/main/resources
71
+ </directory>
72
+ </resource>
73
+ </resources>
74
+ <testResources>
75
+ <testResource>
76
+ <directory>${basedir}/src/test/resources
77
+ </directory>
78
+ </testResource>
79
+ </testResources>
80
+ <plugins>
81
+ <plugin>
82
+ <artifactId>maven-compiler-plugin</artifactId>
83
+ <configuration>
84
+ <source>1.6</source>
85
+ <target>1.6</target>
86
+ </configuration>
87
+ </plugin>
88
+ <plugin>
89
+ <artifactId>maven-assembly-plugin</artifactId>
90
+ <version>2.2-beta-4</version>
91
+ <executions>
92
+ <execution>
93
+ <phase>package</phase>
94
+ <goals>
95
+ <goal>attached</goal>
96
+ </goals>
97
+ </execution>
98
+ </executions>
99
+ <configuration>
100
+ <descriptors>
101
+ <descriptor>pom/standalone.xml</descriptor>
102
+ </descriptors>
103
+ <finalName>${project.artifactId}-${project.version}</finalName>
104
+ <outputDirectory>lib</outputDirectory>
105
+ <workDirectory>target/assembly/work</workDirectory>
106
+ <tarLongFileMode>warn</tarLongFileMode>
107
+ </configuration>
108
+ </plugin>
109
+ <plugin>
110
+ <groupId>org.apache.maven.plugins</groupId>
111
+ <artifactId>maven-javadoc-plugin</artifactId>
112
+ <version>2.6.1</version>
113
+ </plugin>
114
+ </plugins>
115
+ <extensions>
116
+ <extension>
117
+ <groupId>org.apache.maven.wagon</groupId>
118
+ <artifactId>wagon-ftp</artifactId>
119
+ <version>1.0-alpha-6</version>
120
+ </extension>
121
+ </extensions>
122
+ </build>
123
+
124
+ </project>