ruboto 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -4
- data/RELEASE_CANDICATE_DOC.md +4 -17
- data/RELEASE_DOC.md +42 -43
- data/Rakefile +33 -11
- data/assets/rakelib/ruboto.rake +4 -2
- data/assets/samples/sample_broadcast_receiver.rb +1 -1
- data/assets/src/InheritingBroadcastReceiver.java +0 -3
- data/assets/src/InheritingClass.java +4 -9
- data/assets/src/InheritingService.java +0 -5
- data/assets/src/RubotoActivity.java +12 -52
- data/assets/src/RubotoBroadcastReceiver.java +3 -10
- data/assets/src/RubotoService.java +5 -102
- data/assets/src/org/ruboto/JRubyAdapter.java +7 -6
- data/assets/src/org/ruboto/ScriptLoader.java +2 -29
- data/lib/ruboto/util/build.rb +26 -14
- data/lib/ruboto/util/emulator.rb +27 -11
- data/lib/ruboto/util/update.rb +15 -10
- data/lib/ruboto/util/verify.rb +1 -2
- data/lib/ruboto/util/xml_element.rb +53 -23
- data/lib/ruboto/version.rb +1 -1
- data/test/activity/stack_activity_test.rb +3 -2
- data/test/activity/subclass_activity.rb +0 -1
- data/test/arjdbc_test.rb +119 -0
- data/test/rake_test.rb +10 -0
- data/test/ruboto_gen_test.rb +4 -3
- data/test/sample_broadcast_receiver_test.rb +31 -0
- data/test/test_helper.rb +2 -2
- metadata +26 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 541c9b2e7673b6da8fc43a3534f5f2fcc2d8c718
|
4
|
+
data.tar.gz: 86da6d0da33706109710b734f42ed4da1abd019e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14ce1aac618874c8d9a99588065a767027419546a9a399b870ccfe8e80007aeff10b412c59e35950da1337d0abe83f78c4771115f948858b2c7ab1e79510d73d
|
7
|
+
data.tar.gz: cd2279a27b6cbf5206dafc6f3f0314e32917f79a236db532159cf1c54e73293e29456828660665124a75aefc772f7381f09758f76921454eb0a8bf6554a94b74
|
data/Gemfile.lock
CHANGED
data/RELEASE_CANDICATE_DOC.md
CHANGED
@@ -1,23 +1,10 @@
|
|
1
|
-
Subject: [ANN] Ruboto 1.0.
|
1
|
+
Subject: [ANN] Ruboto 1.0.1 release candidate
|
2
2
|
|
3
3
|
Hi all!
|
4
4
|
|
5
|
-
The Ruboto 1.0.
|
6
|
-
|
7
|
-
|
8
|
-
ready for general consumption!
|
9
|
-
|
10
|
-
* All important parts of the Android API are available.
|
11
|
-
* The API has stabilised.
|
12
|
-
* Performance is reasonable. (Best case startup 4 seconds or less).
|
13
|
-
* Home page/Wiki/Tutorials and other docs are of high enough quality that
|
14
|
-
new developers have a low threshold to get going, and more advanced
|
15
|
-
developers can find how to do more advanced apps.
|
16
|
-
|
17
|
-
Notable features this release is RubyGems support for the "dalvik"
|
18
|
-
platform and support for using Android utility projects. This means you
|
19
|
-
can release gems for dalvik only and consume in-house or third-party
|
20
|
-
utility projects.
|
5
|
+
The Ruboto 1.0.1 release candidate is now available.
|
6
|
+
|
7
|
+
This release focuses on bug fixes and documentation.
|
21
8
|
|
22
9
|
As always we need your help and feedback to ensure the quality of the release. Please install the release candidate using
|
23
10
|
|
data/RELEASE_DOC.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
Subject: [ANN] Ruboto 1.0.
|
1
|
+
Subject: [ANN] Ruboto 1.0.1 released!
|
2
2
|
|
3
|
-
The Ruboto team is pleased to announce the release of Ruboto 1.0.
|
3
|
+
The Ruboto team is pleased to announce the release of Ruboto 1.0.1.
|
4
4
|
|
5
5
|
Ruboto (JRuby on Android) is a platform for developing full stand-alone
|
6
6
|
apps for Android using the Ruby language and libraries. It includes
|
@@ -8,64 +8,63 @@ support libraries and generators for creating projects, classes, tests,
|
|
8
8
|
and more. The complete APIs of Android, Java, and Ruby are available to
|
9
9
|
you using the Ruby language.
|
10
10
|
|
11
|
-
New in version 1.0.
|
12
|
-
|
13
|
-
|
14
|
-
ready for general consumption!
|
15
|
-
|
16
|
-
* All important parts of the Android API are available.
|
17
|
-
* The API has stabilised.
|
18
|
-
* Performance is reasonable. (Best case startup 4 seconds or less).
|
19
|
-
* Home page/Wiki/Tutorials and other docs are of high enough quality that
|
20
|
-
new developers have a low threshold to get going, and more advanced
|
21
|
-
developers can find how to do more advanced apps.
|
22
|
-
|
23
|
-
Notable features this release is RubyGems support for the "dalvik"
|
24
|
-
platform and support for using Android utility projects. This means you
|
25
|
-
can release gems for dalvik only and consume in-house or third-party
|
26
|
-
utility projects.
|
11
|
+
New in version 1.0.1:
|
12
|
+
|
13
|
+
This release focuses on bug fixes and documentation.
|
27
14
|
|
28
15
|
Features:
|
29
16
|
|
30
|
-
* Issue #
|
31
|
-
* Issue #
|
32
|
-
Android
|
33
|
-
* Issue #524 Use "ruboto emulator" to setup HAXM
|
34
|
-
* Issue #530 Shift all layout parameters into :layout = {} and remove the
|
35
|
-
need for "=" in setting instance variables
|
36
|
-
* Issue #544 Add support for using utility projects
|
17
|
+
* Issue #546 Better stack traces using "jruby.rewrite.java.trace" = "true"
|
18
|
+
* Issue #548 Allow using snapshot versions of jruby-jars
|
37
19
|
|
38
20
|
Bugfixes:
|
39
21
|
|
40
|
-
* Issue #
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
22
|
+
* Issue #505 Trigger rebuild of the package if non-ruby source has changed
|
23
|
+
in the "src" directory
|
24
|
+
* Issue #507 Undefined method `__ruby_object' when implementing a Java
|
25
|
+
interface
|
26
|
+
* Issue #537 Generated BroadcastReceiver has incorrect number of argument
|
27
|
+
for Log.e
|
28
|
+
* Issue #541 Gem errors with activerecord-jdbc-sqlite3
|
29
|
+
* Issue #545 JRuby use of javax.annotation.processing breaks use of ARJDBC
|
30
|
+
* Issue #554 Better error message when trying to run an emulator for a
|
31
|
+
target that is not installed
|
32
|
+
* Issue #556 "ruboto emulator" ignores HAXM installation on Windows
|
33
|
+
|
34
|
+
Documentation:
|
35
|
+
|
36
|
+
* Issue #532 Environment setup for windows
|
37
|
+
* Issue #538 Complete the "What is Ruboto?" WIKI article
|
38
|
+
* Issue #553 The number of stars for the Ruboto project has disappeared
|
39
|
+
from the ruboto.org front page
|
40
|
+
* Issue #560 Add a tutorial for detecting incoming phone calls
|
46
41
|
|
47
42
|
Support:
|
48
43
|
|
49
|
-
* Issue #
|
50
|
-
* Issue #
|
51
|
-
|
44
|
+
* Issue #480 Could not locate Gemfile
|
45
|
+
* Issue #549 How can I view output?
|
46
|
+
* Issue #551 rake install start problem on windows
|
47
|
+
* Issue #552 Problem with rake install start on windows
|
48
|
+
* Issue #555 Ruboto command not found after installation
|
52
49
|
|
53
|
-
|
50
|
+
Community:
|
54
51
|
|
55
|
-
* Issue #
|
56
|
-
* Issue #528 Fix formatting errors in the RELEASE_DOC
|
57
|
-
* Issue #535 Mac kernel freezes when ruboto emulator start under MacOS
|
58
|
-
10.9 with Virtualbox 4.3.x installed.
|
52
|
+
* Issue #531 How can I help?
|
59
53
|
|
60
54
|
Pull requests:
|
61
55
|
|
62
|
-
* Issue #
|
63
|
-
|
64
|
-
|
56
|
+
* Issue #550 Fix Log import
|
57
|
+
|
58
|
+
Internal:
|
59
|
+
|
60
|
+
* Issue #513 Refactor to generate special
|
61
|
+
onCreate/onDestroy/onBind/onStartCommand instead of hard coding
|
62
|
+
* Issue #559 Remove redundant script file reference in
|
63
|
+
InheritingBroadcastReceiver
|
65
64
|
|
66
65
|
You can find a complete list of issues here:
|
67
66
|
|
68
|
-
* https://github.com/ruboto/ruboto/issues?state=closed&milestone=
|
67
|
+
* https://github.com/ruboto/ruboto/issues?state=closed&milestone=31
|
69
68
|
|
70
69
|
|
71
70
|
Installation:
|
data/Rakefile
CHANGED
@@ -137,8 +137,8 @@ def get_github_issues
|
|
137
137
|
req.basic_auth(user, pass)
|
138
138
|
res = https.start { |http| http.request(req) }
|
139
139
|
milestones = YAML.load(res.body).sort_by { |i| Date.parse(i['due_on']) }
|
140
|
-
milestone_entry = milestones.find { |m| m['title'] == Ruboto::VERSION }
|
141
|
-
raise "Milestone for version #{} not found." unless milestone_entry
|
140
|
+
milestone_entry = milestones.find { |m| m['title'] == Ruboto::VERSION.chomp('.dev') }
|
141
|
+
raise "Milestone for version #{Ruboto::VERSION} not found." unless milestone_entry
|
142
142
|
milestone = milestone_entry['number']
|
143
143
|
|
144
144
|
uri = URI("#{base_uri}/issues?milestone=#{milestone}&state=closed&per_page=1000")
|
@@ -150,9 +150,11 @@ def get_github_issues
|
|
150
150
|
milestone_description = issues[0] ? issues[0]['milestone']['description'] : "No issues for milestone #{milestone}"
|
151
151
|
milestone_description = milestone_description.split("\r\n").map(&:wrap).join("\r\n")
|
152
152
|
categories = {
|
153
|
-
'Features' => 'feature', 'Bugfixes' => 'bug',
|
154
|
-
'Documentation' => 'documentation', '
|
155
|
-
'
|
153
|
+
'Features' => 'feature', 'Bugfixes' => 'bug',
|
154
|
+
'Documentation' => 'documentation', 'Support' => 'support',
|
155
|
+
'Community' => 'community',
|
156
|
+
'Pull requests' => nil, 'Internal' => 'internal',
|
157
|
+
'Rejected' => 'rejected', 'Other' => nil
|
156
158
|
}
|
157
159
|
grouped_issues = issues.group_by do |i|
|
158
160
|
labels = i['labels'].map { |l| l['name'] }
|
@@ -229,7 +231,7 @@ New in version #{milestone_name}:
|
|
229
231
|
#{milestone_description}
|
230
232
|
|
231
233
|
#{(categories.keys & grouped_issues.keys).map do |cat|
|
232
|
-
"#{cat}:\n
|
234
|
+
"#{cat}:\n
|
233
235
|
#{grouped_issues[cat].map { |i| %Q{* Issue ##{i['number']} #{i['title']}}.wrap(2) }.join("\n")}
|
234
236
|
"
|
235
237
|
end.join("\n")}
|
@@ -278,15 +280,16 @@ EOF
|
|
278
280
|
puts release_doc
|
279
281
|
puts
|
280
282
|
puts '=' * 80
|
283
|
+
File.write(RELEASE_DOC, release_doc)
|
281
284
|
|
282
285
|
unless Gem::Version.new(Ruboto::VERSION).prerelease?
|
283
286
|
header = <<EOF
|
284
287
|
---
|
285
288
|
title : Ruboto #{Ruboto::VERSION}
|
286
289
|
layout: post
|
290
|
+
category: news
|
287
291
|
---
|
288
292
|
EOF
|
289
|
-
File.write(RELEASE_DOC, release_doc)
|
290
293
|
Dir.chdir BLOG_DIR do
|
291
294
|
output = `git status --porcelain`
|
292
295
|
old_blog_posts = Dir[RELEASE_BLOG_GLOB] - [RELEASE_BLOG]
|
@@ -453,11 +456,30 @@ namespace :platform do
|
|
453
456
|
file PLATFORM_CURRENT_RELEASE_APK do
|
454
457
|
FileUtils.mkdir_p File.dirname(PLATFORM_CURRENT_RELEASE_APK)
|
455
458
|
puts 'Downloading the current RubotoCore platform release apk'
|
456
|
-
uri = URI('
|
459
|
+
uri = URI('https://raw.github.com/ruboto/ruboto.github.com/master/downloads/RubotoCore-release.apk')
|
457
460
|
begin
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
+
Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https',
|
462
|
+
:verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
|
463
|
+
headers = {'User-Agent' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; de-at) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'}
|
464
|
+
loop do
|
465
|
+
response = http.get(uri.request_uri, headers)
|
466
|
+
if response.code == '200'
|
467
|
+
File.open(PLATFORM_CURRENT_RELEASE_APK, 'wb') { |f| f << response.body }
|
468
|
+
break
|
469
|
+
elsif response.code == '302'
|
470
|
+
headers.update('Referer' => uri.to_s)
|
471
|
+
if (cookie = response.response['set-cookie'])
|
472
|
+
headers.update('Cookie' => cookie)
|
473
|
+
end
|
474
|
+
uri = URI(response['location'].gsub(/^\//, 'http://ruboto.org/'))
|
475
|
+
puts "Following redirect to #{uri}."
|
476
|
+
else
|
477
|
+
puts "Got an unexpected response (#{response.code}). Retrying download."
|
478
|
+
puts response.inspect
|
479
|
+
sleep 1
|
480
|
+
end
|
481
|
+
end
|
482
|
+
end
|
461
483
|
rescue Exception, SystemExit
|
462
484
|
puts "Download failed: #{$!}"
|
463
485
|
FileUtils.rm(PLATFORM_CURRENT_RELEASE_APK) if File.exists?(PLATFORM_CURRENT_RELEASE_APK)
|
data/assets/rakelib/ruboto.rake
CHANGED
@@ -91,8 +91,9 @@ JARS = Dir[File.expand_path 'libs/*.jar'] - JRUBY_JARS
|
|
91
91
|
RESOURCE_FILES = Dir[File.expand_path 'res/**/*']
|
92
92
|
JAVA_SOURCE_FILES = Dir[File.expand_path 'src/**/*.java']
|
93
93
|
RUBY_SOURCE_FILES = Dir[File.expand_path 'src/**/*.rb']
|
94
|
+
OTHER_SOURCE_FILES = Dir[File.expand_path 'src/**/*'] - JAVA_SOURCE_FILES - RUBY_SOURCE_FILES
|
94
95
|
CLASSES_CACHE = "#{PROJECT_DIR}/bin/#{build_project_name}-debug-unaligned.apk.d"
|
95
|
-
APK_DEPENDENCIES = [:patch_dex, MANIFEST_FILE, RUBOTO_CONFIG_FILE, BUNDLE_JAR, CLASSES_CACHE] + JRUBY_JARS + JARS + JAVA_SOURCE_FILES + RESOURCE_FILES + RUBY_SOURCE_FILES
|
96
|
+
APK_DEPENDENCIES = [:patch_dex, MANIFEST_FILE, RUBOTO_CONFIG_FILE, BUNDLE_JAR, CLASSES_CACHE] + JRUBY_JARS + JARS + JAVA_SOURCE_FILES + RESOURCE_FILES + RUBY_SOURCE_FILES + OTHER_SOURCE_FILES
|
96
97
|
KEYSTORE_FILE = (key_store = File.readlines('ant.properties').grep(/^key.store=/).first) ? File.expand_path(key_store.chomp.sub(/^key.store=/, '').sub('${user.home}', '~')) : "#{build_project_name}.keystore"
|
97
98
|
KEYSTORE_ALIAS = (key_alias = File.readlines('ant.properties').grep(/^key.alias=/).first) ? key_alias.chomp.sub(/^key.alias=/, '') : build_project_name
|
98
99
|
APK_FILE_REGEXP = /^-rw-r--r--\s+(?:system|\d+\s+\d+)\s+(?:system|\d+)\s+(\d+)\s+(\d{4}-\d{2}-\d{2} \d{2}:\d{2}|\w{3} \d{2}\s+(?:\d{4}|\d{2}:\d{2}))\s+(.*)$/
|
@@ -363,7 +364,8 @@ file BUNDLE_JAR => [GEM_FILE, GEM_LOCK_FILE] do
|
|
363
364
|
next unless File.exists? GEM_FILE
|
364
365
|
puts "Generating #{BUNDLE_JAR}"
|
365
366
|
require 'bundler'
|
366
|
-
|
367
|
+
# Issue #547 https://github.com/ruboto/ruboto/issues/547
|
368
|
+
if true || Gem::Version.new(Bundler::VERSION) <= Gem::Version.new('1.5.0')
|
367
369
|
require 'bundler/vendored_thor'
|
368
370
|
|
369
371
|
# Store original RubyGems/Bundler environment
|
@@ -6,6 +6,6 @@ class SampleBroadcastReceiver
|
|
6
6
|
Log.v 'SampleBroadcastReceiver', 'Broadcast received!'
|
7
7
|
Log.v 'SampleBroadcastReceiver', intent.getExtras.to_s
|
8
8
|
rescue Exception
|
9
|
-
Log.e "Exception processing broadcast: #{$!.message}\n#{$!.backtrace.join("\n")}"
|
9
|
+
Log.e 'SampleBroadcastReceiver', "Exception processing broadcast: #{$!.message}\n#{$!.backtrace.join("\n")}"
|
10
10
|
end
|
11
11
|
end
|
@@ -9,18 +9,13 @@ import org.ruboto.ScriptInfo;
|
|
9
9
|
import org.ruboto.ScriptLoader;
|
10
10
|
|
11
11
|
public class THE_RUBOTO_CLASS THE_ACTION THE_ANDROID_CLASS {
|
12
|
-
|
12
|
+
THE_CONSTRUCTORS
|
13
|
+
|
14
|
+
THE_METHODS
|
15
|
+
|
13
16
|
{
|
14
17
|
scriptInfo.setRubyClassName(getClass().getSimpleName());
|
15
18
|
ScriptLoader.loadScript(this);
|
16
19
|
}
|
17
20
|
|
18
|
-
THE_CONSTRUCTORS
|
19
|
-
|
20
|
-
public ScriptInfo getScriptInfo() {
|
21
|
-
return scriptInfo;
|
22
|
-
}
|
23
|
-
|
24
|
-
THE_METHODS
|
25
|
-
|
26
21
|
}
|
@@ -9,35 +9,24 @@ import android.os.Bundle;
|
|
9
9
|
|
10
10
|
public class THE_RUBOTO_CLASS THE_ACTION THE_ANDROID_CLASS {
|
11
11
|
public static final String THEME_KEY = "RUBOTO_THEME";
|
12
|
-
private final ScriptInfo scriptInfo = new ScriptInfo();
|
13
|
-
Bundle[] args;
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
/****************************************************************************************
|
20
|
-
*
|
21
|
-
* Activity Lifecycle: onCreate
|
13
|
+
/**
|
14
|
+
* Called at the start of onCreate() to prepare the Activity.
|
15
|
+
* @return true if onCreate() should just call super and terminate.
|
22
16
|
*/
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
private boolean preOnCreate(Bundle bundle) {
|
18
|
+
System.out.println("RubotoActivity onCreate(): " + getClass().getName() + ", finishing: " + isFinishing());
|
19
|
+
|
20
|
+
if (isFinishing()) return true;
|
26
21
|
|
27
22
|
// Shut this RubotoActivity down if it's not able to restart
|
28
|
-
if (this.getClass().getName().equals("org.ruboto.
|
23
|
+
if (this.getClass().getName().equals("org.ruboto.RubotoActivity") && !JRubyAdapter.isInitialized()) {
|
29
24
|
super.onCreate(bundle);
|
30
|
-
System.out.println("Shutting down stale
|
25
|
+
System.out.println("Shutting down stale RubotoActivity: " + getClass().getName());
|
31
26
|
finish();
|
32
|
-
return;
|
27
|
+
return true;
|
33
28
|
}
|
34
29
|
|
35
|
-
if (isFinishing() || ScriptLoader.isCalledFromJRuby()) {
|
36
|
-
super.onCreate(bundle);
|
37
|
-
return;
|
38
|
-
}
|
39
|
-
args = new Bundle[]{bundle};
|
40
|
-
|
41
30
|
// FIXME(uwe): Deprecated as of Ruboto 0.13.0. Remove in june 2014 (twelve months).
|
42
31
|
Bundle configBundle = getIntent().getBundleExtra("Ruboto Config");
|
43
32
|
if (configBundle != null) {
|
@@ -50,40 +39,11 @@ public class THE_RUBOTO_CLASS THE_ACTION THE_ANDROID_CLASS {
|
|
50
39
|
if (getIntent().hasExtra(THEME_KEY)) {
|
51
40
|
setTheme(getIntent().getIntExtra(THEME_KEY, 0));
|
52
41
|
}
|
53
|
-
scriptInfo.setFromIntent(getIntent());
|
54
42
|
|
55
|
-
|
56
|
-
|
57
|
-
ScriptLoader.callOnCreate(this, (Object[]) args);
|
58
|
-
} else {
|
59
|
-
super.onCreate(bundle);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
|
63
|
-
public void onDestroy() {
|
64
|
-
if (ScriptLoader.isCalledFromJRuby()) {
|
65
|
-
super.onDestroy();
|
66
|
-
return;
|
67
|
-
}
|
68
|
-
if (!JRubyAdapter.isInitialized()) {
|
69
|
-
Log.i("Method called before JRuby runtime was initialized: RubotoActivity#onDestroy");
|
70
|
-
super.onDestroy();
|
71
|
-
return;
|
72
|
-
}
|
73
|
-
String rubyClassName = scriptInfo.getRubyClassName();
|
74
|
-
if (rubyClassName == null) {
|
75
|
-
super.onDestroy();
|
76
|
-
return;
|
77
|
-
}
|
78
|
-
ScriptLoader.callOnDestroy(this);
|
43
|
+
scriptInfo.setFromIntent(getIntent());
|
44
|
+
return false;
|
79
45
|
}
|
80
46
|
|
81
|
-
|
82
|
-
/****************************************************************************************
|
83
|
-
*
|
84
|
-
* Generated Methods
|
85
|
-
*/
|
86
|
-
|
87
47
|
THE_METHODS
|
88
48
|
|
89
49
|
}
|
@@ -12,17 +12,10 @@ public class THE_RUBOTO_CLASS THE_ACTION THE_ANDROID_CLASS {
|
|
12
12
|
}
|
13
13
|
|
14
14
|
public THE_RUBOTO_CLASS() {
|
15
|
-
this(null);
|
16
|
-
}
|
17
|
-
|
18
|
-
public THE_RUBOTO_CLASS(String name) {
|
19
15
|
super();
|
20
|
-
|
21
|
-
if (
|
22
|
-
|
23
|
-
if (JRubyAdapter.isInitialized()) {
|
24
|
-
ScriptLoader.loadScript(this);
|
25
|
-
}
|
16
|
+
scriptInfo.setRubyClassName(getClass().getSimpleName());
|
17
|
+
if (JRubyAdapter.isInitialized()) {
|
18
|
+
ScriptLoader.loadScript(this);
|
26
19
|
}
|
27
20
|
}
|
28
21
|
|
@@ -5,110 +5,13 @@ import org.ruboto.ScriptLoader;
|
|
5
5
|
import java.io.IOException;
|
6
6
|
|
7
7
|
public class THE_RUBOTO_CLASS THE_ACTION THE_ANDROID_CLASS {
|
8
|
-
|
9
|
-
|
10
|
-
public ScriptInfo getScriptInfo() {
|
11
|
-
return scriptInfo;
|
12
|
-
}
|
13
|
-
|
14
|
-
/****************************************************************************************
|
15
|
-
*
|
16
|
-
* Service Lifecycle: onCreate
|
8
|
+
/**
|
9
|
+
* Called at the start of onCreate() to prepare the Activity.
|
17
10
|
*/
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
if (ScriptLoader.isCalledFromJRuby()) {
|
23
|
-
super.onCreate();
|
24
|
-
return;
|
25
|
-
}
|
26
|
-
|
27
|
-
if (JRubyAdapter.isInitialized() && scriptInfo.isReadyToLoad()) {
|
28
|
-
ScriptLoader.loadScript(this);
|
29
|
-
} else {
|
30
|
-
super.onCreate();
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
// FIXME(uwe): Revert to generate these methods.
|
35
|
-
@Override
|
36
|
-
public int onStartCommand(android.content.Intent intent, int flags, int startId) {
|
37
|
-
if (ScriptLoader.isCalledFromJRuby()) return super.onStartCommand(intent, flags, startId);
|
38
|
-
|
39
|
-
if (!JRubyAdapter.isInitialized()) {
|
40
|
-
Log.i("Method called before JRuby runtime was initialized: RubotoService#onStartCommand");
|
41
|
-
return super.onStartCommand(intent, flags, startId);
|
42
|
-
}
|
43
|
-
|
44
|
-
if (JRubyAdapter.isInitialized() && !scriptInfo.isLoaded()) {
|
45
|
-
scriptInfo.setFromIntent(intent);
|
46
|
-
ScriptLoader.loadScript(this);
|
47
|
-
}
|
48
|
-
|
49
|
-
String rubyClassName = scriptInfo.getRubyClassName();
|
50
|
-
if (rubyClassName == null) return super.onStartCommand(intent, flags, startId);
|
51
|
-
if ((Boolean)JRubyAdapter.runScriptlet(rubyClassName + ".instance_methods(false).any?{|m| m.to_sym == :on_start_command}")) {
|
52
|
-
return (Integer) JRubyAdapter.runRubyMethod(Integer.class, scriptInfo.getRubyInstance(), "on_start_command", new Object[]{intent, flags, startId});
|
53
|
-
} else {
|
54
|
-
if ((Boolean)JRubyAdapter.runScriptlet(rubyClassName + ".instance_methods(false).any?{|m| m.to_sym == :onStartCommand}")) {
|
55
|
-
return (Integer) JRubyAdapter.runRubyMethod(Integer.class, scriptInfo.getRubyInstance(), "onStartCommand", new Object[]{intent, flags, startId});
|
56
|
-
} else {
|
57
|
-
return super.onStartCommand(intent, flags, startId);
|
58
|
-
}
|
11
|
+
private void preOnCreate() {
|
12
|
+
System.out.println("RubotoService onCreate(): " + getClass().getName());
|
13
|
+
getScriptInfo().setRubyClassName(getClass().getSimpleName());
|
59
14
|
}
|
60
|
-
}
|
61
|
-
|
62
|
-
// FIXME(uwe): Revert to generate these methods.
|
63
|
-
@Override
|
64
|
-
public android.os.IBinder onBind(android.content.Intent intent) {
|
65
|
-
if (ScriptLoader.isCalledFromJRuby()) return null;
|
66
|
-
if (!JRubyAdapter.isInitialized()) {
|
67
|
-
Log.i("Method called before JRuby runtime was initialized: RubotoService#onBind");
|
68
|
-
return null;
|
69
|
-
}
|
70
|
-
|
71
|
-
if (JRubyAdapter.isInitialized() && !scriptInfo.isLoaded()) {
|
72
|
-
scriptInfo.setFromIntent(intent);
|
73
|
-
ScriptLoader.loadScript(this);
|
74
|
-
}
|
75
|
-
|
76
|
-
String rubyClassName = scriptInfo.getRubyClassName();
|
77
|
-
if (rubyClassName == null) return null;
|
78
|
-
if ((Boolean)JRubyAdapter.runScriptlet(rubyClassName + ".instance_methods(false).any?{|m| m.to_sym == :on_bind}")) {
|
79
|
-
return (android.os.IBinder) JRubyAdapter.runRubyMethod(android.os.IBinder.class, scriptInfo.getRubyInstance(), "on_bind", intent);
|
80
|
-
} else {
|
81
|
-
if ((Boolean)JRubyAdapter.runScriptlet(rubyClassName + ".instance_methods(false).any?{|m| m.to_sym == :onBind}")) {
|
82
|
-
return (android.os.IBinder) JRubyAdapter.runRubyMethod(android.os.IBinder.class, scriptInfo.getRubyInstance(), "onBind", intent);
|
83
|
-
} else {
|
84
|
-
return null;
|
85
|
-
}
|
86
|
-
}
|
87
|
-
}
|
88
|
-
|
89
|
-
public void onDestroy() {
|
90
|
-
if (ScriptLoader.isCalledFromJRuby()) {
|
91
|
-
super.onDestroy();
|
92
|
-
return;
|
93
|
-
}
|
94
|
-
if (!JRubyAdapter.isInitialized()) {
|
95
|
-
Log.i("Method called before JRuby runtime was initialized: RubotoActivity#onDestroy");
|
96
|
-
super.onDestroy();
|
97
|
-
return;
|
98
|
-
}
|
99
|
-
String rubyClassName = scriptInfo.getRubyClassName();
|
100
|
-
if (rubyClassName == null) {
|
101
|
-
super.onDestroy();
|
102
|
-
return;
|
103
|
-
}
|
104
|
-
ScriptLoader.callOnDestroy(this);
|
105
|
-
}
|
106
|
-
|
107
|
-
|
108
|
-
/****************************************************************************************
|
109
|
-
*
|
110
|
-
* Generated Methods
|
111
|
-
*/
|
112
15
|
|
113
16
|
THE_METHODS
|
114
17
|
|