redcar 0.9.2 → 0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. data/CHANGES +34 -4
  2. data/Rakefile +2 -1
  3. data/lib/redcar.rb +3 -3
  4. data/lib/redcar/installer.rb +2 -3
  5. data/plugins/application/features/step_definitions/dialog_steps.rb +7 -0
  6. data/plugins/application/features/step_definitions/key_steps.rb +18 -0
  7. data/plugins/application/features/step_definitions/menu_steps.rb +5 -6
  8. data/plugins/application/features/step_definitions/speedbar_steps.rb +29 -9
  9. data/plugins/application/features/step_definitions/tree_steps.rb +13 -0
  10. data/plugins/application/features/support/env.rb +39 -5
  11. data/plugins/application/features/support/fake_event.rb +12 -0
  12. data/plugins/application/lib/application.rb +5 -6
  13. data/plugins/application/lib/application/dialog.rb +53 -10
  14. data/plugins/application/lib/application/dialogs/modeless_list_dialog.rb +85 -0
  15. data/plugins/application/lib/application/keymap.rb +10 -8
  16. data/plugins/application/lib/application/menu.rb +38 -16
  17. data/plugins/application/lib/application/treebook.rb +30 -0
  18. data/plugins/application/lib/application/window.rb +20 -2
  19. data/plugins/application/spec/application/command/executor_spec.rb +1 -0
  20. data/plugins/application/spec/application/menu_spec.rb +26 -26
  21. data/plugins/application/spec/application/treebook_spec.rb +6 -6
  22. data/plugins/application/spec/spec_helper.rb +10 -1
  23. data/plugins/application_swt/lib/application_swt.rb +25 -3
  24. data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +48 -27
  25. data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +22 -11
  26. data/plugins/application_swt/lib/application_swt/dialogs/modeless_dialog.rb +113 -0
  27. data/plugins/application_swt/lib/application_swt/dialogs/modeless_html_dialog.rb +85 -0
  28. data/plugins/application_swt/lib/application_swt/dialogs/modeless_list_dialog_controller.rb +143 -0
  29. data/plugins/application_swt/lib/application_swt/gradient.rb +61 -0
  30. data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +4 -4
  31. data/plugins/application_swt/lib/application_swt/notebook.rb +5 -8
  32. data/plugins/application_swt/lib/application_swt/speedbar.rb +1 -0
  33. data/plugins/application_swt/lib/application_swt/treebook.rb +6 -8
  34. data/plugins/application_swt/lib/application_swt/window.rb +85 -57
  35. data/plugins/application_swt/lib/swt/graphics_utils.rb +23 -0
  36. data/plugins/application_swt/lib/swt/vtab_folder.rb +7 -0
  37. data/plugins/application_swt/lib/swt/vtab_label.rb +1 -1
  38. data/plugins/application_swt/spec/application_swt/gradient_spec.rb +142 -0
  39. data/plugins/auto_completer/lib/auto_completer.rb +10 -42
  40. data/plugins/auto_completer/lib/auto_completer/list_dialog.rb +21 -0
  41. data/plugins/clojure/lib/clojure.rb +33 -0
  42. data/plugins/{repl/lib/repl/clojure_mirror.rb → clojure/lib/clojure/repl_mirror.rb} +16 -20
  43. data/plugins/clojure/plugin.rb +9 -0
  44. data/plugins/{repl/spec/repl/clojure_mirror_spec.rb → clojure/spec/clojure/repl_mirror_spec.rb} +12 -13
  45. data/plugins/clojure/spec/spec_helper.rb +5 -0
  46. data/plugins/{repl → clojure}/vendor/Wrapper.clj +0 -0
  47. data/plugins/{repl → clojure}/vendor/dummy +0 -0
  48. data/plugins/{repl → clojure}/vendor/enclojure-wrapper.jar +0 -0
  49. data/plugins/connection_manager/lib/connection_manager.rb +13 -13
  50. data/plugins/declarations/lib/declarations.rb +17 -6
  51. data/plugins/document_search/features/find.feature +389 -0
  52. data/plugins/document_search/features/find_and_replace.feature +723 -0
  53. data/plugins/document_search/features/replace.feature +69 -62
  54. data/plugins/document_search/lib/document_search.rb +81 -64
  55. data/plugins/document_search/lib/document_search/commands.rb +258 -0
  56. data/plugins/document_search/lib/document_search/find_and_replace_speedbar.rb +142 -0
  57. data/plugins/document_search/lib/document_search/find_speedbar.rb +102 -0
  58. data/plugins/document_search/lib/document_search/query_options.rb +45 -0
  59. data/plugins/edit_view/features/case_change.feature +9 -5
  60. data/plugins/edit_view/features/step_definitions/editing_steps.rb +19 -0
  61. data/plugins/edit_view/lib/edit_view.rb +15 -12
  62. data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +12 -2
  63. data/plugins/edit_view/lib/edit_view/commands/text_conversion_commands.rb +1 -1
  64. data/plugins/edit_view/lib/edit_view/document.rb +129 -99
  65. data/plugins/edit_view_swt/lib/edit_view_swt.rb +33 -15
  66. data/plugins/encryption/encryption.rb +2 -0
  67. data/plugins/find-in-project/lib/find_in_project.rb +3 -5
  68. data/plugins/find-in-project/lib/find_in_project/views/index.html.erb +2 -0
  69. data/plugins/groovy/features/step_definitions/groovy_steps.rb +2 -2
  70. data/plugins/groovy/features/syntax_check_groovy.feature +3 -3
  71. data/plugins/groovy/lib/groovy.rb +38 -0
  72. data/plugins/groovy/lib/groovy/commands.rb +10 -0
  73. data/plugins/{repl/lib/repl/groovy_mirror.rb → groovy/lib/groovy/repl_mirror.rb} +33 -13
  74. data/plugins/groovy/lib/{syntax_check/groovy.rb → groovy/syntax_checker.rb} +13 -8
  75. data/plugins/groovy/plugin.rb +5 -4
  76. data/plugins/{repl/spec/repl/groovy_mirror_spec.rb → groovy/spec/groovy/repl_mirror_spec.rb} +14 -13
  77. data/plugins/groovy/spec/spec_helper.rb +5 -0
  78. data/plugins/html_view/assets/json2.js +476 -0
  79. data/plugins/html_view/lib/html_view.rb +1 -0
  80. data/plugins/java/features/fixtures/test.java +0 -0
  81. data/plugins/java/features/support/env.rb +27 -0
  82. data/plugins/java/features/syntax_check_java.feature +86 -0
  83. data/plugins/java/lib/syntax_check/java.rb +86 -0
  84. data/plugins/java/plugin.rb +7 -0
  85. data/plugins/javascript/features/fixtures/test2.js +5 -0
  86. data/plugins/javascript/features/step_definitions/javascript_steps.rb +16 -0
  87. data/plugins/javascript/features/support/env.rb +14 -0
  88. data/plugins/javascript/features/syntax_check_javascript.feature +46 -3
  89. data/plugins/javascript/lib/syntax_check/javascript.rb +15 -9
  90. data/plugins/line_tools/features/trim_line.feature +49 -0
  91. data/plugins/line_tools/lib/line_tools.rb +5 -1
  92. data/plugins/mirah/README +7 -0
  93. data/plugins/mirah/features/fixtures/test.mirah +2 -0
  94. data/plugins/mirah/features/syntax_check_mirah.feature +46 -0
  95. data/plugins/mirah/lib/mirah.rb +43 -0
  96. data/plugins/mirah/lib/mirah/my_error_handler.rb +22 -0
  97. data/plugins/mirah/lib/mirah/repl_mirror.rb +50 -0
  98. data/plugins/mirah/lib/mirah/syntax_checker.rb +38 -0
  99. data/plugins/mirah/plugin.rb +8 -0
  100. data/plugins/mirah/spec/mirah/repl_mirror_spec.rb +188 -0
  101. data/plugins/mirah/spec/spec_helper.rb +5 -0
  102. data/plugins/mirah/vendor/mirah-parser.jar +0 -0
  103. data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +24 -23
  104. data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +10 -1
  105. data/plugins/plugin_manager_ui/views/index.html.erb +2 -0
  106. data/plugins/project/features/find_file.feature +40 -16
  107. data/plugins/project/features/highlight_focussed_tab.feature +16 -10
  108. data/plugins/project/features/step_definitions/find_file_steps.rb +11 -0
  109. data/plugins/project/features/step_definitions/project_tree_steps.rb +5 -1
  110. data/plugins/project/features/support/env.rb +5 -0
  111. data/plugins/project/lib/project/commands.rb +8 -1
  112. data/plugins/project/lib/project/dir_controller.rb +4 -1
  113. data/plugins/project/lib/project/find_file_dialog.rb +16 -12
  114. data/plugins/project/lib/project/manager.rb +30 -1
  115. data/plugins/project_search/vendor/lucene/CHANGELOG +147 -0
  116. data/plugins/project_search/vendor/lucene/CONTRIBUTORS +17 -0
  117. data/plugins/project_search/vendor/lucene/Gemfile +9 -0
  118. data/plugins/project_search/vendor/lucene/Gemfile.lock +33 -0
  119. data/plugins/project_search/vendor/lucene/LICENSE +19 -0
  120. data/plugins/project_search/vendor/lucene/README.rdoc +283 -0
  121. data/plugins/project_search/vendor/lucene/Rakefile +35 -0
  122. data/plugins/project_search/vendor/lucene/examples/active_model/serializers.rb +25 -0
  123. data/plugins/project_search/vendor/lucene/examples/active_model/validation.rb +26 -0
  124. data/plugins/project_search/vendor/lucene/examples/admin/Rakefile +4 -0
  125. data/plugins/project_search/vendor/lucene/examples/admin/admin.rb +29 -0
  126. data/plugins/project_search/vendor/lucene/examples/admin/public/jquery.js +4376 -0
  127. data/plugins/project_search/vendor/lucene/examples/admin/public/neo4j.css +153 -0
  128. data/plugins/project_search/vendor/lucene/examples/admin/public/neo_admin.js +18 -0
  129. data/plugins/project_search/vendor/lucene/examples/admin/spec/admin_spec.rb +26 -0
  130. data/plugins/project_search/vendor/lucene/examples/admin/views/index.erb +21 -0
  131. data/plugins/project_search/vendor/lucene/examples/filetree/README.rdoc +9 -0
  132. data/plugins/project_search/vendor/lucene/examples/filetree/app.rb +7 -0
  133. data/plugins/project_search/vendor/lucene/examples/filetree/batch.props +5 -0
  134. data/plugins/project_search/vendor/lucene/examples/filetree/features/step_definitions/add_steps.rb +121 -0
  135. data/plugins/project_search/vendor/lucene/examples/filetree/features/support/env.rb +30 -0
  136. data/plugins/project_search/vendor/lucene/examples/filetree/features/support/rspec_helper.rb +50 -0
  137. data/plugins/project_search/vendor/lucene/examples/filetree/features/treesizes.feature +19 -0
  138. data/plugins/project_search/vendor/lucene/examples/imdb/1_create_neo_db.rb +66 -0
  139. data/plugins/project_search/vendor/lucene/examples/imdb/2_index_db.rb +23 -0
  140. data/plugins/project_search/vendor/lucene/examples/imdb/README +12 -0
  141. data/plugins/project_search/vendor/lucene/examples/imdb/find_actors.rb +56 -0
  142. data/plugins/project_search/vendor/lucene/examples/imdb/install.sh +12 -0
  143. data/plugins/project_search/vendor/lucene/examples/imdb/model.rb +37 -0
  144. data/plugins/project_search/vendor/lucene/examples/railway/README +111 -0
  145. data/plugins/project_search/vendor/lucene/examples/railway/railnet-app.rb +31 -0
  146. data/plugins/project_search/vendor/lucene/examples/railway/railnet-data.rb +42 -0
  147. data/plugins/project_search/vendor/lucene/examples/rest/example.rb +41 -0
  148. data/plugins/project_search/vendor/lucene/examples/you_might_know/YouMightKnow.java +60 -0
  149. data/plugins/project_search/vendor/lucene/examples/you_might_know/all_simple_paths.rb +34 -0
  150. data/plugins/project_search/vendor/lucene/examples/you_might_know/nodes.rb +34 -0
  151. data/plugins/project_search/vendor/lucene/examples/you_might_know/you_might_know.rb +50 -0
  152. data/plugins/project_search/vendor/lucene/lib/lucene.rb +15 -0
  153. data/plugins/project_search/vendor/lucene/lib/lucene/config.rb +145 -0
  154. data/plugins/project_search/vendor/lucene/lib/lucene/document.rb +96 -0
  155. data/plugins/project_search/vendor/lucene/lib/lucene/field_info.rb +144 -0
  156. data/plugins/project_search/vendor/lucene/lib/lucene/hits.rb +54 -0
  157. data/plugins/project_search/vendor/lucene/lib/lucene/index.rb +267 -0
  158. data/plugins/project_search/vendor/lucene/lib/lucene/index_info.rb +146 -0
  159. data/plugins/project_search/vendor/lucene/lib/lucene/index_searcher.rb +157 -0
  160. data/plugins/project_search/vendor/lucene/lib/lucene/jars.rb +5 -0
  161. data/plugins/project_search/vendor/lucene/lib/lucene/query_dsl.rb +135 -0
  162. data/plugins/project_search/vendor/lucene/lib/lucene/transaction.rb +117 -0
  163. data/plugins/project_search/vendor/lucene/lib/lucene/version.rb +3 -0
  164. data/plugins/project_search/vendor/lucene/lucene.gemspec +23 -0
  165. data/plugins/project_search/vendor/lucene/spec/lucene/document_spec.rb +32 -0
  166. data/plugins/project_search/vendor/lucene/spec/lucene/field_info_spec.rb +70 -0
  167. data/plugins/project_search/vendor/lucene/spec/lucene/index_info_spec.rb +76 -0
  168. data/plugins/project_search/vendor/lucene/spec/lucene/index_spec.rb +643 -0
  169. data/plugins/project_search/vendor/lucene/spec/lucene/query_dsl_spec.rb +142 -0
  170. data/plugins/project_search/vendor/lucene/spec/lucene/sort_spec.rb +101 -0
  171. data/plugins/project_search/vendor/lucene/spec/lucene/spec_helper.rb +10 -0
  172. data/plugins/project_search/vendor/lucene/spec/lucene/transaction_spec.rb +118 -0
  173. data/plugins/redcar/features/alter_font_size.feature +25 -0
  174. data/plugins/redcar/features/step_definitions/font_steps.rb +34 -0
  175. data/plugins/redcar/redcar.rb +256 -43
  176. data/plugins/repl/features/command_editing.feature +55 -0
  177. data/plugins/repl/features/command_history.feature +75 -0
  178. data/plugins/repl/features/step_definitions/repl_steps.rb +17 -1
  179. data/plugins/repl/features/support/env.rb +24 -0
  180. data/plugins/repl/features/support/fake_repl.rb +16 -0
  181. data/plugins/repl/lib/repl.rb +17 -74
  182. data/plugins/repl/lib/repl/repl_command.rb +20 -0
  183. data/plugins/repl/lib/repl/repl_mirror.rb +168 -22
  184. data/plugins/repl/lib/repl/repl_tab.rb +131 -6
  185. data/plugins/repl/plugin.rb +1 -1
  186. data/plugins/repl/spec/repl/repl_mirror_spec.rb +72 -0
  187. data/plugins/repl/spec/spec_helper.rb +1 -1
  188. data/plugins/repl_swt/lib/repl_swt.rb +7 -0
  189. data/plugins/repl_swt/lib/repl_swt/key_listener.rb +43 -0
  190. data/plugins/repl_swt/plugin.rb +8 -0
  191. data/plugins/ruby/lib/ruby.rb +35 -0
  192. data/plugins/{repl/lib/repl/ruby_mirror.rb → ruby/lib/ruby/repl_mirror.rb} +12 -12
  193. data/plugins/ruby/lib/{syntax_check/ruby.rb → ruby/syntax_checker.rb} +3 -3
  194. data/plugins/ruby/plugin.rb +5 -4
  195. data/plugins/{repl/spec/repl/ruby_mirror_spec.rb → ruby/spec/ruby/repl_mirror_spec.rb} +38 -29
  196. data/plugins/ruby/spec/spec_helper.rb +5 -0
  197. data/plugins/runnables/lib/runnables.rb +2 -0
  198. data/plugins/runnables/lib/runnables/command_output_controller.rb +5 -0
  199. data/plugins/runnables/lib/runnables/output_processor.rb +14 -3
  200. data/plugins/runnables/views/command_output.html.erb +3 -2
  201. data/plugins/scm/lib/scm.rb +4 -2
  202. data/plugins/scm/lib/scm/diff_mirror.rb +6 -6
  203. data/plugins/scm_git/lib/scm_git.rb +136 -107
  204. data/plugins/scm_git/lib/scm_git/change.rb +28 -19
  205. data/plugins/snippets/lib/snippets/explorer.rb +2 -2
  206. data/plugins/swt/lib/swt/full_swt.rb +1 -0
  207. data/plugins/syntax_check/features/step_definitions/syntax_check_steps.rb +4 -0
  208. data/plugins/syntax_check/features/support/env.rb +3 -0
  209. data/plugins/syntax_check/lib/syntax_check.rb +71 -5
  210. data/plugins/syntax_check/lib/syntax_check/annotation.rb +61 -0
  211. data/plugins/test_runner/lib/test_runner.rb +39 -0
  212. data/plugins/test_runner/lib/test_runner/rspec_runner.rb +20 -0
  213. data/plugins/test_runner/lib/test_runner/run_test_command.rb +63 -0
  214. data/plugins/test_runner/lib/test_runner/runnable_test_runner.rb +26 -0
  215. data/plugins/test_runner/plugin.rb +8 -0
  216. data/plugins/test_runner/spec/run_test_command_spec.rb +51 -0
  217. data/plugins/test_runner/spec/spec_helper.rb +5 -0
  218. data/plugins/textmate/lib/textmate.rb +12 -2
  219. data/plugins/textmate/vendor/redcar-bundles/Bundles/HTML.tmbundle/Syntaxes/HTML.plist +0 -2
  220. data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/Syntaxes/Mirah.plist +22 -0
  221. data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/info.plist +12 -0
  222. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby.tmbundle/Syntaxes/Ruby.plist +2 -0
  223. data/plugins/todo_list/lib/todo_list.rb +7 -0
  224. data/plugins/todo_list/lib/todo_list/todo_controller.rb +3 -1
  225. data/plugins/tree/lib/tree.rb +4 -0
  226. data/plugins/tree_view_swt/lib/tree_view_swt.rb +5 -0
  227. data/plugins/web_bookmarks/lib/web_bookmarks.rb +10 -0
  228. metadata +137 -22
  229. data/plugins/document_search/features/search.feature +0 -163
  230. data/plugins/document_search/lib/document_search/replace_all_command.rb +0 -27
  231. data/plugins/document_search/lib/document_search/replace_command.rb +0 -38
  232. data/plugins/document_search/lib/document_search/replace_next_command.rb +0 -27
  233. data/plugins/document_search/lib/document_search/search_and_replace.rb +0 -81
  234. data/plugins/ruby/README +0 -6
