norikra-udf-mock 0.0.1-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.class
@@ -0,0 +1 @@
1
+ jruby-1.7.4
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in norikra-udf-woothee.gemspec
4
+ gemspec
@@ -0,0 +1,29 @@
1
+ # Norikra::Udf::Woothee
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'norikra-udf-woothee'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install norikra-udf-woothee
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1,27 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new(:spec) do |t|
5
+ t.rspec_opts = ["-c", "-f progress"] # '--format specdoc'
6
+ t.pattern = 'spec/**/*_spec.rb'
7
+ end
8
+
9
+ task :compile do
10
+ require 'rubygems'
11
+
12
+ jarname = FileList['norikra-udf-*.gemspec'].first.gsub(/\.gemspec$/, '.jar')
13
+
14
+ jarfiles = FileList['jar/**/*.jar'].select{|f| not f.end_with?('/' + jarname)}
15
+ jarfiles << Gem.find_files('esper-*.jar').first
16
+ classpath = "-classpath java:#{jarfiles.join(':')}"
17
+
18
+ FileList['java/**/*.java'].each do |fn|
19
+ sh "env LC_ALL=C javac #{classpath} #{fn}"
20
+ end
21
+ sh "env LC_ALL=C jar -cf jar/#{jarname} -C java ."
22
+ end
23
+
24
+ task :test => [:compile, :spec]
25
+ task :default => :test
26
+
27
+ task :all => [:compile, :spec, :build]
File without changes
Binary file
@@ -0,0 +1,39 @@
1
+ package is.tagomor.norikra.udf;
2
+
3
+ import com.espertech.esper.epl.agg.aggregator.AggregationMethod;
4
+
5
+ // import java.util.Map;
6
+
7
+ public class AggregationSingleMock implements AggregationMethod {
8
+ // private final static long = 16777216;
9
+ private long counter;
10
+
11
+ public AggregationSingleMock() {
12
+ counter = 0;
13
+ }
14
+
15
+ public Class getValueType() {
16
+ return Long.class;
17
+ }
18
+
19
+ public void enter(Object value) {
20
+ if (value == null)
21
+ return;
22
+
23
+ counter += value.toString().length();
24
+ }
25
+
26
+ public void leave(Object value) {
27
+ counter -= value.toString().length();
28
+ }
29
+
30
+ public Object getValue() {
31
+ return counter;
32
+ }
33
+
34
+ public void clear() {
35
+ counter = 0;
36
+ }
37
+ }
38
+
39
+
@@ -0,0 +1,49 @@
1
+ package is.tagomor.norikra.udf;
2
+
3
+ import com.espertech.esper.client.hook.AggregationFunctionFactory;
4
+ import com.espertech.esper.epl.agg.service.AggregationValidationContext;
5
+ import com.espertech.esper.epl.agg.aggregator.AggregationMethod;
6
+
7
+ // import java.util.Map;
8
+
9
+ public class AggregationSingleMockFactory implements AggregationFunctionFactory {
10
+ /*
11
+ The aggregation function factory instance receives the aggregation function name via set setFunctionName method.
12
+ */
13
+ public void setFunctionName(String functionName) {
14
+ // no action taken
15
+ }
16
+
17
+ /*
18
+ An aggregation function factory must provide an implementation of the validate method
19
+ that is passed a AggregationValidationContext validation context object.
20
+ Within the validation context you find the result type of each of the parameters expressions
21
+ to the aggregation function as well as information about constant values and data window use.
22
+ Please see the JavaDoc API documentation for a comprehensive list of validation context information.
23
+
24
+ Since the example concatenation function requires string types, it implements a type check:
25
+ */
26
+ public void validate(AggregationValidationContext validationContext) {
27
+ if ((validationContext.getParameterTypes().length != 1) ||
28
+ (validationContext.getParameterTypes()[0] != String.class)) {
29
+ throw new IllegalArgumentException("aggregation single mock requires a single parameter of type String");
30
+ }
31
+ }
32
+
33
+ /*
34
+ In order for the engine to validate the type returned by the aggregation function against
35
+ the types expected by enclosing expressions, the getValueType must return the result type
36
+ of any values produced by the aggregation function:
37
+ */
38
+ public Class getValueType() {
39
+ return Long.class;
40
+ }
41
+
42
+ /*
43
+ Finally the factory implementation must provide a newAggregator method that returns instances
44
+ of AggregationMethod. The engine invokes this method for each new aggregation state to be allocated.
45
+ */
46
+ public AggregationMethod newAggregator() {
47
+ return new AggregationSingleMock();
48
+ }
49
+ }
@@ -0,0 +1,12 @@
1
+ package is.tagomor.norikra.udf;
2
+
3
+ // import java.util.Map;
4
+ // import java.util.List;
5
+
6
+ public final class SingleRowMock
7
+ {
8
+ public static String passThrough(final String source)
9
+ {
10
+ return source;
11
+ }
12
+ }
@@ -0,0 +1,24 @@
1
+ require 'java'
2
+ require 'norikra/udf'
3
+
4
+ module Norikra
5
+ module UDF
6
+ class PassThrough < Norikra::UDF::SingleRow
7
+ def self.init
8
+ require 'norikra-udf-mock.jar'
9
+ end
10
+ def definition
11
+ ["passThrough", "is.tagomor.norikra.udf.SingleRowMock", "passThrough"]
12
+ end
13
+ end
14
+
15
+ class CountLength < Norikra::UDF::AggregationSingle
16
+ def self.init
17
+ require 'norikra-udf-mock.jar'
18
+ end
19
+ def definition
20
+ ["countLength", "is.tagomor.norikra.udf.AggregationSingleMockFactory"]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "norikra-udf-mock"
5
+ spec.version = "0.0.1"
6
+ spec.authors = ["TAGOMORI Satoshi"]
7
+ spec.email = ["tagomoris@gmail.com"]
8
+ spec.description = %q{UDF mocks for Norikra development}
9
+ spec.summary = %q{Norikra UDF mock}
10
+ spec.homepage = "https://github.com/tagomoris/norikra-udf-mock"
11
+ spec.license = "GPLv2"
12
+ spec.platform = "java" #Gem::Platform::JAVA
13
+
14
+ spec.files = `git ls-files`.split($/)
15
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.require_paths = ["lib", "jar"]
18
+
19
+ spec.add_runtime_dependency "norikra", ">= 0.0.8"
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ end
@@ -0,0 +1,46 @@
1
+ require 'norikra/udf_spec_helper'
2
+
3
+ include Norikra::UDFSpecHelper
4
+
5
+ require 'norikra/udf/mock'
6
+
7
+ describe Norikra::UDF::PassThrough do
8
+ udf_function Norikra::UDF::PassThrough
9
+
10
+ it 'returns argument itself' do
11
+ source = "xxx yyy zzz"
12
+ r = fcall(:passThrough, source)
13
+ expect(r).to eql(source)
14
+ end
15
+ end
16
+
17
+ describe Norikra::UDF::CountLength do
18
+ udf_function Norikra::UDF::CountLength, :valueType => java.lang.Long, :parameters => [[java.lang.String]]
19
+
20
+ it 'returns Long' do
21
+ expect(fcall(:countLength, :getValueType)).to eql(java.lang.Long.java_class)
22
+ end
23
+
24
+ it 'counts sum of length of Strings' do
25
+ f = function(:countLength)
26
+
27
+ f._call(:enter, "01234")
28
+ f._call(:enter, "56789")
29
+ f._call(:enter, "01234")
30
+ f._call(:enter, "56789")
31
+ v = f.getValue
32
+ expect(v).to eql(20)
33
+ f._call(:clear)
34
+ expect(f._call(:getValue)).to eql(0)
35
+ end
36
+
37
+ it 'can decrements count with leave' do
38
+ expect(fcall(:countLength, :getValue)).to eql(0)
39
+ fcall(:countLength, :enter, "01234")
40
+ expect(fcall(:countLength, :getValue)).to eql(5)
41
+ fcall(:countLength, :leave, "0123")
42
+ expect(fcall(:countLength, :getValue)).to eql(1)
43
+ fcall(:countLength, :clear)
44
+ expect(fcall(:countLength, :getValue)).to eql(0)
45
+ end
46
+ end
metadata ADDED
@@ -0,0 +1,125 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: norikra-udf-mock
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: java
7
+ authors:
8
+ - TAGOMORI Satoshi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-08-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: norikra
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
20
+ version: 0.0.8
21
+ none: false
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.8
27
+ none: false
28
+ prerelease: false
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ~>
35
+ - !ruby/object:Gem::Version
36
+ version: '1.3'
37
+ none: false
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '1.3'
43
+ none: false
44
+ prerelease: false
45
+ type: :development
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ none: false
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ none: false
60
+ prerelease: false
61
+ type: :development
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ none: false
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ none: false
76
+ prerelease: false
77
+ type: :development
78
+ description: UDF mocks for Norikra development
79
+ email:
80
+ - tagomoris@gmail.com
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - .gitignore
86
+ - .ruby-version
87
+ - Gemfile
88
+ - README.md
89
+ - Rakefile
90
+ - jar/.touched
91
+ - jar/norikra-udf-mock.jar
92
+ - java/is/tagomor/norikra/udf/AggregationSingleMock.java
93
+ - java/is/tagomor/norikra/udf/AggregationSingleMockFactory.java
94
+ - java/is/tagomor/norikra/udf/SingleRowMock.java
95
+ - lib/norikra/udf/mock.rb
96
+ - norikra-udf-mock.gemspec
97
+ - spec/mock_spec.rb
98
+ homepage: https://github.com/tagomoris/norikra-udf-mock
99
+ licenses:
100
+ - GPLv2
101
+ post_install_message:
102
+ rdoc_options: []
103
+ require_paths:
104
+ - lib
105
+ - jar
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ none: false
112
+ required_rubygems_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ none: false
118
+ requirements: []
119
+ rubyforge_project:
120
+ rubygems_version: 1.8.24
121
+ signing_key:
122
+ specification_version: 3
123
+ summary: Norikra UDF mock
124
+ test_files:
125
+ - spec/mock_spec.rb