ruboto 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Gemfile.lock +0 -2
- data/Rakefile +64 -1
- data/assets/rakelib/ruboto.rake +23 -2
- data/assets/res/layout/get_ruboto_core.xml +0 -2
- data/assets/samples/sample_activity.rb +3 -6
- data/assets/samples/sample_broadcast_receiver.rb +9 -5
- data/assets/samples/sample_service.rb +0 -3
- data/assets/src/InheritingActivity.java +1 -1
- data/assets/src/InheritingClass.java +10 -4
- data/assets/src/RubotoActivity.java +90 -20
- data/assets/src/RubotoBroadcastReceiver.java +59 -23
- data/assets/src/RubotoService.java +103 -51
- data/assets/src/org/ruboto/EntryPointActivity.java +2 -1
- data/assets/src/org/ruboto/JRubyAdapter.java +158 -115
- data/assets/src/org/ruboto/Script.java +23 -1
- data/assets/src/org/ruboto/test/ActivityTest.java +2 -2
- data/assets/src/org/ruboto/test/InstrumentationTestRunner.java +30 -16
- data/assets/src/ruboto.rb +1 -0
- data/assets/src/ruboto/activity.rb +2 -6
- data/assets/src/ruboto/base.rb +9 -7
- data/assets/src/ruboto/broadcast_receiver.rb +0 -8
- data/assets/src/ruboto/generate.rb +2 -2
- data/assets/src/ruboto/service.rb +0 -8
- data/assets/src/ruboto/widget.rb +17 -2
- data/lib/java_class_gen/android_api.xml +1 -1
- data/lib/ruboto/sdk_versions.rb +1 -1
- data/lib/ruboto/util/build.rb +11 -10
- data/lib/ruboto/util/code_formatting.rb +2 -2
- data/lib/ruboto/util/update.rb +20 -7
- data/lib/ruboto/util/xml_element.rb +42 -16
- data/lib/ruboto/version.rb +1 -1
- data/test/activity/call_super_activity.rb +28 -0
- data/test/activity/call_super_activity_test.rb +15 -0
- data/test/activity/image_button_activity.rb +2 -3
- data/test/activity/image_button_and_button_activity.rb +1 -2
- data/test/activity/margins_activity.rb +17 -0
- data/test/activity/margins_activity_test.rb +25 -0
- data/test/activity/navigation_activity.rb +85 -0
- data/test/activity/navigation_activity_test.rb +98 -0
- data/test/activity/option_menu_activity.rb +0 -2
- data/test/activity/psych_activity.rb +2 -3
- data/test/activity/stack_activity.rb +3 -2
- data/test/activity/stack_activity_test.rb +9 -7
- data/test/block_def_activity/margins_activity.rb +17 -0
- data/test/block_def_activity/margins_activity_test.rb +25 -0
- data/test/block_def_activity/option_menu_activity_test.rb +1 -2
- data/test/block_def_activity/stack_activity_test.rb +8 -5
- data/test/broadcast_receiver_test.rb +2 -2
- data/test/gem_test.rb +12 -0
- data/test/handle_activity/margins_activity.rb +15 -0
- data/test/handle_activity/margins_activity_test.rb +25 -0
- data/test/handle_activity/option_menu_activity.rb +4 -0
- data/test/handle_activity/stack_activity.rb +3 -0
- data/test/handle_activity/stack_activity_test.rb +9 -6
- data/test/minimal_app_test.rb +1 -1
- data/test/rake_test.rb +6 -7
- data/test/ruboto_gen_test.rb +54 -4
- data/test/ruboto_update_test.rb +12 -8
- data/test/service_test.rb +1 -6
- data/test/test_helper.rb +34 -11
- data/test/update_test_methods.rb +22 -0
- data/test/view_constants_test.rb +104 -0
- metadata +17 -5
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -31,6 +31,7 @@ end
|
|
31
31
|
task :install => :gem do
|
32
32
|
`gem query -i -n ^ruboto$ -v #{Ruboto::VERSION}`
|
33
33
|
if $? != 0
|
34
|
+
puts 'Installing gem'
|
34
35
|
cmd = "gem install ruboto-#{Ruboto::VERSION}.gem"
|
35
36
|
output = `#{cmd}`
|
36
37
|
if $? == 0
|
@@ -43,6 +44,24 @@ task :install => :gem do
|
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
47
|
+
task :uninstall do
|
48
|
+
`gem query -i -n ^ruboto$ -v #{Ruboto::VERSION}`
|
49
|
+
if $? == 0
|
50
|
+
puts 'Uninstalling gem'
|
51
|
+
cmd = "gem uninstall ruboto -v #{Ruboto::VERSION}"
|
52
|
+
output = `#{cmd}`
|
53
|
+
if $? == 0
|
54
|
+
puts output
|
55
|
+
else
|
56
|
+
sh "sudo #{cmd}"
|
57
|
+
end
|
58
|
+
else
|
59
|
+
puts "ruboto-#{Ruboto::VERSION} is not installed."
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
task :reinstall => [:uninstall, :clean, :install]
|
64
|
+
|
46
65
|
desc "Generate an example app"
|
47
66
|
task :example => EXAMPLE_FILE
|
48
67
|
|
@@ -57,6 +76,49 @@ file EXAMPLE_FILE => :install do
|
|
57
76
|
end
|
58
77
|
end
|
59
78
|
|
79
|
+
desc 'Generate release docs for a given milestone'
|
80
|
+
task :release_docs do
|
81
|
+
# require 'rubygems'
|
82
|
+
# require 'highline/import'
|
83
|
+
print 'user name: ' ; user = STDIN.gets.chomp # ask('login : ') { |q| q.echo = true }
|
84
|
+
print 'password : ' ; pass = STDIN.gets.chomp # ask('password: ') { |q| q.echo = '*' }
|
85
|
+
print 'milestone: ' ; milestone = STDIN.gets.chomp # ask('milestone: ', Integer) { |q| q.echo = true }
|
86
|
+
require 'uri'
|
87
|
+
require 'net/http'
|
88
|
+
require 'net/https'
|
89
|
+
require 'openssl'
|
90
|
+
require 'yaml'
|
91
|
+
uri = URI(%Q{https://api.github.com/repos/ruboto/ruboto/issues?milestone=#{milestone}&state=closed&per_page=1000})
|
92
|
+
https = Net::HTTP.new(uri.host, uri.port)
|
93
|
+
https.use_ssl = true
|
94
|
+
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
95
|
+
req = Net::HTTP::Get.new(uri.request_uri)
|
96
|
+
req.basic_auth(user, pass)
|
97
|
+
res = https.start { |http| http.request(req) }
|
98
|
+
issues = YAML.load(res.body).sort_by { |i| i['number'] }
|
99
|
+
milestone_name = issues[0] ? issues[0]['milestone']['title'] : "No issues for milestone #{milestone}"
|
100
|
+
categories = {'Features' => 'feature', 'Bugfixes' => 'bug', 'Internal' => 'internal', 'Support' => 'support', 'Documentation' => 'documentation', 'Other' => nil}
|
101
|
+
grouped_issues = issues.group_by do |i|
|
102
|
+
labels = i['labels'].map { |l| l['name']}
|
103
|
+
cat = nil
|
104
|
+
categories.each do |k,v|
|
105
|
+
if labels.include? v
|
106
|
+
cat = k
|
107
|
+
break
|
108
|
+
end
|
109
|
+
end
|
110
|
+
cat || 'Other'
|
111
|
+
end
|
112
|
+
puts "\nNew in version #{milestone_name}:\n\n"
|
113
|
+
(categories.keys & grouped_issues.keys).each do |cat|
|
114
|
+
puts "#{cat}:\n\n"
|
115
|
+
grouped_issues[cat].each { |i| puts %Q{* Issue ##{i['number']} #{i['title']}} }
|
116
|
+
puts
|
117
|
+
end
|
118
|
+
puts "You can find a complete list of issues here:\n\n"
|
119
|
+
puts "* https://github.com/ruboto/ruboto/issues?state=closed&milestone=#{milestone}\n\n"
|
120
|
+
end
|
121
|
+
|
60
122
|
desc "Push the gem to RubyGems"
|
61
123
|
task :release => [:clean, :gem] do
|
62
124
|
output = `git status --porcelain`
|
@@ -67,6 +129,7 @@ task :release => [:clean, :gem] do
|
|
67
129
|
|
68
130
|
Rake::Task[:example].invoke
|
69
131
|
sh "git add #{EXAMPLE_FILE}"
|
132
|
+
sh "git rm #{EXAMPLE_FILE.slice(/^\d+\.\d+\.\d+/)}.*"
|
70
133
|
sh "git commit -m '* Added example app for Ruboto #{Ruboto::VERSION} tools r#{Ruboto::SdkVersions::ANDROID_TOOLS_REVISION}' #{EXAMPLE_FILE}"
|
71
134
|
sh "git push"
|
72
135
|
end
|
@@ -74,7 +137,7 @@ end
|
|
74
137
|
desc "Run the tests"
|
75
138
|
task :test do
|
76
139
|
FileUtils.rm_rf Dir['tmp/RubotoTestApp_template*']
|
77
|
-
Dir['test/*_test.rb'].each do |f|
|
140
|
+
Dir['./test/*_test.rb'].each do |f|
|
78
141
|
require f.chomp('.rb')
|
79
142
|
end
|
80
143
|
end
|
data/assets/rakelib/ruboto.rake
CHANGED
@@ -207,7 +207,12 @@ file BUNDLE_JAR => [GEM_FILE, GEM_LOCK_FILE] do
|
|
207
207
|
|
208
208
|
FileUtils.mkdir_p BUNDLE_PATH
|
209
209
|
sh "bundle install --gemfile #{GEM_FILE} --path=#{BUNDLE_PATH}"
|
210
|
-
|
210
|
+
|
211
|
+
gem_paths = Dir["#{BUNDLE_PATH}/{{,j}ruby,rbx}/{1.8,1.9{,.1},shared}/gems"]
|
212
|
+
raise "Gem path not found" if gem_paths.empty?
|
213
|
+
raise "Found multiple gem paths: #{gem_paths}" if gem_paths.size > 1
|
214
|
+
gem_path = gem_paths[0]
|
215
|
+
puts "Found gems in #{gem_path}"
|
211
216
|
|
212
217
|
if package != 'org.ruboto.core' && JRUBY_JARS.none? { |f| File.exists? f }
|
213
218
|
Dir.chdir gem_path do
|
@@ -350,6 +355,17 @@ def package_installed? test = false
|
|
350
355
|
return false
|
351
356
|
end
|
352
357
|
end
|
358
|
+
|
359
|
+
sdcard_path = "/mnt/asec/#{package_name}#{i}/pkg.apk"
|
360
|
+
o = `adb shell ls -l #{sdcard_path}`.chomp
|
361
|
+
if o =~ /^-r-xr-xr-x system\s+root\s+(\d+) \d{4}-\d{2}-\d{2} \d{2}:\d{2} #{File.basename(sdcard_path)}$/
|
362
|
+
apk_file = test ? TEST_APK_FILE : APK_FILE
|
363
|
+
if !File.exists?(apk_file) || $1.to_i == File.size(apk_file)
|
364
|
+
return true
|
365
|
+
else
|
366
|
+
return false
|
367
|
+
end
|
368
|
+
end
|
353
369
|
end
|
354
370
|
return nil
|
355
371
|
end
|
@@ -397,7 +413,10 @@ def install_apk
|
|
397
413
|
when false
|
398
414
|
puts "Package #{package} already installed, but of different size. Replacing package."
|
399
415
|
output = `adb install -r #{APK_FILE} 2>&1`
|
400
|
-
|
416
|
+
if $? == 0 && output !~ failure_pattern && output =~ success_pattern
|
417
|
+
clear_update
|
418
|
+
return
|
419
|
+
end
|
401
420
|
case $1
|
402
421
|
when 'INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES'
|
403
422
|
puts "Found package signed with different certificate. Uninstalling it and retrying install."
|
@@ -407,7 +426,9 @@ def install_apk
|
|
407
426
|
end
|
408
427
|
uninstall_apk
|
409
428
|
end
|
429
|
+
puts "Installing package #{package}"
|
410
430
|
output = `adb install #{APK_FILE} 2>&1`
|
431
|
+
puts output
|
411
432
|
raise "Install failed (#{$?}) #{$1 ? "[#$1}]" : output}" if $? != 0 || output =~ failure_pattern || output !~ success_pattern
|
412
433
|
clear_update
|
413
434
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'ruboto/activity'
|
2
1
|
require 'ruboto/widget'
|
3
2
|
require 'ruboto/util/toast'
|
4
3
|
|
@@ -7,16 +6,14 @@ ruboto_import_widgets :Button, :LinearLayout, :TextView
|
|
7
6
|
# http://xkcd.com/378/
|
8
7
|
|
9
8
|
class SampleActivity
|
10
|
-
include Ruboto::Activity
|
11
|
-
|
12
9
|
def on_create(bundle)
|
13
10
|
set_title 'Domo arigato, Mr Ruboto!'
|
14
11
|
|
15
12
|
self.content_view =
|
16
13
|
linear_layout :orientation => :vertical do
|
17
|
-
@text_view = text_view :text
|
18
|
-
:gravity =>
|
19
|
-
button :text => 'M-x butterfly', :width => :
|
14
|
+
@text_view = text_view :text => 'What hath Matz wrought?', :id => 42, :width => :match_parent,
|
15
|
+
:gravity => :center, :text_size => 48.0
|
16
|
+
button :text => 'M-x butterfly', :width => :match_parent, :id => 43, :on_click_listener => proc { butterfly }
|
20
17
|
end
|
21
18
|
rescue
|
22
19
|
puts "Exception creating activity: #{$!}"
|
@@ -1,15 +1,19 @@
|
|
1
|
-
require 'ruboto/broadcast_receiver'
|
2
|
-
|
3
1
|
import android.util.Log
|
4
2
|
|
5
3
|
class SampleBroadcastReceiver
|
6
|
-
include Ruboto::BroadcastReceiver
|
7
|
-
|
8
4
|
# will get called whenever the BroadcastReceiver receives an intent (whenever onReceive is called)
|
9
5
|
def on_receive(context, intent)
|
10
6
|
Log.v "SampleBroadcastReceiver", 'Broadcast received!'
|
11
7
|
Log.v "SampleBroadcastReceiver", intent.getExtras.to_s
|
12
|
-
context.run_on_ui_thread
|
8
|
+
context.run_on_ui_thread do
|
9
|
+
begin
|
10
|
+
$activity.title = 'Broadcast received!'
|
11
|
+
rescue Exception
|
12
|
+
Log.e "Exception setting title: #{$!.message}\n#{$!.backtrace.join("\n")}"
|
13
|
+
end
|
14
|
+
end
|
13
15
|
Log.v "SampleBroadcastReceiver", 'Broadcast processed OK!'
|
16
|
+
rescue Exception
|
17
|
+
Log.e "Exception processing broadcast: #{$!.message}\n#{$!.backtrace.join("\n")}"
|
14
18
|
end
|
15
19
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'ruboto/service'
|
2
1
|
require 'ruboto/util/toast'
|
3
2
|
|
4
3
|
# Services are complicated and don't really make sense unless you
|
@@ -8,8 +7,6 @@ require 'ruboto/util/toast'
|
|
8
7
|
# online:
|
9
8
|
# http://developer.android.com/reference/android/app/Service.html
|
10
9
|
class SampleService
|
11
|
-
include Ruboto::Service
|
12
|
-
|
13
10
|
def on_start_command(intent, flags, startId)
|
14
11
|
toast "Hello from the service"
|
15
12
|
android.app.Service::START_NOT_STICKY
|
@@ -1,18 +1,24 @@
|
|
1
|
+
// Generated Ruboto subclass with method base "THE_METHOD_BASE"
|
2
|
+
|
1
3
|
package THE_PACKAGE;
|
2
4
|
|
3
5
|
import org.ruboto.JRubyAdapter;
|
6
|
+
import org.ruboto.Log;
|
7
|
+
import org.ruboto.Script;
|
4
8
|
|
5
9
|
public class THE_RUBOTO_CLASS THE_ACTION THE_ANDROID_CLASS {
|
6
|
-
|
7
10
|
THE_CONSTANTS
|
8
11
|
|
12
|
+
private String rubyClassName = "THE_RUBOTO_CLASS";
|
13
|
+
private String scriptName = "THE_RUBOTO_CLASS";
|
14
|
+
private Object rubyInstance = this;
|
9
15
|
private Object[] callbackProcs = new Object[CONSTANTS_COUNT];
|
10
16
|
|
11
17
|
THE_CONSTRUCTORS
|
12
18
|
|
13
|
-
|
14
|
-
|
15
|
-
|
19
|
+
public void setCallbackProc(int id, Object obj) {
|
20
|
+
callbackProcs[id] = obj;
|
21
|
+
}
|
16
22
|
|
17
23
|
THE_METHODS
|
18
24
|
|
@@ -8,15 +8,15 @@ import android.app.ProgressDialog;
|
|
8
8
|
import android.os.Bundle;
|
9
9
|
|
10
10
|
public class THE_RUBOTO_CLASS THE_ACTION THE_ANDROID_CLASS {
|
11
|
+
THE_CONSTANTS
|
12
|
+
|
13
|
+
private String rubyClassName;
|
11
14
|
private String scriptName;
|
15
|
+
private Object rubyInstance;
|
16
|
+
private Object[] callbackProcs = new Object[CONSTANTS_COUNT];
|
12
17
|
private String remoteVariable = null;
|
13
18
|
private Object[] args;
|
14
19
|
private Bundle configBundle = null;
|
15
|
-
private Object rubyInstance;
|
16
|
-
|
17
|
-
THE_CONSTANTS
|
18
|
-
|
19
|
-
private Object[] callbackProcs = new Object[CONSTANTS_COUNT];
|
20
20
|
|
21
21
|
public void setCallbackProc(int id, Object obj) {
|
22
22
|
callbackProcs[id] = obj;
|
@@ -31,6 +31,10 @@ THE_CONSTANTS
|
|
31
31
|
return (remoteVariable == null ? "" : (remoteVariable + ".")) + call;
|
32
32
|
}
|
33
33
|
|
34
|
+
public void setRubyClassName(String name) {
|
35
|
+
rubyClassName = name;
|
36
|
+
}
|
37
|
+
|
34
38
|
public void setScriptName(String name) {
|
35
39
|
scriptName = name;
|
36
40
|
}
|
@@ -42,6 +46,7 @@ THE_CONSTANTS
|
|
42
46
|
|
43
47
|
@Override
|
44
48
|
public void onCreate(Bundle bundle) {
|
49
|
+
System.out.println("RubotoActivity onCreate(): " + getClass().getName());
|
45
50
|
args = new Object[1];
|
46
51
|
args[0] = bundle;
|
47
52
|
|
@@ -51,6 +56,13 @@ THE_CONSTANTS
|
|
51
56
|
if (configBundle.containsKey("Theme")) {
|
52
57
|
setTheme(configBundle.getInt("Theme"));
|
53
58
|
}
|
59
|
+
if (configBundle.containsKey("ClassName")) {
|
60
|
+
if (this.getClass().getName() == RubotoActivity.class.getName()) {
|
61
|
+
setRubyClassName(configBundle.getString("ClassName"));
|
62
|
+
} else {
|
63
|
+
throw new IllegalArgumentException("Only local Intents may set class name.");
|
64
|
+
}
|
65
|
+
}
|
54
66
|
if (configBundle.containsKey("Script")) {
|
55
67
|
if (this.getClass().getName() == RubotoActivity.class.getName()) {
|
56
68
|
setScriptName(configBundle.getString("Script"));
|
@@ -60,8 +72,15 @@ THE_CONSTANTS
|
|
60
72
|
}
|
61
73
|
}
|
62
74
|
|
75
|
+
if (rubyClassName == null && scriptName != null) {
|
76
|
+
rubyClassName = Script.toCamelCase(scriptName);
|
77
|
+
}
|
78
|
+
if (scriptName == null && rubyClassName != null) {
|
79
|
+
setScriptName(Script.toSnakeCase(rubyClassName) + ".rb");
|
80
|
+
}
|
81
|
+
|
63
82
|
super.onCreate(bundle);
|
64
|
-
|
83
|
+
|
65
84
|
if (JRubyAdapter.isInitialized()) {
|
66
85
|
prepareJRuby();
|
67
86
|
loadScript();
|
@@ -81,26 +100,77 @@ THE_CONSTANTS
|
|
81
100
|
protected void loadScript() {
|
82
101
|
try {
|
83
102
|
if (scriptName != null) {
|
84
|
-
String rubyClassName = Script.toCamelCase(scriptName);
|
85
103
|
System.out.println("Looking for Ruby class: " + rubyClassName);
|
86
104
|
Object rubyClass = JRubyAdapter.get(rubyClassName);
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
105
|
+
Script rubyScript = new Script(scriptName);
|
106
|
+
if (rubyScript.exists()) {
|
107
|
+
String script = rubyScript.getContents();
|
108
|
+
if (script.matches("(?s).*class " + rubyClassName + ".*")) {
|
109
|
+
if (!rubyClassName.equals(getClass().getSimpleName())) {
|
110
|
+
System.out.println("Script defines methods on meta class");
|
111
|
+
// FIXME(uwe): Simplify when we stop support for RubotoCore 0.4.7
|
112
|
+
if (JRubyAdapter.isJRubyPreOneSeven() || JRubyAdapter.isRubyOneEight()) {
|
113
|
+
JRubyAdapter.put("$java_instance", this);
|
114
|
+
JRubyAdapter.put(rubyClassName, JRubyAdapter.runScriptlet("class << $java_instance; self; end"));
|
115
|
+
} else if (JRubyAdapter.isJRubyOneSeven() && JRubyAdapter.isRubyOneNine()) {
|
116
|
+
JRubyAdapter.runScriptlet("Java::" + getClass().getName() + ".__persistent__ = true");
|
117
|
+
JRubyAdapter.put(rubyClassName, JRubyAdapter.runRubyMethod(this, "singleton_class"));
|
118
|
+
} else {
|
119
|
+
throw new RuntimeException("Unknown JRuby/Ruby version: " + JRubyAdapter.get("JRUBY_VERSION") + "/" + JRubyAdapter.get("RUBY_VERSION"));
|
120
|
+
}
|
121
|
+
}
|
122
|
+
}
|
123
|
+
if (rubyClass == null) {
|
124
|
+
System.out.println("Loading script: " + scriptName);
|
125
|
+
if (script.matches("(?s).*class " + rubyClassName + ".*")) {
|
126
|
+
System.out.println("Script contains class definition");
|
127
|
+
if (rubyClassName.equals(getClass().getSimpleName())) {
|
128
|
+
System.out.println("Script has separate Java class");
|
129
|
+
// FIXME(uwe): Simplify when we stop support for JRuby < 1.7.0
|
130
|
+
if (!JRubyAdapter.isJRubyPreOneSeven()) {
|
131
|
+
JRubyAdapter.runScriptlet("Java::" + getClass().getName() + ".__persistent__ = true");
|
132
|
+
}
|
133
|
+
JRubyAdapter.put(rubyClassName, JRubyAdapter.runScriptlet("Java::" + getClass().getName()));
|
134
|
+
}
|
135
|
+
System.out.println("Set class: " + JRubyAdapter.get(rubyClassName));
|
136
|
+
}
|
137
|
+
JRubyAdapter.setScriptFilename(scriptName);
|
138
|
+
JRubyAdapter.runScriptlet(script);
|
139
|
+
rubyClass = JRubyAdapter.get(rubyClassName);
|
140
|
+
}
|
141
|
+
rubyInstance = this;
|
142
|
+
} else if (rubyClass != null) {
|
143
|
+
// We have a predefined Ruby class without corresponding Ruby source file.
|
144
|
+
System.out.println("Create separate Ruby instance for class: " + rubyClass);
|
145
|
+
rubyInstance = JRubyAdapter.runRubyMethod(rubyClass, "new");
|
146
|
+
JRubyAdapter.runRubyMethod(rubyInstance, "instance_variable_set", "@ruboto_java_instance", this);
|
147
|
+
} else {
|
148
|
+
// Neither script file nor predefined class
|
149
|
+
throw new RuntimeException("Either script or predefined class must be present.");
|
91
150
|
}
|
92
151
|
if (rubyClass != null) {
|
93
|
-
System.out.println("
|
94
|
-
|
95
|
-
JRubyAdapter.
|
152
|
+
System.out.println("Call on_create on: " + rubyInstance + ", " + JRubyAdapter.get("JRUBY_VERSION"));
|
153
|
+
// FIXME(uwe): Simplify when we stop support for RubotoCore 0.4.7
|
154
|
+
if (JRubyAdapter.isJRubyPreOneSeven()) {
|
155
|
+
JRubyAdapter.put("$ruby_instance", rubyInstance);
|
156
|
+
JRubyAdapter.runScriptlet("$ruby_instance.on_create($bundle)");
|
157
|
+
} else if (JRubyAdapter.isJRubyOneSeven()) {
|
158
|
+
JRubyAdapter.runRubyMethod(rubyInstance, "on_create", args[0]);
|
159
|
+
} else {
|
160
|
+
throw new RuntimeException("Unknown JRuby version: " + JRubyAdapter.get("JRUBY_VERSION"));
|
161
|
+
}
|
96
162
|
}
|
97
163
|
} else if (configBundle != null) {
|
98
|
-
//
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
164
|
+
// FIXME(uwe): Simplify when we stop support for RubotoCore 0.4.7
|
165
|
+
if (JRubyAdapter.isJRubyPreOneSeven()) {
|
166
|
+
JRubyAdapter.runScriptlet("$activity.initialize_ruboto");
|
167
|
+
JRubyAdapter.runScriptlet("$activity.on_create($bundle)");
|
168
|
+
} else if (JRubyAdapter.isJRubyOneSeven()) {
|
169
|
+
JRubyAdapter.runRubyMethod(this, "initialize_ruboto");
|
170
|
+
JRubyAdapter.runRubyMethod(this, "on_create", args[0]);
|
171
|
+
} else {
|
172
|
+
throw new RuntimeException("Unknown JRuby version: " + JRubyAdapter.get("JRUBY_VERSION"));
|
173
|
+
}
|
104
174
|
}
|
105
175
|
} catch(IOException e){
|
106
176
|
e.printStackTrace();
|