rubyfox-server 2.8.4.0 → 2.9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (272) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +2 -2
  3. data/lib/rubyfox/server/data/config/ExtensionManagerLock.txt +2 -0
  4. data/lib/rubyfox/server/data/config/core.xml +9 -9
  5. data/lib/rubyfox/server/data/config/crossdomain.xml +1 -1
  6. data/lib/rubyfox/server/data/config/descriptors/config_room.txt +112 -3
  7. data/lib/rubyfox/server/data/config/descriptors/config_server.txt +550 -73
  8. data/lib/rubyfox/server/data/config/descriptors/config_zone.txt +11 -2
  9. data/lib/rubyfox/server/data/config/descriptors/runtime_mmo.txt +74 -0
  10. data/lib/rubyfox/server/data/config/descriptors/runtime_room.txt +33 -4
  11. data/lib/rubyfox/server/data/config/descriptors/runtime_user.txt +1 -1
  12. data/lib/rubyfox/server/data/config/descriptors/runtime_zone.txt +37 -5
  13. data/lib/rubyfox/server/data/config/keystore.jks +0 -0
  14. data/lib/rubyfox/server/data/config/log4j.properties +5 -1
  15. data/lib/rubyfox/server/data/config/logParser.properties +30 -0
  16. data/lib/rubyfox/server/data/config/server.xml +51 -9
  17. data/lib/rubyfox/server/data/config/templates/templates.dat +0 -0
  18. data/lib/rubyfox/server/data/lib/Lib/sfs2x-lib.jar +0 -0
  19. data/lib/rubyfox/server/data/lib/httpclient-4.3.3.jar +0 -0
  20. data/lib/rubyfox/server/data/lib/httpcore-4.3.2.jar +0 -0
  21. data/lib/rubyfox/server/data/lib/jetty/VERSION.txt +7576 -0
  22. data/lib/rubyfox/server/data/lib/jetty/etc/README.spnego +62 -0
  23. data/lib/rubyfox/server/data/lib/jetty/etc/jdbcRealm.properties +72 -0
  24. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-annotations.xml +20 -0
  25. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-debug.xml +23 -0
  26. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-deploy.xml +62 -0
  27. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-http.xml +41 -0
  28. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-https.xml +47 -0
  29. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-ipaccess.xml +31 -0
  30. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jaas.xml +17 -0
  31. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jmx-remote.xml +27 -0
  32. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jmx.xml +43 -0
  33. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-logging.xml +36 -0
  34. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-lowresources.xml +22 -0
  35. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-monitor.xml +30 -0
  36. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-plus.xml +26 -0
  37. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-proxy.xml +35 -0
  38. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-requestlog.xml +32 -0
  39. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-rewrite.xml +41 -0
  40. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-setuid.xml +30 -0
  41. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-spdy-proxy.xml +158 -0
  42. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-spdy.xml +153 -0
  43. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-ssl.xml +41 -0
  44. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-started.xml +15 -0
  45. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-stats.xml +18 -0
  46. data/lib/rubyfox/server/data/lib/jetty/etc/jetty-xinetd.xml +54 -0
  47. data/lib/rubyfox/server/data/lib/jetty/etc/jetty.conf +12 -0
  48. data/lib/rubyfox/server/data/lib/jetty/etc/jetty.xml +160 -0
  49. data/lib/rubyfox/server/data/lib/jetty/etc/keystore +0 -0
  50. data/lib/rubyfox/server/data/lib/jetty/etc/krb5.ini +23 -0
  51. data/lib/rubyfox/server/data/lib/jetty/etc/spnego.conf +19 -0
  52. data/lib/rubyfox/server/data/lib/jetty/etc/spnego.properties +1 -0
  53. data/lib/rubyfox/server/data/lib/jetty/etc/webdefault.xml +540 -0
  54. data/lib/rubyfox/server/data/lib/jetty/lib/asm-4.1.jar +0 -0
  55. data/lib/rubyfox/server/data/lib/jetty/lib/asm-commons-4.1.jar +0 -0
  56. data/lib/rubyfox/server/data/lib/jetty/lib/ext/.donotdelete +0 -0
  57. data/lib/rubyfox/server/data/lib/jetty/lib/jaspi/javax.security.auth.message-1.0.0.v201108011116.jar +0 -0
  58. data/lib/rubyfox/server/data/lib/jetty/lib/javax.annotation-api-1.2.jar +0 -0
  59. data/lib/rubyfox/server/data/lib/jetty/lib/javax.el-3.0.0.jar +0 -0
  60. data/lib/rubyfox/server/data/lib/jetty/lib/javax.servlet.jsp-2.3.2.jar +0 -0
  61. data/lib/rubyfox/server/data/lib/jetty/lib/javax.servlet.jsp-api-2.3.1.jar +0 -0
  62. data/lib/rubyfox/server/data/lib/jetty/lib/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar +0 -0
  63. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-annotations-9.1.1.v20140108.jar +0 -0
  64. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-client-9.1.1.v20140108.jar +0 -0
  65. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-continuation-9.1.1.v20140108.jar +0 -0
  66. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-deploy-9.1.1.v20140108.jar +0 -0
  67. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-http-9.1.1.v20140108.jar +0 -0
  68. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-io-9.1.1.v20140108.jar +0 -0
  69. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jaas-9.1.1.v20140108.jar +0 -0
  70. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jaspi-9.1.1.v20140108.jar +0 -0
  71. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jmx-9.1.1.v20140108.jar +0 -0
  72. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jndi-9.1.1.v20140108.jar +0 -0
  73. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jsp-jdt-2.3.3.jar +0 -0
  74. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-plus-9.1.1.v20140108.jar +0 -0
  75. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-proxy-9.1.1.v20140108.jar +0 -0
  76. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-rewrite-9.1.1.v20140108.jar +0 -0
  77. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-schemas-3.1.jar +0 -0
  78. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-security-9.1.1.v20140108.jar +0 -0
  79. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-server-9.1.1.v20140108.jar +0 -0
  80. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-servlet-9.1.1.v20140108.jar +0 -0
  81. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-servlets-9.1.1.v20140108.jar +0 -0
  82. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-util-9.1.1.v20140108.jar +0 -0
  83. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-webapp-9.1.1.v20140108.jar +0 -0
  84. data/lib/rubyfox/server/data/lib/jetty/lib/jetty-xml-9.1.1.v20140108.jar +0 -0
  85. data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.activation-1.1.0.v201105071233.jar +0 -0
  86. data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar +0 -0
  87. data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.transaction-api-1.2.jar +0 -0
  88. data/lib/rubyfox/server/data/lib/jetty/lib/monitor/jetty-monitor-9.1.1.v20140108.jar +0 -0
  89. data/lib/rubyfox/server/data/lib/jetty/lib/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar +0 -0
  90. data/lib/rubyfox/server/data/lib/jetty/lib/org.eclipse.jdt.core-3.8.2.v20130121.jar +0 -0
  91. data/lib/rubyfox/server/data/lib/jetty/lib/servlet-api-3.1.jar +0 -0
  92. data/lib/rubyfox/server/data/lib/jetty/lib/setuid/jetty-setuid-java-1.0.1.jar +0 -0
  93. data/lib/rubyfox/server/data/lib/jetty/lib/setuid/libsetuid-linux.so +0 -0
  94. data/lib/rubyfox/server/data/lib/jetty/lib/setuid/libsetuid-osx.so +0 -0
  95. data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-client-9.1.1.v20140108.jar +0 -0
  96. data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-core-9.1.1.v20140108.jar +0 -0
  97. data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-http-common-9.1.1.v20140108.jar +0 -0
  98. data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-http-server-9.1.1.v20140108.jar +0 -0
  99. data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-server-9.1.1.v20140108.jar +0 -0
  100. data/lib/rubyfox/server/data/lib/jetty/lib/start.jar +0 -0
  101. data/lib/rubyfox/server/data/lib/jetty/lib/websocket-api-9.1.1.v20140108.jar +0 -0
  102. data/lib/rubyfox/server/data/lib/jetty/lib/websocket/javax-websocket-client-impl-9.1.1.v20140108.jar +0 -0
  103. data/lib/rubyfox/server/data/lib/jetty/lib/websocket/javax-websocket-server-impl-9.1.1.v20140108.jar +0 -0
  104. data/lib/rubyfox/server/data/lib/jetty/lib/websocket/javax.websocket-api-1.0.jar +0 -0
  105. data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-client-9.1.1.v20140108.jar +0 -0
  106. data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-common-9.1.1.v20140108.jar +0 -0
  107. data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-server-9.1.1.v20140108.jar +0 -0
  108. data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-servlet-9.1.1.v20140108.jar +0 -0
  109. data/lib/rubyfox/server/data/lib/jetty/license-eplv10-aslv20.html +576 -0
  110. data/lib/rubyfox/server/data/lib/jetty/modules/.donotdelete +0 -0
  111. data/lib/rubyfox/server/data/lib/jetty/modules/annotations.mod +17 -0
  112. data/lib/rubyfox/server/data/lib/jetty/modules/client.mod +6 -0
  113. data/lib/rubyfox/server/data/lib/jetty/modules/continuation.mod +6 -0
  114. data/lib/rubyfox/server/data/lib/jetty/modules/debug.mod +9 -0
  115. data/lib/rubyfox/server/data/lib/jetty/modules/deploy.mod +15 -0
  116. data/lib/rubyfox/server/data/lib/jetty/modules/ext.mod +11 -0
  117. data/lib/rubyfox/server/data/lib/jetty/modules/http.mod +14 -0
  118. data/lib/rubyfox/server/data/lib/jetty/modules/https.mod +16 -0
  119. data/lib/rubyfox/server/data/lib/jetty/modules/ipaccess.mod +9 -0
  120. data/lib/rubyfox/server/data/lib/jetty/modules/jaas.mod +16 -0
  121. data/lib/rubyfox/server/data/lib/jetty/modules/jaspi.mod +10 -0
  122. data/lib/rubyfox/server/data/lib/jetty/modules/jmx-remote.mod +18 -0
  123. data/lib/rubyfox/server/data/lib/jetty/modules/jmx.mod +10 -0
  124. data/lib/rubyfox/server/data/lib/jetty/modules/jndi.mod +11 -0
  125. data/lib/rubyfox/server/data/lib/jetty/modules/jsp.mod +14 -0
  126. data/lib/rubyfox/server/data/lib/jetty/modules/jvm.mod +23 -0
  127. data/lib/rubyfox/server/data/lib/jetty/modules/logging.mod +27 -0
  128. data/lib/rubyfox/server/data/lib/jetty/modules/lowresources.mod +18 -0
  129. data/lib/rubyfox/server/data/lib/jetty/modules/monitor.mod +13 -0
  130. data/lib/rubyfox/server/data/lib/jetty/modules/npn.mod +32 -0
  131. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_10.mod +9 -0
  132. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_11.mod +9 -0
  133. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_13.mod +9 -0
  134. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_15.mod +9 -0
  135. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_17.mod +9 -0
  136. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_21.mod +9 -0
  137. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_25.mod +9 -0
  138. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_4.mod +9 -0
  139. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_40.mod +9 -0
  140. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_45.mod +9 -0
  141. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_5.mod +9 -0
  142. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_6.mod +9 -0
  143. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_7.mod +9 -0
  144. data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_9.mod +9 -0
  145. data/lib/rubyfox/server/data/lib/jetty/modules/plus.mod +14 -0
  146. data/lib/rubyfox/server/data/lib/jetty/modules/proxy.mod +22 -0
  147. data/lib/rubyfox/server/data/lib/jetty/modules/requestlog.mod +26 -0
  148. data/lib/rubyfox/server/data/lib/jetty/modules/resources.mod +10 -0
  149. data/lib/rubyfox/server/data/lib/jetty/modules/rewrite.mod +12 -0
  150. data/lib/rubyfox/server/data/lib/jetty/modules/security.mod +9 -0
  151. data/lib/rubyfox/server/data/lib/jetty/modules/server.mod +38 -0
  152. data/lib/rubyfox/server/data/lib/jetty/modules/servlet.mod +9 -0
  153. data/lib/rubyfox/server/data/lib/jetty/modules/servlets.mod +10 -0
  154. data/lib/rubyfox/server/data/lib/jetty/modules/setuid.mod +19 -0
  155. data/lib/rubyfox/server/data/lib/jetty/modules/spdy.mod +23 -0
  156. data/lib/rubyfox/server/data/lib/jetty/modules/ssl.mod +29 -0
  157. data/lib/rubyfox/server/data/lib/jetty/modules/stats.mod +9 -0
  158. data/lib/rubyfox/server/data/lib/jetty/modules/webapp.mod +10 -0
  159. data/lib/rubyfox/server/data/lib/jetty/modules/websocket.mod +12 -0
  160. data/lib/rubyfox/server/data/lib/jetty/modules/xinetd.mod +17 -0
  161. data/lib/rubyfox/server/data/lib/jetty/notice.html +111 -0
  162. data/lib/rubyfox/server/data/lib/jetty/resources/.keep +0 -0
  163. data/lib/rubyfox/server/data/lib/jetty/start.d/README.TXT +24 -0
  164. data/lib/rubyfox/server/data/lib/jetty/start.d/http.ini +7 -0
  165. data/lib/rubyfox/server/data/lib/jetty/start.d/https.ini +9 -0
  166. data/lib/rubyfox/server/data/lib/jetty/start.d/ssl.ini +19 -0
  167. data/lib/rubyfox/server/data/lib/jetty/start.ini +84 -0
  168. data/lib/rubyfox/server/data/lib/jetty/webapps/.keep +0 -0
  169. data/lib/rubyfox/server/data/lib/logs-analysis-app.jar +0 -0
  170. data/lib/rubyfox/server/data/lib/netty-3.9.0.Final.jar +0 -0
  171. data/lib/rubyfox/server/data/lib/scala-library.jar +0 -0
  172. data/lib/rubyfox/server/data/lib/sfs2x-admin.jar +0 -0
  173. data/lib/rubyfox/server/data/lib/sfs2x-core.jar +0 -0
  174. data/lib/rubyfox/server/data/lib/sfs2x-lib.jar +0 -0
  175. data/lib/rubyfox/server/data/lib/sfs2x-util.jar +0 -0
  176. data/lib/rubyfox/server/data/lib/sfs2x.jar +0 -0
  177. data/lib/rubyfox/server/data/lib/slf4j-api-1.7.5.jar +0 -0
  178. data/lib/rubyfox/server/data/lib/slf4j-log4j12-1.7.5.jar +0 -0
  179. data/lib/rubyfox/server/data/sfs2x-service +9 -9
  180. data/lib/rubyfox/server/data/sfs2x-service.vmoptions +1 -1
  181. data/lib/rubyfox/server/data/sfs2x.sh +6 -6
  182. data/lib/rubyfox/server/data/www/root/admin/AdminTool.swf +0 -0
  183. data/lib/rubyfox/server/data/www/root/admin/ReleaseNotes.txt +23 -0
  184. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bannedIPs.png +0 -0
  185. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bannedUsernames.png +0 -0
  186. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bookmarks.png +0 -0
  187. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bootLog.png +0 -0
  188. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/connection.png +0 -0
  189. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/globalServerStatus.png +0 -0
  190. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/logsDownload.png +0 -0
  191. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/mMOSettings.png +0 -0
  192. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/permissionsAndEvents.png +0 -0
  193. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/roomExtension.png +0 -0
  194. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/roomVariables.png +0 -0
  195. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeLog.png +0 -0
  196. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeRoomSettings.png +0 -0
  197. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeUserSettings.png +0 -0
  198. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeZoneSettings.png +0 -0
  199. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsApplication.png +0 -0
  200. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsDemographics.png +0 -0
  201. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsExceptions.png +0 -0
  202. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsOverview.png +0 -0
  203. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsTechnology.png +0 -0
  204. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/systemQueueStatus.png +0 -0
  205. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/threadPools.png +0 -0
  206. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/userManagement.png +0 -0
  207. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/zoneExtension.png +0 -0
  208. data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/zoneTraffic.png +0 -0
  209. data/lib/rubyfox/server/data/www/root/admin/index.html +4 -16
  210. data/lib/rubyfox/server/data/www/root/admin/modules/Analytics/Analytics.swf +0 -0
  211. data/lib/rubyfox/server/data/www/root/admin/modules/BanManager/BanManager.swf +0 -0
  212. data/lib/rubyfox/server/data/www/root/admin/modules/BlueBoxMonitor/BlueBoxMonitor.swf +0 -0
  213. data/lib/rubyfox/server/data/www/root/admin/modules/Dashboard/Dashboard.swf +0 -0
  214. data/lib/rubyfox/server/data/www/root/admin/modules/ExtensionManager/ExtensionManager.swf +0 -0
  215. data/lib/rubyfox/server/data/www/root/admin/modules/ExtensionManager/icon.png +0 -0
  216. data/lib/rubyfox/server/data/www/root/admin/modules/LicenseManager/LicenseManager.swf +0 -0
  217. data/lib/rubyfox/server/data/www/root/admin/modules/LogViewer/LogViewer.swf +0 -0
  218. data/lib/rubyfox/server/data/www/root/admin/modules/ServerConfigurator/ServerConfigurator.swf +0 -0
  219. data/lib/rubyfox/server/data/www/root/admin/modules/ZoneConfigurator/ZoneConfigurator.swf +0 -0
  220. data/lib/rubyfox/server/data/www/root/admin/modules/ZoneMonitor/ZoneMonitor.swf +0 -0
  221. data/lib/rubyfox/server/data/www/root/admin/modules/config.xml +1 -0
  222. data/lib/rubyfox/server/data/www/root/favicon.ico +0 -0
  223. data/lib/rubyfox/server/data/www/root/favicon.png +0 -0
  224. data/lib/rubyfox/server/data/www/sfs2x-ws.war +0 -0
  225. data/lib/rubyfox/server/data/www/sfs2x-ws.xml +30 -0
  226. data/lib/rubyfox/server/version.rb +1 -1
  227. data/rubyfox-server.gemspec +1 -0
  228. metadata +171 -48
  229. data/.rvmrc +0 -1
  230. data/lib/rubyfox/server/data/config/jetty/jetty.xml +0 -214
  231. data/lib/rubyfox/server/data/config/jetty/realm.properties +0 -21
  232. data/lib/rubyfox/server/data/config/jetty/webdefault.xml +0 -410
  233. data/lib/rubyfox/server/data/config/myprop.properties +0 -5
  234. data/lib/rubyfox/server/data/data/bannedusers/users.bin +0 -0
  235. data/lib/rubyfox/server/data/data/buddylists/BasicExamples/7364666773646667 +0 -0
  236. data/lib/rubyfox/server/data/lib/Jetty/ant-1.6.5.jar +0 -0
  237. data/lib/rubyfox/server/data/lib/Jetty/core-3.1.1.jar +0 -0
  238. data/lib/rubyfox/server/data/lib/Jetty/jetty-6.1.26.jar +0 -0
  239. data/lib/rubyfox/server/data/lib/Jetty/jetty-util-6.1.26.jar +0 -0
  240. data/lib/rubyfox/server/data/lib/Jetty/jsp-2.1-glassfish-2.1.v20091210.jar +0 -0
  241. data/lib/rubyfox/server/data/lib/Jetty/jsp-2.1-jetty-6.1.26.jar +0 -0
  242. data/lib/rubyfox/server/data/lib/Jetty/jsp-api-2.1-glassfish-2.1.v20091210.jar +0 -0
  243. data/lib/rubyfox/server/data/lib/Jetty/servlet-api-2.5-20081211.jar +0 -0
  244. data/lib/rubyfox/server/data/lib/extras/slf4j-jdk14-1.5.10.jar +0 -0
  245. data/lib/rubyfox/server/data/lib/httpclient-4.0.3.jar +0 -0
  246. data/lib/rubyfox/server/data/lib/httpcore-4.0.1.jar +0 -0
  247. data/lib/rubyfox/server/data/lib/jconsole/COPYING.txt +0 -504
  248. data/lib/rubyfox/server/data/lib/jconsole/bug_test_case.py +0 -49
  249. data/lib/rubyfox/server/data/lib/jconsole/console$py.class +0 -0
  250. data/lib/rubyfox/server/data/lib/jconsole/console.py +0 -439
  251. data/lib/rubyfox/server/data/lib/jconsole/history$py.class +0 -0
  252. data/lib/rubyfox/server/data/lib/jconsole/history.py +0 -82
  253. data/lib/rubyfox/server/data/lib/jconsole/history_test_case.py +0 -133
  254. data/lib/rubyfox/server/data/lib/jconsole/introspect$py.class +0 -0
  255. data/lib/rubyfox/server/data/lib/jconsole/introspect.py +0 -373
  256. data/lib/rubyfox/server/data/lib/jconsole/introspect_test_case.py +0 -19
  257. data/lib/rubyfox/server/data/lib/jconsole/issue_17_test_case.py +0 -36
  258. data/lib/rubyfox/server/data/lib/jconsole/jintrospect$py.class +0 -0
  259. data/lib/rubyfox/server/data/lib/jconsole/jintrospect.py +0 -316
  260. data/lib/rubyfox/server/data/lib/jconsole/jintrospect_test_case.py +0 -107
  261. data/lib/rubyfox/server/data/lib/jconsole/popup$py.class +0 -0
  262. data/lib/rubyfox/server/data/lib/jconsole/popup.py +0 -178
  263. data/lib/rubyfox/server/data/lib/jconsole/run_tests.py +0 -8
  264. data/lib/rubyfox/server/data/lib/jconsole/static_test_case.py +0 -36
  265. data/lib/rubyfox/server/data/lib/jconsole/testcase.py +0 -38
  266. data/lib/rubyfox/server/data/lib/jconsole/tip$py.class +0 -0
  267. data/lib/rubyfox/server/data/lib/jconsole/tip.py +0 -47
  268. data/lib/rubyfox/server/data/lib/slf4j-api-1.5.10.jar +0 -0
  269. data/lib/rubyfox/server/data/lib/slf4j-log4j12.jar +0 -0
  270. data/lib/rubyfox/server/data/lib/ws-engine.jar +0 -0
  271. data/lib/rubyfox/server/data/www/BlueBox.war +0 -0
  272. data/lib/rubyfox/server/data/www/root/admin/AdminTool.html +0 -120
