pacer 1.6.0-java → 2.0.0.pre-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7e492827750d0f50e895dea5a6b847634f5800d7
4
- data.tar.gz: 21025ddf6898e6f432c9466cf61f3ff04b0d286d
3
+ metadata.gz: b34d5a129efd227a81ed3a38ae6ec7d4691422f3
4
+ data.tar.gz: e57767503cfc83db3fc921065bcf588e029df734
5
5
  SHA512:
6
- metadata.gz: e20c5e2ee2b402909c8ade3b8116ea01496d9e2c5947b5cef83abf4680136d78ee05395cc41f18604d49a6e0514ba8538b03b62f3072cedd76beb3e5b3c5bac7
7
- data.tar.gz: ef58e5ca6852f6b9ed63ce2386c647c1ae378aa416d9e27d4489bcf2546cc1546b0291cffbe676638545967d4b13467c7cea679826e77ea9f8c936c056c24ddf
6
+ metadata.gz: 84f28ee240a81f2d782073d9bf3d867342f68334d08b9b769f12135475c71120a1b878435997481183a238601c70e39d25f86d740bc117661679707c28a64f49
7
+ data.tar.gz: 5100e3160ad530c4bed327d002fc6855b64675cb90f4dd4423b34c01c55ecc42a15b036b8b35fc5319f4bb8c53ee079a8c5b508008b30e5d6c8233cbf572accc
data/.gitignore CHANGED
@@ -32,3 +32,5 @@ coverage/*
32
32
  dex.log
33
33
  vendor/
34
34
  private/
35
+ Gemfile-custom
36
+ Jarfile.lock
data/Gemfile CHANGED
@@ -8,44 +8,13 @@ group :development do
8
8
  gem 'rr', '~> 1.0'
9
9
  gem 'simplecov'
10
10
  gem 'rake'
11
-
12
- # pacer-* gems are required for testing pacer.
13
- # If you have the gem repos cloned locally, we'll use them.
14
- #
15
- [ 'pacer-orient', 'pacer-dex' ].each do |lib|
16
- if File.directory? "../#{lib}"
17
- gem lib, :path => "../#{lib}"
18
- end
19
- end
20
-
21
- # Neo4j versions are mutually incompatible
22
- # To test Pacer against Neo4j 1.x when the neo2 gem is present, use:
23
- #
24
- # neo=1 bundle
25
- # rspec
26
- #
27
- # To switch back, just use:
28
- #
29
- # bundle
30
- # rspec
31
- #
32
- if File.directory? "../pacer-neo4j" and (ENV['neo'] == '1' or not File.directory? "../pacer-neo4j2")
33
- gem 'pacer-neo4j', :path => "../pacer-neo4j"
34
- end
35
-
36
- if File.directory? "../pacer-neo4j2" and ENV['neo'] != '1'
37
- gem 'pacer-neo4j2', :path => "../pacer-neo4j2"
38
- end
39
-
40
- if File.directory? "../mcfly"
41
- gem 'pacer-mcfly', :path => "../mcfly"
42
- end
43
-
44
-
45
-
46
11
  gem 'autotest-standalone'
47
12
  gem 'autotest-growl'
48
13
  gem 'pry'
49
14
  gem 'awesome_print', '0.4.0'
50
15
  end
51
16
 
17
+
18
+ # Gemfile-custom is .gitignored, but eval'd here so you can add
19
+ # whatever dev tools you like to use to your local environment.
20
+ eval File.read('Gemfile-custom') if File.exist?('Gemfile-custom')
@@ -0,0 +1,41 @@
1
+ group :development do
2
+ # pacer-* gems are required for testing pacer.
3
+ # If you have the gem repos cloned locally, we'll use them.
4
+ #
5
+ [ 'pacer-orient', 'pacer-dex' ].each do |lib|
6
+ if File.directory? "../#{lib}"
7
+ gem lib, :path => "../#{lib}"
8
+ end
9
+ end
10
+
11
+ # Neo4j versions are mutually incompatible
12
+ # To test Pacer against Neo4j 1.x when the neo2 gem is present, use:
13
+ #
14
+ # neo=1 bundle
15
+ # rspec
16
+ #
17
+ # To switch back, just use:
18
+ #
19
+ # bundle
20
+ # rspec
21
+ #
22
+
23
+ neo_test_ver = ENV.fetch('neo') do
24
+ if File.directory?("../pacer-neo4j2")
25
+ '2'
26
+ elsif File.directory?("../pacer-neo4j")
27
+ '1'
28
+ else
29
+ '0'
30
+ end
31
+ end
32
+ if neo_test_ver == '1'
33
+ gem 'pacer-neo4j', :path => "../pacer-neo4j"
34
+ elsif neo_test_ver == '2'
35
+ gem 'pacer-neo4j2', :path => "../pacer-neo4j2"
36
+ end
37
+
38
+ if File.directory? "../mcfly"
39
+ gem 'pacer-mcfly', :path => "../mcfly"
40
+ end
41
+ end
data/Jarfile ADDED
@@ -0,0 +1,2 @@
1
+ jar "com.tinkerpop.blueprints:blueprints-core:2.6.0"
2
+ jar "com.tinkerpop:pipes:2.5.0"
data/Rakefile CHANGED
@@ -11,49 +11,9 @@ end
11
11
 
12
12
  task :default => :spec
13
13
 
14
- desc 'update pom.xml with current versions from lib/pacer/version.rb'
15
- file 'pom.xml' => 'lib/pacer/version.rb' do
16
- pom = File.read 'pom.xml'
17
- when_writing('Update pom.xml version number') do
18
- open 'pom.xml', 'w' do |f|
19
- pom.each_line do |line|
20
- line.sub!(%r{<gem.version>.*</gem.version>}, "<gem.version>#{ Pacer::VERSION }</gem.version>")
21
- line.sub!(%r{<blueprints.version>.*</blueprints.version>}, "<blueprints.version>#{ Pacer::BLUEPRINTS_VERSION }</blueprints.version>")
22
- line.sub!(%r{<pipes.version>.*</pipes.version>}, "<pipes.version>#{ Pacer::PIPES_VERSION }</pipes.version>")
23
- f << line
24
- end
25
- end
26
- end
27
- end
28
-
29
- file Pacer::JAR_PATH => 'pom.xml' do
30
- when_writing("Execute 'mvn package' task") do
31
- system 'mvn', 'clean'
32
- system 'mvn', 'package'
33
- end
34
- end
35
-
36
14
  task :check_18_mode do
37
15
  if RUBY_VERSION !~ /1\.8/
38
16
  warn 'Releasing gems in 1.9 mode does not work as of JRuby 1.6.5'
39
17
  raise 'Nooooooo!'
40
18
  end
41
19
  end
42
-
43
- task :gemfile_devel do
44
- File.delete 'Gemfile' if File.exists? 'Gemfile'
45
- File.symlink 'Gemfile-dev', 'Gemfile'
46
- end
47
-
48
- desc 'Touch version.rb so that the jar rebuilds'
49
- task :touch do
50
- system 'touch', 'lib/pacer/version.rb'
51
- end
52
-
53
- desc "build the JAR at #{ Pacer::JAR_PATH }"
54
- task :jar => Pacer::JAR_PATH
55
-
56
- # Add dependency to bundler default tasks:
57
- task :build => Pacer::JAR_PATH
58
- task :install => Pacer::JAR_PATH
59
- task :release => Pacer::JAR_PATH
data/lib/pacer/loader.rb CHANGED
@@ -101,6 +101,7 @@ require 'pacer/transform/sort_section'
101
101
  require 'pacer/transform/intersect_sections'
102
102
  require 'pacer/transform/payload'
103
103
  require 'pacer/transform/lookup_ids'
104
+ require 'pacer/transform/count_section'
104
105
 
105
106
  require 'pacer/side_effect/aggregate'
106
107
  require 'pacer/side_effect/as_var'
data/lib/pacer/route.rb CHANGED
@@ -100,7 +100,7 @@ module Pacer
100
100
  #
101
101
  # @param [Hash] args
102
102
  # @option args [Graph] :graph the graph this route is based on
103
- # @option args [Route] :bace the previous route in the chain
103
+ # @option args [Route] :back the previous route in the chain
104
104
  # @option args [element type] :element_type
105
105
  # @option args [Module] :modules additional modules to mix in
106
106
  # @option args [Symbol, Module] :filter the filter to use as this
@@ -0,0 +1,80 @@
1
+ module Pacer
2
+ module Routes
3
+ module RouteOperations
4
+ def count_section(section = nil, &block)
5
+ chain_route transform: Pacer::Transform::CountSection, key_block: block, section: section,
6
+ element_type: :array
7
+ end
8
+ end
9
+ end
10
+
11
+
12
+ module Transform
13
+ module CountSection
14
+ # VisitsSection module provides:
15
+ # section=
16
+ # section_visitor
17
+ # section_route
18
+ include Pacer::Visitors::VisitsSection
19
+
20
+ attr_accessor :key_block
21
+
22
+ protected
23
+
24
+ def attach_pipe(end_pipe)
25
+ block = key_block || proc { |x| x }
26
+ pf = Pacer::Wrappers::WrappingPipeFunction.new section_route, block
27
+ pipe = CountSectionPipe.new(section_visitor, pf)
28
+ pipe.setStarts end_pipe if end_pipe
29
+ pipe
30
+ end
31
+
32
+ class CountSectionPipe < Pacer::Pipes::RubyPipe
33
+ attr_reader :pf, :to_emit, :section, :count, :section_key
34
+
35
+ def initialize(section, pipe_function)
36
+ super()
37
+ @count = 0
38
+ @section = section
39
+ if section
40
+ section.visitor = self
41
+ else
42
+ on_element nil
43
+ end
44
+ @pf = pipe_function
45
+ end
46
+
47
+ def processNextStart
48
+ until to_emit
49
+ starts.next
50
+ @count += 1
51
+ end
52
+ raise EmptyPipe.instance if to_emit.empty?
53
+ emit = to_emit
54
+ @to_emit = nil
55
+ emit
56
+ rescue EmptyPipe, java.util.NoSuchElementException
57
+ if count == 0
58
+ raise EmptyPipe.instance
59
+ else
60
+ after_element
61
+ to_emit
62
+ end
63
+ end
64
+
65
+ def getPathToHere
66
+ section.getCurrentPath
67
+ end
68
+
69
+ def on_element(element)
70
+ @section_key = pf.compute element
71
+ end
72
+
73
+ def after_element
74
+ @to_emit = [section_key, count]
75
+ @count = 0
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
data/lib/pacer/version.rb CHANGED
@@ -1,13 +1,7 @@
1
1
  module Pacer
2
2
  unless const_defined? :VERSION
3
- VERSION = "1.6.0"
4
-
5
- JAR = "pacer-#{ VERSION }-standalone.jar"
6
- JAR_PATH = "lib/#{ JAR }"
3
+ VERSION = "2.0.0.pre"
7
4
 
8
5
  START_TIME = Time.now
9
-
10
- BLUEPRINTS_VERSION = "2.6.0"
11
- PIPES_VERSION = "2.5.0"
12
6
  end
13
7
  end
data/lib/pacer.rb CHANGED
@@ -22,6 +22,10 @@ require 'java'
22
22
  require 'pp'
23
23
  require 'rubygems'
24
24
 
25
+ require 'lock_jar'
26
+ LockJar.lock(File.join(File.dirname(__FILE__), "..", "Jarfile"))
27
+ LockJar.load
28
+
25
29
  module Pacer
26
30
  unless const_defined? :PATH
27
31
  PATH = File.expand_path(File.join(File.dirname(__FILE__), '..'))
@@ -37,7 +41,6 @@ module Pacer
37
41
  Enumerator = Enumerable::Enumerator
38
42
  end
39
43
 
40
- require JAR
41
44
 
42
45
  require 'pacer/loader'
43
46
 
data/pacer.gemspec CHANGED
@@ -7,14 +7,15 @@ Gem::Specification.new do |s|
7
7
  s.version = Pacer::VERSION
8
8
  s.platform = 'java'
9
9
  s.authors = ["Darrick Wiebe"]
10
- s.email = "darrick@innatesoftware.com"
10
+ s.email = "dw@xnlogic.com"
11
11
  s.homepage = "http://github.com/pangloss/pacer"
12
12
  s.license = "MIT"
13
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.}
14
+ s.description = %Q{Pacer defines composeable routes through a graph and then traverses them very quickly.}
15
15
 
16
- s.files = `git ls-files`.split("\n") + [Pacer::JAR_PATH]
16
+ s.files = `git ls-files`.split("\n")
17
17
  s.test_files = `git ls-files -- spec/*`.split("\n")
18
18
  s.require_paths = ['lib']
19
+ s.add_dependency "lock_jar", "~> 0.10.0"
19
20
  end
20
21
 
metadata CHANGED
@@ -1,17 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pacer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 2.0.0.pre
5
5
  platform: java
6
6
  authors:
7
7
  - Darrick Wiebe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-05 00:00:00.000000000 Z
12
- dependencies: []
13
- description: Pacer defines routes through a graph and then traverses them very quickly.
14
- email: darrick@innatesoftware.com
11
+ date: 2014-11-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: lock_jar
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.10.0
20
+ requirement: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 0.10.0
25
+ prerelease: false
26
+ type: :runtime
27
+ description: Pacer defines composeable routes through a graph and then traverses them very quickly.
28
+ email: dw@xnlogic.com
15
29
  executables: []
16
30
  extensions: []
17
31
  extra_rdoc_files: []
@@ -22,6 +36,8 @@ files:
22
36
  - .rspec
23
37
  - CONTRIBUTORS
24
38
  - Gemfile
39
+ - Gemfile-custom.sample
40
+ - Jarfile
25
41
  - LICENSE.txt
26
42
  - README.md
27
43
  - Rakefile
@@ -127,6 +143,7 @@ files:
127
143
  - lib/pacer/support/proc.rb
128
144
  - lib/pacer/transform/branch.rb
129
145
  - lib/pacer/transform/cap.rb
146
+ - lib/pacer/transform/count_section.rb
130
147
  - lib/pacer/transform/flat_map.rb
131
148
  - lib/pacer/transform/gather.rb
132
149
  - lib/pacer/transform/has_count_cap.rb
@@ -163,8 +180,6 @@ files:
163
180
  - lib/pacer/wrappers/wrapper_selector.rb
164
181
  - lib/pacer/wrappers/wrapping_pipe_function.rb
165
182
  - pacer.gemspec
166
- - pom.xml
167
- - pom/standalone.xml
168
183
  - samples/grateful-dead.xml
169
184
  - samples/grateful_dead.rb
170
185
  - samples/profile.rb
@@ -218,7 +233,6 @@ files:
218
233
  - spec/support/use_transactions.rb
219
234
  - spec/tackle/simple_mixin.rb
220
235
  - spec/tackle/tinkerpop_graph_mixins.rb
221
- - lib/pacer-1.6.0-standalone.jar
222
236
  homepage: http://github.com/pangloss/pacer
223
237
  licenses:
224
238
  - MIT
@@ -234,9 +248,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
234
248
  version: '0'
235
249
  required_rubygems_version: !ruby/object:Gem::Requirement
236
250
  requirements:
237
- - - '>='
251
+ - - '>'
238
252
  - !ruby/object:Gem::Version
239
- version: '0'
253
+ version: 1.3.1
240
254
  requirements: []
241
255
  rubyforge_project:
242
256
  rubygems_version: 2.1.9
@@ -294,3 +308,4 @@ test_files:
294
308
  - spec/support/use_transactions.rb
295
309
  - spec/tackle/simple_mixin.rb
296
310
  - spec/tackle/tinkerpop_graph_mixins.rb
311
+ has_rdoc:
Binary file
data/pom/standalone.xml DELETED
@@ -1,22 +0,0 @@
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 DELETED
@@ -1,104 +0,0 @@
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
- <blueprints.version>2.6.0</blueprints.version>
11
- <gem.version>1.6.0</gem.version>
12
- <pipes.version>2.5.0</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
- <build>
46
- <directory>${basedir}/target</directory>
47
- <finalName>${project.artifactId}-${project.version}</finalName>
48
- <resources>
49
- <resource>
50
- <directory>${basedir}/src/main/resources
51
- </directory>
52
- </resource>
53
- </resources>
54
- <testResources>
55
- <testResource>
56
- <directory>${basedir}/src/test/resources
57
- </directory>
58
- </testResource>
59
- </testResources>
60
- <plugins>
61
- <plugin>
62
- <artifactId>maven-compiler-plugin</artifactId>
63
- <configuration>
64
- <source>1.6</source>
65
- <target>1.6</target>
66
- </configuration>
67
- </plugin>
68
- <plugin>
69
- <artifactId>maven-assembly-plugin</artifactId>
70
- <version>2.2-beta-4</version>
71
- <executions>
72
- <execution>
73
- <phase>package</phase>
74
- <goals>
75
- <goal>attached</goal>
76
- </goals>
77
- </execution>
78
- </executions>
79
- <configuration>
80
- <descriptors>
81
- <descriptor>pom/standalone.xml</descriptor>
82
- </descriptors>
83
- <finalName>${project.artifactId}-${project.version}</finalName>
84
- <outputDirectory>lib</outputDirectory>
85
- <workDirectory>target/assembly/work</workDirectory>
86
- <tarLongFileMode>warn</tarLongFileMode>
87
- </configuration>
88
- </plugin>
89
- <plugin>
90
- <groupId>org.apache.maven.plugins</groupId>
91
- <artifactId>maven-javadoc-plugin</artifactId>
92
- <version>2.6.1</version>
93
- </plugin>
94
- </plugins>
95
- <extensions>
96
- <extension>
97
- <groupId>org.apache.maven.wagon</groupId>
98
- <artifactId>wagon-ftp</artifactId>
99
- <version>1.0-alpha-6</version>
100
- </extension>
101
- </extensions>
102
- </build>
103
-
104
- </project>