@@ -0,0 +1,153 @@
1
+ body {
2
+ font-family: Verdana,Arial,Helvetica,sans-serif;
3
+ font-size: 90%;
4
+ margin: 0;
5
+ margin-left: 40px;
6
+ padding: 0;
7
+ background: white;
8
+ }
9
+
10
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
11
+ h1 { font-size: 150%; }
12
+ h2,h3,h4 { margin-top: 1em; }
13
+
14
+ a { background: #eef; color: #039; text-decoration: none; }
15
+ a:hover { background: #039; color: #eef; }
16
+
17
+ /* Override the base stylesheets Anchor inside a table cell */
18
+ td > a {
19
+ background: transparent;
20
+ color: #039;
21
+ text-decoration: none;
22
+ }
23
+
24
+ /* and inside a section title */
25
+ .section-title > a {
26
+ background: transparent;
27
+ color: #eee;
28
+ text-decoration: none;
29
+ }
30
+
31
+ /* === Structural elements =================================== */
32
+
33
+ div#index {
34
+ margin: 0;
35
+ margin-left: -40px;
36
+ padding: 0;
37
+ font-size: 90%;
38
+ }
39
+
40
+
41
+ div#index a {
42
+ margin-left: 0.7em;
43
+ }
44
+
45
+ div#index .section-bar {
46
+ margin-left: 0px;
47
+ padding-left: 0.7em;
48
+ background: #ccc;
49
+ font-size: small;
50
+ }
51
+
52
+
53
+ div#classHeader, div#fileHeader {
54
+ width: auto;
55
+ color: white;
56
+ padding: 0.5em 1.5em 0.5em 1.5em;
57
+ margin: 0;
58
+ margin-left: -40px;
59
+ border-bottom: 3px solid #006;
60
+ }
61
+
62
+ div#classHeader a, div#fileHeader a {
63
+ background: inherit;
64
+ color: white;
65
+ }
66
+
67
+ div#classHeader td, div#fileHeader td {
68
+ background: inherit;
69
+ color: white;
70
+ }
71
+
72
+
73
+ div#fileHeader {
74
+ background: #057;
75
+ }
76
+
77
+ div#classHeader {
78
+ background: #048;
79
+ }
80
+
81
+
82
+ .class-name-in-header {
83
+ font-size: 180%;
84
+ font-weight: bold;
85
+ }
86
+
87
+
88
+ div#bodyContent {
89
+ padding: 0 1.5em 0 1.5em;
90
+ }
91
+
92
+ div#description {
93
+ padding: 0.5em 1.5em;
94
+ background: #efefef;
95
+ border: 1px dotted #999;
96
+ }
97
+
98
+ div#description h1,h2,h3,h4,h5,h6 {
99
+ color: #125;;
100
+ background: transparent;
101
+ }
102
+
103
+ div#validator-badges {
104
+ text-align: center;
105
+ }
106
+ div#validator-badges img { border: 0; }
107
+
108
+ div#copyright {
109
+ color: #333;
110
+ background: #efefef;
111
+ font: 0.75em sans-serif;
112
+ margin-top: 5em;
113
+ margin-bottom: 0;
114
+ padding: 0.5em 2em;
115
+ }
116
+
117
+
118
+ /* === Classes =================================== */
119
+
120
+ table.header-table {
121
+ color: white;
122
+ font-size: small;
123
+ }
124
+
125
+ .type-note {
126
+ font-size: small;
127
+ color: #DEDEDE;
128
+ }
129
+
130
+ .xxsection-bar {
131
+ background: #eee;
132
+ color: #333;
133
+ padding: 3px;
134
+ }
135
+
136
+ .section-bar {
137
+ color: #333;
138
+ border-bottom: 1px solid #999;
139
+ margin-left: -20px;
140
+ }
141
+
142
+
143
+ .section-title {
144
+ background: #79a;
145
+ color: #eee;
146
+ padding: 3px;
147
+ margin-top: 2em;
148
+ margin-left: -30px;
149
+ border: 1px solid #999;
150
+ }
151
+
152
+ .top-aligned-row { vertical-align: top }
153
+ .bottom-aligned-row { vertical-align: bottom }
@@ -0,0 +1,18 @@
1
+ $(document).ready(function() {
2
+ $("a").click(function(event) {
3
+ data = $("#editor").val()
4
+ $.ajax({
5
+ type: "POST",
6
+ contentType: "text/plain",
7
+ url: "neo",
8
+ data: data,
9
+ cache: false,
10
+ success: function(res){
11
+ $("#statusbar").append(res);
12
+ return true;
13
+ }
14
+ });
15
+ event.preventDefault();
16
+
17
+ });
18
+ });
@@ -0,0 +1,26 @@
1
+ require '../admin'
2
+ require 'spec'
3
+
4
+ require 'spec/interop/test'
5
+ require 'sinatra/test'
6
+
7
+ describe 'Neo4j Admin Suite' do
8
+ include Sinatra::Test
9
+ it "should serve the css" do
10
+ port = Sinatra::Application.port # we do not know it since we have not started it - mocked
11
+ # when
12
+ get "/neo4j.css"
13
+
14
+ # then
15
+ status.should_not == 404
16
+ end
17
+ it "should serve the index file" do
18
+ port = Sinatra::Application.port # we do not know it since we have not started it - mocked
19
+ # when
20
+ get "/"
21
+
22
+ # then
23
+ status.should_not == 404
24
+ end
25
+
26
+ end
@@ -0,0 +1,21 @@
1
+ <html>
2
+ <head>
3
+ <script type="text/javascript" src="jquery.js"></script>
4
+ <script type="text/javascript" src="neo_admin.js"></script>
5
+ </head>
6
+ <body>
7
+ <textarea id="editor" rows="10" cols="20">
8
+ class Person
9
+ include Neo4j::NodeMixin
10
+ # by includeing the following mixin we will expose this node as a RESTful resource
11
+ include RestMixin
12
+ property :name
13
+ has_n :friends
14
+ end
15
+ puts 'Hello World from Person'
16
+ </textarea>
17
+ <a href="">send</a>
18
+ <div id="statusbar" ></div>
19
+
20
+ </body>
21
+ </html>
@@ -0,0 +1,9 @@
1
+ This is a small prototype for a typical graph use case: A file tree with folders and files. It even
2
+ demonstrates some of the speed tradeoff of using the JRuby-like traversing facilities and the underlying Java Traverser API directly
3
+
4
+ INSTALLATION
5
+
6
+ - install JRuby
7
+
8
+ gem install neo4j cucumber webrat sinatra
9
+ cucumber features/treesizes.feature
@@ -0,0 +1,7 @@
1
+ require "rubygems"
2
+ require 'neo4j'
3
+ require 'sinatra'
4
+
5
+ get '/' do
6
+ "Hello World"
7
+ end
@@ -0,0 +1,5 @@
1
+ neostore.nodestore.db.mapped_memory=90M
2
+ neostore.relationshipstore.db.mapped_memory=1G
3
+ neostore.propertystore.db.mapped_memory=50M
4
+ neostore.propertystore.db.strings.mapped_memory=100M
5
+ neostore.propertystore.db.arrays.mapped_memory=0M
@@ -0,0 +1,121 @@
1
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__) + "/../support")
2
+ require 'json'
3
+ require 'rspec_helper'
4
+ require 'neo4j'
5
+
6
+ Sinatra::Application.set :environment, :test
7
+
8
+
9
+ Before do
10
+ start
11
+ Neo4j.info
12
+ end
13
+
14
+ After do
15
+ stop
16
+ end
17
+
18
+ def createBatchSubtree(batch_neo, parent_props, currDepth, filesPerFolder, filesize, subfolders, maxDepth)
19
+ currDepth = currDepth + 1
20
+ if(currDepth>=maxDepth)
21
+ return
22
+ end
23
+
24
+ for k in 1..Integer(filesPerFolder)
25
+ props = java.util.HashMap.new
26
+ props.put('size',filesize)
27
+ props.put('name',"#{parent_props[:name]}/f#{k}")
28
+ #needed for JRuby compatibility
29
+ props.put('classname', Neo4j::Node.to_s)
30
+ file = batch_neo.createNode(props)
31
+ batch_neo.createRelationship( parent_props[:id], file, org.neo4j.graphdb.DynamicRelationshipType.withName('child'), nil)
32
+ end
33
+ for k in 1..Integer(subfolders)
34
+ props = java.util.HashMap.new
35
+ props.put('name',"#{parent_props[:name]}/d#{k}")
36
+ #needed for JRuby compatibility
37
+ props.put('classname', Neo4j::Node.to_s)
38
+ folder = batch_neo.createNode(props)
39
+ batch_neo.createRelationship(parent_props[:id], folder, org.neo4j.graphdb.DynamicRelationshipType.withName('child'), nil)
40
+ folder_props = {:name => props.get('name'),:id => folder}
41
+ createBatchSubtree(batch_neo, folder_props, currDepth, filesPerFolder, filesize, subfolders, maxDepth)
42
+ end
43
+ end
44
+
45
+
46
+ When /^I create a filetree with (.*) files a (.*)kb and (\w+) subfolders in each folder, (\w+) times nested$/ do |filesPerFolder,filesize, nrSubfolders, timesNested|
47
+ size = Integer(filesize)
48
+ fileRoot = nil
49
+ Neo4j::Transaction.run do
50
+ fileRoot = Neo4j::Node.new
51
+ fileRoot[:name] = 'fileRoot'
52
+ Neo4j.ref_node.rels.outgoing(:files) << fileRoot
53
+ #create the owning user of the top folders
54
+ puts 'Created fileroot '
55
+ end
56
+ parent_props = {:name => fileRoot[:name], :id => fileRoot._java_node.getId()}
57
+ #stop Neo4j Embedded
58
+ stop
59
+ #start batch inserter to speed things up
60
+ startTime = Time.now
61
+ batch_neo = org.neo4j.kernel.impl.batchinsert.BatchInserterImpl.new('db/neo', org.neo4j.kernel.impl.batchinsert.BatchInserterImpl.loadProperties('batch.props'))
62
+ createBatchSubtree(batch_neo, parent_props, 0, Integer(filesPerFolder), Integer(filesize), Integer(nrSubfolders), Integer(timesNested))
63
+ #shut down the batchinserter
64
+ batch_neo.shutdown
65
+ puts "Insert time: " + (Time.now-startTime).to_s
66
+ #start Embedded Neo4j again
67
+ Neo4j.start
68
+
69
+ end
70
+
71
+ Then /^the total number of nodes in the db should be greater than (\w+)$/ do |totalFiles|
72
+ Neo4j::Transaction.run do
73
+ tot = Neo4j.number_of_nodes_in_use
74
+ puts "Total number of nodes in nodespace: #{tot}"
75
+ tot.should > Integer(totalFiles)
76
+
77
+ end
78
+ end
79
+
80
+ def calcTotalSize(folder)
81
+ totSize = 0
82
+ folder.rels.outgoing(:child).nodes.each do |node|
83
+ if(node[:size] != nil)
84
+ totSize+=node[:size]
85
+ else #this is a folder
86
+ totSize+=calcTotalSize(node)
87
+ end
88
+ end
89
+ return totSize
90
+ end
91
+
92
+ def calcSizeJava(node)
93
+ neoNode = node._java_node
94
+ size = 0
95
+ child = org.neo4j.graphdb.DynamicRelationshipType.withName 'child'
96
+ traverser = neoNode.traverse(org.neo4j.graphdb.Traverser::Order::DEPTH_FIRST,
97
+ org.neo4j.graphdb.StopEvaluator::END_OF_GRAPH,
98
+ org.neo4j.graphdb.ReturnableEvaluator::ALL, child, org.neo4j.graphdb.Direction::OUTGOING )
99
+ while traverser.hasNext()
100
+ node = traverser.next
101
+ if node.hasProperty('size')
102
+ size += node.getProperty('size')
103
+ end
104
+ end
105
+ size
106
+ end
107
+
108
+ Then /^the total size of one top folder files should be (\w+) kb and response time less than (.*) s$/ do |totalSize, responseTime|
109
+ Neo4j::Transaction.run do
110
+ topFolder = Neo4j.ref_node.rels.outgoing(:files).nodes.first
111
+ startTime = Time.now
112
+ calcTotalSize(topFolder).should == Integer(totalSize)
113
+ rTime = Time.new-startTime
114
+ puts "time ruby: " + (rTime).to_s
115
+ startTime = Time.now
116
+ calcSizeJava(topFolder).should == Integer(totalSize)
117
+ rTime = Time.new-startTime
118
+ puts "time java: " + (rTime).to_s
119
+ rTime.should < Float(responseTime)
120
+ end
121
+ end
@@ -0,0 +1,30 @@
1
+ # See http://wiki.github.com/aslakhellesoy/cucumber/sinatra
2
+ # for more details about Sinatra with Cucumber
3
+
4
+ gem 'rack-test'
5
+ gem 'sinatra'
6
+
7
+ app_file = File.join(File.dirname(__FILE__), *%w[.. .. app.rb])
8
+ require app_file
9
+ # Force the application name because polyglot breaks the auto-detection logic.
10
+ Sinatra::Application.app_file = app_file
11
+
12
+ require 'spec/expectations'
13
+ require 'rack/test'
14
+ require 'webrat'
15
+
16
+ Webrat.configure do |config|
17
+ config.mode = :rack
18
+ end
19
+
20
+ class MyWorld
21
+ include Rack::Test::Methods
22
+ include Webrat::Methods
23
+ include Webrat::Matchers
24
+
25
+ def app
26
+ Sinatra::Application
27
+ end
28
+ end
29
+
30
+ World{MyWorld.new}
@@ -0,0 +1,50 @@
1
+ #
2
+ # Helper methods for specs
3
+ #
4
+
5
+ require 'fileutils'
6
+ require 'tmpdir'
7
+
8
+ # suppress all warnings
9
+ $NEO_LOGGER.level = Logger::ERROR
10
+
11
+ def delete_db
12
+ # delete db on filesystem
13
+ FileUtils.rm_rf Neo4j::Config[:storage_path] # NEO_STORAGE
14
+ FileUtils.rm_rf Lucene::Config[:storage_path] unless Lucene::Config[:storage_path].nil?
15
+ end
16
+
17
+ def reset_config
18
+ # reset configuration
19
+ Lucene::Config.delete_all
20
+
21
+ Neo4j::Config.delete_all
22
+
23
+ Neo4j::Config[:storage_path] = "db/neo"
24
+ Lucene::Config[:storage_path] = 'db/lucene'
25
+ Lucene::Config[:store_on_file] = true # otherwise it will keep the lucene index in memory !
26
+
27
+ end
28
+
29
+ def start
30
+ puts "START"
31
+ # stop it - just in case
32
+ stop
33
+
34
+ delete_db
35
+
36
+ reset_config
37
+ Neo4j.start
38
+ end
39
+
40
+
41
+ def stop
42
+ # make sure we finish all transactions
43
+ Neo4j::Transaction.finish if Neo4j::Transaction.running?
44
+
45
+ Neo4j.stop
46
+
47
+ #delete_db
48
+
49
+ reset_config
50
+ end