jnlp 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/License.txt +20 -0
- data/Manifest.txt +27 -0
- data/README.txt +48 -0
- data/Rakefile +4 -0
- data/config/hoe.rb +71 -0
- data/config/requirements.rb +15 -0
- data/lib/jnlp/jnlp.rb +1075 -0
- data/lib/jnlp/otrunk.rb +196 -0
- data/lib/jnlp/version.rb +9 -0
- data/lib/jnlp.rb +8 -0
- data/log/debug.log +0 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +74 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +17 -0
- data/test/test_helper.rb +2 -0
- data/test/test_jnlp.rb +11 -0
- data/website/index.html +11 -0
- data/website/index.txt +39 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +138 -0
- data/website/template.html.erb +48 -0
- metadata +95 -0
data/lib/jnlp/otrunk.rb
ADDED
@@ -0,0 +1,196 @@
|
|
1
|
+
# :main: Jnlp::Jnlp
|
2
|
+
# :title: Jnlp::Jnlp RDoc
|
3
|
+
#
|
4
|
+
# to regenerate and display this rdoc:
|
5
|
+
# rdoc -U -SN jnlp.rb otrunk.rb ; open doc/index.html
|
6
|
+
#
|
7
|
+
require 'open-uri'
|
8
|
+
require 'hpricot'
|
9
|
+
require 'fileutils'
|
10
|
+
require 'net/http'
|
11
|
+
require 'date'
|
12
|
+
|
13
|
+
if RUBY_PLATFORM =~ /java/
|
14
|
+
import java.util.jar.JarInputStream unless defined? JarInputStream
|
15
|
+
import java.io.FileInputStream unless defined? FileInputStream
|
16
|
+
import java.net.URL unless defined? URL
|
17
|
+
import java.util.Collection unless defined? Collection
|
18
|
+
import java.util.List unless defined? List
|
19
|
+
import java.util.ArrayList unless defined? ArrayList
|
20
|
+
#
|
21
|
+
# Used to refer to Java classes in the java.io package.
|
22
|
+
# Some of the class names in the java.io package have the
|
23
|
+
# same name as existing Ruby classes. This creates a namespace
|
24
|
+
# scope for referring to the Java classes.
|
25
|
+
#
|
26
|
+
# Example:
|
27
|
+
#
|
28
|
+
# JavaIO::File.new("dummy.txt")
|
29
|
+
#
|
30
|
+
module JavaIO
|
31
|
+
include_package "java.io"
|
32
|
+
end
|
33
|
+
#
|
34
|
+
# Used to refer to Java classes in the net.sf.sail.emf.launch package.
|
35
|
+
#
|
36
|
+
# Example:
|
37
|
+
#
|
38
|
+
#
|
39
|
+
#
|
40
|
+
module SailEmfLaunch
|
41
|
+
include_package "net.sf.sail.emf.launch"
|
42
|
+
end
|
43
|
+
#
|
44
|
+
# Used to refer to Java classes in the net.sf.sail.core.bundle package.
|
45
|
+
#
|
46
|
+
# Example:
|
47
|
+
#
|
48
|
+
# bundleManager = SailCoreBundle::BundleManager.new
|
49
|
+
#
|
50
|
+
module SailCoreBundle
|
51
|
+
include_package "net.sf.sail.core.bundle"
|
52
|
+
end
|
53
|
+
#
|
54
|
+
# Used to refer to Java classes in the net.sf.sail.core.util.
|
55
|
+
#
|
56
|
+
# Example:
|
57
|
+
#
|
58
|
+
# manager = serviceContext.getService(SailCoreService::SessionManager.class)
|
59
|
+
#
|
60
|
+
module SailCoreService
|
61
|
+
include_package "net.sf.sail.core.service"
|
62
|
+
end
|
63
|
+
#
|
64
|
+
# Used to refer to Java classes in: net.sf.sail.core.util
|
65
|
+
#
|
66
|
+
# Example:
|
67
|
+
#
|
68
|
+
#
|
69
|
+
#
|
70
|
+
module SailCoreServiceImpl
|
71
|
+
include_package "net.sf.sail.core.service.impl"
|
72
|
+
end
|
73
|
+
#
|
74
|
+
# Used to refer to Java classes in: net.sf.sail.core.util
|
75
|
+
#
|
76
|
+
# Example:
|
77
|
+
#
|
78
|
+
#
|
79
|
+
#
|
80
|
+
module SailCoreUtil
|
81
|
+
include_package "net.sf.sail.core.util"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
module Jnlp #:nodoc:
|
86
|
+
#
|
87
|
+
#
|
88
|
+
require "#{File.expand_path(File.dirname(__FILE__))}/jnlp.rb"
|
89
|
+
#
|
90
|
+
# Jnlp::Otrunk is a subclass of Jnlp::Jnlp that adds SAIL
|
91
|
+
# SAIL-Otrunk specific methods for execution.of the jnlp
|
92
|
+
# locally without using Java Web Start.
|
93
|
+
#
|
94
|
+
# It assumes a default main-class of:
|
95
|
+
#
|
96
|
+
# net.sf.sail.emf.launch.EMFLauncher2
|
97
|
+
#
|
98
|
+
# and by default uses the argument in the original jnlp.
|
99
|
+
# Both of these values can be overridden.
|
100
|
+
#
|
101
|
+
# Example:
|
102
|
+
#
|
103
|
+
# j = Jnlp::Otrunk.new('http://rails.dev.concord.org/sds/2/offering/144/jnlp/540/view?sailotrunk.otmlurl=http://continuum.concord.org/otrunk/examples/BasicExamples/document-edit.otml&sailotrunk.hidetree=false', 'cache'); nil
|
104
|
+
#
|
105
|
+
#
|
106
|
+
class Otrunk < Jnlp
|
107
|
+
#
|
108
|
+
# This will start the jnlp locally in Java without
|
109
|
+
# using Java Web Start
|
110
|
+
#
|
111
|
+
# This method works in MRI by forking and using exec
|
112
|
+
# to start a separate javavm process.
|
113
|
+
#
|
114
|
+
#
|
115
|
+
# JRuby Note:
|
116
|
+
#
|
117
|
+
# In JRuby the jars are required which makes them available
|
118
|
+
# to JRuby -- but to make this work you will need to also
|
119
|
+
# included them on the CLASSPATH.
|
120
|
+
#
|
121
|
+
# The convienence method Jnlp#write_local_classpath_shell_script
|
122
|
+
# can be used to create a shell script to set the classpath.
|
123
|
+
#
|
124
|
+
# If you are using the JRuby interactive console you will need to
|
125
|
+
# exclude any reference to a separate jruby included in the jnlp.
|
126
|
+
#
|
127
|
+
# Example in JRuby jirb:
|
128
|
+
#
|
129
|
+
# j = Jnlp::Otrunk.new('http://rails.dev.concord.org/sds/2/offering/144/jnlp/540/view?sailotrunk.otmlurl=http://continuum.concord.org/otrunk/examples/BasicExamples/document-edit.otml&sailotrunk.hidetree=false', 'cache'); nil
|
130
|
+
# j.write_local_classpath_shell_script('document-edit_classpath.sh', :remove_jruby => true)
|
131
|
+
#
|
132
|
+
# Now exit jirb and execute this in the shell:
|
133
|
+
#
|
134
|
+
# source document-edit_classpath.sh
|
135
|
+
#
|
136
|
+
# Now restart jirb:
|
137
|
+
#
|
138
|
+
# j = Jnlp::Otrunk.new('http://rails.dev.concord.org/sds/2/offering/144/jnlp/540/view?sailotrunk.otmlurl=http://continuum.concord.org/otrunk/examples/BasicExamples/document-edit.otml&sailotrunk.hidetree=false', 'cache'); nil
|
139
|
+
# j.run_local
|
140
|
+
#
|
141
|
+
# You can optionally pass in jnlp and main-class arguments
|
142
|
+
# If these paramaters are not present Otrunk#run_local will
|
143
|
+
# use:
|
144
|
+
#
|
145
|
+
# net.sf.sail.emf.launch.EMFLauncher2
|
146
|
+
#
|
147
|
+
# as the default main class and the default argument in
|
148
|
+
# the original jnlp.
|
149
|
+
#
|
150
|
+
def run_local(argument=@argument, main_class='net.sf.sail.emf.launch.EMFLauncher2')
|
151
|
+
if RUBY_PLATFORM =~ /java/
|
152
|
+
|
153
|
+
java.lang.Thread.currentThread.setContextClassLoader(JRuby.runtime.jruby_class_loader)
|
154
|
+
|
155
|
+
require_resources
|
156
|
+
configUrl = URL.new(JavaIO::File.new("dummy.txt").toURL, argument)
|
157
|
+
# configUrl = URL.new("document-edit.config")
|
158
|
+
unless @bundleManager
|
159
|
+
@bundleManager = SailCoreBundle::BundleManager.new
|
160
|
+
@serviceContext = @bundleManager.getServiceContext
|
161
|
+
@bundleManager.setContextURL(configUrl)
|
162
|
+
#
|
163
|
+
# Add the <code>bundles</code> configured in this bundles xml file. The format of the file
|
164
|
+
# is XMLEncoder
|
165
|
+
#
|
166
|
+
@bundleManager.addBundles(configUrl.openStream)
|
167
|
+
#
|
168
|
+
# Have all the bundles register their services, and then do any linking
|
169
|
+
# to other registered services
|
170
|
+
#
|
171
|
+
@bundleManager.initializeBundles
|
172
|
+
#
|
173
|
+
# Start the session manager
|
174
|
+
#
|
175
|
+
@manager = @serviceContext.getService(SailCoreService::SessionManager.java_class)
|
176
|
+
end
|
177
|
+
@manager.start(@serviceContext)
|
178
|
+
else
|
179
|
+
command = "java -classpath #{local_classpath} #{main_class} '#{argument}'"
|
180
|
+
$pid = fork { exec command }
|
181
|
+
end
|
182
|
+
end
|
183
|
+
#
|
184
|
+
# This will stop the locally run OTrunk process.
|
185
|
+
# This only works in MRI at this point.
|
186
|
+
#
|
187
|
+
def stop_local
|
188
|
+
if RUBY_PLATFORM =~ /java/
|
189
|
+
@manager.stop(@serviceContext)
|
190
|
+
else
|
191
|
+
Process.kill 15, $pid
|
192
|
+
Process.wait($pid)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
data/lib/jnlp/version.rb
ADDED
data/lib/jnlp.rb
ADDED
data/log/debug.log
ADDED
File without changes
|
data/script/console
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# File: script/console
|
3
|
+
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
+
|
5
|
+
libs = " -r irb/completion"
|
6
|
+
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
+
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
+
libs << " -r #{File.dirname(__FILE__) + '/../lib/jnlp.rb'}"
|
9
|
+
puts "Loading jnlp gem"
|
10
|
+
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'rubigen'
|
6
|
+
rescue LoadError
|
7
|
+
require 'rubygems'
|
8
|
+
require 'rubigen'
|
9
|
+
end
|
10
|
+
require 'rubigen/scripts/destroy'
|
11
|
+
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
+
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'rubigen'
|
6
|
+
rescue LoadError
|
7
|
+
require 'rubygems'
|
8
|
+
require 'rubigen'
|
9
|
+
end
|
10
|
+
require 'rubigen/scripts/generate'
|
11
|
+
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
+
RubiGen::Scripts::Generate.new.run(ARGV)
|
data/script/txt2html
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
begin
|
5
|
+
require 'newgem'
|
6
|
+
rescue LoadError
|
7
|
+
puts "\n\nGenerating the website requires the newgem RubyGem"
|
8
|
+
puts "Install: gem install newgem\n\n"
|
9
|
+
exit(1)
|
10
|
+
end
|
11
|
+
require 'redcloth'
|
12
|
+
require 'syntax/convertors/html'
|
13
|
+
require 'erb'
|
14
|
+
require File.dirname(__FILE__) + '/../lib/jnlp/version.rb'
|
15
|
+
|
16
|
+
version = Jnlp::VERSION::STRING
|
17
|
+
download = 'http://rubyforge.org/projects/jnlp'
|
18
|
+
|
19
|
+
class Fixnum
|
20
|
+
def ordinal
|
21
|
+
# teens
|
22
|
+
return 'th' if (10..19).include?(self % 100)
|
23
|
+
# others
|
24
|
+
case self % 10
|
25
|
+
when 1: return 'st'
|
26
|
+
when 2: return 'nd'
|
27
|
+
when 3: return 'rd'
|
28
|
+
else return 'th'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class Time
|
34
|
+
def pretty
|
35
|
+
return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def convert_syntax(syntax, source)
|
40
|
+
return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
|
41
|
+
end
|
42
|
+
|
43
|
+
if ARGV.length >= 1
|
44
|
+
src, template = ARGV
|
45
|
+
template ||= File.join(File.dirname(__FILE__), '/../website/template.html.erb')
|
46
|
+
|
47
|
+
else
|
48
|
+
puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
|
49
|
+
exit!
|
50
|
+
end
|
51
|
+
|
52
|
+
template = ERB.new(File.open(template).read)
|
53
|
+
|
54
|
+
title = nil
|
55
|
+
body = nil
|
56
|
+
File.open(src) do |fsrc|
|
57
|
+
title_text = fsrc.readline
|
58
|
+
body_text = fsrc.read
|
59
|
+
syntax_items = []
|
60
|
+
body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
|
61
|
+
ident = syntax_items.length
|
62
|
+
element, syntax, source = $1, $2, $3
|
63
|
+
syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
|
64
|
+
"syntax-temp-#{ident}"
|
65
|
+
}
|
66
|
+
title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
|
67
|
+
body = RedCloth.new(body_text).to_html
|
68
|
+
body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
|
69
|
+
end
|
70
|
+
stat = File.stat(src)
|
71
|
+
created = stat.ctime
|
72
|
+
modified = stat.mtime
|
73
|
+
|
74
|
+
$stdout << template.result(binding)
|