@@ -1,49 +0,0 @@
1
- import unittest
2
- import introspect
3
- import jintrospect
4
-
5
- class BugTestCase(unittest.TestCase):
6
-
7
- def testPythonStackOverflow(self):
8
- """
9
- jythonconsole-0.0.1 has a stack overflow when autocomplete with Jython-2.2b1
10
-
11
- import sys
12
- sys. <-- autocomplete starts and then the following stacktrace
13
-
14
- Traceback (most recent call last):
15
- File "bug_test_case.py", line 8, in testJython22b1Bug
16
- list = jintrospect.getAutoCompleteList("sys.", locals())
17
- File "/Users/don/jythonconsole/jintrospect.py", line 90, in getAutoCompleteList
18
- attributes = getAttributeNames(object, includeMagic, includeSingle, includeDouble)
19
- File "/Users/don/jythonconsole/introspect.py", line 61, in getAttributeNames
20
- attrdict = getAllAttributeNames(object)
21
- File "/Users/don/jythonconsole/introspect.py", line 125, in getAllAttributeNames
22
- attrdict.update(getAllAttributeNames(klass))
23
- ...
24
- File "/Users/don/jythonconsole/introspect.py", line 138, in getAllAttributeNames
25
- attrdict.update(getAllAttributeNames(base))
26
- File "/Users/don/jythonconsole/introspect.py", line 125, in getAllAttributeNames
27
- attrdict.update(getAllAttributeNames(klass))
28
- File "/Users/don/jythonconsole/introspect.py", line 138, in getAllAttributeNames
29
- attrdict.update(getAllAttributeNames(base))
30
- File "/Users/don/jythonconsole/introspect.py", line 125, in getAllAttributeNames
31
- attrdict.update(getAllAttributeNames(klass))
32
- File "/Users/don/jythonconsole/introspect.py", line 101, in getAllAttributeNames
33
- wakeupcall = dir(object)
34
- java.lang.StackOverflowError: java.lang.StackOverflowError
35
- """
36
- dict = introspect.getAllAttributeNames("sys")
37
- # if the bug is happening you'll never get here
38
- # you'll get a stack overflow instead
39
- self.assert_(len(dict) > 0)
40
-
41
- # method completion for python strings was failing in 0.0.2 with python2.b1
42
- def testAutoCompleteString(self):
43
- f = "foo"
44
- list = jintrospect.getAutoCompleteList("f", locals())
45
- self.assert_(len(list) > 0)
46
- self.assert_(list.index("startswith") > 0)
47
-
48
- if __name__ == '__main__':
49
- unittest.main()
@@ -1,439 +0,0 @@
1
- """
2
- Jython Console with Code Completion
3
-
4
- This uses the basic Jython Interactive Interpreter.
5
- The UI uses code from Carlos Quiroz's 'Jython Interpreter for JEdit' http://www.jedit.org
6
- """
7
-
8
- from javax.swing import JFrame, JScrollPane, JTextPane, Action, KeyStroke, WindowConstants
9
- from javax.swing.text import JTextComponent, TextAction, SimpleAttributeSet, StyleConstants
10
- from java.awt import Color, Font, Point
11
- from java.awt.event import InputEvent, KeyEvent, WindowAdapter
12
- from java.lang import System
13
- from java.awt import Toolkit
14
- from java.awt.datatransfer import DataFlavor
15
-
16
- import jintrospect
17
- from popup import Popup
18
- from tip import Tip
19
- from history import History
20
-
21
- import sys
22
- from code import InteractiveInterpreter
23
- from org.python.util import InteractiveConsole
24
-
25
- __author__ = "Don Coleman <dcoleman@chariotsolutions.com>"
26
-
27
- import re
28
- # allows multiple imports like "from java.lang import String, Properties"
29
- _re_from_import = re.compile("from\s+\S+\s+import(\s+\S+,\s?)?")
30
-
31
- try:
32
- True, False
33
- except NameError:
34
- (True, False) = (1, 0)
35
-
36
- class Console:
37
- PROMPT = sys.ps1
38
- PROCESS = sys.ps2
39
- BANNER = ["Jython Completion Shell", InteractiveConsole.getDefaultBanner()]
40
-
41
- include_single_underscore_methods = False
42
- include_double_underscore_methods = False
43
-
44
- def __init__(self, namespace=None):
45
- """
46
- Create a Jython Console.
47
- namespace is an optional and should be a dictionary or Map
48
- """
49
- self.history = History(self)
50
-
51
- if namespace != None:
52
- self.locals = namespace
53
- else:
54
- self.locals = {}
55
-
56
- self.buffer = [] # buffer for multi-line commands
57
-
58
- self.interp = Interpreter(self, self.locals)
59
- sys.stdout = StdOutRedirector(self)
60
-
61
- self.text_pane = JTextPane(keyTyped = self.keyTyped, keyPressed = self.keyPressed)
62
- self.__initKeyMap()
63
-
64
- self.doc = self.text_pane.document
65
- self.__propertiesChanged()
66
- self.__inittext()
67
- self.initialLocation = self.doc.createPosition(self.doc.length-1)
68
-
69
- # Don't pass frame to popups. JWindows with null owners are not focusable
70
- # this fixes the focus problem on Win32, but make the mouse problem worse
71
- self.popup = Popup(None, self.text_pane)
72
- self.tip = Tip(None)
73
-
74
- # get fontmetrics info so we can position the popup
75
- metrics = self.text_pane.getFontMetrics(self.text_pane.getFont())
76
- self.dotWidth = metrics.charWidth('.')
77
- self.textHeight = metrics.getHeight()
78
-
79
- # add some handles to our objects
80
- self.locals['console'] = self
81
-
82
- def insertText(self, text):
83
- """insert text at the current caret position"""
84
- # seems like there should be a better way to do this....
85
- # might be better as a method on the text component?
86
- caretPosition = self.text_pane.getCaretPosition()
87
- self.text_pane.select(caretPosition, caretPosition)
88
- self.text_pane.replaceSelection(text)
89
- self.text_pane.setCaretPosition(caretPosition + len(text))
90
-
91
- def getText(self):
92
- """get text from last line of console"""
93
- offsets = self.__lastLine()
94
- text = self.doc.getText(offsets[0], offsets[1]-offsets[0])
95
- return text.rstrip()
96
-
97
- def getDisplayPoint(self):
98
- """Get the point where the popup window should be displayed"""
99
- screenPoint = self.text_pane.getLocationOnScreen()
100
- caretPoint = self.text_pane.caret.getMagicCaretPosition()
101
-
102
- # BUG: sometimes caretPoint is None
103
- # To duplicate type "java.aw" and hit '.' to complete selection while popup is visible
104
-
105
- x = screenPoint.getX() + caretPoint.getX() + self.dotWidth
106
- y = screenPoint.getY() + caretPoint.getY() + self.textHeight
107
- return Point(int(x),int(y))
108
-
109
- def hide(self, event=None):
110
- """Hide the popup or tip window if visible"""
111
- if self.popup.visible:
112
- self.popup.hide()
113
- if self.tip.visible:
114
- self.tip.hide()
115
-
116
- def hideTip(self, event=None):
117
- self.tip.hide()
118
- self.insertText(')')
119
-
120
- def showTip(self, event=None):
121
- # get the display point before writing text
122
- # otherwise magicCaretPosition is None
123
- displayPoint = self.getDisplayPoint()
124
-
125
- if self.popup.visible:
126
- self.popup.hide()
127
-
128
- line = self.getText()
129
-
130
- self.insertText('(')
131
-
132
- (name, argspec, tip) = jintrospect.getCallTipJava(line, self.locals)
133
-
134
- if tip:
135
- self.tip.showTip(tip, displayPoint)
136
-
137
- def showPopup(self, event=None):
138
- """show code completion popup"""
139
-
140
- try:
141
- line = self.getText()
142
- list = jintrospect.getAutoCompleteList(line, self.locals, includeSingle=self.include_single_underscore_methods, includeDouble=self.include_double_underscore_methods)
143
- if len(list) > 0:
144
- self.popup.showMethodCompletionList(list, self.getDisplayPoint())
145
-
146
- except Exception, e:
147
- print >> sys.stderr, "Error getting completion list: ", e
148
- #traceback.print_exc(file=sys.stderr)
149
-
150
- def inLastLine(self, include = 1):
151
- """ Determines whether the cursor is in the last line """
152
- limits = self.__lastLine()
153
- caret = self.text_pane.caretPosition
154
- if self.text_pane.selectedText:
155
- caret = self.text_pane.selectionStart
156
- if include:
157
- return (caret >= limits[0] and caret <= limits[1])
158
- else:
159
- return (caret > limits[0] and caret <= limits[1])
160
-
161
- def enter(self, event=None):
162
- """ Triggered when enter is pressed """
163
- text = self.getText()
164
- self.buffer.append(text)
165
- source = "\n".join(self.buffer)
166
- more = self.interp.runsource(source)
167
- if more:
168
- self.printOnProcess()
169
- else:
170
- self.resetbuffer()
171
- self.printPrompt()
172
- self.history.append(text)
173
-
174
- self.hide()
175
-
176
- def quit(self, event=None):
177
- sys.exit()
178
-
179
- def resetbuffer(self):
180
- self.buffer = []
181
-
182
- def home(self, event):
183
- """ Triggered when HOME is pressed """
184
- if self.inLastLine():
185
- # go to end of PROMPT
186
- self.text_pane.caretPosition = self.__lastLine()[0]
187
- else:
188
- lines = self.doc.rootElements[0].elementCount
189
- for i in xrange(0,lines-1):
190
- offsets = (self.doc.rootElements[0].getElement(i).startOffset, \
191
- self.doc.rootElements[0].getElement(i).endOffset)
192
- line = self.doc.getText(offsets[0], offsets[1]-offsets[0])
193
- if self.text_pane.caretPosition >= offsets[0] and \
194
- self.text_pane.caretPosition <= offsets[1]:
195
- if line.startswith(Console.PROMPT) or line.startswith(Console.PROCESS):
196
- self.text_pane.caretPosition = offsets[0] + len(Console.PROMPT)
197
- else:
198
- self.text_pane.caretPosition = offsets[0]
199
-
200
- def end(self, event):
201
- if self.inLastLine():
202
- self.text_pane.caretPosition = self.__lastLine()[1] - 1
203
-
204
- # TODO look using text_pane replace selection like self.insertText
205
- def replaceRow(self, text):
206
- """ Replaces the last line of the textarea with text """
207
- offset = self.__lastLine()
208
- last = self.doc.getText(offset[0], offset[1]-offset[0])
209
- if last != "\n":
210
- self.doc.remove(offset[0], offset[1]-offset[0]-1)
211
- self.__addOutput(self.infoColor, text)
212
-
213
- def delete(self, event):
214
- """ Intercepts delete events only allowing it to work in the last line """
215
- if self.inLastLine():
216
- if self.text_pane.selectedText:
217
- self.doc.remove(self.text_pane.selectionStart, self.text_pane.selectionEnd - self.text_pane.selectionStart)
218
- elif self.text_pane.caretPosition < self.doc.length:
219
- self.doc.remove(self.text_pane.caretPosition, 1)
220
-
221
- def backSpaceListener(self, event=None):
222
- """ Don't allow backspace or left arrow to go over prompt """
223
- onFirstPosition = self.text_pane.getCaretPosition() <= self.__lastLine()[0]
224
- if onFirstPosition and not self.text_pane.selectedText:
225
- event.consume()
226
-
227
- def spaceTyped(self, event=None):
228
- """check we we should complete on the space key"""
229
- matches = _re_from_import.match(self.getText())
230
- if matches:
231
- self.showPopup()
232
-
233
- def killToEndLine(self, event=None):
234
- if self.inLastLine():
235
- caretPosition = self.text_pane.getCaretPosition()
236
- self.text_pane.setSelectionStart(caretPosition)
237
- self.text_pane.setSelectionEnd(self.__lastLine()[1] - 1)
238
- self.text_pane.cut()
239
-
240
- def paste(self, event=None):
241
- # if getText was smarter, this method would be unnecessary
242
- if self.inLastLine():
243
- clipboard = Toolkit.getDefaultToolkit().getSystemClipboard()
244
- clipboard.getContents(self.text_pane)
245
- contents = clipboard.getData(DataFlavor.stringFlavor)
246
-
247
- lines = contents.split("\n")
248
- for line in lines:
249
- self.insertText(line)
250
- if len(lines) > 1:
251
- self.enter()
252
-
253
- def keyTyped(self, event):
254
- #print >> sys.stderr, "keyTyped", event.getKeyCode()
255
- if not self.inLastLine():
256
- event.consume()
257
-
258
- def keyPressed(self, event):
259
- if self.popup.visible:
260
- self.popup.key(event)
261
- #print >> sys.stderr, "keyPressed", event.getKeyCode()
262
- if event.keyCode == KeyEvent.VK_BACK_SPACE or event.keyCode == KeyEvent.VK_LEFT:
263
- self.backSpaceListener(event)
264
-
265
- def keyboardInterrupt(self, event=None):
266
- """ Raises a KeyboardInterrupt"""
267
- self.hide()
268
- self.interp.runsource("raise KeyboardInterrupt\n")
269
- self.resetbuffer()
270
- self.printPrompt()
271
-
272
- # TODO refactor me
273
- def write(self, text):
274
- self.__addOutput(self.infoColor, text)
275
-
276
- def printResult(self, msg):
277
- """ Prints the results of an operation """
278
- self.__addOutput(self.text_pane.foreground, "\n" + str(msg))
279
-
280
- def printError(self, msg):
281
- self.__addOutput(self.errorColor, "\n" + str(msg))
282
-
283
- def printOnProcess(self):
284
- """ Prints the process symbol """
285
- self.__addOutput(self.infoColor, "\n" + Console.PROCESS)
286
-
287
- def printPrompt(self):
288
- """ Prints the prompt """
289
- self.__addOutput(self.infoColor, "\n" + Console.PROMPT)
290
-
291
- def __addOutput(self, color, msg):
292
- """ Adds the output to the text area using a given color """
293
- from javax.swing.text import BadLocationException
294
- style = SimpleAttributeSet()
295
-
296
- if color:
297
- style.addAttribute(StyleConstants.Foreground, color)
298
-
299
- self.doc.insertString(self.doc.length, msg, style)
300
- self.text_pane.caretPosition = self.doc.length
301
-
302
- def __propertiesChanged(self):
303
- """ Detects when the properties have changed """
304
- self.text_pane.background = Color.white #jEdit.getColorProperty("jython.bgColor")
305
- self.text_pane.foreground = Color.blue #jEdit.getColorProperty("jython.resultColor")
306
- self.infoColor = Color.black #jEdit.getColorProperty("jython.textColor")
307
- self.errorColor = Color.red # jEdit.getColorProperty("jython.errorColor")
308
-
309
- family = "Monospaced" # jEdit.getProperty("jython.font", "Monospaced")
310
- size = 14 #jEdit.getIntegerProperty("jython.fontsize", 14)
311
- style = Font.PLAIN #jEdit.getIntegerProperty("jython.fontstyle", Font.PLAIN)
312
- self.text_pane.setFont(Font(family,style,size))
313
-
314
- def __inittext(self):
315
- """ Inserts the initial text with the jython banner """
316
- self.doc.remove(0, self.doc.length)
317
- for line in "\n".join(Console.BANNER):
318
- self.__addOutput(self.infoColor, line)
319
- self.printPrompt()
320
- self.text_pane.requestFocus()
321
-
322
- def __initKeyMap(self):
323
- os_name = System.getProperty("os.name")
324
- if os_name.startswith("Win"):
325
- exit_key = KeyEvent.VK_Z
326
- interrupt_key = KeyEvent.VK_PAUSE # BREAK
327
- else:
328
- exit_key = KeyEvent.VK_D
329
- interrupt_key = KeyEvent.VK_C
330
-
331
- keyBindings = [
332
- (KeyEvent.VK_ENTER, 0, "jython.enter", self.enter),
333
- (KeyEvent.VK_DELETE, 0, "jython.delete", self.delete),
334
- (KeyEvent.VK_HOME, 0, "jython.home", self.home),
335
- (KeyEvent.VK_LEFT, InputEvent.META_DOWN_MASK, "jython.home", self.home),
336
- (KeyEvent.VK_UP, 0, "jython.up", self.history.historyUp),
337
- (KeyEvent.VK_DOWN, 0, "jython.down", self.history.historyDown),
338
- (KeyEvent.VK_PERIOD, 0, "jython.showPopup", self.showPopup),
339
- (KeyEvent.VK_ESCAPE, 0, "jython.hide", self.hide),
340
-
341
- ('(', 0, "jython.showTip", self.showTip),
342
- (')', 0, "jython.hideTip", self.hideTip),
343
- (exit_key, InputEvent.CTRL_MASK, "jython.exit", self.quit),
344
- (KeyEvent.VK_SPACE, InputEvent.CTRL_MASK, "jython.showPopup", self.showPopup),
345
- (KeyEvent.VK_SPACE, 0, "jython.space", self.spaceTyped),
346
-
347
- # explicitly set paste since we're overriding functionality
348
- (KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), "jython.paste", self.paste),
349
-
350
- # Mac/Emacs keystrokes
351
- (KeyEvent.VK_A, InputEvent.CTRL_MASK, "jython.home", self.home),
352
- (KeyEvent.VK_E, InputEvent.CTRL_MASK, "jython.end", self.end),
353
- (KeyEvent.VK_K, InputEvent.CTRL_MASK, "jython.killToEndLine", self.killToEndLine),
354
- (KeyEvent.VK_Y, InputEvent.CTRL_MASK, "jython.paste", self.paste),
355
-
356
- (interrupt_key, InputEvent.CTRL_MASK, "jython.keyboardInterrupt", self.keyboardInterrupt),
357
- ]
358
-
359
- keymap = JTextComponent.addKeymap("jython", self.text_pane.keymap)
360
- for (key, modifier, name, function) in keyBindings:
361
- keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(key, modifier), ActionDelegator(name, function))
362
- self.text_pane.keymap = keymap
363
-
364
- def __lastLine(self):
365
- """ Returns the char offests of the last line """
366
- lines = self.doc.rootElements[0].elementCount
367
- offsets = (self.doc.rootElements[0].getElement(lines-1).startOffset, \
368
- self.doc.rootElements[0].getElement(lines-1).endOffset)
369
- line = self.doc.getText(offsets[0], offsets[1]-offsets[0])
370
- if len(line) >= 4 and (line[0:4]==Console.PROMPT or line[0:4]==Console.PROCESS):
371
- return (offsets[0] + len(Console.PROMPT), offsets[1])
372
- return offsets
373
-
374
-
375
- class ActionDelegator(TextAction):
376
- """
377
- Class action delegator encapsulates a TextAction delegating the action
378
- event to a simple function
379
- """
380
- def __init__(self, name, delegate):
381
- TextAction.__init__(self, name)
382
- self.delegate = delegate
383
-
384
- def actionPerformed(self, event):
385
- if isinstance(self.delegate, Action):
386
- self.delegate.actionPerformed(event)
387
- else:
388
- self.delegate(event)
389
-
390
- class Interpreter(InteractiveInterpreter):
391
- def __init__(self, console, locals):
392
- InteractiveInterpreter.__init__(self, locals)
393
- self.console = console
394
-
395
- def write(self, data):
396
- # send all output to the textpane
397
- # KLUDGE remove trailing linefeed
398
- self.console.printError(data[:-1])
399
-
400
- # redirect stdout to the textpane
401
- class StdOutRedirector:
402
- def __init__(self, console):
403
- self.console = console
404
-
405
- def write(self, data):
406
- #print >> sys.stderr, ">>%s<<" % data
407
- if data != '\n':
408
- # This is a sucky hack. Fix printResult
409
- self.console.printResult(data)
410
-
411
- class JythonFrame(JFrame):
412
- def __init__(self):
413
- self.title = "Jython"
414
- self.size = (600, 400)
415
- try:
416
- self.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
417
- except:
418
- # assume jdk < 1.4
419
- self.addWindowListener(KillListener())
420
- self.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)
421
-
422
- class KillListener(WindowAdapter):
423
- """
424
- Handle EXIT_ON_CLOSE for jdk < 1.4
425
- Thanks to James Richards for this method
426
- """
427
- def windowClosed(self, evt):
428
- import java.lang.System as System
429
- System.exit(0)
430
-
431
- def main(namespace=None):
432
- frame = JythonFrame()
433
- console = Console(namespace)
434
- frame.getContentPane().add(JScrollPane(console.text_pane))
435
- frame.visible = True
436
-
437
- if __name__ == "__main__":
438
- main()
439
-