summaryrefslogtreecommitdiffstats
path: root/trunk/infrastructure/net.appjet.ajstdlib
diff options
context:
space:
mode:
authorAaron Iba <aaroniba@gmail.com>2009-12-18 18:44:23 +1100
committerAaron Iba <aaroniba@gmail.com>2009-12-18 18:44:23 +1100
commite9e7b73a2c56b26e49cba0baac1a187be109fdb2 (patch)
tree71b2236dd23d409b0ce8a9576758123922b57898 /trunk/infrastructure/net.appjet.ajstdlib
parent4a596eda3437b6e7bf3018170d1187badddfe81b (diff)
downloadetherpad-e9e7b73a2c56b26e49cba0baac1a187be109fdb2.tar.gz
etherpad-e9e7b73a2c56b26e49cba0baac1a187be109fdb2.tar.bz2
etherpad-e9e7b73a2c56b26e49cba0baac1a187be109fdb2.zip
removed duplicate trunk directory
--HG-- rename : trunk/trunk/COPYING => trunk/COPYING rename : trunk/trunk/README => trunk/README rename : trunk/trunk/etherpad/.gitignore => trunk/etherpad/.gitignore rename : trunk/trunk/etherpad/bin/.gitignore => trunk/etherpad/bin/.gitignore rename : trunk/trunk/etherpad/bin/rebuildjar.sh => trunk/etherpad/bin/rebuildjar.sh rename : trunk/trunk/etherpad/bin/run-local.sh => trunk/etherpad/bin/run-local.sh rename : trunk/trunk/etherpad/bin/setup-mysql-db.sh => trunk/etherpad/bin/setup-mysql-db.sh rename : trunk/trunk/etherpad/etc/etherpad.localdev-default.properties => trunk/etherpad/etc/etherpad.localdev-default.properties rename : trunk/trunk/etherpad/lib/dnsjava-2.0.6.jar => trunk/etherpad/lib/dnsjava-2.0.6.jar rename : trunk/trunk/etherpad/lib/jbcrypt-0.2.jar => trunk/etherpad/lib/jbcrypt-0.2.jar rename : trunk/trunk/etherpad/lib/jcommon-1.0.15.jar => trunk/etherpad/lib/jcommon-1.0.15.jar rename : trunk/trunk/etherpad/lib/jfreechart-1.0.12.jar => trunk/etherpad/lib/jfreechart-1.0.12.jar rename : trunk/trunk/etherpad/src/etherpad/admin/shell.js => trunk/etherpad/src/etherpad/admin/shell.js rename : trunk/trunk/etherpad/src/etherpad/billing/billing.js => trunk/etherpad/src/etherpad/billing/billing.js rename : trunk/trunk/etherpad/src/etherpad/billing/fields.js => trunk/etherpad/src/etherpad/billing/fields.js rename : trunk/trunk/etherpad/src/etherpad/billing/team_billing.js => trunk/etherpad/src/etherpad/billing/team_billing.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/contentcollector.js => trunk/etherpad/src/etherpad/collab/ace/contentcollector.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/domline.js => trunk/etherpad/src/etherpad/collab/ace/domline.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/easysync1.js => trunk/etherpad/src/etherpad/collab/ace/easysync1.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/easysync2.js => trunk/etherpad/src/etherpad/collab/ace/easysync2.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/easysync2_tests.js => trunk/etherpad/src/etherpad/collab/ace/easysync2_tests.js rename : trunk/trunk/etherpad/src/etherpad/collab/ace/linestylefilter.js => trunk/etherpad/src/etherpad/collab/ace/linestylefilter.js rename : trunk/trunk/etherpad/src/etherpad/collab/collab_server.js => trunk/etherpad/src/etherpad/collab/collab_server.js rename : trunk/trunk/etherpad/src/etherpad/collab/collabroom_server.js => trunk/etherpad/src/etherpad/collab/collabroom_server.js rename : trunk/trunk/etherpad/src/etherpad/collab/genimg.js => trunk/etherpad/src/etherpad/collab/genimg.js rename : trunk/trunk/etherpad/src/etherpad/collab/json_sans_eval.js => trunk/etherpad/src/etherpad/collab/json_sans_eval.js rename : trunk/trunk/etherpad/src/etherpad/collab/readonly_server.js => trunk/etherpad/src/etherpad/collab/readonly_server.js rename : trunk/trunk/etherpad/src/etherpad/collab/server_utils.js => trunk/etherpad/src/etherpad/collab/server_utils.js rename : trunk/trunk/etherpad/src/etherpad/control/aboutcontrol.js => trunk/etherpad/src/etherpad/control/aboutcontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/admincontrol.js => trunk/etherpad/src/etherpad/control/admincontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/blogcontrol.js => trunk/etherpad/src/etherpad/control/blogcontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/connection_diagnostics_control.js => trunk/etherpad/src/etherpad/control/connection_diagnostics_control.js rename : trunk/trunk/etherpad/src/etherpad/control/global_pro_account_control.js => trunk/etherpad/src/etherpad/control/global_pro_account_control.js rename : trunk/trunk/etherpad/src/etherpad/control/historycontrol.js => trunk/etherpad/src/etherpad/control/historycontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/loadtestcontrol.js => trunk/etherpad/src/etherpad/control/loadtestcontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/maincontrol.js => trunk/etherpad/src/etherpad/control/maincontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/pad/pad_changeset_control.js => trunk/etherpad/src/etherpad/control/pad/pad_changeset_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pad/pad_control.js => trunk/etherpad/src/etherpad/control/pad/pad_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pad/pad_importexport_control.js => trunk/etherpad/src/etherpad/control/pad/pad_importexport_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pad/pad_view_control.js => trunk/etherpad/src/etherpad/control/pad/pad_view_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pne_manual_control.js => trunk/etherpad/src/etherpad/control/pne_manual_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pne_tracker_control.js => trunk/etherpad/src/etherpad/control/pne_tracker_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/account_control.js => trunk/etherpad/src/etherpad/control/pro/account_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/account_manager_control.js => trunk/etherpad/src/etherpad/control/pro/admin/account_manager_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/license_manager_control.js => trunk/etherpad/src/etherpad/control/pro/admin/license_manager_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js => trunk/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/pro_config_control.js => trunk/etherpad/src/etherpad/control/pro/admin/pro_config_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/admin/team_billing_control.js => trunk/etherpad/src/etherpad/control/pro/admin/team_billing_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/pro_main_control.js => trunk/etherpad/src/etherpad/control/pro/pro_main_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro/pro_padlist_control.js => trunk/etherpad/src/etherpad/control/pro/pro_padlist_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro_beta_control.js => trunk/etherpad/src/etherpad/control/pro_beta_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro_help_control.js => trunk/etherpad/src/etherpad/control/pro_help_control.js rename : trunk/trunk/etherpad/src/etherpad/control/pro_signup_control.js => trunk/etherpad/src/etherpad/control/pro_signup_control.js rename : trunk/trunk/etherpad/src/etherpad/control/scriptcontrol.js => trunk/etherpad/src/etherpad/control/scriptcontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/static_control.js => trunk/etherpad/src/etherpad/control/static_control.js rename : trunk/trunk/etherpad/src/etherpad/control/statscontrol.js => trunk/etherpad/src/etherpad/control/statscontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/store/eepnet_checkout_control.js => trunk/etherpad/src/etherpad/control/store/eepnet_checkout_control.js rename : trunk/trunk/etherpad/src/etherpad/control/store/storecontrol.js => trunk/etherpad/src/etherpad/control/store/storecontrol.js rename : trunk/trunk/etherpad/src/etherpad/control/testcontrol.js => trunk/etherpad/src/etherpad/control/testcontrol.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0000_test.js => trunk/etherpad/src/etherpad/db_migrations/m0000_test.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js => trunk/etherpad/src/etherpad/db_migrations/m0001_eepnet_signups_init.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js => trunk/etherpad/src/etherpad/db_migrations/m0002_eepnet_signups_2.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js => trunk/etherpad/src/etherpad/db_migrations/m0003_create_tests_table_v2.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js => trunk/etherpad/src/etherpad/db_migrations/m0004_convert_all_tables_to_innodb.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js => trunk/etherpad/src/etherpad/db_migrations/m0005_create_billing_tables.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js => trunk/etherpad/src/etherpad/db_migrations/m0006_eepnet_signups_3.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js => trunk/etherpad/src/etherpad/db_migrations/m0007_create_pro_tables_v4.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js => trunk/etherpad/src/etherpad/db_migrations/m0008_persistent_vars.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0009_pad_tables.js => trunk/etherpad/src/etherpad/db_migrations/m0009_pad_tables.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js => trunk/etherpad/src/etherpad/db_migrations/m0010_pad_sqlmeta.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js => trunk/etherpad/src/etherpad/db_migrations/m0011_pro_users_temppass.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js => trunk/etherpad/src/etherpad/db_migrations/m0012_pro_users_auto_signin.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js => trunk/etherpad/src/etherpad/db_migrations/m0013_pne_padv2_upgrade.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js => trunk/etherpad/src/etherpad/db_migrations/m0014_pne_globalpadids.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js => trunk/etherpad/src/etherpad/db_migrations/m0015_padmeta_passwords.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js => trunk/etherpad/src/etherpad/db_migrations/m0016_pne_tracking_data.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js => trunk/etherpad/src/etherpad/db_migrations/m0017_pne_tracking_data_v2.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js => trunk/etherpad/src/etherpad/db_migrations/m0018_eepnet_checkout_tables.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js => trunk/etherpad/src/etherpad/db_migrations/m0019_padmeta_deleted.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js => trunk/etherpad/src/etherpad/db_migrations/m0020_padmeta_archived.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js => trunk/etherpad/src/etherpad/db_migrations/m0021_pro_padmeta_json.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js => trunk/etherpad/src/etherpad/db_migrations/m0022_create_userids_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js => trunk/etherpad/src/etherpad/db_migrations/m0023_create_usagestats_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0024_statistics_table.js => trunk/etherpad/src/etherpad/db_migrations/m0024_statistics_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js => trunk/etherpad/src/etherpad/db_migrations/m0025_rename_pro_users_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js => trunk/etherpad/src/etherpad/db_migrations/m0026_create_guests_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0027_pro_config.js => trunk/etherpad/src/etherpad/db_migrations/m0027_pro_config.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js => trunk/etherpad/src/etherpad/db_migrations/m0028_ondemand_beta_emails.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js => trunk/etherpad/src/etherpad/db_migrations/m0029_lowercase_subdomains.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js => trunk/etherpad/src/etherpad/db_migrations/m0030_fix_statistics_values.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js => trunk/etherpad/src/etherpad/db_migrations/m0031_deleted_pro_users.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js => trunk/etherpad/src/etherpad/db_migrations/m0032_reduce_topvalues_counts.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js => trunk/etherpad/src/etherpad/db_migrations/m0033_pro_account_usage.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js => trunk/etherpad/src/etherpad/db_migrations/m0034_create_recurring_billing_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js => trunk/etherpad/src/etherpad/db_migrations/m0035_add_email_to_paymentinfo.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js => trunk/etherpad/src/etherpad/db_migrations/m0036_create_missing_subscription_records.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js => trunk/etherpad/src/etherpad/db_migrations/m0037_create_pro_referral_table.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js => trunk/etherpad/src/etherpad/db_migrations/m0038_pad_coarse_revs.js rename : trunk/trunk/etherpad/src/etherpad/db_migrations/migration_runner.js => trunk/etherpad/src/etherpad/db_migrations/migration_runner.js rename : trunk/trunk/etherpad/src/etherpad/debug.js => trunk/etherpad/src/etherpad/debug.js rename : trunk/trunk/etherpad/src/etherpad/globals.js => trunk/etherpad/src/etherpad/globals.js rename : trunk/trunk/etherpad/src/etherpad/helpers.js => trunk/etherpad/src/etherpad/helpers.js rename : trunk/trunk/etherpad/src/etherpad/importexport/importexport.js => trunk/etherpad/src/etherpad/importexport/importexport.js rename : trunk/trunk/etherpad/src/etherpad/legacy_urls.js => trunk/etherpad/src/etherpad/legacy_urls.js rename : trunk/trunk/etherpad/src/etherpad/licensing.js => trunk/etherpad/src/etherpad/licensing.js rename : trunk/trunk/etherpad/src/etherpad/log.js => trunk/etherpad/src/etherpad/log.js rename : trunk/trunk/etherpad/src/etherpad/metrics/metrics.js => trunk/etherpad/src/etherpad/metrics/metrics.js rename : trunk/trunk/etherpad/src/etherpad/pad/activepads.js => trunk/etherpad/src/etherpad/pad/activepads.js rename : trunk/trunk/etherpad/src/etherpad/pad/chatarchive.js => trunk/etherpad/src/etherpad/pad/chatarchive.js rename : trunk/trunk/etherpad/src/etherpad/pad/dbwriter.js => trunk/etherpad/src/etherpad/pad/dbwriter.js rename : trunk/trunk/etherpad/src/etherpad/pad/easysync2migration.js => trunk/etherpad/src/etherpad/pad/easysync2migration.js rename : trunk/trunk/etherpad/src/etherpad/pad/exporthtml.js => trunk/etherpad/src/etherpad/pad/exporthtml.js rename : trunk/trunk/etherpad/src/etherpad/pad/importhtml.js => trunk/etherpad/src/etherpad/pad/importhtml.js rename : trunk/trunk/etherpad/src/etherpad/pad/model.js => trunk/etherpad/src/etherpad/pad/model.js rename : trunk/trunk/etherpad/src/etherpad/pad/noprowatcher.js => trunk/etherpad/src/etherpad/pad/noprowatcher.js rename : trunk/trunk/etherpad/src/etherpad/pad/pad_migrations.js => trunk/etherpad/src/etherpad/pad/pad_migrations.js rename : trunk/trunk/etherpad/src/etherpad/pad/pad_security.js => trunk/etherpad/src/etherpad/pad/pad_security.js rename : trunk/trunk/etherpad/src/etherpad/pad/padevents.js => trunk/etherpad/src/etherpad/pad/padevents.js rename : trunk/trunk/etherpad/src/etherpad/pad/padusers.js => trunk/etherpad/src/etherpad/pad/padusers.js rename : trunk/trunk/etherpad/src/etherpad/pad/padutils.js => trunk/etherpad/src/etherpad/pad/padutils.js rename : trunk/trunk/etherpad/src/etherpad/pad/revisions.js => trunk/etherpad/src/etherpad/pad/revisions.js rename : trunk/trunk/etherpad/src/etherpad/pne/pne_utils.js => trunk/etherpad/src/etherpad/pne/pne_utils.js rename : trunk/trunk/etherpad/src/etherpad/pro/domains.js => trunk/etherpad/src/etherpad/pro/domains.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_account_auto_signin.js => trunk/etherpad/src/etherpad/pro/pro_account_auto_signin.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_accounts.js => trunk/etherpad/src/etherpad/pro/pro_accounts.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_config.js => trunk/etherpad/src/etherpad/pro/pro_config.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_pad_db.js => trunk/etherpad/src/etherpad/pro/pro_pad_db.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_pad_editors.js => trunk/etherpad/src/etherpad/pro/pro_pad_editors.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_padlist.js => trunk/etherpad/src/etherpad/pro/pro_padlist.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_padmeta.js => trunk/etherpad/src/etherpad/pro/pro_padmeta.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_quotas.js => trunk/etherpad/src/etherpad/pro/pro_quotas.js rename : trunk/trunk/etherpad/src/etherpad/pro/pro_utils.js => trunk/etherpad/src/etherpad/pro/pro_utils.js rename : trunk/trunk/etherpad/src/etherpad/quotas.js => trunk/etherpad/src/etherpad/quotas.js rename : trunk/trunk/etherpad/src/etherpad/sessions.js => trunk/etherpad/src/etherpad/sessions.js rename : trunk/trunk/etherpad/src/etherpad/statistics/exceptions.js => trunk/etherpad/src/etherpad/statistics/exceptions.js rename : trunk/trunk/etherpad/src/etherpad/statistics/statistics.js => trunk/etherpad/src/etherpad/statistics/statistics.js rename : trunk/trunk/etherpad/src/etherpad/store/checkout.js => trunk/etherpad/src/etherpad/store/checkout.js rename : trunk/trunk/etherpad/src/etherpad/store/eepnet_checkout.js => trunk/etherpad/src/etherpad/store/eepnet_checkout.js rename : trunk/trunk/etherpad/src/etherpad/store/eepnet_trial.js => trunk/etherpad/src/etherpad/store/eepnet_trial.js rename : trunk/trunk/etherpad/src/etherpad/testing/testutils.js => trunk/etherpad/src/etherpad/testing/testutils.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0000_test.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0000_test.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0001_sqlbase_transaction_rollback.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0002_license_generation.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0003_persistent_vars.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0004_sqlobj.js rename : trunk/trunk/etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js => trunk/etherpad/src/etherpad/testing/unit_tests/t0005_easysync.js rename : trunk/trunk/etherpad/src/etherpad/usage_stats/usage_stats.js => trunk/etherpad/src/etherpad/usage_stats/usage_stats.js rename : trunk/trunk/etherpad/src/etherpad/utils.js => trunk/etherpad/src/etherpad/utils.js rename : trunk/trunk/etherpad/src/main.js => trunk/etherpad/src/main.js rename : trunk/trunk/etherpad/src/static/crossdomain.xml => trunk/etherpad/src/static/crossdomain.xml rename : trunk/trunk/etherpad/src/static/css/admin/admin-stats.css => trunk/etherpad/src/static/css/admin/admin-stats.css rename : trunk/trunk/etherpad/src/static/css/beta.css => trunk/etherpad/src/static/css/beta.css rename : trunk/trunk/etherpad/src/static/css/broadcast.css => trunk/etherpad/src/static/css/broadcast.css rename : trunk/trunk/etherpad/src/static/css/connection_diagnostics.css => trunk/etherpad/src/static/css/connection_diagnostics.css rename : trunk/trunk/etherpad/src/static/css/etherpad.css => trunk/etherpad/src/static/css/etherpad.css rename : trunk/trunk/etherpad/src/static/css/fluxbb.css => trunk/etherpad/src/static/css/fluxbb.css rename : trunk/trunk/etherpad/src/static/css/framedpage.css => trunk/etherpad/src/static/css/framedpage.css rename : trunk/trunk/etherpad/src/static/css/global-pro-account.css => trunk/etherpad/src/static/css/global-pro-account.css rename : trunk/trunk/etherpad/src/static/css/home-opensource.css => trunk/etherpad/src/static/css/home-opensource.css rename : trunk/trunk/etherpad/src/static/css/home.css => trunk/etherpad/src/static/css/home.css rename : trunk/trunk/etherpad/src/static/css/lib/jquery.contextmenu.css => trunk/etherpad/src/static/css/lib/jquery.contextmenu.css rename : trunk/trunk/etherpad/src/static/css/pad.css => trunk/etherpad/src/static/css/pad.css rename : trunk/trunk/etherpad/src/static/css/pad2_ejs.css => trunk/etherpad/src/static/css/pad2_ejs.css rename : trunk/trunk/etherpad/src/static/css/pne-manual.css => trunk/etherpad/src/static/css/pne-manual.css rename : trunk/trunk/etherpad/src/static/css/pricing.css => trunk/etherpad/src/static/css/pricing.css rename : trunk/trunk/etherpad/src/static/css/pro-help.css => trunk/etherpad/src/static/css/pro-help.css rename : trunk/trunk/etherpad/src/static/css/pro-signup.css => trunk/etherpad/src/static/css/pro-signup.css rename : trunk/trunk/etherpad/src/static/css/pro/account.css => trunk/etherpad/src/static/css/pro/account.css rename : trunk/trunk/etherpad/src/static/css/pro/framedpage-pro.css => trunk/etherpad/src/static/css/pro/framedpage-pro.css rename : trunk/trunk/etherpad/src/static/css/pro/padlist.css => trunk/etherpad/src/static/css/pro/padlist.css rename : trunk/trunk/etherpad/src/static/css/pro/payment-required.css => trunk/etherpad/src/static/css/pro/payment-required.css rename : trunk/trunk/etherpad/src/static/css/pro/pro-admin.css => trunk/etherpad/src/static/css/pro/pro-admin.css rename : trunk/trunk/etherpad/src/static/css/pro/pro-home.css => trunk/etherpad/src/static/css/pro/pro-home.css rename : trunk/trunk/etherpad/src/static/css/stats.css => trunk/etherpad/src/static/css/stats.css rename : trunk/trunk/etherpad/src/static/css/store/eepnet-checkout.css => trunk/etherpad/src/static/css/store/eepnet-checkout.css rename : trunk/trunk/etherpad/src/static/css/store/ondemand-billing.css => trunk/etherpad/src/static/css/store/ondemand-billing.css rename : trunk/trunk/etherpad/src/static/css/store/store.css => trunk/etherpad/src/static/css/store/store.css rename : trunk/trunk/etherpad/src/static/favicon.ico => trunk/etherpad/src/static/favicon.ico rename : trunk/trunk/etherpad/src/static/img/about/appjet-logo-large.gif => trunk/etherpad/src/static/img/about/appjet-logo-large.gif rename : trunk/trunk/etherpad/src/static/img/about/appjet-logo-medium.png => trunk/etherpad/src/static/img/about/appjet-logo-medium.png rename : trunk/trunk/etherpad/src/static/img/about/investors/mitchkapor.jpg => trunk/etherpad/src/static/img/about/investors/mitchkapor.jpg rename : trunk/trunk/etherpad/src/static/img/about/investors/pb.jpg => trunk/etherpad/src/static/img/about/investors/pb.jpg rename : trunk/trunk/etherpad/src/static/img/about/investors/pg.jpg => trunk/etherpad/src/static/img/about/investors/pg.jpg rename : trunk/trunk/etherpad/src/static/img/about/investors/sanjeev.jpg => trunk/etherpad/src/static/img/about/investors/sanjeev.jpg rename : trunk/trunk/etherpad/src/static/img/about/investors/seth.jpg => trunk/etherpad/src/static/img/about/investors/seth.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg => trunk/etherpad/src/static/img/about/people/aaron-david-iphones-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-david-iphones.jpg => trunk/etherpad/src/static/img/about/people/aaron-david-iphones.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-google-air.jpg => trunk/etherpad/src/static/img/about/people/aaron-google-air.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot2-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot2.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot2.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot3-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/aaron-headshot3.jpg => trunk/etherpad/src/static/img/about/people/aaron-headshot3.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/daniel-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/david-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/david-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/david-headshot.jpg => trunk/etherpad/src/static/img/about/people/david-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/davy-headshot.jpg => trunk/etherpad/src/static/img/about/people/davy-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/jd-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/jd-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/jd-headshot.jpg => trunk/etherpad/src/static/img/about/people/jd-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg => trunk/etherpad/src/static/img/about/people/rhonda-headshot-thumb.jpg rename : trunk/trunk/etherpad/src/static/img/about/people/rhonda-headshot.jpg => trunk/etherpad/src/static/img/about/people/rhonda-headshot.jpg rename : trunk/trunk/etherpad/src/static/img/about/pier38.png => trunk/etherpad/src/static/img/about/pier38.png rename : trunk/trunk/etherpad/src/static/img/about/quote-close.png => trunk/etherpad/src/static/img/about/quote-close.png rename : trunk/trunk/etherpad/src/static/img/about/quote-open.png => trunk/etherpad/src/static/img/about/quote-open.png rename : trunk/trunk/etherpad/src/static/img/about/screencastpreview800x600.jpg => trunk/etherpad/src/static/img/about/screencastpreview800x600.jpg rename : trunk/trunk/etherpad/src/static/img/account/betawarn.jpg => trunk/etherpad/src/static/img/account/betawarn.jpg rename : trunk/trunk/etherpad/src/static/img/acecarets/000000.gif => trunk/etherpad/src/static/img/acecarets/000000.gif rename : trunk/trunk/etherpad/src/static/img/acecarets/666666.gif => trunk/etherpad/src/static/img/acecarets/666666.gif rename : trunk/trunk/etherpad/src/static/img/acecarets/999999.gif => trunk/etherpad/src/static/img/acecarets/999999.gif rename : trunk/trunk/etherpad/src/static/img/acecarets/default.gif => trunk/etherpad/src/static/img/acecarets/default.gif rename : trunk/trunk/etherpad/src/static/img/apr09/backgrad.png => trunk/etherpad/src/static/img/apr09/backgrad.png rename : trunk/trunk/etherpad/src/static/img/apr09/black35.png => trunk/etherpad/src/static/img/apr09/black35.png rename : trunk/trunk/etherpad/src/static/img/apr09/blank.gif => trunk/etherpad/src/static/img/apr09/blank.gif rename : trunk/trunk/etherpad/src/static/img/apr09/modalbar.gif => trunk/etherpad/src/static/img/apr09/modalbar.gif rename : trunk/trunk/etherpad/src/static/img/apr09/newpadicon.gif => trunk/etherpad/src/static/img/apr09/newpadicon.gif rename : trunk/trunk/etherpad/src/static/img/apr09/shadbot.png => trunk/etherpad/src/static/img/apr09/shadbot.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadleft.png => trunk/etherpad/src/static/img/apr09/shadleft.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadleftbot.png => trunk/etherpad/src/static/img/apr09/shadleftbot.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadlefttop.png => trunk/etherpad/src/static/img/apr09/shadlefttop.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadright.png => trunk/etherpad/src/static/img/apr09/shadright.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadrightbot.png => trunk/etherpad/src/static/img/apr09/shadrightbot.png rename : trunk/trunk/etherpad/src/static/img/apr09/shadrighttop.png => trunk/etherpad/src/static/img/apr09/shadrighttop.png rename : trunk/trunk/etherpad/src/static/img/apr09/topbar.gif => trunk/etherpad/src/static/img/apr09/topbar.gif rename : trunk/trunk/etherpad/src/static/img/apr09/topbarlogo.gif => trunk/etherpad/src/static/img/apr09/topbarlogo.gif rename : trunk/trunk/etherpad/src/static/img/apr09/widthfull.gif => trunk/etherpad/src/static/img/apr09/widthfull.gif rename : trunk/trunk/etherpad/src/static/img/apr09/widthfullactive.gif => trunk/etherpad/src/static/img/apr09/widthfullactive.gif rename : trunk/trunk/etherpad/src/static/img/apr09/widthlim.gif => trunk/etherpad/src/static/img/apr09/widthlim.gif rename : trunk/trunk/etherpad/src/static/img/apr09/widthlimactive.gif => trunk/etherpad/src/static/img/apr09/widthlimactive.gif rename : trunk/trunk/etherpad/src/static/img/billing/amex.gif => trunk/etherpad/src/static/img/billing/amex.gif rename : trunk/trunk/etherpad/src/static/img/billing/creditcard.gif => trunk/etherpad/src/static/img/billing/creditcard.gif rename : trunk/trunk/etherpad/src/static/img/billing/csc-help.gif => trunk/etherpad/src/static/img/billing/csc-help.gif rename : trunk/trunk/etherpad/src/static/img/billing/disc.gif => trunk/etherpad/src/static/img/billing/disc.gif rename : trunk/trunk/etherpad/src/static/img/billing/invoice.gif => trunk/etherpad/src/static/img/billing/invoice.gif rename : trunk/trunk/etherpad/src/static/img/billing/mc.gif => trunk/etherpad/src/static/img/billing/mc.gif rename : trunk/trunk/etherpad/src/static/img/billing/paypal.gif => trunk/etherpad/src/static/img/billing/paypal.gif rename : trunk/trunk/etherpad/src/static/img/billing/visa.gif => trunk/etherpad/src/static/img/billing/visa.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/new-features/fullwidth.gif => trunk/etherpad/src/static/img/blog/posts/new-features/fullwidth.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/new-features/importexport.gif => trunk/etherpad/src/static/img/blog/posts/new-features/importexport.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/new-features/richtext.gif => trunk/etherpad/src/static/img/blog/posts/new-features/richtext.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/new-features/viewzoom.gif => trunk/etherpad/src/static/img/blog/posts/new-features/viewzoom.gif rename : trunk/trunk/etherpad/src/static/img/blog/posts/pricing-survey-results.png => trunk/etherpad/src/static/img/blog/posts/pricing-survey-results.png rename : trunk/trunk/etherpad/src/static/img/blog/posts/pricing-survey.png => trunk/etherpad/src/static/img/blog/posts/pricing-survey.png rename : trunk/trunk/etherpad/src/static/img/blog/posts/time-slider-screenshot.gif => trunk/etherpad/src/static/img/blog/posts/time-slider-screenshot.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-createpad.png => trunk/etherpad/src/static/img/davy/bg/home-createpad.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-features-bottom.gif => trunk/etherpad/src/static/img/davy/bg/home-features-bottom.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-features-free-bottom.gif => trunk/etherpad/src/static/img/davy/bg/home-features-free-bottom.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-features-paid-top.gif => trunk/etherpad/src/static/img/davy/bg/home-features-paid-top.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-features-top.gif => trunk/etherpad/src/static/img/davy/bg/home-features-top.gif rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-nav-selected.png => trunk/etherpad/src/static/img/davy/bg/home-nav-selected.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/home-screencast.png => trunk/etherpad/src/static/img/davy/bg/home-screencast.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/home2.png => trunk/etherpad/src/static/img/davy/bg/home2.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/product-nav-selected-white.png => trunk/etherpad/src/static/img/davy/bg/product-nav-selected-white.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/product-nav-selected.png => trunk/etherpad/src/static/img/davy/bg/product-nav-selected.png rename : trunk/trunk/etherpad/src/static/img/davy/bg/product.png => trunk/etherpad/src/static/img/davy/bg/product.png rename : trunk/trunk/etherpad/src/static/img/davy/btn/createpad-home.gif => trunk/etherpad/src/static/img/davy/btn/createpad-home.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/createpad-large.gif => trunk/etherpad/src/static/img/davy/btn/createpad-large.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/createpad-small.gif => trunk/etherpad/src/static/img/davy/btn/createpad-small.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/intro-screencast.png => trunk/etherpad/src/static/img/davy/btn/intro-screencast.png rename : trunk/trunk/etherpad/src/static/img/davy/btn/intro-testimonials.png => trunk/etherpad/src/static/img/davy/btn/intro-testimonials.png rename : trunk/trunk/etherpad/src/static/img/davy/btn/learnmore.gif => trunk/etherpad/src/static/img/davy/btn/learnmore.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/signup-home-2.gif => trunk/etherpad/src/static/img/davy/btn/signup-home-2.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/signup-home-3.gif => trunk/etherpad/src/static/img/davy/btn/signup-home-3.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/signup-home-4.gif => trunk/etherpad/src/static/img/davy/btn/signup-home-4.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/signup-home.gif => trunk/etherpad/src/static/img/davy/btn/signup-home.gif rename : trunk/trunk/etherpad/src/static/img/davy/btn/uses-more.gif => trunk/etherpad/src/static/img/davy/btn/uses-more.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/32/114.png => trunk/etherpad/src/static/img/davy/gfx/32/114.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/32/15.png => trunk/etherpad/src/static/img/davy/gfx/32/15.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/32/65.png => trunk/etherpad/src/static/img/davy/gfx/32/65.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/32/78.png => trunk/etherpad/src/static/img/davy/gfx/32/78.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/bullet.gif => trunk/etherpad/src/static/img/davy/gfx/bullet.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/home-logo2.gif => trunk/etherpad/src/static/img/davy/gfx/home-logo2.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/home-screencast.png => trunk/etherpad/src/static/img/davy/gfx/home-screencast.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/plane.gif => trunk/etherpad/src/static/img/davy/gfx/plane.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/product-logo.gif => trunk/etherpad/src/static/img/davy/gfx/product-logo.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/screenshot.gif => trunk/etherpad/src/static/img/davy/gfx/screenshot.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-meetings.gif => trunk/etherpad/src/static/img/davy/gfx/use-meetings.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-meetings.png => trunk/etherpad/src/static/img/davy/gfx/use-meetings.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-programming.gif => trunk/etherpad/src/static/img/davy/gfx/use-programming.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-programming.png => trunk/etherpad/src/static/img/davy/gfx/use-programming.png rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-writing.gif => trunk/etherpad/src/static/img/davy/gfx/use-writing.gif rename : trunk/trunk/etherpad/src/static/img/davy/gfx/use-writing.png => trunk/etherpad/src/static/img/davy/gfx/use-writing.png rename : trunk/trunk/etherpad/src/static/img/davy/txt/home-button.gif => trunk/etherpad/src/static/img/davy/txt/home-button.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/code.gif => trunk/etherpad/src/static/img/featuretour/code.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/edits.gif => trunk/etherpad/src/static/img/featuretour/edits.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/editsandusers.gif => trunk/etherpad/src/static/img/featuretour/editsandusers.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/padlock.png => trunk/etherpad/src/static/img/featuretour/padlock.png rename : trunk/trunk/etherpad/src/static/img/featuretour/revisions.gif => trunk/etherpad/src/static/img/featuretour/revisions.gif rename : trunk/trunk/etherpad/src/static/img/featuretour/users.gif => trunk/etherpad/src/static/img/featuretour/users.gif rename : trunk/trunk/etherpad/src/static/img/feb09/framedheaderback.gif => trunk/etherpad/src/static/img/feb09/framedheaderback.gif rename : trunk/trunk/etherpad/src/static/img/feb09/framedheaderlogo.gif => trunk/etherpad/src/static/img/feb09/framedheaderlogo.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_firstp.gif => trunk/etherpad/src/static/img/feb09/home_firstp.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_firstp.png => trunk/etherpad/src/static/img/feb09/home_firstp.png rename : trunk/trunk/etherpad/src/static/img/feb09/home_firstp2.gif => trunk/etherpad/src/static/img/feb09/home_firstp2.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_h1.gif => trunk/etherpad/src/static/img/feb09/home_h1.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_h1.png => trunk/etherpad/src/static/img/feb09/home_h1.png rename : trunk/trunk/etherpad/src/static/img/feb09/home_newpadbutton.gif => trunk/etherpad/src/static/img/feb09/home_newpadbutton.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_newpadbutton.png => trunk/etherpad/src/static/img/feb09/home_newpadbutton.png rename : trunk/trunk/etherpad/src/static/img/feb09/home_newpadbutton2.gif => trunk/etherpad/src/static/img/feb09/home_newpadbutton2.gif rename : trunk/trunk/etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif => trunk/etherpad/src/static/img/feb09/home_newpadbutton_eepnet.gif rename : trunk/trunk/etherpad/src/static/img/feb09/hometop_back.gif => trunk/etherpad/src/static/img/feb09/hometop_back.gif rename : trunk/trunk/etherpad/src/static/img/feb09/nav1.gif => trunk/etherpad/src/static/img/feb09/nav1.gif rename : trunk/trunk/etherpad/src/static/img/feb09/nav1_back.gif => trunk/etherpad/src/static/img/feb09/nav1_back.gif rename : trunk/trunk/etherpad/src/static/img/feb09/nav2.gif => trunk/etherpad/src/static/img/feb09/nav2.gif rename : trunk/trunk/etherpad/src/static/img/feb09/screencast.gif => trunk/etherpad/src/static/img/feb09/screencast.gif rename : trunk/trunk/etherpad/src/static/img/home/etherpad-mainheader1.jpg => trunk/etherpad/src/static/img/home/etherpad-mainheader1.jpg rename : trunk/trunk/etherpad/src/static/img/home/headergradient.gif => trunk/etherpad/src/static/img/home/headergradient.gif rename : trunk/trunk/etherpad/src/static/img/home/homeheader1.jpg => trunk/etherpad/src/static/img/home/homeheader1.jpg rename : trunk/trunk/etherpad/src/static/img/home/homeheader2.jpg => trunk/etherpad/src/static/img/home/homeheader2.jpg rename : trunk/trunk/etherpad/src/static/img/home/leftgrad.gif => trunk/etherpad/src/static/img/home/leftgrad.gif rename : trunk/trunk/etherpad/src/static/img/home/pencilpaperback.png => trunk/etherpad/src/static/img/home/pencilpaperback.png rename : trunk/trunk/etherpad/src/static/img/home/screencapture1.gif => trunk/etherpad/src/static/img/home/screencapture1.gif rename : trunk/trunk/etherpad/src/static/img/home/underdevicon.gif => trunk/etherpad/src/static/img/home/underdevicon.gif rename : trunk/trunk/etherpad/src/static/img/icon/downarrow.gif => trunk/etherpad/src/static/img/icon/downarrow.gif rename : trunk/trunk/etherpad/src/static/img/icon/feed.gif => trunk/etherpad/src/static/img/icon/feed.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/backgrad.gif => trunk/etherpad/src/static/img/jun09/pad/backgrad.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/bottomareagfx.gif => trunk/etherpad/src/static/img/jun09/pad/bottomareagfx.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/colorpicker.gif => trunk/etherpad/src/static/img/jun09/pad/colorpicker.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/connectingbar.gif => trunk/etherpad/src/static/img/jun09/pad/connectingbar.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/connectionindicator.gif => trunk/etherpad/src/static/img/jun09/pad/connectionindicator.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docbarstates.png => trunk/etherpad/src/static/img/jun09/pad/docbarstates.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docbarstates2.png => trunk/etherpad/src/static/img/jun09/pad/docbarstates2.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docbarstates3.png => trunk/etherpad/src/static/img/jun09/pad/docbarstates3.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docpaneledge.png => trunk/etherpad/src/static/img/jun09/pad/docpaneledge.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docpaneledge2.png => trunk/etherpad/src/static/img/jun09/pad/docpaneledge2.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle.png => trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle2.png => trunk/etherpad/src/static/img/jun09/pad/docpanelmiddle2.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/editbar.gif => trunk/etherpad/src/static/img/jun09/pad/editbar.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/editbar2.gif => trunk/etherpad/src/static/img/jun09/pad/editbar2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/editbar3.gif => trunk/etherpad/src/static/img/jun09/pad/editbar3.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/editbarback.gif => trunk/etherpad/src/static/img/jun09/pad/editbarback.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/feedbackbox2.gif => trunk/etherpad/src/static/img/jun09/pad/feedbackbox2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/fileicons.gif => trunk/etherpad/src/static/img/jun09/pad/fileicons.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/hdraggie.gif => trunk/etherpad/src/static/img/jun09/pad/hdraggie.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/inviteshare.gif => trunk/etherpad/src/static/img/jun09/pad/inviteshare.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/inviteshare2.gif => trunk/etherpad/src/static/img/jun09/pad/inviteshare2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/layoutbuttons.gif => trunk/etherpad/src/static/img/jun09/pad/layoutbuttons.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/overlay.png => trunk/etherpad/src/static/img/jun09/pad/overlay.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/overlay2.png => trunk/etherpad/src/static/img/jun09/pad/overlay2.png rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop.gif => trunk/etherpad/src/static/img/jun09/pad/padtop.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop2.gif => trunk/etherpad/src/static/img/jun09/pad/padtop2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop3.gif => trunk/etherpad/src/static/img/jun09/pad/padtop3.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop4.gif => trunk/etherpad/src/static/img/jun09/pad/padtop4.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtop5.gif => trunk/etherpad/src/static/img/jun09/pad/padtop5.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtopback.gif => trunk/etherpad/src/static/img/jun09/pad/padtopback.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/padtopback2.gif => trunk/etherpad/src/static/img/jun09/pad/padtopback2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/protop.gif => trunk/etherpad/src/static/img/jun09/pad/protop.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/public.gif => trunk/etherpad/src/static/img/jun09/pad/public.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/savedrevarrows.gif => trunk/etherpad/src/static/img/jun09/pad/savedrevarrows.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif => trunk/etherpad/src/static/img/jun09/pad/savedrevsgfx2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/sharebox2.gif => trunk/etherpad/src/static/img/jun09/pad/sharebox2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/sharebox3.gif => trunk/etherpad/src/static/img/jun09/pad/sharebox3.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/sharebox4.gif => trunk/etherpad/src/static/img/jun09/pad/sharebox4.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/sharedistri.gif => trunk/etherpad/src/static/img/jun09/pad/sharedistri.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/syncdone.gif => trunk/etherpad/src/static/img/jun09/pad/syncdone.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/syncing.gif => trunk/etherpad/src/static/img/jun09/pad/syncing.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/syncing2.gif => trunk/etherpad/src/static/img/jun09/pad/syncing2.gif rename : trunk/trunk/etherpad/src/static/img/jun09/pad/viewbargfx.gif => trunk/etherpad/src/static/img/jun09/pad/viewbargfx.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-cyan-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-gloss-semitransparent-menu-item-hover.png rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-human-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-osx-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-bg.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-vista-menu-item-hover.gif rename : trunk/trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif => trunk/etherpad/src/static/img/lib/jquery.contextmenu.images/cmenu-xp-bg.gif rename : trunk/trunk/etherpad/src/static/img/may09/bold.gif => trunk/etherpad/src/static/img/may09/bold.gif rename : trunk/trunk/etherpad/src/static/img/may09/doc.gif => trunk/etherpad/src/static/img/may09/doc.gif rename : trunk/trunk/etherpad/src/static/img/may09/doc.png => trunk/etherpad/src/static/img/may09/doc.png rename : trunk/trunk/etherpad/src/static/img/may09/html.gif => trunk/etherpad/src/static/img/may09/html.gif rename : trunk/trunk/etherpad/src/static/img/may09/html.png => trunk/etherpad/src/static/img/may09/html.png rename : trunk/trunk/etherpad/src/static/img/may09/italic.gif => trunk/etherpad/src/static/img/may09/italic.gif rename : trunk/trunk/etherpad/src/static/img/may09/leftarrow.gif => trunk/etherpad/src/static/img/may09/leftarrow.gif rename : trunk/trunk/etherpad/src/static/img/may09/leftarrow2.gif => trunk/etherpad/src/static/img/may09/leftarrow2.gif rename : trunk/trunk/etherpad/src/static/img/may09/link.gif => trunk/etherpad/src/static/img/may09/link.gif rename : trunk/trunk/etherpad/src/static/img/may09/link.png => trunk/etherpad/src/static/img/may09/link.png rename : trunk/trunk/etherpad/src/static/img/may09/odt.gif => trunk/etherpad/src/static/img/may09/odt.gif rename : trunk/trunk/etherpad/src/static/img/may09/odt.png => trunk/etherpad/src/static/img/may09/odt.png rename : trunk/trunk/etherpad/src/static/img/may09/padlock.gif => trunk/etherpad/src/static/img/may09/padlock.gif rename : trunk/trunk/etherpad/src/static/img/may09/padlockopen.gif => trunk/etherpad/src/static/img/may09/padlockopen.gif rename : trunk/trunk/etherpad/src/static/img/may09/passwordlocked.gif => trunk/etherpad/src/static/img/may09/passwordlocked.gif rename : trunk/trunk/etherpad/src/static/img/may09/passwordlocked_cropped.gif => trunk/etherpad/src/static/img/may09/passwordlocked_cropped.gif rename : trunk/trunk/etherpad/src/static/img/may09/passwordnone.gif => trunk/etherpad/src/static/img/may09/passwordnone.gif rename : trunk/trunk/etherpad/src/static/img/may09/paypal.gif => trunk/etherpad/src/static/img/may09/paypal.gif rename : trunk/trunk/etherpad/src/static/img/may09/pdf.gif => trunk/etherpad/src/static/img/may09/pdf.gif rename : trunk/trunk/etherpad/src/static/img/may09/pdf.png => trunk/etherpad/src/static/img/may09/pdf.png rename : trunk/trunk/etherpad/src/static/img/may09/redo.gif => trunk/etherpad/src/static/img/may09/redo.gif rename : trunk/trunk/etherpad/src/static/img/may09/txt.gif => trunk/etherpad/src/static/img/may09/txt.gif rename : trunk/trunk/etherpad/src/static/img/may09/txt.png => trunk/etherpad/src/static/img/may09/txt.png rename : trunk/trunk/etherpad/src/static/img/may09/underline.gif => trunk/etherpad/src/static/img/may09/underline.gif rename : trunk/trunk/etherpad/src/static/img/may09/undo.gif => trunk/etherpad/src/static/img/may09/undo.gif rename : trunk/trunk/etherpad/src/static/img/miniplane.gif => trunk/etherpad/src/static/img/miniplane.gif rename : trunk/trunk/etherpad/src/static/img/misc/diagnostic-links.gif => trunk/etherpad/src/static/img/misc/diagnostic-links.gif rename : trunk/trunk/etherpad/src/static/img/misc/status-ball.gif => trunk/etherpad/src/static/img/misc/status-ball.gif rename : trunk/trunk/etherpad/src/static/img/misc/traclogo.gif => trunk/etherpad/src/static/img/misc/traclogo.gif rename : trunk/trunk/etherpad/src/static/img/oct/atlonglast.gif => trunk/etherpad/src/static/img/oct/atlonglast.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner1.jpg => trunk/etherpad/src/static/img/oct/banner1.jpg rename : trunk/trunk/etherpad/src/static/img/oct/banner2.jpg => trunk/etherpad/src/static/img/oct/banner2.jpg rename : trunk/trunk/etherpad/src/static/img/oct/banner3.jpg => trunk/etherpad/src/static/img/oct/banner3.jpg rename : trunk/trunk/etherpad/src/static/img/oct/banner4.jpg => trunk/etherpad/src/static/img/oct/banner4.jpg rename : trunk/trunk/etherpad/src/static/img/oct/banner5.gif => trunk/etherpad/src/static/img/oct/banner5.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner6.gif => trunk/etherpad/src/static/img/oct/banner6.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner7.gif => trunk/etherpad/src/static/img/oct/banner7.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner8.gif => trunk/etherpad/src/static/img/oct/banner8.gif rename : trunk/trunk/etherpad/src/static/img/oct/banner9.gif => trunk/etherpad/src/static/img/oct/banner9.gif rename : trunk/trunk/etherpad/src/static/img/oct/bannerback5.gif => trunk/etherpad/src/static/img/oct/bannerback5.gif rename : trunk/trunk/etherpad/src/static/img/oct/bannerback6.gif => trunk/etherpad/src/static/img/oct/bannerback6.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback1.gif => trunk/etherpad/src/static/img/oct/bodyback1.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback2.gif => trunk/etherpad/src/static/img/oct/bodyback2.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback3.gif => trunk/etherpad/src/static/img/oct/bodyback3.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback4.gif => trunk/etherpad/src/static/img/oct/bodyback4.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodyback5.gif => trunk/etherpad/src/static/img/oct/bodyback5.gif rename : trunk/trunk/etherpad/src/static/img/oct/bodybacktop1.gif => trunk/etherpad/src/static/img/oct/bodybacktop1.gif rename : trunk/trunk/etherpad/src/static/img/oct/computers.gif => trunk/etherpad/src/static/img/oct/computers.gif rename : trunk/trunk/etherpad/src/static/img/oct/computers2.gif => trunk/etherpad/src/static/img/oct/computers2.gif rename : trunk/trunk/etherpad/src/static/img/oct/glossyblue.gif => trunk/etherpad/src/static/img/oct/glossyblue.gif rename : trunk/trunk/etherpad/src/static/img/oct/glossyblue2.gif => trunk/etherpad/src/static/img/oct/glossyblue2.gif rename : trunk/trunk/etherpad/src/static/img/oct/glossyblueh.gif => trunk/etherpad/src/static/img/oct/glossyblueh.gif rename : trunk/trunk/etherpad/src/static/img/oct/insetrect.gif => trunk/etherpad/src/static/img/oct/insetrect.gif rename : trunk/trunk/etherpad/src/static/img/oct/minilogo1-05e.gif => trunk/etherpad/src/static/img/oct/minilogo1-05e.gif rename : trunk/trunk/etherpad/src/static/img/oct/minilogo1-07f.gif => trunk/etherpad/src/static/img/oct/minilogo1-07f.gif rename : trunk/trunk/etherpad/src/static/img/oct/minilogo3.jpg => trunk/etherpad/src/static/img/oct/minilogo3.jpg rename : trunk/trunk/etherpad/src/static/img/oct/minitopback1.gif => trunk/etherpad/src/static/img/oct/minitopback1.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopback2.gif => trunk/etherpad/src/static/img/oct/minitopback2.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar1-05e.gif => trunk/etherpad/src/static/img/oct/minitopbar1-05e.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar2-05e.gif => trunk/etherpad/src/static/img/oct/minitopbar2-05e.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar2-07f.gif => trunk/etherpad/src/static/img/oct/minitopbar2-07f.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar3.jpg => trunk/etherpad/src/static/img/oct/minitopbar3.jpg rename : trunk/trunk/etherpad/src/static/img/oct/minitopbar4.gif => trunk/etherpad/src/static/img/oct/minitopbar4.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitoplogo1.gif => trunk/etherpad/src/static/img/oct/minitoplogo1.gif rename : trunk/trunk/etherpad/src/static/img/oct/minitoplogo2.gif => trunk/etherpad/src/static/img/oct/minitoplogo2.gif rename : trunk/trunk/etherpad/src/static/img/oct/newpadmain.gif => trunk/etherpad/src/static/img/oct/newpadmain.gif rename : trunk/trunk/etherpad/src/static/img/oct/newpadmainback.gif => trunk/etherpad/src/static/img/oct/newpadmainback.gif rename : trunk/trunk/etherpad/src/static/img/oct/newpadmainbackh.gif => trunk/etherpad/src/static/img/oct/newpadmainbackh.gif rename : trunk/trunk/etherpad/src/static/img/oct/pageshot.png => trunk/etherpad/src/static/img/oct/pageshot.png rename : trunk/trunk/etherpad/src/static/img/oct/pageshotmini.png => trunk/etherpad/src/static/img/oct/pageshotmini.png rename : trunk/trunk/etherpad/src/static/img/oct/sidehead-gradhilite.gif => trunk/etherpad/src/static/img/oct/sidehead-gradhilite.gif rename : trunk/trunk/etherpad/src/static/img/oct/tinytriangle.gif => trunk/etherpad/src/static/img/oct/tinytriangle.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav1.gif => trunk/etherpad/src/static/img/oct/topnav1.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav2.gif => trunk/etherpad/src/static/img/oct/topnav2.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav3.gif => trunk/etherpad/src/static/img/oct/topnav3.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav4.gif => trunk/etherpad/src/static/img/oct/topnav4.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav5.gif => trunk/etherpad/src/static/img/oct/topnav5.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnav6.gif => trunk/etherpad/src/static/img/oct/topnav6.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnavback1.gif => trunk/etherpad/src/static/img/oct/topnavback1.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnavback2.gif => trunk/etherpad/src/static/img/oct/topnavback2.gif rename : trunk/trunk/etherpad/src/static/img/oct/topnavback3.gif => trunk/etherpad/src/static/img/oct/topnavback3.gif rename : trunk/trunk/etherpad/src/static/img/oct/usecasesnavdown.gif => trunk/etherpad/src/static/img/oct/usecasesnavdown.gif rename : trunk/trunk/etherpad/src/static/img/oct/usecasesnavdownh.gif => trunk/etherpad/src/static/img/oct/usecasesnavdownh.gif rename : trunk/trunk/etherpad/src/static/img/oct/usecasesnavup.gif => trunk/etherpad/src/static/img/oct/usecasesnavup.gif rename : trunk/trunk/etherpad/src/static/img/oct/usecasesnavuph.gif => trunk/etherpad/src/static/img/oct/usecasesnavuph.gif rename : trunk/trunk/etherpad/src/static/img/oct/watchscreencast.gif => trunk/etherpad/src/static/img/oct/watchscreencast.gif rename : trunk/trunk/etherpad/src/static/img/pad/animated-orb-orange-12.gif => trunk/etherpad/src/static/img/pad/animated-orb-orange-12.gif rename : trunk/trunk/etherpad/src/static/img/pad/backgrad.png => trunk/etherpad/src/static/img/pad/backgrad.png rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif => trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-eee-20.gif rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif => trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-20.gif rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif => trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-40.gif rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif => trunk/etherpad/src/static/img/pad/backshadow/backshadow-940-20-fff-60.gif rename : trunk/trunk/etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif => trunk/etherpad/src/static/img/pad/backshadow/botshadow-940-20-eee-20.gif rename : trunk/trunk/etherpad/src/static/img/pad/etherpad-logo-small-grad.gif => trunk/etherpad/src/static/img/pad/etherpad-logo-small-grad.gif rename : trunk/trunk/etherpad/src/static/img/pad/etherpad-logo-small.gif => trunk/etherpad/src/static/img/pad/etherpad-logo-small.gif rename : trunk/trunk/etherpad/src/static/img/pad/etherpad-logo-small2.gif => trunk/etherpad/src/static/img/pad/etherpad-logo-small2.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow-down.gif => trunk/etherpad/src/static/img/pad/expandy-arrow-down.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow-right.gif => trunk/etherpad/src/static/img/pad/expandy-arrow-right.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow6-down-active.gif => trunk/etherpad/src/static/img/pad/expandy-arrow6-down-active.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow6-down.gif => trunk/etherpad/src/static/img/pad/expandy-arrow6-down.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow6-right-active.gif => trunk/etherpad/src/static/img/pad/expandy-arrow6-right-active.gif rename : trunk/trunk/etherpad/src/static/img/pad/expandy-arrow6-right.gif => trunk/etherpad/src/static/img/pad/expandy-arrow6-right.gif rename : trunk/trunk/etherpad/src/static/img/pad/header-revgrad.gif => trunk/etherpad/src/static/img/pad/header-revgrad.gif rename : trunk/trunk/etherpad/src/static/img/pad/newpad.gif => trunk/etherpad/src/static/img/pad/newpad.gif rename : trunk/trunk/etherpad/src/static/img/pad/orb-greenred-12.gif => trunk/etherpad/src/static/img/pad/orb-greenred-12.gif rename : trunk/trunk/etherpad/src/static/img/pad/padbg1.jpg => trunk/etherpad/src/static/img/pad/padbg1.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padbg2.jpg => trunk/etherpad/src/static/img/pad/padbg2.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padbg3.jpg => trunk/etherpad/src/static/img/pad/padbg3.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padbg4.jpg => trunk/etherpad/src/static/img/pad/padbg4.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padbg5.jpg => trunk/etherpad/src/static/img/pad/padbg5.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padhead1.jpg => trunk/etherpad/src/static/img/pad/padhead1.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padhead2.jpg => trunk/etherpad/src/static/img/pad/padhead2.jpg rename : trunk/trunk/etherpad/src/static/img/pad/padhead3.jpg => trunk/etherpad/src/static/img/pad/padhead3.jpg rename : trunk/trunk/etherpad/src/static/img/pad/pencil-icon-small-blue.gif => trunk/etherpad/src/static/img/pad/pencil-icon-small-blue.gif rename : trunk/trunk/etherpad/src/static/img/pad/sidehead-grad.gif => trunk/etherpad/src/static/img/pad/sidehead-grad.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/button_depressed.png => trunk/etherpad/src/static/img/pad/timeslider/button_depressed.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/button_undepressed.png => trunk/etherpad/src/static/img/pad/timeslider/button_undepressed.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_button_depressed.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_button_undepressed.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_current_location.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_current_location.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_pause.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_pause.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_play.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_play.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_play_button.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_play_button.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png => trunk/etherpad/src/static/img/pad/timeslider/crushed_timeslider_mockup.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/current_location.gif => trunk/etherpad/src/static/img/pad/timeslider/current_location.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/current_location.png => trunk/etherpad/src/static/img/pad/timeslider/current_location.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/pause.gif => trunk/etherpad/src/static/img/pad/timeslider/pause.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/pause.png => trunk/etherpad/src/static/img/pad/timeslider/pause.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/play.gif => trunk/etherpad/src/static/img/pad/timeslider/play.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/play.png => trunk/etherpad/src/static/img/pad/timeslider/play.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/play_button.png => trunk/etherpad/src/static/img/pad/timeslider/play_button.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/star.gif => trunk/etherpad/src/static/img/pad/timeslider/star.gif rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/star.png => trunk/etherpad/src/static/img/pad/timeslider/star.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/star_selected.png => trunk/etherpad/src/static/img/pad/timeslider/star_selected.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/stepper_buttons.png => trunk/etherpad/src/static/img/pad/timeslider/stepper_buttons.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/timeslider_background.png => trunk/etherpad/src/static/img/pad/timeslider/timeslider_background.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/timeslider_left.png => trunk/etherpad/src/static/img/pad/timeslider/timeslider_left.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/timeslider_mockup.png => trunk/etherpad/src/static/img/pad/timeslider/timeslider_mockup.png rename : trunk/trunk/etherpad/src/static/img/pad/timeslider/timeslider_right.png => trunk/etherpad/src/static/img/pad/timeslider/timeslider_right.png rename : trunk/trunk/etherpad/src/static/img/pricing/free.gif => trunk/etherpad/src/static/img/pricing/free.gif rename : trunk/trunk/etherpad/src/static/img/pricing/group.gif => trunk/etherpad/src/static/img/pricing/group.gif rename : trunk/trunk/etherpad/src/static/img/pricing/on-demand.gif => trunk/etherpad/src/static/img/pricing/on-demand.gif rename : trunk/trunk/etherpad/src/static/img/pricing/private-network.gif => trunk/etherpad/src/static/img/pricing/private-network.gif rename : trunk/trunk/etherpad/src/static/img/pricing/support.gif => trunk/etherpad/src/static/img/pricing/support.gif rename : trunk/trunk/etherpad/src/static/img/pro/billing/cards-button.gif => trunk/etherpad/src/static/img/pro/billing/cards-button.gif rename : trunk/trunk/etherpad/src/static/img/pro/box/blue-boxtop.gif => trunk/etherpad/src/static/img/pro/box/blue-boxtop.gif rename : trunk/trunk/etherpad/src/static/img/pro/buttons/bluebutton120.gif => trunk/etherpad/src/static/img/pro/buttons/bluebutton120.gif rename : trunk/trunk/etherpad/src/static/img/pro/header/pro-header-back.gif => trunk/etherpad/src/static/img/pro/header/pro-header-back.gif rename : trunk/trunk/etherpad/src/static/img/pro/header/pro-header-logo.png => trunk/etherpad/src/static/img/pro/header/pro-header-logo.png rename : trunk/trunk/etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif => trunk/etherpad/src/static/img/pro/header/pro-header-plustopnav-back.gif rename : trunk/trunk/etherpad/src/static/img/pro/padlist/gear-drop.gif => trunk/etherpad/src/static/img/pro/padlist/gear-drop.gif rename : trunk/trunk/etherpad/src/static/img/pro/padlist/paper-icon.gif => trunk/etherpad/src/static/img/pro/padlist/paper-icon.gif rename : trunk/trunk/etherpad/src/static/img/pro/padlist/trash-icon.gif => trunk/etherpad/src/static/img/pro/padlist/trash-icon.gif rename : trunk/trunk/etherpad/src/static/img/pro/topnav/pro-topnav-back.gif => trunk/etherpad/src/static/img/pro/topnav/pro-topnav-back.gif rename : trunk/trunk/etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif => trunk/etherpad/src/static/img/pro/topnav/pro-topnav-notch.gif rename : trunk/trunk/etherpad/src/static/img/tinyplane.gif => trunk/etherpad/src/static/img/tinyplane.gif rename : trunk/trunk/etherpad/src/static/img/wavejet.jpg => trunk/etherpad/src/static/img/wavejet.jpg rename : trunk/trunk/etherpad/src/static/js/ace.js => trunk/etherpad/src/static/js/ace.js rename : trunk/trunk/etherpad/src/static/js/billing.js => trunk/etherpad/src/static/js/billing.js rename : trunk/trunk/etherpad/src/static/js/billing_shared.js => trunk/etherpad/src/static/js/billing_shared.js rename : trunk/trunk/etherpad/src/static/js/broadcast.js => trunk/etherpad/src/static/js/broadcast.js rename : trunk/trunk/etherpad/src/static/js/broadcast_revisions.js => trunk/etherpad/src/static/js/broadcast_revisions.js rename : trunk/trunk/etherpad/src/static/js/broadcast_slider.js => trunk/etherpad/src/static/js/broadcast_slider.js rename : trunk/trunk/etherpad/src/static/js/collab_client.js => trunk/etherpad/src/static/js/collab_client.js rename : trunk/trunk/etherpad/src/static/js/colorutils.js => trunk/etherpad/src/static/js/colorutils.js rename : trunk/trunk/etherpad/src/static/js/confirmation.js => trunk/etherpad/src/static/js/confirmation.js rename : trunk/trunk/etherpad/src/static/js/connection_diagnostics.js => trunk/etherpad/src/static/js/connection_diagnostics.js rename : trunk/trunk/etherpad/src/static/js/cssmanager_client.js => trunk/etherpad/src/static/js/cssmanager_client.js rename : trunk/trunk/etherpad/src/static/js/domline_client.js => trunk/etherpad/src/static/js/domline_client.js rename : trunk/trunk/etherpad/src/static/js/draggable.js => trunk/etherpad/src/static/js/draggable.js rename : trunk/trunk/etherpad/src/static/js/easysync2_client.js => trunk/etherpad/src/static/js/easysync2_client.js rename : trunk/trunk/etherpad/src/static/js/etherpad.js => trunk/etherpad/src/static/js/etherpad.js rename : trunk/trunk/etherpad/src/static/js/jquery-1.2.6.js => trunk/etherpad/src/static/js/jquery-1.2.6.js rename : trunk/trunk/etherpad/src/static/js/jquery-1.3.2.js => trunk/etherpad/src/static/js/jquery-1.3.2.js rename : trunk/trunk/etherpad/src/static/js/json2.js => trunk/etherpad/src/static/js/json2.js rename : trunk/trunk/etherpad/src/static/js/lib/jquery.contextmenu.js => trunk/etherpad/src/static/js/lib/jquery.contextmenu.js rename : trunk/trunk/etherpad/src/static/js/linestylefilter_client.js => trunk/etherpad/src/static/js/linestylefilter_client.js rename : trunk/trunk/etherpad/src/static/js/pad.js.old => trunk/etherpad/src/static/js/pad.js.old rename : trunk/trunk/etherpad/src/static/js/pad2.js => trunk/etherpad/src/static/js/pad2.js rename : trunk/trunk/etherpad/src/static/js/pad_chat.js => trunk/etherpad/src/static/js/pad_chat.js rename : trunk/trunk/etherpad/src/static/js/pad_connectionstatus.js => trunk/etherpad/src/static/js/pad_connectionstatus.js rename : trunk/trunk/etherpad/src/static/js/pad_cookie.js => trunk/etherpad/src/static/js/pad_cookie.js rename : trunk/trunk/etherpad/src/static/js/pad_docbar.js => trunk/etherpad/src/static/js/pad_docbar.js rename : trunk/trunk/etherpad/src/static/js/pad_editbar.js => trunk/etherpad/src/static/js/pad_editbar.js rename : trunk/trunk/etherpad/src/static/js/pad_editor.js => trunk/etherpad/src/static/js/pad_editor.js rename : trunk/trunk/etherpad/src/static/js/pad_impexp.js => trunk/etherpad/src/static/js/pad_impexp.js rename : trunk/trunk/etherpad/src/static/js/pad_modals.js => trunk/etherpad/src/static/js/pad_modals.js rename : trunk/trunk/etherpad/src/static/js/pad_savedrevs.js => trunk/etherpad/src/static/js/pad_savedrevs.js rename : trunk/trunk/etherpad/src/static/js/pad_userlist.js => trunk/etherpad/src/static/js/pad_userlist.js rename : trunk/trunk/etherpad/src/static/js/pad_utils.js => trunk/etherpad/src/static/js/pad_utils.js rename : trunk/trunk/etherpad/src/static/js/pricing.js => trunk/etherpad/src/static/js/pricing.js rename : trunk/trunk/etherpad/src/static/js/pro/guest-knock-client.js => trunk/etherpad/src/static/js/pro/guest-knock-client.js rename : trunk/trunk/etherpad/src/static/js/pro/pro-padlist-client.js => trunk/etherpad/src/static/js/pro/pro-padlist-client.js rename : trunk/trunk/etherpad/src/static/js/pro/signin-client.js => trunk/etherpad/src/static/js/pro/signin-client.js rename : trunk/trunk/etherpad/src/static/js/pulse.jquery.js => trunk/etherpad/src/static/js/pulse.jquery.js rename : trunk/trunk/etherpad/src/static/js/statpage.js => trunk/etherpad/src/static/js/statpage.js rename : trunk/trunk/etherpad/src/static/js/store.js => trunk/etherpad/src/static/js/store.js rename : trunk/trunk/etherpad/src/static/js/swfobject.js => trunk/etherpad/src/static/js/swfobject.js rename : trunk/trunk/etherpad/src/static/js/timeslider.js => trunk/etherpad/src/static/js/timeslider.js rename : trunk/trunk/etherpad/src/static/js/undo-xpopup.js => trunk/etherpad/src/static/js/undo-xpopup.js rename : trunk/trunk/etherpad/src/static/swf/vidplayer.swf => trunk/etherpad/src/static/swf/vidplayer.swf rename : trunk/trunk/etherpad/src/templates/500_body.ejs => trunk/etherpad/src/templates/500_body.ejs rename : trunk/trunk/etherpad/src/templates/beta/signup.ejs => trunk/etherpad/src/templates/beta/signup.ejs rename : trunk/trunk/etherpad/src/templates/email/eepnet_license_info.ejs => trunk/etherpad/src/templates/email/eepnet_license_info.ejs rename : trunk/trunk/etherpad/src/templates/email/eepnet_purchase_receipt.ejs => trunk/etherpad/src/templates/email/eepnet_purchase_receipt.ejs rename : trunk/trunk/etherpad/src/templates/email/padinvite.ejs => trunk/etherpad/src/templates/email/padinvite.ejs rename : trunk/trunk/etherpad/src/templates/email/pro_beta_invite.ejs => trunk/etherpad/src/templates/email/pro_beta_invite.ejs rename : trunk/trunk/etherpad/src/templates/email/pro_payment_failure.ejs => trunk/etherpad/src/templates/email/pro_payment_failure.ejs rename : trunk/trunk/etherpad/src/templates/email/pro_payment_receipt.ejs => trunk/etherpad/src/templates/email/pro_payment_receipt.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedfooter.ejs => trunk/etherpad/src/templates/framed/framedfooter.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedheader-pro.ejs => trunk/etherpad/src/templates/framed/framedheader-pro.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedheader.ejs => trunk/etherpad/src/templates/framed/framedheader.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedpage-pro.ejs => trunk/etherpad/src/templates/framed/framedpage-pro.ejs rename : trunk/trunk/etherpad/src/templates/framed/framedpage.ejs => trunk/etherpad/src/templates/framed/framedpage.ejs rename : trunk/trunk/etherpad/src/templates/html.ejs => trunk/etherpad/src/templates/html.ejs rename : trunk/trunk/etherpad/src/templates/main/home.ejs => trunk/etherpad/src/templates/main/home.ejs rename : trunk/trunk/etherpad/src/templates/main/pro_signup_body.ejs => trunk/etherpad/src/templates/main/pro_signup_body.ejs rename : trunk/trunk/etherpad/src/templates/misc/pad_default.ejs => trunk/etherpad/src/templates/misc/pad_default.ejs rename : trunk/trunk/etherpad/src/templates/notice.ejs => trunk/etherpad/src/templates/notice.ejs rename : trunk/trunk/etherpad/src/templates/pad/create_body.ejs => trunk/etherpad/src/templates/pad/create_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/create_body_rafter.ejs => trunk/etherpad/src/templates/pad/create_body_rafter.ejs rename : trunk/trunk/etherpad/src/templates/pad/exporthtml.ejs => trunk/etherpad/src/templates/pad/exporthtml.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_body.ejs => trunk/etherpad/src/templates/pad/pad_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_body2.ejs => trunk/etherpad/src/templates/pad/pad_body2.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_content.ejs => trunk/etherpad/src/templates/pad/pad_content.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_download_link.ejs => trunk/etherpad/src/templates/pad/pad_download_link.ejs rename : trunk/trunk/etherpad/src/templates/pad/pad_iphone_body.ejs => trunk/etherpad/src/templates/pad/pad_iphone_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/padfull_body.ejs => trunk/etherpad/src/templates/pad/padfull_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/padslider_body.ejs => trunk/etherpad/src/templates/pad/padslider_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/padview_body.ejs => trunk/etherpad/src/templates/pad/padview_body.ejs rename : trunk/trunk/etherpad/src/templates/pad/total_users_exceeded.ejs => trunk/etherpad/src/templates/pad/total_users_exceeded.ejs rename : trunk/trunk/etherpad/src/templates/pro-account/recover.ejs => trunk/etherpad/src/templates/pro-account/recover.ejs rename : trunk/trunk/etherpad/src/templates/pro-account/sign-in.ejs => trunk/etherpad/src/templates/pro-account/sign-in.ejs rename : trunk/trunk/etherpad/src/templates/pro-help/billing.ejs => trunk/etherpad/src/templates/pro-help/billing.ejs rename : trunk/trunk/etherpad/src/templates/pro-help/essentials.ejs => trunk/etherpad/src/templates/pro-help/essentials.ejs rename : trunk/trunk/etherpad/src/templates/pro-help/main.ejs => trunk/etherpad/src/templates/pro-help/main.ejs rename : trunk/trunk/etherpad/src/templates/pro-help/pro-help-template.ejs => trunk/etherpad/src/templates/pro-help/pro-help-template.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/account-welcome-email.ejs => trunk/etherpad/src/templates/pro/account/account-welcome-email.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/create-admin-account.ejs => trunk/etherpad/src/templates/pro/account/create-admin-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/forgot-password-email.ejs => trunk/etherpad/src/templates/pro/account/forgot-password-email.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/forgot-password.ejs => trunk/etherpad/src/templates/pro/account/forgot-password.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs => trunk/etherpad/src/templates/pro/account/global-multi-domain-recover-email.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/guest-knock.ejs => trunk/etherpad/src/templates/pro/account/guest-knock.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/my-account.ejs => trunk/etherpad/src/templates/pro/account/my-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/signin-guest.ejs => trunk/etherpad/src/templates/pro/account/signin-guest.ejs rename : trunk/trunk/etherpad/src/templates/pro/account/signin.ejs => trunk/etherpad/src/templates/pro/account/signin.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/account-manager.ejs => trunk/etherpad/src/templates/pro/admin/account-manager.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/admin-template.ejs => trunk/etherpad/src/templates/pro/admin/admin-template.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/admin.ejs => trunk/etherpad/src/templates/pro/admin/admin.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/billing-invoices.ejs => trunk/etherpad/src/templates/pro/admin/billing-invoices.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/delete-account.ejs => trunk/etherpad/src/templates/pro/admin/delete-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/manage-account.ejs => trunk/etherpad/src/templates/pro/admin/manage-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/manage-billing.ejs => trunk/etherpad/src/templates/pro/admin/manage-billing.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/new-account.ejs => trunk/etherpad/src/templates/pro/admin/new-account.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pne-config.ejs => trunk/etherpad/src/templates/pro/admin/pne-config.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pne-dashboard.ejs => trunk/etherpad/src/templates/pro/admin/pne-dashboard.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pne-license-manager.ejs => trunk/etherpad/src/templates/pro/admin/pne-license-manager.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pne-shell.ejs => trunk/etherpad/src/templates/pro/admin/pne-shell.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/pro-config.ejs => trunk/etherpad/src/templates/pro/admin/pro-config.ejs rename : trunk/trunk/etherpad/src/templates/pro/admin/single-invoice.ejs => trunk/etherpad/src/templates/pro/admin/single-invoice.ejs rename : trunk/trunk/etherpad/src/templates/pro/padlist/pro-padlist.ejs => trunk/etherpad/src/templates/pro/padlist/pro-padlist.ejs rename : trunk/trunk/etherpad/src/templates/pro/pro-payment-required.ejs => trunk/etherpad/src/templates/pro/pro-payment-required.ejs rename : trunk/trunk/etherpad/src/templates/pro/pro_home.ejs => trunk/etherpad/src/templates/pro/pro_home.ejs rename : trunk/trunk/etherpad/src/templates/statistics/stat_page.ejs => trunk/etherpad/src/templates/statistics/stat_page.ejs rename : trunk/trunk/etherpad/src/templates/store/csc-help.ejs => trunk/etherpad/src/templates/store/csc-help.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/billing-info.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/billing-info.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/cart.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/cart.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/checkout-template.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/confirmation.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/confirmation.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/license-info.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/license-info.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/purchase.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/purchase.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/receipt.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/receipt.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/summary.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/summary.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet-checkout/support-contract.ejs => trunk/etherpad/src/templates/store/eepnet-checkout/support-contract.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet_download.ejs => trunk/etherpad/src/templates/store/eepnet_download.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet_eval_nextsteps.ejs => trunk/etherpad/src/templates/store/eepnet_eval_nextsteps.ejs rename : trunk/trunk/etherpad/src/templates/store/eepnet_eval_signup.ejs => trunk/etherpad/src/templates/store/eepnet_eval_signup.ejs rename : trunk/trunk/infrastructure/.gitignore => trunk/infrastructure/.gitignore rename : trunk/trunk/infrastructure/ace/.gitignore => trunk/infrastructure/ace/.gitignore rename : trunk/trunk/infrastructure/ace/bin/backup.sh => trunk/infrastructure/ace/bin/backup.sh rename : trunk/trunk/infrastructure/ace/bin/jsmin.py => trunk/infrastructure/ace/bin/jsmin.py rename : trunk/trunk/infrastructure/ace/bin/make => trunk/infrastructure/ace/bin/make rename : trunk/trunk/infrastructure/ace/bin/publish.sh => trunk/infrastructure/ace/bin/publish.sh rename : trunk/trunk/infrastructure/ace/bin/serve => trunk/infrastructure/ace/bin/serve rename : trunk/trunk/infrastructure/ace/blog.txt => trunk/infrastructure/ace/blog.txt rename : trunk/trunk/infrastructure/ace/build/.gitignore => trunk/infrastructure/ace/build/.gitignore rename : trunk/trunk/infrastructure/ace/build/index.html => trunk/infrastructure/ace/build/index.html rename : trunk/trunk/infrastructure/ace/build/jquery-1.2.1.js => trunk/infrastructure/ace/build/jquery-1.2.1.js rename : trunk/trunk/infrastructure/ace/build/testcode.js => trunk/infrastructure/ace/build/testcode.js rename : trunk/trunk/infrastructure/ace/easysync-notes.txt => trunk/infrastructure/ace/easysync-notes.txt rename : trunk/trunk/infrastructure/ace/lib/rhino-js-1.7r1.jar => trunk/infrastructure/ace/lib/rhino-js-1.7r1.jar rename : trunk/trunk/infrastructure/ace/lib/yuicompressor-2.4-appjet.jar => trunk/infrastructure/ace/lib/yuicompressor-2.4-appjet.jar rename : trunk/trunk/infrastructure/ace/notes.txt => trunk/infrastructure/ace/notes.txt rename : trunk/trunk/infrastructure/ace/www/ace2_common.js => trunk/infrastructure/ace/www/ace2_common.js rename : trunk/trunk/infrastructure/ace/www/ace2_common_dev.js => trunk/infrastructure/ace/www/ace2_common_dev.js rename : trunk/trunk/infrastructure/ace/www/ace2_inner.js => trunk/infrastructure/ace/www/ace2_inner.js rename : trunk/trunk/infrastructure/ace/www/ace2_outer.js => trunk/infrastructure/ace/www/ace2_outer.js rename : trunk/trunk/infrastructure/ace/www/ace2_wrapper.js => trunk/infrastructure/ace/www/ace2_wrapper.js rename : trunk/trunk/infrastructure/ace/www/bbtree.js => trunk/infrastructure/ace/www/bbtree.js rename : trunk/trunk/infrastructure/ace/www/changesettracker.js => trunk/infrastructure/ace/www/changesettracker.js rename : trunk/trunk/infrastructure/ace/www/colorutils.js => trunk/infrastructure/ace/www/colorutils.js rename : trunk/trunk/infrastructure/ace/www/contentcollector.js => trunk/infrastructure/ace/www/contentcollector.js rename : trunk/trunk/infrastructure/ace/www/cssmanager.js => trunk/infrastructure/ace/www/cssmanager.js rename : trunk/trunk/infrastructure/ace/www/dev.html => trunk/infrastructure/ace/www/dev.html rename : trunk/trunk/infrastructure/ace/www/domline.js => trunk/infrastructure/ace/www/domline.js rename : trunk/trunk/infrastructure/ace/www/easy_sync.js => trunk/infrastructure/ace/www/easy_sync.js rename : trunk/trunk/infrastructure/ace/www/easysync2.js => trunk/infrastructure/ace/www/easysync2.js rename : trunk/trunk/infrastructure/ace/www/easysync2_tests.js => trunk/infrastructure/ace/www/easysync2_tests.js rename : trunk/trunk/infrastructure/ace/www/editor.css => trunk/infrastructure/ace/www/editor.css rename : trunk/trunk/infrastructure/ace/www/firebug/errorIcon.png => trunk/infrastructure/ace/www/firebug/errorIcon.png rename : trunk/trunk/infrastructure/ace/www/firebug/firebug.css => trunk/infrastructure/ace/www/firebug/firebug.css rename : trunk/trunk/infrastructure/ace/www/firebug/firebug.html => trunk/infrastructure/ace/www/firebug/firebug.html rename : trunk/trunk/infrastructure/ace/www/firebug/firebug.js => trunk/infrastructure/ace/www/firebug/firebug.js rename : trunk/trunk/infrastructure/ace/www/firebug/firebugx.js => trunk/infrastructure/ace/www/firebug/firebugx.js rename : trunk/trunk/infrastructure/ace/www/firebug/infoIcon.png => trunk/infrastructure/ace/www/firebug/infoIcon.png rename : trunk/trunk/infrastructure/ace/www/firebug/warningIcon.png => trunk/infrastructure/ace/www/firebug/warningIcon.png rename : trunk/trunk/infrastructure/ace/www/index.html => trunk/infrastructure/ace/www/index.html rename : trunk/trunk/infrastructure/ace/www/inner.css => trunk/infrastructure/ace/www/inner.css rename : trunk/trunk/infrastructure/ace/www/jquery-1.2.1.js => trunk/infrastructure/ace/www/jquery-1.2.1.js rename : trunk/trunk/infrastructure/ace/www/lang_html.js => trunk/infrastructure/ace/www/lang_html.js rename : trunk/trunk/infrastructure/ace/www/lang_js.js => trunk/infrastructure/ace/www/lang_js.js rename : trunk/trunk/infrastructure/ace/www/lexer_support.js => trunk/infrastructure/ace/www/lexer_support.js rename : trunk/trunk/infrastructure/ace/www/linestylefilter.js => trunk/infrastructure/ace/www/linestylefilter.js rename : trunk/trunk/infrastructure/ace/www/magicdom.js => trunk/infrastructure/ace/www/magicdom.js rename : trunk/trunk/infrastructure/ace/www/multilang_lexer.js => trunk/infrastructure/ace/www/multilang_lexer.js rename : trunk/trunk/infrastructure/ace/www/processing.js => trunk/infrastructure/ace/www/processing.js rename : trunk/trunk/infrastructure/ace/www/profiler.js => trunk/infrastructure/ace/www/profiler.js rename : trunk/trunk/infrastructure/ace/www/skiplist.js => trunk/infrastructure/ace/www/skiplist.js rename : trunk/trunk/infrastructure/ace/www/spanlist.js => trunk/infrastructure/ace/www/spanlist.js rename : trunk/trunk/infrastructure/ace/www/syntax-new.css => trunk/infrastructure/ace/www/syntax-new.css rename : trunk/trunk/infrastructure/ace/www/syntax.css => trunk/infrastructure/ace/www/syntax.css rename : trunk/trunk/infrastructure/ace/www/test.html => trunk/infrastructure/ace/www/test.html rename : trunk/trunk/infrastructure/ace/www/testcode.js => trunk/infrastructure/ace/www/testcode.js rename : trunk/trunk/infrastructure/ace/www/toSource.js => trunk/infrastructure/ace/www/toSource.js rename : trunk/trunk/infrastructure/ace/www/undomodule.js => trunk/infrastructure/ace/www/undomodule.js rename : trunk/trunk/infrastructure/ace/www/virtual_lines.js => trunk/infrastructure/ace/www/virtual_lines.js rename : trunk/trunk/infrastructure/bin/classpath.sh => trunk/infrastructure/bin/classpath.sh rename : trunk/trunk/infrastructure/bin/comp.sh => trunk/infrastructure/bin/comp.sh rename : trunk/trunk/infrastructure/bin/compilecache.sh => trunk/infrastructure/bin/compilecache.sh rename : trunk/trunk/infrastructure/bin/jscomp.sh => trunk/infrastructure/bin/jscomp.sh rename : trunk/trunk/infrastructure/bin/makejar.sh => trunk/infrastructure/bin/makejar.sh rename : trunk/trunk/infrastructure/bin/makesars.sh => trunk/infrastructure/bin/makesars.sh rename : trunk/trunk/infrastructure/bin/run.sh => trunk/infrastructure/bin/run.sh rename : trunk/trunk/infrastructure/com.etherpad.openofficeservice/importexport.scala => trunk/infrastructure/com.etherpad.openofficeservice/importexport.scala rename : trunk/trunk/infrastructure/com.etherpad/easysync2support.scala => trunk/infrastructure/com.etherpad/easysync2support.scala rename : trunk/trunk/infrastructure/com.etherpad/licensing.scala => trunk/infrastructure/com.etherpad/licensing.scala rename : trunk/trunk/infrastructure/com.etherpad/main.scala => trunk/infrastructure/com.etherpad/main.scala rename : trunk/trunk/infrastructure/framework-src/modules/atomfeed.js => trunk/infrastructure/framework-src/modules/atomfeed.js rename : trunk/trunk/infrastructure/framework-src/modules/blob.js => trunk/infrastructure/framework-src/modules/blob.js rename : trunk/trunk/infrastructure/framework-src/modules/cache_utils.js => trunk/infrastructure/framework-src/modules/cache_utils.js rename : trunk/trunk/infrastructure/framework-src/modules/comet.js => trunk/infrastructure/framework-src/modules/comet.js rename : trunk/trunk/infrastructure/framework-src/modules/dateutils.js => trunk/infrastructure/framework-src/modules/dateutils.js rename : trunk/trunk/infrastructure/framework-src/modules/dispatch.js => trunk/infrastructure/framework-src/modules/dispatch.js rename : trunk/trunk/infrastructure/framework-src/modules/ejs.js => trunk/infrastructure/framework-src/modules/ejs.js rename : trunk/trunk/infrastructure/framework-src/modules/email.js => trunk/infrastructure/framework-src/modules/email.js rename : trunk/trunk/infrastructure/framework-src/modules/exceptionutils.js => trunk/infrastructure/framework-src/modules/exceptionutils.js rename : trunk/trunk/infrastructure/framework-src/modules/execution.js => trunk/infrastructure/framework-src/modules/execution.js rename : trunk/trunk/infrastructure/framework-src/modules/fastJSON.js => trunk/infrastructure/framework-src/modules/fastJSON.js rename : trunk/trunk/infrastructure/framework-src/modules/faststatic.js => trunk/infrastructure/framework-src/modules/faststatic.js rename : trunk/trunk/infrastructure/framework-src/modules/fileutils.js => trunk/infrastructure/framework-src/modules/fileutils.js rename : trunk/trunk/infrastructure/framework-src/modules/funhtml.js => trunk/infrastructure/framework-src/modules/funhtml.js rename : trunk/trunk/infrastructure/framework-src/modules/global/appjet.js => trunk/infrastructure/framework-src/modules/global/appjet.js rename : trunk/trunk/infrastructure/framework-src/modules/global/request.js => trunk/infrastructure/framework-src/modules/global/request.js rename : trunk/trunk/infrastructure/framework-src/modules/global/response.js => trunk/infrastructure/framework-src/modules/global/response.js rename : trunk/trunk/infrastructure/framework-src/modules/image.js => trunk/infrastructure/framework-src/modules/image.js rename : trunk/trunk/infrastructure/framework-src/modules/jsmin.js => trunk/infrastructure/framework-src/modules/jsmin.js rename : trunk/trunk/infrastructure/framework-src/modules/jsutils.js => trunk/infrastructure/framework-src/modules/jsutils.js rename : trunk/trunk/infrastructure/framework-src/modules/netutils.js => trunk/infrastructure/framework-src/modules/netutils.js rename : trunk/trunk/infrastructure/framework-src/modules/profiler.js => trunk/infrastructure/framework-src/modules/profiler.js rename : trunk/trunk/infrastructure/framework-src/modules/sessions.js => trunk/infrastructure/framework-src/modules/sessions.js rename : trunk/trunk/infrastructure/framework-src/modules/sqlbase/persistent_vars.js => trunk/infrastructure/framework-src/modules/sqlbase/persistent_vars.js rename : trunk/trunk/infrastructure/framework-src/modules/sqlbase/sqlbase.js => trunk/infrastructure/framework-src/modules/sqlbase/sqlbase.js rename : trunk/trunk/infrastructure/framework-src/modules/sqlbase/sqlcommon.js => trunk/infrastructure/framework-src/modules/sqlbase/sqlcommon.js rename : trunk/trunk/infrastructure/framework-src/modules/sqlbase/sqlobj.js => trunk/infrastructure/framework-src/modules/sqlbase/sqlobj.js rename : trunk/trunk/infrastructure/framework-src/modules/stringutils.js => trunk/infrastructure/framework-src/modules/stringutils.js rename : trunk/trunk/infrastructure/framework-src/modules/sync.js => trunk/infrastructure/framework-src/modules/sync.js rename : trunk/trunk/infrastructure/framework-src/modules/timer.js => trunk/infrastructure/framework-src/modules/timer.js rename : trunk/trunk/infrastructure/framework-src/modules/varz.js => trunk/infrastructure/framework-src/modules/varz.js rename : trunk/trunk/infrastructure/framework-src/modules/yuicompressor.js => trunk/infrastructure/framework-src/modules/yuicompressor.js rename : trunk/trunk/infrastructure/framework-src/oncomet.js => trunk/infrastructure/framework-src/oncomet.js rename : trunk/trunk/infrastructure/framework-src/onerror.js => trunk/infrastructure/framework-src/onerror.js rename : trunk/trunk/infrastructure/framework-src/onprint.js => trunk/infrastructure/framework-src/onprint.js rename : trunk/trunk/infrastructure/framework-src/onrequest.js => trunk/infrastructure/framework-src/onrequest.js rename : trunk/trunk/infrastructure/framework-src/onreset.js => trunk/infrastructure/framework-src/onreset.js rename : trunk/trunk/infrastructure/framework-src/onsars.js => trunk/infrastructure/framework-src/onsars.js rename : trunk/trunk/infrastructure/framework-src/onscheduledtask.js => trunk/infrastructure/framework-src/onscheduledtask.js rename : trunk/trunk/infrastructure/framework-src/onshutdown.js => trunk/infrastructure/framework-src/onshutdown.js rename : trunk/trunk/infrastructure/framework-src/onstartup.js => trunk/infrastructure/framework-src/onstartup.js rename : trunk/trunk/infrastructure/framework-src/onsyntaxerror.js => trunk/infrastructure/framework-src/onsyntaxerror.js rename : trunk/trunk/infrastructure/framework-src/postamble.js => trunk/infrastructure/framework-src/postamble.js rename : trunk/trunk/infrastructure/framework-src/preamble.js => trunk/infrastructure/framework-src/preamble.js rename : trunk/trunk/infrastructure/framework-src/syntaxerror.js => trunk/infrastructure/framework-src/syntaxerror.js rename : trunk/trunk/infrastructure/lib/activation.jar => trunk/infrastructure/lib/activation.jar rename : trunk/trunk/infrastructure/lib/c3p0-0.9.1.2.jar => trunk/infrastructure/lib/c3p0-0.9.1.2.jar rename : trunk/trunk/infrastructure/lib/commons-lang-2.4.jar => trunk/infrastructure/lib/commons-lang-2.4.jar rename : trunk/trunk/infrastructure/lib/derby-10.5.1.1.jar => trunk/infrastructure/lib/derby-10.5.1.1.jar rename : trunk/trunk/infrastructure/lib/derbytools.jar => trunk/infrastructure/lib/derbytools.jar rename : trunk/trunk/infrastructure/lib/dnsjava-2.0.6.jar => trunk/infrastructure/lib/dnsjava-2.0.6.jar rename : trunk/trunk/infrastructure/lib/jetty-6.1.20.jar => trunk/infrastructure/lib/jetty-6.1.20.jar rename : trunk/trunk/infrastructure/lib/jetty-sslengine-6.1.20.jar => trunk/infrastructure/lib/jetty-sslengine-6.1.20.jar rename : trunk/trunk/infrastructure/lib/jetty-util-6.1.20.jar => trunk/infrastructure/lib/jetty-util-6.1.20.jar rename : trunk/trunk/infrastructure/lib/json.jar => trunk/infrastructure/lib/json.jar rename : trunk/trunk/infrastructure/lib/mail.jar => trunk/infrastructure/lib/mail.jar rename : trunk/trunk/infrastructure/lib/manifest => trunk/infrastructure/lib/manifest rename : trunk/trunk/infrastructure/lib/rhino-js-1.7r1.jar => trunk/infrastructure/lib/rhino-js-1.7r1.jar rename : trunk/trunk/infrastructure/lib/sanselan-0.94aj.jar => trunk/infrastructure/lib/sanselan-0.94aj.jar rename : trunk/trunk/infrastructure/lib/servlet-api-2.5-20081211.jar => trunk/infrastructure/lib/servlet-api-2.5-20081211.jar rename : trunk/trunk/infrastructure/lib/tagsoup-1.2.jar => trunk/infrastructure/lib/tagsoup-1.2.jar rename : trunk/trunk/infrastructure/lib/yuicompressor-2.4-appjet.jar => trunk/infrastructure/lib/yuicompressor-2.4-appjet.jar rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala => trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala => trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js => trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html => trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/streaming.scala => trunk/infrastructure/net.appjet.ajstdlib/streaming.scala rename : trunk/trunk/infrastructure/net.appjet.ajstdlib/timer.scala => trunk/infrastructure/net.appjet.ajstdlib/timer.scala rename : trunk/trunk/infrastructure/net.appjet.bodylock/bodylock.scala => trunk/infrastructure/net.appjet.bodylock/bodylock.scala rename : trunk/trunk/infrastructure/net.appjet.bodylock/compressor.scala => trunk/infrastructure/net.appjet.bodylock/compressor.scala rename : trunk/trunk/infrastructure/net.appjet.common.cli/cli.scala => trunk/infrastructure/net.appjet.common.cli/cli.scala rename : trunk/trunk/infrastructure/net.appjet.common.sars/sars.scala => trunk/infrastructure/net.appjet.common.sars/sars.scala rename : trunk/trunk/infrastructure/net.appjet.common.sars/sha1.scala => trunk/infrastructure/net.appjet.common.sars/sha1.scala rename : trunk/trunk/infrastructure/net.appjet.common/rhino/rhinospect.scala => trunk/infrastructure/net.appjet.common/rhino/rhinospect.scala rename : trunk/trunk/infrastructure/net.appjet.common/util/BCrypt.java => trunk/infrastructure/net.appjet.common/util/BCrypt.java rename : trunk/trunk/infrastructure/net.appjet.common/util/BetterFile.java => trunk/infrastructure/net.appjet.common/util/BetterFile.java rename : trunk/trunk/infrastructure/net.appjet.common/util/ClassReload.java => trunk/infrastructure/net.appjet.common/util/ClassReload.java rename : trunk/trunk/infrastructure/net.appjet.common/util/ExpiringMapping.java => trunk/infrastructure/net.appjet.common/util/ExpiringMapping.java rename : trunk/trunk/infrastructure/net.appjet.common/util/HttpServletRequestFactory.java => trunk/infrastructure/net.appjet.common/util/HttpServletRequestFactory.java rename : trunk/trunk/infrastructure/net.appjet.common/util/LenientFormatter.java => trunk/infrastructure/net.appjet.common/util/LenientFormatter.java rename : trunk/trunk/infrastructure/net.appjet.common/util/LimitedSizeMapping.java => trunk/infrastructure/net.appjet.common/util/LimitedSizeMapping.java rename : trunk/trunk/infrastructure/net.appjet.oui/ConfigParam.java => trunk/infrastructure/net.appjet.oui/ConfigParam.java rename : trunk/trunk/infrastructure/net.appjet.oui/FastJSON.scala => trunk/infrastructure/net.appjet.oui/FastJSON.scala rename : trunk/trunk/infrastructure/net.appjet.oui/GeneratedConfigParam.java => trunk/infrastructure/net.appjet.oui/GeneratedConfigParam.java rename : trunk/trunk/infrastructure/net.appjet.oui/config.scala => trunk/infrastructure/net.appjet.oui/config.scala rename : trunk/trunk/infrastructure/net.appjet.oui/dynamicvar.scala => trunk/infrastructure/net.appjet.oui/dynamicvar.scala rename : trunk/trunk/infrastructure/net.appjet.oui/encryption.scala => trunk/infrastructure/net.appjet.oui/encryption.scala rename : trunk/trunk/infrastructure/net.appjet.oui/execution.scala => trunk/infrastructure/net.appjet.oui/execution.scala rename : trunk/trunk/infrastructure/net.appjet.oui/files.scala => trunk/infrastructure/net.appjet.oui/files.scala rename : trunk/trunk/infrastructure/net.appjet.oui/logging.scala => trunk/infrastructure/net.appjet.oui/logging.scala rename : trunk/trunk/infrastructure/net.appjet.oui/main.scala => trunk/infrastructure/net.appjet.oui/main.scala rename : trunk/trunk/infrastructure/net.appjet.oui/monitoring.scala => trunk/infrastructure/net.appjet.oui/monitoring.scala rename : trunk/trunk/infrastructure/net.appjet.oui/network.scala => trunk/infrastructure/net.appjet.oui/network.scala rename : trunk/trunk/infrastructure/net.appjet.oui/servermodel.scala => trunk/infrastructure/net.appjet.oui/servermodel.scala rename : trunk/trunk/infrastructure/net.appjet.oui/stats.scala => trunk/infrastructure/net.appjet.oui/stats.scala rename : trunk/trunk/infrastructure/net.appjet.oui/synchronizer.scala => trunk/infrastructure/net.appjet.oui/synchronizer.scala rename : trunk/trunk/infrastructure/net.appjet.oui/util.scala => trunk/infrastructure/net.appjet.oui/util.scala rename : trunk/trunk/infrastructure/rhino1_7R1/apiClasses.properties => trunk/infrastructure/rhino1_7R1/apiClasses.properties rename : trunk/trunk/infrastructure/rhino1_7R1/build-date => trunk/infrastructure/rhino1_7R1/build-date rename : trunk/trunk/infrastructure/rhino1_7R1/build.properties => trunk/infrastructure/rhino1_7R1/build.properties rename : trunk/trunk/infrastructure/rhino1_7R1/build.xml => trunk/infrastructure/rhino1_7R1/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/build.xml => trunk/infrastructure/rhino1_7R1/deprecatedsrc/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/ClassDefinitionException.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/NotAFunctionException.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/PropertyException.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/LogicalEquality.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/Namespace.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/NamespaceHelper.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/QName.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XML.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLCtor.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLLibImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLList.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLName.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLObjectImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java => trunk/infrastructure/rhino1_7R1/deprecatedsrc/org/mozilla/javascript/xml/impl/xmlbeans/XMLWithScope.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Control.java => trunk/infrastructure/rhino1_7R1/examples/Control.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Counter.java => trunk/infrastructure/rhino1_7R1/examples/Counter.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/CounterTest.java => trunk/infrastructure/rhino1_7R1/examples/CounterTest.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/DynamicScopes.java => trunk/infrastructure/rhino1_7R1/examples/DynamicScopes.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/E4X/e4x_example.js => trunk/infrastructure/rhino1_7R1/examples/E4X/e4x_example.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/File.java => trunk/infrastructure/rhino1_7R1/examples/File.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Foo.java => trunk/infrastructure/rhino1_7R1/examples/Foo.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Matrix.java => trunk/infrastructure/rhino1_7R1/examples/Matrix.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/NervousText.html => trunk/infrastructure/rhino1_7R1/examples/NervousText.html rename : trunk/trunk/infrastructure/rhino1_7R1/examples/NervousText.js => trunk/infrastructure/rhino1_7R1/examples/NervousText.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java => trunk/infrastructure/rhino1_7R1/examples/PrimitiveWrapFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/RunScript.java => trunk/infrastructure/rhino1_7R1/examples/RunScript.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/RunScript2.java => trunk/infrastructure/rhino1_7R1/examples/RunScript2.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/RunScript3.java => trunk/infrastructure/rhino1_7R1/examples/RunScript3.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/RunScript4.java => trunk/infrastructure/rhino1_7R1/examples/RunScript4.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/Shell.java => trunk/infrastructure/rhino1_7R1/examples/Shell.java rename : trunk/trunk/infrastructure/rhino1_7R1/examples/SwingApplication.js => trunk/infrastructure/rhino1_7R1/examples/SwingApplication.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/checkParam.js => trunk/infrastructure/rhino1_7R1/examples/checkParam.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/enum.js => trunk/infrastructure/rhino1_7R1/examples/enum.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/jsdoc.js => trunk/infrastructure/rhino1_7R1/examples/jsdoc.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/liveConnect.js => trunk/infrastructure/rhino1_7R1/examples/liveConnect.js rename : trunk/trunk/infrastructure/rhino1_7R1/examples/unique.js => trunk/infrastructure/rhino1_7R1/examples/unique.js rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/allclasses-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/allclasses-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html => trunk/infrastructure/rhino1_7R1/javadoc/allclasses-noframe.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/constant-values.html => trunk/infrastructure/rhino1_7R1/javadoc/constant-values.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/deprecated-list.html => trunk/infrastructure/rhino1_7R1/javadoc/deprecated-list.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/help-doc.html => trunk/infrastructure/rhino1_7R1/javadoc/help-doc.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/index-all.html => trunk/infrastructure/rhino1_7R1/javadoc/index-all.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/index.html => trunk/infrastructure/rhino1_7R1/javadoc/index.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Callable.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassCache.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ClassShutter.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/CompilerEnvirons.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Context.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextAction.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.Listener.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ContextFactory.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EcmaError.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ErrorReporter.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/EvaluatorException.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Function.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/FunctionObject.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/GeneratedClassLoader.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ImporterTopLevel.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/JavaScriptException.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RefCallable.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/RhinoException.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Script.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Scriptable.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/ScriptableObject.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/SecurityController.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Synchronizer.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrapFactory.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/WrappedException.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/Wrapper.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/DebuggableScript.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/debug/package-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/ClassCompiler.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/optimizer/package-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/package-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableInputStream.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/ScriptableOutputStream.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/org/mozilla/javascript/serialize/package-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/overview-frame.html => trunk/infrastructure/rhino1_7R1/javadoc/overview-frame.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/overview-summary.html => trunk/infrastructure/rhino1_7R1/javadoc/overview-summary.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/overview-tree.html => trunk/infrastructure/rhino1_7R1/javadoc/overview-tree.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/package-list => trunk/infrastructure/rhino1_7R1/javadoc/package-list rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/resources/inherit.gif => trunk/infrastructure/rhino1_7R1/javadoc/resources/inherit.gif rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/serialized-form.html => trunk/infrastructure/rhino1_7R1/javadoc/serialized-form.html rename : trunk/trunk/infrastructure/rhino1_7R1/javadoc/stylesheet.css => trunk/infrastructure/rhino1_7R1/javadoc/stylesheet.css rename : trunk/trunk/infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar => trunk/infrastructure/rhino1_7R1/lib/jsr173_1.0_api.jar rename : trunk/trunk/infrastructure/rhino1_7R1/lib/xbean.jar => trunk/infrastructure/rhino1_7R1/lib/xbean.jar rename : trunk/trunk/infrastructure/rhino1_7R1/src/build.xml => trunk/infrastructure/rhino1_7R1/src/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/src/manifest => trunk/infrastructure/rhino1_7R1/src/manifest rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ByteCode.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/classfile/ClassFileWriter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Arguments.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/BaseFunction.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Callable.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassCache.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ClassShutter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/CompilerEnvirons.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ConstProperties.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Context.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextAction.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ContextListener.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DToA.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Decompiler.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefaultErrorReporter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/DefiningClassLoader.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Delegator.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EcmaError.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ErrorReporter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Evaluator.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/EvaluatorException.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Function.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionNode.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/FunctionObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/GeneratedClassLoader.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IRFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionCall.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdFunctionObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/IdScriptableObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ImporterTopLevel.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InformativeParser.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterfaceAdapter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpretedFunction.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Interpreter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/InterpreterData.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaAdapter.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaMembers.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/JavaScriptException.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Kit.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/LazilyLoadedCtor.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/MemberBox.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeArray.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeBoolean.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeCall.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeDate.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeError.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeFunction.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGenerator.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeGlobal.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeIterator.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaArray.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaClass.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaConstructor.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaMethod.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaPackage.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeJavaTopPackage.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeMath.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeNumber.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeScript.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeString.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NativeWith.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Node.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/NodeTransformer.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjArray.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ObjToIntMap.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Parser.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/PolicySecurityController.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Ref.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RefCallable.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RegExpProxy.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/RhinoException.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Script.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptOrFnNode.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptRuntime.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Scriptable.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/ScriptableObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecureCaller.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityController.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SecurityUtilities.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/SpecialRef.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Synchronizer.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Token.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/TokenStream.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UintMap.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Undefined.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/UniqueTag.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/VMBridge.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrapFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/WrappedException.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/Wrapper.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/continuations/Continuation.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebugFrame.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/DebuggableScript.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/debug/Debugger.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk11/VMBridge_jdk11.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk13/VMBridge_jdk13.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/jdk15/VMBridge_jdk15.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Block.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/ClassCompiler.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Codegen.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/DataFlowBitSet.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptFunctionNode.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptRuntime.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/OptTransformer.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/optimizer/Optimizer.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExp.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/NativeRegExpCtor.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/RegExpImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/regexp/SubString.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages.properties rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/resources/Messages_fr.properties rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableInputStream.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/serialize/ScriptableOutputStream.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLLib.java rename : trunk/trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java => trunk/infrastructure/rhino1_7R1/src/org/mozilla/javascript/xml/XMLObject.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/base.skip => trunk/infrastructure/rhino1_7R1/testsrc/base.skip rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/build.xml => trunk/infrastructure/rhino1_7R1/testsrc/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/opt1.skip => trunk/infrastructure/rhino1_7R1/testsrc/opt1.skip rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/JsDriver.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/ShellTest.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/StandardTests.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/drivers/results.html rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/Bug409702Test.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java rename : trunk/trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java => trunk/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/PrivateAccessClass.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/build.xml => trunk/infrastructure/rhino1_7R1/toolsrc/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/ToolErrorReporter.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Dim.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/GuiCallback.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/Main.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/ScopeProvider.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/SwingGui.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/debugger/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/CodePrinter.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/FileBody.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/IdValuePair.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/Main.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/idswitch/SwitchGenerator.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/jsc/Main.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/resources/Messages.properties rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ConsoleTextArea.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Environment.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Global.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JSConsole.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/JavaPolicySecurity.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/Main.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/QuitAction.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/SecurityProxy.java rename : trunk/trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java => trunk/infrastructure/rhino1_7R1/toolsrc/org/mozilla/javascript/tools/shell/ShellContextFactory.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/build.xml => trunk/infrastructure/rhino1_7R1/xmlimplsrc/build.xml rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/Namespace.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/QName.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XML.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLCtor.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLLibImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLList.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLName.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLObjectImpl.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XMLWithScope.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlNode.java rename : trunk/trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java => trunk/infrastructure/rhino1_7R1/xmlimplsrc/org/mozilla/javascript/xmlimpl/XmlProcessor.java rename : trunk/trunk/infrastructure/yuicompressor/lib/jargs-1.0.jar => trunk/infrastructure/yuicompressor/lib/jargs-1.0.jar rename : trunk/trunk/infrastructure/yuicompressor/lib/rhino-yuicompressor.jar => trunk/infrastructure/yuicompressor/lib/rhino-yuicompressor.jar rename : trunk/trunk/infrastructure/yuicompressor/make.sh => trunk/infrastructure/yuicompressor/make.sh rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/Bootstrap.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/CssCompressor.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JarClassLoader.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptCompressor.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptIdentifier.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/JavaScriptToken.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/ScriptOrFnScope.java rename : trunk/trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java => trunk/infrastructure/yuicompressor/src/com/yahoo/platform/yui/compressor/YUICompressor.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Decompiler.java.orig rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Parser.java.orig rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/Token.java.orig rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java rename : trunk/trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig => trunk/infrastructure/yuicompressor/src/yuicompressor/org/mozilla/javascript/TokenStream.java.orig
Diffstat (limited to 'trunk/infrastructure/net.appjet.ajstdlib')
-rw-r--r--trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala253
-rw-r--r--trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala563
-rw-r--r--trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js920
-rw-r--r--trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html76
-rw-r--r--trunk/infrastructure/net.appjet.ajstdlib/streaming.scala892
-rw-r--r--trunk/infrastructure/net.appjet.ajstdlib/timer.scala85
6 files changed, 2789 insertions, 0 deletions
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala b/trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala
new file mode 100644
index 0000000..8d285af
--- /dev/null
+++ b/trunk/infrastructure/net.appjet.ajstdlib/ajstdlib.scala
@@ -0,0 +1,253 @@
+/**
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.appjet.ajstdlib;
+
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.concurrent.{ScheduledThreadPoolExecutor, Callable};
+import scala.collection.mutable.{HashMap, SynchronizedMap};
+
+import org.mozilla.javascript.{Context, ScriptableObject, Function, RhinoException, Scriptable};
+
+import net.appjet.oui.{SpecialJarOrNotFile, DiskLibrary, FixedDiskLibrary, VariableDiskLibrary, ExecutionContext, ExecutionContextUtils, ScopeReuseManager, config, exceptionlog};
+import net.appjet.bodylock.{BodyLock, ExecutionException};
+import net.appjet.common.util.LenientFormatter;
+
+import org.mortbay.jetty.nio.SelectChannelConnector;
+import org.mortbay.util.ajax.ContinuationSupport;
+
+object ajstdlib {
+ def runModuleInNewScope(cx: ExecutionContext, moduleName: String): Any = {
+ val newScope = BodyLock.subScope(cx.runner.globalScope);
+ if (! libraryExists(moduleName))
+ return Context.getUndefinedValue(); // unfortunately, returning "false" doesn't really do the right thing here.
+ try {
+ libraryExecutable(moduleName).execute(newScope);
+ } catch {
+ case e: ExecutionException => throw e;
+ case e => throw new ExecutionException("Error occurred while running module: "+moduleName, e);
+ // TODO: There was code here to print errors to the response if something didn't compile. Replace this code?
+ }
+ newScope;
+ }
+
+ private val modules = new HashMap[String, DiskLibrary] with SynchronizedMap[String, DiskLibrary];
+ private def library(name: String) = modules.getOrElseUpdate(name+".js", new VariableDiskLibrary(name+".js"));
+ private def libraryExists(name: String) = {
+ val lib = library(name);
+ // ScopeReuseManager.watch(lib);
+ lib.exists;
+ }
+ private def libraryExecutable(name: String) = {
+ val lib = library(name);
+ // ScopeReuseManager.watch(lib);
+ lib.executable;
+ }
+
+ val globalLock = new ReentrantLock();
+ val attributes = new HashMap[String, Any] with SynchronizedMap[String, Any];
+
+ def init() {
+ // any other ajstdlib initialization goes here.
+ Comet.init();
+ }
+}
+
+object printf {
+ def printf(format: String, list: Array[Object]): String = {
+// val list: Array[Object] = new Array[Object](argList.getLength)
+// for (i <- List.range(0, list.length))
+// list(i) = argList.getElement(i).getOrElse(null) match {
+// case AppVM.JSNumber(n) => n
+// case AppVM.JSString(s) => s
+// case AppVM.JSBoolean(b) => b
+// case _ => null
+// }
+ val args = list.map(x => Context.jsToJava(x, classOf[Object]));
+ try {
+ val fmt = new LenientFormatter()
+ fmt.format(format, args: _*)
+ fmt.toString()
+ } catch {
+ case e: java.util.IllegalFormatException =>
+ throw new ExecutionException("String Format Error: <tt>printf</tt> error: "+e.getMessage(), e)
+ }
+ }
+}
+
+
+import java.security.MessageDigest;
+
+object md5 {
+ def md5(input: String): String = {
+ val bytes = input.getBytes("UTF-8");
+ md5(bytes);
+ }
+ def md5(bytes: Array[byte]): String = {
+ var md = MessageDigest.getInstance("MD5");
+ var digest = md.digest(bytes);
+ var builder = new StringBuilder();
+ for (b <- digest) {
+ builder.append(Integer.toString((b >> 4) & 0xf, 16));
+ builder.append(Integer.toString(b & 0xf, 16));
+ }
+ builder.toString();
+ }
+}
+
+object execution {
+ def runAsync(ec: ExecutionContext, f: Function) {
+ ec.asyncs += f;
+ }
+
+ def executeCodeInNewScope(parentScope: Scriptable,
+ code: String, name: String,
+ startLine: Int): Scriptable = {
+ val ec = ExecutionContextUtils.currentContext;
+ val executable =
+ try {
+ BodyLock.compileString(code, name, startLine);
+ } catch {
+ case e: RhinoException =>
+ throw new ExecutionException(
+ "Failed to execute code in new scope.", e);
+ }
+ if (ec == null || ec.runner == null) {
+ Thread.dumpStack();
+ }
+ val scope = BodyLock.subScope(
+ if (parentScope != null) parentScope
+ else ec.runner.mainScope);
+ scope.setParentScope(ec.runner.mainScope);
+ executable.execute(scope);
+ scope;
+ }
+
+ def runTask(taskName: String, args: Array[Object]): AnyRef = {
+ val ec = net.appjet.oui.execution.runOutOfBand(
+ net.appjet.oui.execution.scheduledTaskExecutable,
+ "Task "+taskName,
+ Some(Map("taskName" -> taskName,
+ "taskArguments" -> args)),
+ { error =>
+ error match {
+ case e: Throwable => exceptionlog(e);
+ case _ => exceptionlog(error.toString);
+ }
+ });
+ ec.result;
+ }
+
+ def runTaskSimply(taskName: String, args: Array[Object]): AnyRef = {
+ net.appjet.oui.execution.runOutOfBandSimply(
+ net.appjet.oui.execution.scheduledTaskExecutable,
+ Some(Map("taskName" -> taskName,
+ "taskArguments" -> args)));
+ }
+
+ def wrapRunTask(taskName: String, args: Array[Object],
+ returnType: Class[_]): Function0[AnyRef] = {
+ new Function0[AnyRef] {
+ def apply = Context.jsToJava(runTaskSimply(taskName, args), returnType);
+ }
+ }
+
+ val threadpools = new HashMap[String, ScheduledThreadPoolExecutor]
+ with SynchronizedMap[String, ScheduledThreadPoolExecutor];
+
+ def createNamedTaskThreadPool(name: String, poolSize: Int) {
+ threadpools.put(name, new ScheduledThreadPoolExecutor(poolSize));
+ }
+
+ class TaskRunner(val taskName: String, args: Array[Object]) extends Callable[AnyRef] {
+ def call(): AnyRef = {
+ runTask(taskName, args);
+ }
+ }
+
+ def scheduleTaskInPool(poolName: String, taskName: String, delayMillis: Long, args: Array[Object]) = {
+ val pool = threadpools.getOrElse(poolName, throw new RuntimeException("No such task threadpool: "+poolName));
+ pool.schedule(new TaskRunner(taskName, args), delayMillis, java.util.concurrent.TimeUnit.MILLISECONDS);
+ }
+
+ def shutdownAndWaitOnTaskThreadPool(poolName: String, timeoutMillis: Long) = {
+ val pool = threadpools.getOrElse(poolName, throw new RuntimeException("No such task threadpool: "+poolName));
+ pool.shutdown();
+ pool.awaitTermination(timeoutMillis, java.util.concurrent.TimeUnit.MILLISECONDS);
+ }
+
+ def getContinuation(ec: ExecutionContext) = {
+ val req = ec.request.req;
+ ContinuationSupport.getContinuation(req, req).asInstanceOf[SelectChannelConnector.RetryContinuation];
+ }
+
+ def sync[T](obj: AnyRef)(block: => T): T = {
+ obj.synchronized {
+ block;
+ }
+ }
+}
+
+import javax.mail._;
+import javax.mail.internet._;
+import java.util.Properties;
+
+object email {
+ def sendEmail(toAddr: Array[String], fromAddr: String, subject: String, headers: Scriptable, content: String): String = {
+ try {
+ val badAddresses = for (a <- toAddr if (a.indexOf("@") == -1)) yield a;
+ if (badAddresses.length > 0) {
+ "The email address"+(if (badAddresses.length > 1) "es" else "")+" "+
+ badAddresses.mkString("\"", "\", \"", "\"")+" do"+(if (badAddresses.length == 1) "es" else "")+
+ " not appear to be valid.";
+ } else {
+ val debug = false;
+
+ val props = new Properties;
+ props.put("mail.smtp.host", config.smtpServerHost);
+ props.put("mail.smtp.port", config.smtpServerPort.toString());
+ if (config.smtpUser != "")
+ props.put("mail.smtp.auth", "true");
+
+ val session = Session.getInstance(props, if (config.smtpUser != "") new Authenticator {
+ override def getPasswordAuthentication() =
+ new PasswordAuthentication(config.smtpUser, config.smtpPass);
+ } else null);
+ session.setDebug(debug);
+
+ val msg = new MimeMessage(session);
+ val fromIAddr = new InternetAddress(fromAddr);
+ msg.setFrom(fromIAddr);
+ val toIAddr: Array[Address] = toAddr.map(x => (new InternetAddress(x))); // new InternetAddress(toAddr);
+ msg.setRecipients(Message.RecipientType.TO, toIAddr);
+
+ if (headers != null)
+ for (o <- headers.getIds() if o.isInstanceOf[String]) {
+ val k = o.asInstanceOf[String]
+ msg.addHeader(k, headers.get(k, headers).asInstanceOf[String]);
+ }
+
+ msg.setSubject(subject);
+ msg.setContent(content, "text/plain");
+ Transport.send(msg);
+ "";
+ }
+ } catch {
+ case e: MessagingException => { exceptionlog(e); e.printStackTrace() ; "Messaging exception: "+e.getMessage+"."; }
+ case e: Exception => { exceptionlog(e); e.printStackTrace(); "Unknown error."; }
+ }
+ }
+}
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala b/trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala
new file mode 100644
index 0000000..047c086
--- /dev/null
+++ b/trunk/infrastructure/net.appjet.ajstdlib/sqlbase.scala
@@ -0,0 +1,563 @@
+/**
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.appjet.ajstdlib;
+
+import scala.collection.mutable.ArrayBuffer;
+
+import java.sql.{DriverManager, SQLException, Statement};
+import net.appjet.oui.{profiler, config, NoninheritedDynamicVariable};
+import com.mchange.v2.c3p0._;
+
+class SQLBase(driverClass: String, url: String, userName: String, password: String) {
+
+ def isMysql:Boolean = (url.startsWith("jdbc:mysql:"));
+ def isDerby:Boolean = (url.startsWith("jdbc:derby:"));
+
+ if (isDerby) {
+ System.setProperty("derby.system.home", config.derbyHome);
+ val f = new java.io.File(config.derbyHome);
+ if (! f.exists) {
+ if (! f.mkdirs())
+ throw new RuntimeException("Couldn't create internal database storage directory: "+config.derbyHome);
+ }
+ if (! f.isDirectory)
+ throw new RuntimeException("Internal database storage directory is not a directory: "+config.derbyHome);
+ if (! f.canWrite)
+ throw new RuntimeException("Can't write to internal database storage directory: "+config.derbyHome);
+ }
+
+ val cpds = new ComboPooledDataSource();
+ cpds.setDriverClass(driverClass);
+ cpds.setJdbcUrl(url+(if (isMysql) "?useUnicode=true&characterEncoding=utf8" else ""));
+
+ // derby does not require a password
+ if (!isDerby) {
+ cpds.setUser(userName);
+ cpds.setPassword(password);
+ }
+
+ cpds.setMaxPoolSize(config.jdbcPoolSize);
+ cpds.setMaxConnectionAge(6*60*60); // 6 hours
+ if (config.devMode) {
+ cpds.setAutomaticTestTable("cpds_testtable");
+ cpds.setTestConnectionOnCheckout(true);
+ }
+
+// {
+// // register db driver
+// try {
+// new JDCConnectionDriver(driverClass, url+"?useUnicode=true&characterEncoding=utf8", userName, password);
+// } catch {
+// case e => {
+// e.printStackTrace();
+// Runtime.getRuntime.halt(1);
+// }
+// }
+// }
+
+ private def getConnectionFromPool = {
+ val c = cpds.getConnection();
+ c.setAutoCommit(true);
+ c;
+ }
+
+ // Creates a dynamic variable whose .value depends on the innermost
+ // .withValue(){} on the call-stack.
+ private val currentConnection = new NoninheritedDynamicVariable[Option[java.sql.Connection]](None);
+
+ def withConnection[A](block: java.sql.Connection=>A): A = {
+ currentConnection.value match {
+ case Some(c) => {
+ block(c);
+ }
+ case None => {
+ val t1 = profiler.time;
+ val c = getConnectionFromPool;
+ profiler.recordCumulative("getConnection", profiler.time-t1);
+ try {
+ currentConnection.withValue(Some(c)) {
+ block(c);
+ }
+ } finally {
+ c.close;
+ }
+ }
+ }
+ }
+
+ private val currentlyInTransaction = new NoninheritedDynamicVariable(false);
+
+ def inTransaction[A](block: java.sql.Connection=>A): A = {
+ withConnection(c => {
+ if (currentlyInTransaction.value) {
+ return block(c);
+ } else {
+ currentlyInTransaction.withValue(true) {
+ c.setAutoCommit(false);
+ c.setTransactionIsolation(java.sql.Connection.TRANSACTION_REPEATABLE_READ);
+
+ try {
+ val result = block(c);
+ c.commit();
+ c.setAutoCommit(true);
+ result;
+ } catch {
+ case e@net.appjet.oui.AppGeneratedStopException => {
+ c.commit();
+ c.setAutoCommit(true);
+ throw e;
+ }
+ case (e:org.mozilla.javascript.WrappedException) if (e.getWrappedException ==
+ net.appjet.oui.AppGeneratedStopException) => {
+ c.commit();
+ c.setAutoCommit(true);
+ throw e;
+ }
+ case e => {
+ //println("inTransaction() caught error:");
+ //e.printStackTrace();
+ try {
+ c.rollback();
+ c.setAutoCommit(true);
+ } catch {
+ case ex => {
+ println("Could not rollback transaction because: "+ex.toString());
+ }
+ }
+ throw e;
+ }
+ }
+ }
+ }
+ });
+ }
+
+ def closing[A](closable: java.sql.Statement)(block: =>A): A = {
+ try { block } finally { closable.close(); }
+ }
+
+ def closing[A](closable: java.sql.ResultSet)(block: =>A): A = {
+ try { block } finally { closable.close(); }
+ }
+
+ def tableName(t: String) = id(t);
+
+ val identifierQuoteString = withConnection(_.getMetaData.getIdentifierQuoteString);
+ def quoteIdentifier(s: String) = identifierQuoteString+s+identifierQuoteString;
+ private def id(s: String) = quoteIdentifier(s);
+
+ def longTextType = if (isDerby) "CLOB" else "MEDIUMTEXT";
+
+ // derby seems to do things intelligently w.r.t. case-sensitivity and unicode support.
+ def createTableOptions = if (isMysql) " ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin" else "";
+
+ // creates table if it doesn't exist already
+ def createJSONTable(table: String) {
+ withConnection { c=>
+ val s = c.createStatement;
+ if (! doesTableExist(c, table)) {
+ closing(s) {
+ s.execute("CREATE TABLE "+tableName(table)+" ("+
+ id("ID")+" VARCHAR(128) PRIMARY KEY NOT NULL, "+
+ id("JSON")+" "+longTextType+" NOT NULL"+
+ ")"+createTableOptions);
+ }
+ }
+ }
+ }
+
+ // requires: table exists
+ // returns null if key doesn't exist
+ def getJSON(table: String, key: String): String = {
+ withConnection { c=>
+ val s = c.prepareStatement("SELECT "+id("JSON")+" FROM "+tableName(table)+" WHERE "+id("ID")+" = ?");
+ closing(s) {
+ s.setString(1, key);
+ var resultSet = s.executeQuery();
+ closing(resultSet) {
+ if (! resultSet.next()) {
+ null;
+ }
+ else {
+ resultSet.getString(1);
+ }
+ }
+ }
+ }
+ }
+
+ def getAllJSON(table: String, start: Int, count: Int): Array[Object] = {
+ withConnection { c =>
+ val s = c.prepareStatement("SELECT "+id("ID")+","+id("JSON")+" FROM "+tableName(table)+
+ " ORDER BY "+id("ID")+" DESC"+
+ " LIMIT ? OFFSET ?");
+ closing(s) {
+ s.setInt(2, start);
+ s.setInt(1, count);
+ var resultSet = s.executeQuery();
+ var output = new ArrayBuffer[Object];
+ closing(resultSet) {
+ while (resultSet.next()) {
+ output += new { val id = resultSet.getString(1); val value = resultSet.getString(2) };
+ }
+ output.toArray;
+ }
+ }
+ }
+ }
+
+ def getAllJSONKeys(table: String): Array[String] = {
+ withConnection { c =>
+ val s = c.prepareStatement("SELECT "+id("ID")+" FROM "+tableName(table));
+ closing(s) {
+ var resultSet = s.executeQuery();
+ var output = new ArrayBuffer[String];
+ closing(resultSet) {
+ while (resultSet.next()) {
+ output += resultSet.getString(1);
+ }
+ output.toArray;
+ }
+ }
+ }
+ }
+
+ // requires: table exists
+ // inserts key if it doesn't exist
+ def putJSON(table: String, key: String, json: String) {
+ withConnection { c=>
+ val update = c.prepareStatement("UPDATE "+tableName(table)+" SET "+id("JSON")+"=? WHERE "+id("ID")+"=?");
+ closing(update) {
+ update.setString(1, json);
+ update.setString(2, key);
+ update.executeUpdate();
+ if (update.getUpdateCount == 0) {
+ val insert = c.prepareStatement(
+ "INSERT INTO "+tableName(table)+" ("+id("ID")+", "+id("JSON")+") values (?,?)");
+ closing(insert) {
+ insert.setString(1, key);
+ insert.setString(2, json);
+ insert.executeUpdate();
+ }
+ }
+ }
+ }
+ }
+
+ def deleteJSON(table: String, key: String) {
+ // requires: table exists
+ withConnection { c=>
+ val update = c.prepareStatement("DELETE FROM "+tableName(table)+" WHERE "+id("ID")+"=?");
+ closing(update) {
+ update.setString(1, key);
+ update.executeUpdate();
+ }
+ }
+ }
+
+ private def metaName(table: String) = table+"_META";
+ private def metaTableName(table: String) = tableName(metaName(table));
+ private def textTableName(table: String) = tableName(table+"_TEXT");
+ private def escapeSearchString(dbm: java.sql.DatabaseMetaData, s: String): String = {
+ val e = dbm.getSearchStringEscape();
+ s.replace("_", e+"_").replace("%", e+"%");
+ }
+
+ private final val PAGE_SIZE = 20;
+
+ def doesTableExist(connection: java.sql.Connection, table: String): Boolean = {
+ val databaseMetadata = connection.getMetaData;
+ val tables = databaseMetadata.getTables(null, null,
+ escapeSearchString(databaseMetadata, table), null);
+ closing(tables) {
+ tables.next();
+ }
+ }
+
+ def autoIncrementClause = if (isDerby) "GENERATED BY DEFAULT AS IDENTITY" else "AUTO_INCREMENT";
+
+ // creates table if it doesn't exist already
+ def createStringArrayTable(table: String) {
+ withConnection { c=>
+ if (! doesTableExist(c, metaName(table))) { // check to see if the *_META table exists
+ // create tables and indices
+ val s = c.createStatement;
+ closing(s) {
+ s.execute("CREATE TABLE "+metaTableName(table)+" ("+
+ id("ID")+" VARCHAR(128) PRIMARY KEY NOT NULL, "+
+ id("NUMID")+" INT UNIQUE "+autoIncrementClause+" "+
+ ")"+createTableOptions);
+ val defaultOffsets = (1 to PAGE_SIZE).map(x=>"").mkString(",");
+ s.execute("CREATE TABLE "+textTableName(table)+" ("+
+ ""+id("NUMID")+" INT, "+id("PAGESTART")+" INT, "+id("OFFSETS")+" VARCHAR(256) NOT NULL DEFAULT '"+defaultOffsets+
+ "', "+id("DATA")+" "+longTextType+" NOT NULL"+
+ ")"+createTableOptions);
+ s.execute("CREATE INDEX "+id(table+"-NUMID-PAGESTART")+" ON "+textTableName(table)+"("+id("NUMID")+", "+id("PAGESTART")+")");
+ }
+ }
+ }
+ }
+
+ // requires: table exists
+ // returns: null if key or (key,index) doesn't exist, else the value
+ def getStringArrayElement(table: String, key: String, index: Int): String = {
+ val (pageStart, offset) = getPageStartAndOffset(index);
+ val page = new StringArrayPage(table, key, pageStart, true);
+ page.data(offset);
+ }
+
+ // requires: table exists
+ // returns: an array of the mappings present in the page that should hold the
+ // particular (key,index) mapping. the array may be empty or otherwise not
+ // contain the given (key,index).
+ def getPageStringArrayElements(table: String, key: String, index: Int): Array[IndexValueMapping] = {
+ val (pageStart, offset) = getPageStartAndOffset(index);
+ val page = new StringArrayPage(table, key, pageStart, true);
+ val buf = new scala.collection.mutable.ListBuffer[IndexValueMapping];
+
+ for(i <- 0 until page.data.length) {
+ val s = page.data(i);
+ if (s ne null) {
+ val n = pageStart + i;
+ buf += IndexValueMapping(n, s);
+ }
+ }
+
+ buf.toArray;
+ }
+
+ // requires: table exists
+ // creates key if doesn't exist
+ // value may be null
+ def putStringArrayElement(table: String, key: String, index: Int, value: String) {
+ val (pageStart, offset) = getPageStartAndOffset(index);
+ val page = new StringArrayPage(table, key, pageStart, false);
+ page.data(offset) = value;
+ page.updateDB();
+ }
+
+ def putMultipleStringArrayElements(table: String, key: String): Multiputter = new Multiputter {
+ var currentPage = None:Option[StringArrayPage];
+ def flushPage() {
+ if (currentPage.isDefined) {
+ val page = currentPage.get;
+ page.updateDB();
+ currentPage = None;
+ }
+ }
+ def finish() {
+ flushPage();
+ }
+ def put(index: Int, value: String) {
+ try {
+ val (pageStart, offset) = getPageStartAndOffset(index);
+ if (currentPage.isEmpty || currentPage.get.pageStart != pageStart) {
+ flushPage();
+ currentPage = Some(new StringArrayPage(table, key, pageStart, false));
+ }
+ currentPage.get.data(offset) = value;
+ }
+ catch {
+ case e => { e.printStackTrace; throw e }
+ }
+ }
+ }
+
+ trait Multiputter {
+ def put(index: Int, value: String);
+ def finish();
+ }
+
+ case class IndexValueMapping(index: Int, value: String);
+
+ def clearStringArray(table: String, key: String) {
+ withConnection { c=>
+ val numid = getStringArrayNumId(c, table, key, false);
+ if (numid >= 0) {
+ {
+ val s = c.prepareStatement("DELETE FROM "+textTableName(table)+" WHERE "+id("NUMID")+"=?");
+ closing(s) {
+ s.setInt(1, numid);
+ s.executeUpdate();
+ }
+ }
+ {
+ val s = c.prepareStatement("DELETE FROM "+metaTableName(table)+" WHERE "+id("NUMID")+"=?");
+ closing(s) {
+ s.setInt(1, numid);
+ s.executeUpdate();
+ }
+ }
+ }
+ }
+ }
+
+ private def getPageStartAndOffset(index: Int): (Int,Int) = {
+ val pageStart = (index / PAGE_SIZE) * PAGE_SIZE;
+ (pageStart, index - pageStart);
+ }
+
+ // requires: table exists
+ // returns: numid of new string array
+ private def newStringArray(c: java.sql.Connection, table: String, key: String): Int = {
+ val s = c.prepareStatement("INSERT INTO "+metaTableName(table)+" ("+id("ID")+") VALUES (?)",
+ Statement.RETURN_GENERATED_KEYS);
+ closing(s) {
+ s.setString(1, key);
+ s.executeUpdate();
+ val resultSet = s.getGeneratedKeys;
+ if (resultSet == null)
+ error("No generated numid for insert");
+ closing(resultSet) {
+ if (! resultSet.next()) error("No generated numid for insert");
+ resultSet.getInt(1);
+ }
+ }
+ }
+
+ def getStringArrayNumId(c: java.sql.Connection, table: String, key: String, creating: Boolean): Int = {
+ val s = c.prepareStatement("SELECT "+id("NUMID")+" FROM "+metaTableName(table)+" WHERE "+id("ID")+"=?");
+ closing(s) {
+ s.setString(1, key);
+ val resultSet = s.executeQuery();
+ closing(resultSet) {
+ if (! resultSet.next()) {
+ if (creating) {
+ newStringArray(c, table, key);
+ }
+ else {
+ -1
+ }
+ }
+ else {
+ resultSet.getInt(1);
+ }
+ }
+ }
+ }
+
+ def getStringArrayAllKeys(table: String): Array[String] = {
+ withConnection { c=>
+ val s = c.prepareStatement("SELECT "+id("ID")+" FROM "+metaTableName(table));
+ closing(s) {
+ val resultSet = s.executeQuery();
+ closing(resultSet) {
+ val buf = new ArrayBuffer[String];
+ while (resultSet.next()) {
+ buf += resultSet.getString(1);
+ }
+ buf.toArray;
+ }
+ }
+ }
+ }
+
+ private class StringArrayPage(table: String, key: String, val pageStart: Int, readonly: Boolean) {
+
+ val data = new Array[String](PAGE_SIZE);
+
+ private val numid = withConnection { c=>
+ val nid = getStringArrayNumId(c, table, key, ! readonly);
+
+ if (nid >= 0) {
+ val s = c.prepareStatement(
+ "SELECT "+id("OFFSETS")+","+id("DATA")+" FROM "+textTableName(table)+" WHERE "+id("NUMID")+"=? AND "+id("PAGESTART")+"=?");
+ closing(s) {
+ s.setInt(1, nid);
+ s.setInt(2, pageStart);
+ val resultSet = s.executeQuery();
+ closing(resultSet) {
+ if (! resultSet.next()) {
+ if (! readonly) {
+ val insert = c.prepareStatement("INSERT INTO "+textTableName(table)+
+ " ("+id("NUMID")+", "+id("PAGESTART")+", "+id("DATA")+") VALUES (?,?,'')");
+ closing(insert) {
+ insert.setInt(1, nid);
+ insert.setInt(2, pageStart);
+ insert.executeUpdate();
+ }
+ }
+ }
+ else {
+ val offsetsField = resultSet.getString(1);
+ val dataField = resultSet.getString(2);
+ val offsetStrings = offsetsField.split(",", -1);
+ var i = 0;
+ var idx = 0;
+ while (i < PAGE_SIZE) {
+ val nstr = offsetStrings(i);
+ if (nstr != "") {
+ val n = nstr.toInt;
+ data(i) = dataField.substring(idx, idx+n);
+ idx += n;
+ }
+ i += 1;
+ }
+ }
+ }
+ }
+ }
+ nid;
+ }
+
+ def updateDB() {
+ if (readonly) {
+ error("this is a readonly StringArrayPage");
+ }
+ // assert: the relevant row of the TEXT table exists
+ if (data.find(_ ne null).isEmpty) {
+ withConnection { c=>
+ val update = c.prepareStatement("DELETE FROM "+textTableName(table)+
+ " WHERE "+id("NUMID")+"=? AND "+id("PAGESTART")+"=?");
+ closing(update) {
+ update.setInt(1, numid);
+ update.setInt(2, pageStart);
+ update.executeUpdate();
+ }
+ }
+ }
+ else {
+ val offsetsStr = data.map(s => if (s eq null) "" else s.length.toString).mkString(",");
+ val dataStr = data.map(s => if (s eq null) "" else s).mkString("");
+ withConnection { c=>
+ val s = c.prepareStatement("UPDATE "+textTableName(table)+
+ " SET "+id("OFFSETS")+"=?, "+id("DATA")+"=? WHERE "+id("NUMID")+"=? AND "+id("PAGESTART")+"=?");
+ closing(s) {
+ s.setString(1, offsetsStr);
+ s.setString(2, dataStr);
+ s.setInt(3, numid);
+ s.setInt(4, pageStart);
+ s.executeUpdate();
+ }
+ }
+ }
+ }
+ }
+
+ def close {
+ if (isDerby) {
+ cpds.close();
+ try {
+ DriverManager.getConnection("jdbc:derby:;shutdown=true");
+ } catch {
+ case e: SQLException => if (e.getErrorCode() != 50000) throw e
+ }
+ }
+ }
+}
+
+
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js b/trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js
new file mode 100644
index 0000000..3bfa227
--- /dev/null
+++ b/trunk/infrastructure/net.appjet.ajstdlib/streaming-client.js
@@ -0,0 +1,920 @@
+/**
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var host = window.location.host;
+
+function WebSocket(id) {
+ var self = this;
+ var socket = this;
+ var version = 2;
+
+ var timeouts = {};
+
+ this.onopen = function() { }
+ this.onclosed = function() { }
+ this.onmessage = function() { }
+ this.onhiccup = function() { }
+ this.onlogmessage = function() { }
+ this.CONNECTING = 0;
+ this.OPEN = 1;
+ this.CLOSED = 2;
+ this.readyState = -1;
+
+ var hiccupsLastMinute = 0;
+ var hiccupResetInterval = setInterval(function() {
+ hiccupsLastMinute = 0;
+ if (self.readyState == self.CLOSED)
+ clearInterval(hiccupResetInterval);
+ }, 60*1000);
+
+ var isHiccuping = false;
+ function hiccup(channel) {
+ if (channel != officialChannel && channel != self) return;
+ if (isHiccuping) return;
+ log("hiccup: "+channel.name);
+ if (hiccupsLastMinute++ > 10) {
+ doDisconnect({reconnect: true, reason: "Too many hiccups!"});
+ return;
+ }
+ closeAllChannels();
+ timeout(timeouts, "hiccup", 15000, function() {
+ isHiccuping = false;
+ doDisconnect({reconnect: false, reason: "Couldn't contact server to hiccup."});
+ });
+ isHiccuping = true;
+ function tryHiccup() {
+ if (! isHiccuping) return;
+ self.onhiccup({connected: false});
+ log("trying hiccup");
+ timeout(timeouts, "singleHiccup", 5000, function() {
+ tryHiccup();
+ });
+ simpleXhr('post', postPath(), true, [{key: "oob", value: "hiccup"}], function(sc, msg) {
+ if (! isHiccuping) return;
+ if (msg.substring(0, "restart-fail".length) == "restart-fail") {
+ doDisconnect({reconnect: true, reason: "Server restarted or socket timed out on server."});
+ } else if (sc != 200 || msg.substring(0, 2) != "ok") {
+ log("Failed to hiccup with error: "+sc+" / "+msg);
+ setTimeout(tryHiccup, 500);
+ } else {
+ isHiccuping = false;
+ timeouts.singleHiccup();
+ timeouts.hiccup();
+ doConnect();
+ }
+ });
+ }
+ tryHiccup();
+ }
+ function closeAllChannels() {
+ for (var i in activeChannels) {
+ if (activeChannels.hasOwnProperty(i)) {
+ activeChannels[i].disconnect();
+ }
+ }
+ officialChannel = undefined;
+ }
+
+ function doDisconnect(obj, silent, sync) {
+ log("disconnected: "+obj.reason+" / "+(obj.data !== undefined ? "data: "+obj.data : ""));
+ logAll();
+ closeAllChannels();
+ if (longPollingIFrame && longPollingIFrame.div) {
+ longPollingIFrame.div.innerHTML = "";
+ }
+ if (self.readyState != self.CLOSED) {
+ self.readyState = self.CLOSED;
+ if (! silent) {
+ postSingleMessageNow(true, "kill:"+obj.reason, sync, true);
+ }
+ self.onclosed(obj);
+ }
+ }
+
+ this.disconnect = function(sync) {
+ doDisconnect({reason: "Closed by client."}, false, sync);
+ }
+
+
+ function doBasicConnect() {
+ var type = getBasicChannel();
+ log("basic connect on type: "+type);
+ var channel = activeChannels[type] = new channelConstructors[type]();
+ channel.connect();
+ }
+
+ function doOtherConnect() {
+ var channels = getOtherChannels();
+ var channel; var type;
+ for (var i = 0; i < channels.length; ++i) {
+ type = channels[i];
+ log("other connect on type: "+type);
+ channel = activeChannels[type] = new channelConstructors[type]();
+ channel.connect();
+ }
+ }
+ function doConnect() {
+ log("doing connect!");
+ timeout(timeouts, "connect", 15000, function() {
+ doDisconnect({reconnect: false, reason: "Timeout connecting to server: no channel type was able to connect."});
+ });
+ doBasicConnect();
+ }
+
+ this.connect = function() {
+ log("socket connecting: "+id);
+ doConnect();
+ }
+
+ // util
+ function nicetime() { return Math.floor((new Date()).valueOf() / 100) % 10000000; }
+ function log(s) { self.onlogmessage("(comet @t: "+nicetime()+") "+s); }
+ function logAll() {
+ log(self.describe())
+ }
+ this.describe = function() {
+ function describeChannels() {
+ out = [];
+ for (var i in activeChannels) {
+ if (activeChannels.hasOwnProperty(i)) {
+ out.push(i+": "+activeChannels[i].describe());
+ }
+ }
+ return "[ "+out.join(", ")+" ]";
+ }
+ return ("socket state: { id: "+id+", readyState: "+self.readyState+", isHiccuping: "+isHiccuping+", timeouts: "+describeTimeouts(timeouts)+", officialChannel: "+(officialChannel?officialChannel.name:"none")+", channels: "+describeChannels()+", isPosting: "+isPosting+", lastReceivedSeqNumber: "+lastReceivedSeqNumber+", lastPost: "+lastPost+", postTimeouts: "+describeTimeouts(postTimeouts)+", channelSeq: "+channelSeq+" }");
+ }
+
+ function wrapMethod(obj, method) {
+ return function() {
+ var arr = [];
+ for (var i=0; i < arguments.length; i++) {
+ arr.push(arguments[i]);
+ }
+ method.apply(obj, arr);
+ }
+ }
+ var _wm = wrapMethod;
+
+ // cb should take statusCode, responseText, and optionally request
+ function simpleXhr(method, uri, async, params, cb, makeXhr) {
+// log("making simple Xhr: "+[method, uri, async, params].join(", "));
+ var request = (makeXhr || newRequestObject)();
+ request.open(method, uri, async);
+ if (async) {
+ request.onreadystatechange = function() {
+ if (request.readyState != 4) return;
+ var status;
+ var responseText;
+ try {
+ status = request.status;
+ responseText = request.responseText;
+ } catch (e) { /* absorb ff error accessing request properties */ }
+ cb(status, responseText, request);
+ }
+ }
+ var data = null;
+ if (params) {
+ data = [];
+ for (var i = 0; i < params.length; ++i) {
+ data.push(encodeURIComponent(params[i].key)+"="+encodeURIComponent(params[i].value));
+ }
+ data = data.join("&");
+ request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
+ }
+ try {
+ request.send(data);
+ } catch (e) { request.abort(); cb(500, "Error sending data!", request); }
+ if (! async) {
+ var status;
+ var responseText;
+ try {
+ status = request.status;
+ responseText = request.responseText;
+ } catch (e) { /* absorb ff error accessing request properties */ }
+ cb(status, responseText, request);
+ }
+ return request;
+ }
+
+ var timeout_noop = function() { }
+ function timeout(timeoutObject, timeoutName, millis, timeoutCallback) {
+ function clearIt(timeoutObject, timeoutName) {
+ if (timeoutObject[timeoutName]) {
+ timeoutObject[timeoutName]();
+ timeoutObject[timeoutName] = timeout_noop;
+ }
+ }
+ var timeoutId = setTimeout(function() { clearIt(timeoutObject, timeoutName); timeoutCallback(); }, millis);
+ var f = function() {
+ clearTimeout(timeoutId);
+ }
+ clearIt(timeoutObject, timeoutName);
+ timeoutObject[timeoutName] = f;
+ return f;
+ }
+
+ // handling messages
+ var lastReceivedSeqNumber = 0;
+
+ function dataHandler(msg) {
+ if (msg.seqNumber > lastReceivedSeqNumber+1) {
+ log("bad sequence number. expecting: "+(lastReceivedSeqNumber+1)+", got: "+msg.seqNumber);
+ hiccup(self);
+ return false;
+ }
+ if (msg.seqNumber < lastReceivedSeqNumber+1) return true;
+ lastReceivedSeqNumber = msg.seqNumber;
+ if (! msg.isControl) {
+ self.onmessage({ data: msg.content });
+ return true;
+ } else {
+ if (msg.content == "kill") {
+ doDisconnect({reconnect: false, reason: "Killed by server."});
+ return false;
+ }
+ }
+ }
+
+ // client-server comm
+ var postPath = function() {
+ return "%contextPath%/post?r="+randomVar()+"&v="+version+"&id="+id+"&seq="+lastReceivedSeqNumber;
+ }
+
+ function SimpleQueue() {
+ var base = [];
+ var head = 0;
+ var tail = 0;
+ this.offer = function(data) {
+ base[tail++] = data;
+ }
+ this.poll = function() {
+ if (this.length() > 0) {
+ var n = base[head];
+ delete base[head++];
+ return n;
+ }
+ }
+ this.clear = function() {
+ head = 0;
+ tail = 0;
+ var oldBase = base;
+ base = [];
+ return oldBase;
+ }
+ this.length = function() {
+ return tail - head;
+ }
+ }
+ var outgoingMessageQueue = new SimpleQueue();
+ var isPosting = false;
+ var postTimeouts = {};
+ var lastPost;
+
+ function postSingleMessageNow(isControl, data, sync, force, cb) {
+ doPostMessages([{oob: isControl, data: data, cb: cb}], sync, force)
+ }
+
+ function doPostMessages(messages, sync, force, cb) {
+ if (! force && self.readyState == self.CLOSED) return;
+ if (messages.length == 0) {
+ if (cb) cb();
+ return;
+ }
+ var data = [];
+ var callbacks = [];
+ for (var i = 0; i < messages.length; ++i) {
+ data.push({key: (messages[i].oob ? "oob" : "m"),
+ value: messages[i].data});
+ if (messages[i].cb)
+ callbacks.push(messages[i].cb);
+ }
+ function postFailed(sc, msg, req, src) {
+ var str = "";
+ try {
+ str = sc + ": "+req.statusText+" - "+msg+" ("+src+")";
+ } catch (e) { /* absorb potential Firefox error accessing req */ }
+ doDisconnect({reconnect: true, reason: "Posting message failed.", data: str});
+ for (var i = 0; i < callbacks.length; ++i) {
+ callbacks[i](false, str);
+ }
+ }
+ function postCallback(sc, msg, request) {
+ postTimeouts.post();
+ if (sc != 200 || msg.substring(0, 2) != "ok") {
+ postFailed(sc, msg, request, "1");
+ } else {
+ for (var i = 0; i < callbacks.length; ++i) {
+ callbacks[i](true);
+ }
+ if (cb) cb();
+ }
+ }
+ timeout(postTimeouts, "post", 15000, function() {
+ doDisconnect({reconnect: true, reason: "Posting message timed out."});
+ });
+ simpleXhr('post', postPath(), ! sync, data, postCallback);
+ }
+
+ function postPendingMessages() {
+ if (isPosting == true)
+ return;
+ var messages = outgoingMessageQueue.clear();
+ if (messages.length == 0) {
+ return;
+ }
+ isPosting = true;
+ doPostMessages(messages, false, false, function() { isPosting = false; setTimeout(postPendingMessages, 0); });
+ lastPost = nicetime();
+ }
+ this.postMessage = function(data, cb) {
+ if (self.readyState != self.OPEN) {
+ return;
+ }
+ outgoingMessageQueue.offer({data: data, cb: cb});
+ setTimeout(function() { postPendingMessages() }, 0);
+ }
+
+ // transports
+ function getValidChannels() {
+ var channels = [];
+ for (var i = 0; i < validChannels.length; ++i) {
+ var type = validChannels[i];
+ if (window.location.hash.length > 0) {
+ if (window.location.hash != "#"+type) {
+ continue;
+ }
+ }
+ if ($ && $.browser.opera && type != 'shortpolling' && type != 'streaming') {
+ continue;
+ }
+ channels.push(type);
+ }
+ return channels;
+ }
+ function getBasicChannel() {
+ return getValidChannels()[0];
+ }
+
+ function getOtherChannels() {
+ return getValidChannels().slice(1);
+ }
+
+ var officialChannel;
+ this.getTransportType = function() {
+ return (officialChannel ? officialChannel.name : "none");
+ }
+ var validChannels = "%acceptableChannelTypes%";
+ var canUseSubdomains = "%canUseSubdomains%";
+ var activeChannels = {};
+ var channelConstructors = {
+ shortpolling: ShortPollingChannel,
+ longpolling: LongPollingChannel,
+ streaming: StreamingChannel
+ }
+
+ function describeTimeouts(timeouts) {
+ var out = [];
+ for (var i in timeouts) {
+ if (timeouts.hasOwnProperty(i)) {
+ out.push(i+": "+(timeouts[i] == timeout_noop ? "unset" : "set"));
+ }
+ }
+ return "{ "+out.join(", ")+" }";
+ }
+
+ var channelSeq = 1;
+ function notifyConnect(channel) {
+ timeouts.connect();
+ if (! officialChannel || channel.weight > officialChannel.weight) {
+ log("switching to use channel: "+channel.name);
+ var oldChannel = officialChannel;
+ officialChannel = channel;
+ setTimeout(function() {
+ postSingleMessageNow(true, "useChannel:"+(channelSeq++)+":"+channel.name, false, false, function(success, msg) {
+ if (success) {
+ if (oldChannel) {
+ oldChannel.disconnect();
+ } else {
+ // there was no old channel, so try connecting the other channels.
+ doOtherConnect();
+ }
+ if (self.readyState != self.OPEN) {
+ self.readyState = self.OPEN;
+ self.onopen({});
+ } else {
+ self.onhiccup({connected: true});
+ }
+ } else {
+ doDisconnect({reconnect: true, reason: "Failed to select channel on server.", data: msg});
+ }
+ });
+ }, 0);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ function randomVar() {
+ return String(Math.round(Math.random()*1e12));
+ }
+
+ function channelPath() {
+ return "%contextPath%/channel?v="+version+"&r="+randomVar()+"&id="+id;
+ }
+
+ function newRequestObject() {
+ var xmlhttp=false;
+ try {
+ xmlhttp = (window.ActiveXObject && new ActiveXObject("Msxml2.XMLHTTP"))
+ } catch (e) {
+ try {
+ xmlhttp = (window.ActiveXObject && new ActiveXObject("Microsoft.XMLHTTP"));
+ } catch (E) {
+ xmlhttp = false;
+ }
+ }
+ if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
+ try {
+ xmlhttp = new XMLHttpRequest();
+ } catch (e) {
+ xmlhttp=false;
+ }
+ }
+ if (!xmlhttp && window.createRequest) {
+ try {
+ xmlhttp = window.createRequest();
+ } catch (e) {
+ xmlhttp=false;
+ }
+ }
+ return xmlhttp
+ }
+
+ function DataFormatError(message) {
+ this.message = message;
+ }
+
+ function readMessage(data, startIndex) {
+ if (! startIndex) startIndex = 0;
+ var sep = data.indexOf(":", startIndex);
+ if (sep < 0) return; // don't have all the bytes for this yet.
+ var chars = Number(data.substring(startIndex, sep));
+ if (isNaN(chars))
+ throw new DataFormatError("Bad length: "+data.substring(startIndex, sep));
+ if (data.length < sep+1+chars) return; // don't have all the bytes for this yet.
+ var msg = data.substr(sep+1, chars);
+ return { message: msg, lastConsumedChar: sep+1+chars }
+ }
+
+ function iframeReader(data, startIndex) {
+ if (startIndex == 0)
+ return { message: data, lastConsumedChar: data.length }
+ }
+
+ function parseWireFormat(data, startIndex, reader) {
+ if (! startIndex) startIndex = 0;
+ var msgs = [];
+ var readThroughIndex = startIndex;
+ while (true) {
+ var msgObj = (reader || readMessage)(data, readThroughIndex)
+ if (! msgObj) break;
+ readThroughIndex = msgObj.lastConsumedChar;
+ var msg = msgObj.message;
+ var split = msg.split(":");
+ if (split[0] == 'oob') {
+ msgs.push({oob: split.slice(1).join(":")});
+ continue;
+ }
+ var seq = Number(split[0]);
+ if (isNaN(seq))
+ throw new DataFormatError("Bad sequence number: "+split[0]);
+ var control = Number(split[1]);
+ if (isNaN(control))
+ throw new DataFormatError("Bad control: "+split[1]);
+ var msgContent = split.slice(2).join(":");
+ msgs.push({seqNumber: seq, isControl: (control == 1), content: msgContent});
+ }
+ return { messages: msgs, lastConsumedChar: readThroughIndex }
+ }
+
+ function handleMessages(data, cursor, channel, reader) {
+ try {
+ messages = parseWireFormat(data, cursor, reader);
+ } catch (e) {
+ if (e instanceof DataFormatError) {
+ log("Data format error: "+e.message);
+ hiccup(channel);
+ return;
+ } else {
+ log(e.toString()+" on line: "+e.lineNumber);
+ }
+ }
+ for (var i=0; i < messages.messages.length; i++) {
+ var oob = messages.messages[i].oob;
+ if (oob) {
+ if (oob == "restart-fail") {
+ doDisconnect({reconnect: true, reason: "Server restarted or socket timed out on server."});
+ return;
+ }
+ } else {
+ if (! dataHandler(messages.messages[i]))
+ break;
+ }
+ }
+ return messages.lastConsumedChar;
+ }
+
+ function ShortPollingChannel() {
+ this.weight = 0;
+ this.name = "shortpolling";
+
+ this.isConnected = false;
+ this.isClosed = false;
+ this.request;
+ this.clearRequest = function() {
+ if (this.request) {
+ this.request.abort();
+ this.request = null;
+ }
+ }
+ this.timeouts = {};
+
+ this.describe = function() {
+ return "{ isConnected: "+this.isConnected+", isClosed: "+this.isClosed+", timeouts: "+describeTimeouts(this.timeouts)+", request: "+(this.request?"set":"not set")+" }"
+ }
+
+ this.pollDataHandler = function(sc, response, request) {
+ if (request.readyState != 4) return;
+ if (this.timeouts.poll) this.timeouts.poll();
+ var messages;
+ if (! this.isConnected) {
+ this.timeouts.connectAttempt();
+ if (sc != 200) {
+ log(this.name+" connect failed: "+sc+" / "+response);
+ setTimeout(_wm(this, this.attemptConnect), 500);
+ return;
+ }
+ var msg = (response ? readMessage(response) : undefined);
+ if (msg && msg.message == "oob:ok") {
+ this.timeouts.initialConnect();
+ this.isConnected = true;
+ log(this.name+" transport connected!");
+ if (! notifyConnect(this)) {
+ // there are better options connected.
+ log(this.name+" transport not chosen for activation.");
+ this.disconnect();
+ return;
+ }
+ this.doPoll();
+ return;
+ } else {
+ log(this.name+" connect didn't get ok: "+sc+" / "+response);
+ setTimeout(_wm(this, this.attemptConnect), 500);
+ return;
+ }
+ }
+ var chars = handleMessages(request.responseText, 0, this);
+ if (sc != 200 || ((! chars) && this.emptyResponseBad)) {
+ hiccup(this);
+ }
+ setTimeout(_wm(this, this.doPoll), this.pollDelay);
+ this.clearRequest();
+ }
+
+ this.keepRetryingConnection = true;
+ this.cancelConnect = function() {
+ this.clearRequest();
+ this.keepRetryingConnection = false;
+ }
+ this.cancelPoll = function() {
+ this.clearRequest();
+ log("poll timed out.");
+ hiccup(this);
+ }
+
+ this.doPoll = function() {
+ if (this.isClosed) return;
+ timeout(this.timeouts, "poll", this.pollTimeout, _wm(this, this.cancelPoll));
+ this.request =
+ simpleXhr('GET',
+ channelPath()+"&channel="+this.name+"&seq="+lastReceivedSeqNumber+this.pollParams(),
+ true, undefined, _wm(this, this.pollDataHandler), this.xhrGenerator);
+ }
+
+ this.pollParams = function() {
+ return "";
+ }
+ this.pollTimeout = 5000;
+ this.pollDelay = 500;
+
+ this.attemptConnect = function() {
+ if (! this.keepRetryingConnection) return;
+ log(this.name+" attempting connect");
+ this.clearRequest();
+ timeout(this.timeouts, "connectAttempt", 5000, _wm(this, this.attemptConnect));
+ this.request = simpleXhr('GET', channelPath()+"&channel="+this.name+"&new=yes&create="+(socket.readyState == socket.OPEN ? "no" : "yes")+"&seq="+lastReceivedSeqNumber,
+ true, undefined, _wm(this, this.pollDataHandler), this.xhrGenerator);
+ }
+ this.connect = function() {
+ this.attemptConnect();
+ timeout(this.timeouts, "initialConnect", 15000, _wm(this, this.cancelConnect));
+ }
+ this.disconnect = function() {
+ log(this.name+" disconnected");
+ this.isClosed = true;
+ this.clearRequest();
+ }
+ }
+
+ function StreamingChannel() {
+ this.weight = 2;
+ this.name = "streaming";
+ var self = this;
+
+ var isConnected = false;
+ var request;
+ function clearRequest() {
+ if (request) {
+ request.abort();
+ request = null;
+ if (theStream) theStream = null;
+ if (ifrDiv) {
+ ifrDiv.innerHTML = "";
+ ifrDiv = null;
+ }
+ }
+ }
+ var isClosed = false;
+ var timeouts = {};
+ var cursor = 0;
+
+ this.describe = function() {
+ return "{ isConnected: "+isConnected+", isClosed: "+isClosed+", timeouts: "+describeTimeouts(timeouts)+", request: "+(request?"set":"not set")+", cursor: "+cursor+" }";
+ };
+
+ function connectOk() {
+ isConnected = true;
+ timeouts.initialConnect();
+ if (! notifyConnect(self)) {
+ log("streaming transport not chosen for activation");
+ self.disconnect();
+ return;
+ }
+ }
+
+ function streamDataHandler() {
+ if (timeouts.data) timeouts.data();
+ if (isClosed) return;
+ try {
+ if (! request.responseText) return;
+ } catch (e) { return; }
+ if (! isConnected) {
+ var msg = readMessage(request.responseText, cursor);
+ if (! msg) return;
+ cursor = msg.lastReceivedSeqNumber;
+ if (msg.message == "oob:ok") {
+ connectOk();
+ } else {
+ log("stream: incorrect channel connect message:"+msg.message);
+ self.disconnect();
+ return;
+ }
+ } else {
+ cursor = handleMessages(request.responseText, cursor, self);
+ }
+ if (! request || request.readyState == 4) {
+ clearRequest();
+ if (isConnected) {
+ log("stream connection unexpectedly closed.");
+ hiccup(self);
+ return;
+ }
+ }
+ timeout(timeouts, "data", 60*1000, function() { hiccup(self); });
+ }
+
+ function iframeDataHandler(data) {
+ if (isClosed) return;
+ if (! isConnected) {
+ if (data == "oob:ok") {
+ connectOk();
+ } else {
+ log("iframe stream: unexpected data on connect - "+data);
+ }
+ } else {
+ handleMessages(data, 0, self, iframeReader);
+ }
+ }
+
+ function cancelConnect() {
+ isClosed = true;
+ clearRequest();
+ log("stream: failed to connect.");
+ }
+
+ // IE Stuff.
+ var theStream;
+ var ifrDiv;
+ var iframeTestCount = 0;
+ function testIframe() {
+ var state;
+ try {
+ state = ifrDiv.firstChild.readyState;
+ } catch (e) {
+ hiccup(self);
+ return;
+ }
+ if (state == 'interactive' || iframeTestCount > 10) {
+ try { var tmp = ifrDiv.firstChild.contentWindow.document.getElementById("thebody") }
+ catch (e) { hiccup(self); }
+ } else {
+ iframeTestCount++;
+ setTimeout(testIframe, 500);
+ }
+ }
+
+ this.connect = function() {
+ timeout(timeouts, "initialConnect", 15000, cancelConnect)
+
+ if (canUseSubdomains) {
+ var streamurl = "//"+randomVar()+".comet."+host+channelPath()+"&channel=streaming&type=iframe&new=yes&create="+(socket.readyState == socket.OPEN ? "no" : "yes")+"&seq="+lastReceivedSeqNumber;
+ log("stream to: "+streamurl);
+ if ($ && $.browser.opera) {
+ // set up the opera stream; requires jquery because, why not?
+ ifrDiv = $('<div style="display: none;"></div>').get(0);
+ $('body').append(ifrDiv);
+ window.comet = {
+ pass_data: iframeDataHandler,
+ disconnect: function() { hiccup(self); }
+ }
+ $(ifrDiv).append($("<iframe src='"+streamurl+"'></iframe>"));
+ iframeTestCount = 0;
+ setTimeout(testIframe, 2000);
+ // if event-source supported disconnect notifications, fuck yeah we'd use it.
+// theStream = $('<event-source>');
+// var streamurl = channelPath()+"&channel=streaming&type=opera&new=yes&create="+(socket.readyState == socket.OPEN ? "no" : "yes")+"&seq="+lastReceivedSeqNumber;
+// theStream.get(0).addEventListener('message', function(event) {
+// iframeDataHandler(event.data);
+// }, false);
+// theStream.attr('src', streamurl);
+ log("stream connect sent!");
+ return;
+ }
+ try { // TODO: remove reference to both theStream and ifrDiv on unload!
+ theStream = (window.ActiveXObject && new ActiveXObject("htmlfile"));
+ if (theStream) {
+ theStream.open();
+ theStream.write("<html><head><title>f<\/title><\/head><body>")
+ theStream.write("<s"+"cript>document.domain='"+document.domain+"';<\/s"+"cript>")
+ theStream.write("<\/body><\/html>")
+ theStream.close();
+ ifrDiv = theStream.createElement("div")
+ theStream.appendChild(ifrDiv)
+ theStream.parentWindow.comet = {
+ pass_data: iframeDataHandler,
+ disconnect: function() { hiccup(self); }
+ }
+ ifrDiv.innerHTML = "<iframe src='"+streamurl+"'></iframe>";
+ iframeTestCount = 0;
+ setTimeout(testIframe, 2000);
+ }
+ } catch (e) {
+ theStream = false
+ }
+ } else if ($ && $.browser.opera) {
+ // opera thinks it can do a normal stream, but it can't.
+ log("opera - not trying xhr");
+ return;
+ }
+ // End IE Stuff.
+ if (! theStream) {
+ request = newRequestObject();
+ request.open('get', channelPath()+"&channel=streaming&new=yes&create="+(socket.readyState == socket.OPEN ? "no" : "yes")+"&seq="+lastReceivedSeqNumber);
+ request.onreadystatechange = streamDataHandler;
+ try {
+ request.send(null);
+ } catch (e) { }
+ }
+ log("stream connect sent!");
+ }
+
+ this.disconnect = function() {
+ log("stream disconnected");
+ isClosed = true;
+ clearRequest();
+ }
+ log("new streamchannel");
+ }
+
+ // long-polling related stuff.
+ function iframePath(key) {
+ return "//"+key+".comet."+host+"%contextPath%/xhrXdFrame";
+ }
+
+ function createHiddenDiv() {
+ if (! document.getElementById('newcomethidden')) {
+ var d = document.createElement('div');
+ d.setAttribute('id', 'newcomethidden');
+ d.style.display = 'none';
+ document.body.appendChild(d);
+ }
+ return document.getElementById('newcomethidden');
+ }
+
+ function ExtHostXHR(iframe) {
+ this.open = function(method, uri, async) {
+ this.method = method;
+ this.uri = uri;
+ this.async = async;
+ }
+ var headers = {};
+ this.setRequestHeader = function(name, value) {
+ headers[name] = value;
+ }
+ this.send = function(data) {
+ var self = this;
+ this.xhr = iframe.iframe.contentWindow.doAction(this.method, this.uri, this.async, headers, data || null, function(status, response) {
+ self.readyState = 4;
+ self.status = status;
+ self.responseText = response;
+ self.onreadystatechange();
+ });
+ }
+ this.abort = function() {
+ if (this.xhr)
+ iframe.contentWindow.doAbort(this.xhr);
+ }
+ }
+
+ function createRequestIframe(cb) {
+ var randomKey = randomVar();
+ try {
+ var activeXControl = (window.ActiveXObject && new ActiveXObject("htmlfile"));
+ var htmlfileDiv;
+ if (activeXControl) {
+ activeXControl.open();
+ activeXControl.write('<html><head><title>f</title></head><body>');
+ activeXControl.write('<scr'+'ipt>document.domain=\''+document.domain+'\';</scr'+'ipt>');
+ activeXControl.write('</body></html>');
+ activeXControl.close();
+ htmlfileDiv = activeXControl.createElement('div');
+ activeXControl.appendChild(htmlfileDiv);
+ activeXControl.parentWindow["done_"+randomKey] = cb;
+ htmlfileDiv.innerHTML = "<iframe src='"+iframePath(randomKey)+"'></iframe>";
+ return {iframe: htmlfileDiv.firstChild /* should be an iframe */, axc: activeXControl, div: htmlfileDiv};
+ }
+ } catch (e) {
+ activeXControl = false;
+ }
+ log("Not using IE setup.");
+ var requestIframe = document.createElement('iframe');
+ createHiddenDiv().appendChild(requestIframe);
+ window["done_"+randomKey] = function() { try { delete window["done_"+randomKey]; } catch (e) { }; cb(); }
+ requestIframe.src = iframePath(randomKey);
+ return {iframe: requestIframe};
+ }
+
+ function createIframeRequestObject() {
+ if (! longPollingIFrame) throw Error("WebSocket isn't properly set up!");
+ return new ExtHostXHR(longPollingIFrame);
+ }
+
+ var longPollingIFrame;
+ function LongPollingChannel() {
+ ShortPollingChannel.apply(this); // sets up other state.
+ this.weight = 1;
+ this.name = "longpolling";
+
+ this.pollDelay = 0;
+ this.pollTimeout = 15000;
+ this.pollParams = function() {
+ return "&timeout="+(this.pollTimeout-5000);
+ }
+ var connect = this.connect;
+ this.connect = function() {
+ if (! longPollingIFrame) {
+ longPollingIFrame =
+ createRequestIframe(_wm(this, connect)); // specifically *not* this.connect. we want the old one!
+ } else {
+ connect.apply(this);
+ }
+ }
+ this.xhrGenerator = createIframeRequestObject;
+ this.emptyResponseBad = true;
+ }
+} \ No newline at end of file
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html b/trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html
new file mode 100644
index 0000000..3bdb5c4
--- /dev/null
+++ b/trunk/infrastructure/net.appjet.ajstdlib/streaming-iframe.html
@@ -0,0 +1,76 @@
+<html>
+<head>
+<script>
+function createRequestObject() {
+ var xmlhttp=false;
+ /*@cc_on @*/
+ /*@if (@_jscript_version >= 5)
+ try {
+ xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+ } catch (e) {
+ try {
+ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+ } catch (E) {
+ xmlhttp = false;
+ }
+ }
+ @end @*/
+ if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
+ try {
+ xmlhttp = new XMLHttpRequest();
+ } catch (e) {
+ xmlhttp=false;
+ }
+ }
+ if (!xmlhttp && window.createRequest) {
+ try {
+ xmlhttp = window.createRequest();
+ } catch (e) {
+ xmlhttp=false;
+ }
+ }
+ return xmlhttp
+}
+var host = window.location.host;
+var oldDomain = document.domain;
+var newDomain = oldDomain.substring(oldDomain.indexOf(".", oldDomain.indexOf(".")+1)+1);
+
+function doAction(method, uri, async, headers, body, cb) {
+ try {
+ document.domain = oldDomain;
+ } catch (e) { }
+ var req = createRequestObject();
+ req.open(method, '//'+host+uri, async);
+ for (var i in headers) {
+ req.setRequestHeader(i, headers[i]);
+ }
+ req.onreadystatechange = function() {
+ if (req.readyState == 4) {
+ try {
+ document.domain = newDomain;
+ cb(req.status, req.responseText);
+ } catch (e) {
+ // yikes. well, hopefully a timeout will notice this error.
+ }
+ }
+ }
+ req.send(body);
+}
+function doAbort(xhr) {
+ try {
+ document.domain = oldDomain;
+ } catch (e) { }
+ xhr.abort();
+}
+document.domain = newDomain;
+window.onload = function() {
+ var doneKey = 'done_'+oldDomain.split(".", 2)[0];
+ setTimeout(function() {
+ window.parent[doneKey]();
+ }, 0);
+}
+</script>
+</head>
+<body>
+</body>
+</html>
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/streaming.scala b/trunk/infrastructure/net.appjet.ajstdlib/streaming.scala
new file mode 100644
index 0000000..fbff137
--- /dev/null
+++ b/trunk/infrastructure/net.appjet.ajstdlib/streaming.scala
@@ -0,0 +1,892 @@
+/**
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.appjet.ajstdlib;
+
+import scala.collection.mutable.{Queue, HashMap, SynchronizedMap, ArrayBuffer};
+import javax.servlet.http.{HttpServletRequest, HttpServletResponse, HttpServlet};
+import org.mortbay.jetty.servlet.{ServletHolder, Context};
+import org.mortbay.jetty.{HttpConnection, Handler, RetryRequest};
+import org.mortbay.jetty.nio.SelectChannelConnector;
+import org.mortbay.io.nio.SelectChannelEndPoint;
+import org.mortbay.util.ajax.{ContinuationSupport, Continuation};
+
+import java.util.{Timer, TimerTask};
+import java.lang.ref.WeakReference;
+
+import org.mozilla.javascript.{Context => JSContext, Scriptable};
+
+import net.appjet.oui._;
+import net.appjet.oui.Util.enumerationToRichEnumeration;
+import net.appjet.common.util.HttpServletRequestFactory;
+
+trait SocketConnectionHandler {
+ def message(sender: StreamingSocket, data: String, req: HttpServletRequest);
+ def connect(socket: StreamingSocket, req: HttpServletRequest);
+ def disconnect(socket: StreamingSocket, req: HttpServletRequest);
+}
+
+object SocketManager {
+ val sockets = new HashMap[String, StreamingSocket] with SynchronizedMap[String, StreamingSocket];
+ val handler = new SocketConnectionHandler {
+ val cometLib = new FixedDiskLibrary(new SpecialJarOrNotFile(config.ajstdlibHome, "oncomet.js"));
+ def cometExecutable = cometLib.executable;
+
+ def message(socket: StreamingSocket, data: String, req: HttpServletRequest) {
+ val t1 = profiler.time;
+// println("Message from: "+socket.id+": "+data);
+ val runner = ScopeReuseManager.getRunner;
+ val ec = ExecutionContext(new RequestWrapper(req), new ResponseWrapper(null), runner);
+ ec.attributes("cometOperation") = "message";
+ ec.attributes("cometId") = socket.id;
+ ec.attributes("cometData") = data;
+ ec.attributes("cometSocket") = socket;
+ net.appjet.oui.execution.execute(
+ ec,
+ (sc: Int, msg: String) =>
+ throw new HandlerException(sc, msg, null),
+ () => {},
+ () => { ScopeReuseManager.freeRunner(runner); },
+ Some(cometExecutable));
+ cometlatencies.register(((profiler.time-t1)/1000).toInt);
+ }
+ def connect(socket: StreamingSocket, req: HttpServletRequest) {
+// println("Connect on: "+socket);
+ val runner = ScopeReuseManager.getRunner;
+ val ec = ExecutionContext(new RequestWrapper(req), new ResponseWrapper(null), runner);
+ ec.attributes("cometOperation") = "connect";
+ ec.attributes("cometId") = socket.id;
+ ec.attributes("cometSocket") = socket;
+ net.appjet.oui.execution.execute(
+ ec,
+ (sc: Int, msg: String) =>
+ throw new HandlerException(sc, msg, null),
+ () => {},
+ () => { ScopeReuseManager.freeRunner(runner); },
+ Some(cometExecutable));
+ }
+ def disconnect(socket: StreamingSocket, req: HttpServletRequest) {
+ val toRun = new Runnable {
+ def run() {
+ val runner = ScopeReuseManager.getRunner;
+ val ec = ExecutionContext(new RequestWrapper(req), new ResponseWrapper(null), runner);
+ ec.attributes("cometOperation") = "disconnect";
+ ec.attributes("cometId") = socket.id;
+ ec.attributes("cometSocket") = socket;
+ net.appjet.oui.execution.execute(
+ ec,
+ (sc: Int, msg: String) =>
+ throw new HandlerException(sc, msg, null),
+ () => {},
+ () => { ScopeReuseManager.freeRunner(runner); },
+ Some(cometExecutable));
+ }
+ }
+ main.server.getThreadPool().dispatch(toRun);
+ }
+ }
+ def apply(id: String, create: Boolean) = {
+ if (create) {
+ Some(sockets.getOrElseUpdate(id, new StreamingSocket(id, handler)));
+ } else {
+ if (id == null)
+ error("bad id: "+id);
+ sockets.get(id);
+ }
+ }
+ class HandlerException(val sc: Int, val msg: String, val cause: Exception)
+ extends RuntimeException("An error occurred while handling a request: "+sc+" - "+msg, cause);
+}
+
+// And this would be the javascript interface. Whee.
+object Comet extends CometSupport.CometHandler {
+ def init() {
+ CometSupport.cometHandler = this;
+ context.start();
+ }
+
+ val acceptableTransports = {
+ val t = new ArrayBuffer[String];
+ if (! config.disableShortPolling) {
+ t += "shortpolling";
+ }
+ if (config.transportUseWildcardSubdomains) {
+ t += "longpolling";
+ }
+ t += "streaming";
+ t.mkString("['", "', '", "']");
+ }
+
+
+ val servlet = new StreamingSocketServlet();
+ val holder = new ServletHolder(servlet);
+ val context = new Context(null, "/", Context.NO_SESSIONS | Context.NO_SECURITY);
+ context.addServlet(holder, "/*");
+ context.setMaxFormContentSize(1024*1024);
+
+ def handleCometRequest(req: HttpServletRequest, res: HttpServletResponse) {
+ context.handle(req.getRequestURI().substring(config.transportPrefix.length), req, res, Handler.FORWARD);
+ }
+
+ lazy val ccLib = new FixedDiskResource(new JarOrNotFile(config.ajstdlibHome, "streaming-client.js") {
+ override val classBase = "/net/appjet/ajstdlib/";
+ override val fileSep = "/../../net.appjet.ajstdlib/";
+ });
+ def clientCode(contextPath: String, acceptableChannelTypes: String) = {
+ ccLib.contents.replaceAll("%contextPath%", contextPath).replaceAll("\"%acceptableChannelTypes%\"", acceptableChannelTypes).replaceAll("\"%canUseSubdomains%\"", if (config.transportUseWildcardSubdomains) "true" else "false");
+ }
+ def clientMTime = ccLib.fileLastModified;
+
+ lazy val ccFrame = new FixedDiskResource(new JarOrNotFile(config.ajstdlibHome, "streaming-iframe.html") {
+ override val classBase = "/net/appjet/ajstdlib/";
+ override val fileSep = "/../../net.appjet.ajstdlib/";
+ });
+ def frameCode = {
+ if (! config.devMode)
+ ccFrame.contents.replace("<head>\n<script>", """<head>
+ <script>
+ window.onerror = function() { /* silently drop errors */ }
+ </script>
+ <script>""");
+ else
+ ccFrame.contents;
+ }
+
+
+ // public
+ def connections(ec: ExecutionContext): Scriptable = {
+ JSContext.getCurrentContext().newArray(ec.runner.globalScope, SocketManager.sockets.keys.toList.toArray[Object]);
+ }
+
+ // public
+ def connectionStatus = {
+ val m = new HashMap[String, Int];
+ for (socket <- SocketManager.sockets.values) {
+ val key = socket.currentChannel.map(_.kind.toString()).getOrElse("(unconnected)");
+ m(key) = m.getOrElse(key, 0) + 1;
+ }
+ m;
+ }
+
+ // public
+ def getNumCurrentConnections = SocketManager.sockets.size;
+
+ // public
+ def write(id: String, msg: String) {
+ SocketManager.sockets.get(id).foreach(_.sendMessage(false, msg));
+ }
+
+ // public
+ def isConnected(id: String): java.lang.Boolean = {
+ SocketManager.sockets.contains(id);
+ }
+
+ // public
+ def getTransportType(id: String): String = {
+ SocketManager.sockets.get(id).map(_.currentChannel.map(_.kind.toString()).getOrElse("none")).getOrElse("none");
+ }
+
+ // public
+ def disconnect(id: String) {
+ SocketManager.sockets.get(id).foreach(x => x.close());
+ }
+
+ // public
+ def setAttribute(ec: ExecutionContext, id: String, key: String, value: String) {
+ ec.attributes.get("cometSocket").map(x => Some(x.asInstanceOf[StreamingSocket])).getOrElse(SocketManager.sockets.get(id))
+ .foreach(_.attributes(key) = value);
+ }
+ // public
+ def getAttribute(ec: ExecutionContext, id: String, key: String): String = {
+ ec.attributes.get("cometSocket").map(x => Some(x.asInstanceOf[StreamingSocket])).getOrElse(SocketManager.sockets.get(id))
+ .map(_.attributes.getOrElse(key, null)).getOrElse(null);
+ }
+
+ // public
+ def getClientCode(ec: ExecutionContext) = {
+ clientCode(config.transportPrefix, acceptableTransports);
+ }
+ def getClientMTime(ec: ExecutionContext) = clientMTime;
+}
+
+class StreamingSocket(val id: String, handler: SocketConnectionHandler) {
+ var hasConnected = false;
+ var shutdown = false;
+ var killed = false;
+ var currentChannel: Option[Channel] = None;
+ val activeChannels = new HashMap[ChannelType.Value, Channel]
+ with SynchronizedMap[ChannelType.Value, Channel];
+
+ lazy val attributes = new HashMap[String, String] with SynchronizedMap[String, String];
+
+ def channel(typ: String, create: Boolean, subType: String): Option[Channel] = {
+ val channelType = ChannelType.valueOf(typ);
+ if (channelType.isEmpty) {
+ streaminglog(Map(
+ "type" -> "error",
+ "error" -> "unknown channel type",
+ "channelType" -> channelType));
+ None;
+ } else if (create) {
+ Some(activeChannels.getOrElseUpdate(channelType.get, Channels.createNew(channelType.get, this, subType)));
+ } else {
+ activeChannels.get(channelType.get);
+ }
+ }
+
+ val outgoingMessageQueue = new Queue[SocketMessage];
+ val unconfirmedMessages = new HashMap[Int, SocketMessage];
+
+ var lastSentSeqNumber = 0;
+ var lastConfirmedSeqNumber = 0;
+
+ // external API
+ def sendMessage(isControl: boolean, body: String) {
+ if (hasConnected && ! shutdown) {
+ synchronized {
+ lastSentSeqNumber += 1;
+ val msg = new SocketMessage(lastSentSeqNumber, isControl, body);
+ outgoingMessageQueue += msg;
+ unconfirmedMessages(msg.seq) = msg;
+ }
+ currentChannel.foreach(_.messageWaiting());
+ }
+ }
+ def close() {
+ synchronized {
+ sendMessage(true, "kill");
+ shutdown = true;
+ Channels.timer.schedule(new TimerTask {
+ def run() {
+ kill("server request, timeout");
+ }
+ }, 15000);
+ }
+ }
+
+ var creatingRequest: Option[HttpServletRequest] = None;
+ // internal API
+ def kill(reason: String) {
+ synchronized {
+ if (! killed) {
+ streaminglog(Map(
+ "type" -> "event",
+ "event" -> "connection-killed",
+ "connection" -> id,
+ "reason" -> reason));
+ killed = true;
+ SocketManager.sockets -= id;
+ activeChannels.foreach(_._2.close());
+ currentChannel = None;
+ if (hasConnected) {
+ handler.disconnect(this, creatingRequest.getOrElse(null));
+ }
+ }
+ }
+ }
+ def receiveMessage(body: String, req: HttpServletRequest) {
+// println("Message received on "+id+": "+body);
+ handler.message(this, body, req);
+ }
+ def getWaitingMessage(channel: Channel): Option[SocketMessage] = {
+ synchronized {
+ if (currentChannel.isDefined && currentChannel.get == channel &&
+ ! outgoingMessageQueue.isEmpty) {
+ Some(outgoingMessageQueue.dequeue);
+ } else {
+ None;
+ }
+ }
+ }
+ def getUnconfirmedMessages(channel: Channel): Collection[SocketMessage] = {
+ synchronized {
+ if (currentChannel.isDefined && currentChannel.get == channel) {
+ for (i <- lastConfirmedSeqNumber+1 until lastSentSeqNumber+1)
+ yield unconfirmedMessages(i);
+ } else {
+ List[SocketMessage]();
+ }
+ }
+ }
+ def updateConfirmedSeqNumber(channel: Channel, received: Int) {
+ synchronized {
+ if (received > lastConfirmedSeqNumber && (channel == null || (currentChannel.isDefined && channel == currentChannel.get))) {
+ val oldConfirmed = lastConfirmedSeqNumber;
+ lastConfirmedSeqNumber = received;
+ for (i <- oldConfirmed+1 until lastConfirmedSeqNumber+1) { // inclusive!
+ unconfirmedMessages -= i;
+ }
+ }
+ }
+ }
+
+ var lastChannelUpdate = 0;
+ def useChannel(seqNo: Int, channelType0: String, req: HttpServletRequest) = synchronized {
+ if (seqNo <= lastChannelUpdate) false else {
+ lastChannelUpdate = seqNo;
+ val channelType = ChannelType.valueOf(channelType0);
+ if (channelType.isDefined) {
+ val channel = activeChannels.get(channelType.get);
+ if (channel.isDefined) {
+ if (! hasConnected) {
+ hasConnected = true;
+ creatingRequest = Some(HttpServletRequestFactory.createRequest(req));
+ handler.connect(this, req);
+ }
+ currentChannel = channel;
+// println("switching "+id+" to channel: "+channelType0);
+ if (currentChannel.get.isConnected) {
+ revive(channel.get);
+ } else {
+ hiccup(channel.get);
+ }
+ currentChannel.get.messageWaiting();
+ true;
+ } else
+ false;
+ } else
+ false;
+ }
+ }
+// def handleReceivedMessage(seq: Int, data: String) {
+// synchronized {
+// handler.message(this, data)
+// // TODO(jd): add client->server sequence numbers.
+// // if (seq == lastReceivedSeqNumber+1){
+// // lastReceivedSeqNumber = seq;
+// // handler.message(this, data);
+// // } else {
+// // // handle error.
+// // }
+// }
+// }
+ def hiccup(channel: Channel) = synchronized {
+ if (currentChannel.isDefined && channel == currentChannel.get) {
+// println("hiccuping: "+id);
+ scheduleTimeout();
+ }
+ }
+ def revive(channel: Channel) = synchronized {
+ if (currentChannel.isDefined && channel == currentChannel.get) {
+// println("reviving: "+id);
+ cancelTimeout();
+ }
+ }
+ def prepareForReconnect() = synchronized {
+// println("client-side hiccup: "+id);
+ activeChannels.foreach(_._2.close());
+ activeChannels.clear();
+ currentChannel = None;
+ scheduleTimeout();
+ }
+
+ // helpers
+ var timeoutTask: TimerTask = null;
+
+ def scheduleTimeout() {
+ if (timeoutTask != null) return;
+ val p = new WeakReference(this);
+ timeoutTask = new TimerTask {
+ def run() {
+ val socket = p.get();
+ if (socket != null) {
+ socket.kill("timeout");
+ }
+ }
+ }
+ Channels.timer.schedule(timeoutTask, 15*1000);
+ }
+ def cancelTimeout() {
+ if (timeoutTask != null)
+ timeoutTask.cancel();
+ timeoutTask = null;
+ }
+ scheduleTimeout();
+
+ streaminglog(Map(
+ "type" -> "event",
+ "event" -> "connection-created",
+ "connection" -> id));
+}
+
+object ChannelType extends Enumeration("shortpolling", "longpolling", "streaming") {
+ val ShortPolling, LongPolling, Streaming = Value;
+}
+
+object Channels {
+ def createNew(typ: ChannelType.Value, socket: StreamingSocket, subType: String): Channel = {
+ typ match {
+ case ChannelType.ShortPolling => new ShortPollingChannel(socket);
+ case ChannelType.LongPolling => new LongPollingChannel(socket);
+ case ChannelType.Streaming => {
+ subType match {
+ case "iframe" => new StreamingChannel(socket) with IFrameChannel;
+ case "opera" => new StreamingChannel(socket) with OperaChannel;
+ case _ => new StreamingChannel(socket);
+ }
+ }
+ }
+ }
+
+ val timer = new Timer(true);
+}
+
+class SocketMessage(val seq: Int, val isControl: Boolean, val body: String) {
+ def payload = seq+":"+(if (isControl) "1" else "0")+":"+body;
+}
+
+trait Channel {
+ def messageWaiting();
+ def close();
+ def handle(req: HttpServletRequest, res: HttpServletResponse);
+ def isConnected: Boolean;
+
+ def kind: ChannelType.Value;
+ def sendRestartFailure(ec: ExecutionContext);
+}
+
+trait XhrChannel extends Channel {
+ def wrapBody(msg: String) = msg.length+":"+msg;
+
+ // wire format: msgLength:seq:[01]:msg
+ def wireFormat(msg: SocketMessage) = wrapBody(msg.payload);
+ def controlMessage(data: String) = wrapBody("oob:"+data);
+
+ def sendRestartFailure(ec: ExecutionContext) {
+ ec.response.write(controlMessage("restart-fail"));
+ }
+}
+
+// trait IFrameChannel extends Channel {
+// def wireFormat(msg: SocketMessage)
+// }
+
+class ShortPollingChannel(val socket: StreamingSocket) extends Channel with XhrChannel {
+ def kind = ChannelType.ShortPolling;
+
+ def messageWaiting() {
+ // do nothing.
+ }
+ def close() {
+ // do nothing
+ }
+ def isConnected = false;
+
+ def handle(req: HttpServletRequest, res: HttpServletResponse) {
+ val ec = req.getAttribute("executionContext").asInstanceOf[ExecutionContext];
+ val out = new StringBuilder();
+ socket.synchronized {
+ socket.revive(this);
+ if (req.getParameter("new") == "yes") {
+ out.append(controlMessage("ok"));
+ } else {
+ val lastReceivedSeq = java.lang.Integer.parseInt(req.getParameter("seq"));
+ socket.updateConfirmedSeqNumber(this, lastReceivedSeq);
+ for (msg <- socket.getUnconfirmedMessages(this)) {
+ out.append(wireFormat(msg));
+ }
+ // ALL MESSAGES ARE UNCONFIRMED AT THIS POINT! JUST CLEAR QUEUE.
+ var msg = socket.getWaitingMessage(this);
+ while (msg.isDefined) {
+ msg = socket.getWaitingMessage(this);
+ }
+ }
+ }
+// println("Writing to "+socket.id+": "+out.toString);
+ ec.response.write(out.toString);
+ socket.synchronized {
+ socket.hiccup(this);
+ }
+ }
+}
+
+trait IFrameChannel extends StreamingChannel {
+ override def wrapBody(msgBody: String) = {
+ val txt = "<script type=\"text/javascript\">p('"+
+ msgBody.replace("\\","\\\\").replace("'", "\\'")+"');</script>";
+ if (txt.length < 256)
+ String.format("%256s", txt);
+ else
+ txt;
+ }
+
+ def header(req: HttpServletRequest) = {
+ val document_domain =
+ "\""+req.getHeader("Host").split("\\.").slice(2).mkString(".").split(":")(0)+"\"";
+ """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+"http://www.w3.org/TR/html4/strict.dtd">
+<html><head><title>f</title></head><body id="thebody" onload="(!parent.closed)&&d()"><script type="text/javascript">document.domain = """+document_domain+""";
+var p = function(data) { try { parent.comet.pass_data } catch (err) { /* failed to pass data. no recourse. */ } };
+var d = parent.comet.disconnect;"""+(if(!config.devMode)"\nwindow.onerror = function() { /* silently drop errors */ }\n" else "")+"</script>"; // " - damn textmate mode!
+ }
+
+ override def sendRestartFailure(ec: ExecutionContext) {
+ ec.response.write(header(ec.request.req));
+ ec.response.write(controlMessage("restart-fail"));
+ }
+
+ override def handleNewConnection(req: HttpServletRequest, res: HttpServletResponse, out: StringBuilder) {
+ super.handleNewConnection(req, res, out);
+ res.setContentType("text/html");
+ out.append(header(req));
+ }
+}
+
+trait OperaChannel extends StreamingChannel {
+ override def wrapBody(msgBody: String) = {
+ "Event: message\ndata: "+msgBody+"\n\n";
+ }
+ override def handleNewConnection(req: HttpServletRequest, res: HttpServletResponse, out: StringBuilder) {
+ super.handleNewConnection(req, res, out);
+ res.setContentType("application/x-dom-event-stream");
+ }
+}
+
+class StreamingChannel(val socket: StreamingSocket) extends Channel with XhrChannel {
+ def kind = ChannelType.Streaming;
+
+ var c: Option[SelectChannelConnector.RetryContinuation] = None;
+ var doClose = false;
+
+ def messageWaiting() {
+ main.server.getThreadPool().dispatch(new Runnable() {
+ def run() {
+ socket.synchronized {
+ c.filter(_.isPending()).foreach(_.resume());
+ }
+ }
+ });
+ }
+
+ def setSequenceNumberIfAppropriate(req: HttpServletRequest) {
+ if (c.get.isNew) {
+ val lastReceivedSeq = java.lang.Integer.parseInt(req.getParameter("seq"));
+ socket.updateConfirmedSeqNumber(this, lastReceivedSeq);
+ }
+ }
+
+ def sendHandshake(req: HttpServletRequest, res: HttpServletResponse, out: StringBuilder) {
+ out.append(controlMessage("ok"));
+ }
+
+ def sendUnconfirmedMessages(req: HttpServletRequest, res: HttpServletResponse, out: StringBuilder) {
+ for (msg <- socket.getUnconfirmedMessages(this)) {
+ out.append(wireFormat(msg));
+ }
+ }
+
+ def sendWaitingMessages(req: HttpServletRequest, res: HttpServletResponse, out: StringBuilder) {
+ var msg = socket.getWaitingMessage(this);
+ while (msg.isDefined) {
+ out.append(wireFormat(msg.get));
+ msg = socket.getWaitingMessage(this);
+ }
+ }
+
+ def handleUnexpectedDisconnect(req: HttpServletRequest, res: HttpServletResponse, ep: KnowsAboutDispatch) {
+ socket.synchronized {
+ socket.hiccup(this);
+ }
+ ep.close();
+ }
+
+ def writeAndFlush(req: HttpServletRequest, res: HttpServletResponse, out: StringBuilder, ep: KnowsAboutDispatch) {
+// println("Writing to "+socket.id+": "+out.toString);
+ res.getWriter.print(out.toString);
+ res.getWriter.flush();
+ }
+
+ def suspendIfNecessary(req: HttpServletRequest, res: HttpServletResponse,
+ out: StringBuilder, ep: KnowsAboutDispatch) {
+ scheduleKeepalive(50*1000);
+ ep.undispatch();
+ c.get.suspend(0);
+ }
+
+ def sendKeepaliveIfNecessary(out: StringBuilder, sendKeepalive: Boolean) {
+ if (out.length == 0 && sendKeepalive) {
+ out.append(controlMessage("keepalive"));
+ }
+ }
+
+ def shouldHandshake(req: HttpServletRequest, res: HttpServletResponse) = c.get.isNew;
+
+ var sendKeepalive = false;
+ var keepaliveTask: TimerTask = null;
+ def scheduleKeepalive(timeout: Int) {
+ if (keepaliveTask != null) {
+ keepaliveTask.cancel();
+ }
+ val p = new WeakReference(this);
+ keepaliveTask = new TimerTask {
+ def run() {
+ val channel = p.get();
+ if (channel != null) {
+ channel.synchronized {
+ channel.sendKeepalive = true;
+ channel.messageWaiting();
+ }
+ }
+ }
+ }
+ Channels.timer.schedule(keepaliveTask, timeout);
+ }
+
+ def handleNewConnection(req: HttpServletRequest, res: HttpServletResponse, out: StringBuilder) {
+ req.setAttribute("StreamingSocketServlet_channel", this);
+ res.setHeader("Connection", "close");
+ for ((k, v) <- Util.noCacheHeaders) { res.setHeader(k, v); } // maybe this will help with proxies?
+ res.setContentType("text/messages; charset=utf-8");
+ }
+
+ def handle(req: HttpServletRequest, res: HttpServletResponse) {
+ val ec = req.getAttribute("executionContext").asInstanceOf[ExecutionContext];
+ val ep = HttpConnection.getCurrentConnection.getEndPoint.asInstanceOf[KnowsAboutDispatch];
+ val out = new StringBuilder;
+ try {
+ socket.synchronized {
+ val sendKeepaliveNow = sendKeepalive;
+ sendKeepalive = false;
+ if (keepaliveTask != null) {
+ keepaliveTask.cancel();
+ keepaliveTask = null;
+ }
+ c = Some(ContinuationSupport.getContinuation(req, socket).asInstanceOf[SelectChannelConnector.RetryContinuation]);
+ setSequenceNumberIfAppropriate(req);
+ if (doClose) {
+ ep.close();
+ return;
+ }
+ if (c.get.isNew) {
+ handleNewConnection(req, res, out);
+ } else {
+ c.get.suspend(-1);
+ if (ep.isDispatched) {
+ handleUnexpectedDisconnect(req, res, ep);
+ return;
+ }
+ }
+ if (shouldHandshake(req, res)) {
+// println("new stream request: "+socket.id);
+ sendHandshake(req, res, out);
+ sendUnconfirmedMessages(req, res, out);
+ }
+ sendWaitingMessages(req, res, out);
+ sendKeepaliveIfNecessary(out, sendKeepaliveNow);
+ suspendIfNecessary(req, res, out, ep);
+ }
+ } finally {
+ writeAndFlush(req, res, out, ep);
+ }
+ }
+
+ def close() {
+ doClose = true;
+ messageWaiting();
+ }
+
+ def isConnected = ! doClose;
+}
+
+class LongPollingChannel(socket: StreamingSocket) extends StreamingChannel(socket) {
+// println("creating longpoll!");
+ override def kind = ChannelType.LongPolling;
+
+ override def shouldHandshake(req: HttpServletRequest, res: HttpServletResponse) =
+ req.getParameter("new") == "yes";
+
+ override def sendHandshake(req: HttpServletRequest, res: HttpServletResponse, out: StringBuilder) {
+// println("sending handshake");
+ out.append(controlMessage("ok"));
+ }
+
+ override def suspendIfNecessary(req: HttpServletRequest, res: HttpServletResponse,
+ out: StringBuilder, ep: KnowsAboutDispatch) {
+ if (out.length == 0) {
+// println("suspending longpoll: "+socket.id);
+ val to = java.lang.Integer.parseInt(req.getParameter("timeout"));
+// println("LongPoll scheduling keepalive for: "+to);
+ scheduleKeepalive(to);
+ ep.undispatch();
+ c.get.suspend(0);
+ }
+ }
+
+ override def writeAndFlush(req: HttpServletRequest, res: HttpServletResponse,
+ out: StringBuilder, ep: KnowsAboutDispatch) {
+ if (out.length > 0) {
+// println("Writing to "+socket.id+": "+out.toString);
+// println("writing and flushing longpoll")
+ val ec = req.getAttribute("executionContext").asInstanceOf[ExecutionContext];
+ for ((k, v) <- Util.noCacheHeaders) { ec.response.setHeader(k, v); } // maybe this will help with proxies?
+// println("writing: "+out);
+ ec.response.write(out.toString);
+ socket.synchronized {
+ socket.hiccup(this);
+ c = None;
+ }
+ }
+ }
+
+ override def handleNewConnection(req: HttpServletRequest, res: HttpServletResponse, out: StringBuilder) {
+ socket.revive(this);
+ req.setAttribute("StreamingSocketServlet_channel", this);
+ }
+
+ override def isConnected = socket.synchronized {
+ c.isDefined;
+ }
+}
+
+class StreamingSocketServlet extends HttpServlet {
+ val version = 2;
+
+ override def doGet(req: HttpServletRequest, res: HttpServletResponse) {
+// describeRequest(req);
+ val ec = req.getAttribute("executionContext").asInstanceOf[ExecutionContext];
+ try {
+ if (req.getPathInfo() == "/js/client.js") {
+ val contextPath = config.transportPrefix;
+ val acceptableTransports = Comet.acceptableTransports;
+ ec.response.setContentType("application/x-javascript");
+ ec.response.write(Comet.clientCode(contextPath, acceptableTransports));
+ } else if (req.getPathInfo() == "/xhrXdFrame") {
+ ec.response.setContentType("text/html; charset=utf-8");
+ ec.response.write(Comet.frameCode);
+ } else {
+ val v = req.getParameter("v");
+ if (v == null || java.lang.Integer.parseInt(v) != version) {
+ res.sendError(HttpServletResponse.SC_BAD_REQUEST, "bad version number!");
+ return;
+ }
+ val existingChannel = req.getAttribute("StreamingSocketServlet_channel");
+ if (existingChannel != null) {
+ existingChannel.asInstanceOf[Channel].handle(req, res);
+ } else {
+ val socketId = req.getParameter("id");
+ val channelType = req.getParameter("channel");
+ val isNew = req.getParameter("new") == "yes";
+ val shouldCreateSocket = req.getParameter("create") == "yes";
+ val subType = req.getParameter("type");
+ val channel = SocketManager(socketId, shouldCreateSocket).map(_.channel(channelType, isNew, subType)).getOrElse(None);
+ if (channel.isDefined) {
+ channel.get.handle(req, res);
+ } else {
+ streaminglog(Map(
+ "type" -> "event",
+ "event" -> "restart-failure",
+ "connection" -> socketId));
+ val failureChannel = ChannelType.valueOf(channelType).map(Channels.createNew(_, null, subType));
+ if (failureChannel.isDefined) {
+ failureChannel.get.sendRestartFailure(ec);
+ } else {
+ ec.response.setStatusCode(HttpServletResponse.SC_NOT_FOUND);
+ ec.response.write("So such socket, and/or unknown channel type: "+channelType);
+ }
+ }
+ }
+ }
+ } catch {
+ case e: RetryRequest => throw e;
+ case t: Throwable => {
+ exceptionlog("A comet error occurred: ");
+ exceptionlog(t);
+ ec.response.setStatusCode(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ ec.response.write(t.getMessage());
+ }
+ }
+ }
+
+ def describeRequest(req: HttpServletRequest) {
+ println(req.getMethod+" on "+req.getRequestURI()+"?"+req.getQueryString());
+ for (pname <-
+ req.getParameterNames.asInstanceOf[java.util.Enumeration[String]]) {
+ println(" "+pname+" -> "+req.getParameterValues(pname).mkString("[", ",", "]"));
+ }
+ }
+
+ override def doPost(req: HttpServletRequest, res: HttpServletResponse) {
+ val v = req.getParameter("v");
+ if (v == null || java.lang.Integer.parseInt(v) != version) {
+ res.sendError(HttpServletResponse.SC_BAD_REQUEST, "bad version number!");
+ return;
+ }
+ val ec = req.getAttribute("executionContext").asInstanceOf[ExecutionContext];
+ val socketId = req.getParameter("id");
+ val socket = SocketManager(socketId, false);
+
+// describeRequest(req);
+
+ if (socket.isEmpty) {
+ ec.response.write("restart-fail");
+ streaminglog(Map(
+ "type" -> "event",
+ "event" -> "restart-failure",
+ "connection" -> socketId));
+// println("socket restart-fail: "+socketId);
+ } else {
+ val seq = java.lang.Integer.parseInt(req.getParameter("seq"));
+ socket.get.updateConfirmedSeqNumber(null, seq);
+ val messages = req.getParameterValues("m");
+ val controlMessages = req.getParameterValues("oob");
+ try {
+ if (messages != null)
+ for (msg <- messages) socket.get.receiveMessage(msg, req);
+ if (controlMessages != null)
+ for (msg <- controlMessages) {
+// println("Control message from "+socket.get.id+": "+msg);
+ msg match {
+ case "hiccup" => {
+ streaminglog(Map(
+ "type" -> "event",
+ "event" -> "hiccup",
+ "connection" -> socketId));
+ socket.get.prepareForReconnect();
+ }
+ case _ => {
+ if (msg.startsWith("useChannel")) {
+ val msgParts = msg.split(":");
+ socket.get.useChannel(java.lang.Integer.parseInt(msgParts(1)), msgParts(2), req);
+ } else if (msg.startsWith("kill")) {
+ socket.get.kill("client request: "+msg.substring(Math.min(msg.length, "kill:".length)));
+ } else {
+ streaminglog(Map(
+ "type" -> "error",
+ "error" -> "unknown control message",
+ "connection" -> socketId,
+ "message" -> msg));
+ }
+ }
+ }
+ }
+ ec.response.write("ok");
+ } catch {
+ case e: SocketManager.HandlerException => {
+ exceptionlog(e);
+ ec.response.setStatusCode(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ ec.response.write(e.getMessage());
+ // log these?
+ }
+ case t: Throwable => {
+ // shouldn't happen...
+ exceptionlog(t);
+ ec.response.setStatusCode(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ ec.response.write(t.getMessage());
+ }
+ }
+ }
+ }
+}
diff --git a/trunk/infrastructure/net.appjet.ajstdlib/timer.scala b/trunk/infrastructure/net.appjet.ajstdlib/timer.scala
new file mode 100644
index 0000000..dac8fb6
--- /dev/null
+++ b/trunk/infrastructure/net.appjet.ajstdlib/timer.scala
@@ -0,0 +1,85 @@
+/**
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.appjet.ajstdlib;
+
+import scala.collection.mutable.{HashMap,ListBuffer};
+import java.util.concurrent.locks.ReentrantLock;
+
+object timer {
+
+ var _timings = new HashMap[String,ListBuffer[double]];
+ var _lock = new ReentrantLock;
+ var _callstack = new ThreadLocal[ListBuffer[String]];
+
+ def start(opname: String) = {
+ var _localcallstack = _callstack.get();
+ if (_localcallstack == null) {
+ _callstack.set(new ListBuffer[String]);
+ _localcallstack = _callstack.get();
+ }
+ _localcallstack += opname;
+ var _oplabel = _localcallstack.mkString(".");
+ val startTime: long = System.nanoTime();
+
+ new {
+ def done() {
+ val elapsedTimeMs: double = (System.nanoTime() - startTime) / 1.0e6;
+
+ _lock.lock();
+ try {
+ var times = _timings.getOrElse(_oplabel, new ListBuffer[double]);
+ /*
+ if (times.size > 100000) {
+ times = new ListBuffer[double];
+ }*/
+ times += elapsedTimeMs;
+ _timings.put(_oplabel, times);
+ _localcallstack.remove(_localcallstack.length-1);
+ } finally {
+ _lock.unlock();
+ }
+ }
+ }
+ }
+
+ def getOpNames(): Array[String] = {
+ _lock.lock();
+ try {
+ return _timings.keys.toList.toArray;
+ } finally {
+ _lock.unlock();
+ }
+ }
+
+ def getStats(opname: String): Array[double] = {
+ _lock.lock();
+
+ try {
+ var times:ListBuffer[double] = _timings(opname);
+ var total = times.foldRight(0.0)(_ + _);
+ return Array(times.size, total, (total / times.size));
+ } finally {
+ _lock.unlock();
+ }
+ }
+
+ def reset() {
+ _lock.lock();
+ _timings = new HashMap[String,ListBuffer[double]];
+ _lock.unlock();
+ }
+}