From 02da812337975b2e9f714e71ec6043074e97e73b Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Fri, 15 Sep 2017 14:29:59 +0200 Subject: [PATCH 01/80] bumped up version to 1.2.0 SNAP --- moo-api/pom.xml | 2 +- moo-client/pom.xml | 2 +- moo-server/pom.xml | 2 +- moo-ui-web1/pom.xml | 2 +- pom.xml | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/moo-api/pom.xml b/moo-api/pom.xml index 7aba2f4..a300527 100644 --- a/moo-api/pom.xml +++ b/moo-api/pom.xml @@ -3,7 +3,7 @@ pl.zimowski moo - 1.1.0-FINAL + 1.2.0-SNAPSHOT moo-api Moo (api) diff --git a/moo-client/pom.xml b/moo-client/pom.xml index 4f86d33..d7cb196 100644 --- a/moo-client/pom.xml +++ b/moo-client/pom.xml @@ -3,7 +3,7 @@ pl.zimowski moo - 1.1.0-FINAL + 1.2.0-SNAPSHOT moo-client Client app for mooing diff --git a/moo-server/pom.xml b/moo-server/pom.xml index d343dbc..c2fa461 100644 --- a/moo-server/pom.xml +++ b/moo-server/pom.xml @@ -3,7 +3,7 @@ pl.zimowski moo - 1.1.0-FINAL + 1.2.0-SNAPSHOT moo-server Moo (server) diff --git a/moo-ui-web1/pom.xml b/moo-ui-web1/pom.xml index 9a9532c..d979df7 100644 --- a/moo-ui-web1/pom.xml +++ b/moo-ui-web1/pom.xml @@ -3,7 +3,7 @@ pl.zimowski moo - 1.1.0-FINAL + 1.2.0-SNAPSHOT moo-ui-web1 diff --git a/pom.xml b/pom.xml index ef91c43..10f8f30 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 pl.zimowski moo - 1.1.0-FINAL + 1.2.0-SNAPSHOT pom @@ -186,7 +186,7 @@ pl.zimowski moo-api - 1.1.0-FINAL + 1.2.0-SNAPSHOT org.slf4j From f6940f74c0bbe36acb59f47e2d3c986896ce334d Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Fri, 15 Sep 2017 21:40:30 +0200 Subject: [PATCH 02/80] javadoc --- .../src/main/java/pl/zimowski/moo/server/ClientThread.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moo-server/src/main/java/pl/zimowski/moo/server/ClientThread.java b/moo-server/src/main/java/pl/zimowski/moo/server/ClientThread.java index c734e04..4ed9b71 100644 --- a/moo-server/src/main/java/pl/zimowski/moo/server/ClientThread.java +++ b/moo-server/src/main/java/pl/zimowski/moo/server/ClientThread.java @@ -45,7 +45,7 @@ public class ClientThread extends Thread implements ClientNotification { /** - * Constructs an live link between client and a server. The link is + * Constructs n live link between client and a server. The link is * established over a socket and server notifier. This is all that a * running thread needs to exchange information between client and a * server. From 747dcbb3525c0ce84197711e77ead9106c5d0e6c Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Fri, 15 Sep 2017 21:45:30 +0200 Subject: [PATCH 03/80] javadoc typo --- .../src/main/java/pl/zimowski/moo/server/ClientThread.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moo-server/src/main/java/pl/zimowski/moo/server/ClientThread.java b/moo-server/src/main/java/pl/zimowski/moo/server/ClientThread.java index 4ed9b71..99b75b5 100644 --- a/moo-server/src/main/java/pl/zimowski/moo/server/ClientThread.java +++ b/moo-server/src/main/java/pl/zimowski/moo/server/ClientThread.java @@ -45,7 +45,7 @@ public class ClientThread extends Thread implements ClientNotification { /** - * Constructs n live link between client and a server. The link is + * Constructs a live link between client and a server. The link is * established over a socket and server notifier. This is all that a * running thread needs to exchange information between client and a * server. From 219252094376b1b95ec35ab48c473cbfbf71b462 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 10:27:07 +0200 Subject: [PATCH 04/80] initial travis build script --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..b8c5857 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: java +dist: trusty +jdk: + - oraclejdk8 + - openjdk8 \ No newline at end of file From 448ad3fed06e2d0bf228d4b9d09e4a187ee13840 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 10:38:31 +0200 Subject: [PATCH 05/80] readme: added build status --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index 3b00c22..ed9def0 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,5 @@ +[![Build Status](https://travis-ci.org/mrazjava/moo.svg)](https://travis-ci.org/mrazjava/moo) + # Moo - distributed chat experiment ----------- Mooo is a Java based chat service written as test bed for various concepts. From d3f9e9c23802391682b2f49a884c2cc2d24417b6 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 11:45:35 +0200 Subject: [PATCH 06/80] code coverage w/ coveralls --- .travis.yml | 1 + pom.xml | 6 ++++++ readme.md | 1 + 3 files changed, 8 insertions(+) diff --git a/.travis.yml b/.travis.yml index b8c5857..0008b3e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,6 @@ language: java dist: trusty +after_success: coveralls jdk: - oraclejdk8 - openjdk8 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 10f8f30..a7da8b5 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,12 @@ + + org.eluder.coveralls + coveralls-maven-plugin + 4.3.0 + + diff --git a/readme.md b/readme.md index ed9def0..e59aab6 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,5 @@ [![Build Status](https://travis-ci.org/mrazjava/moo.svg)](https://travis-ci.org/mrazjava/moo) +[![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) # Moo - distributed chat experiment ----------- From 709840c36eb36a6e5ab8913cc22ffa2003711fe2 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 11:54:03 +0200 Subject: [PATCH 07/80] jacoco integration --- .travis.yml | 2 +- pom.xml | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0008b3e..ce32d80 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: java dist: trusty -after_success: coveralls +after_success: mvn clean verify jacoco:report coveralls:report jdk: - oraclejdk8 - openjdk8 \ No newline at end of file diff --git a/pom.xml b/pom.xml index a7da8b5..06985a2 100644 --- a/pom.xml +++ b/pom.xml @@ -48,6 +48,20 @@ + + org.jacoco + jacoco-maven-plugin + 0.7.6.201602180812 + + + prepare-agent + + prepare-agent + + + + + org.eluder.coveralls coveralls-maven-plugin From 2512af41fed318a8e85e9f4787c0e2c4a2ec7781 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 12:16:38 +0200 Subject: [PATCH 08/80] branch status in readme --- readme.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index e59aab6..0e33330 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,6 @@ -[![Build Status](https://travis-ci.org/mrazjava/moo.svg)](https://travis-ci.org/mrazjava/moo) -[![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) +| ------------- | ------------- | +| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) | +| develop | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) | # Moo - distributed chat experiment ----------- From 4403042c50ef7bbc3c3c1669d6ee919e75331fda Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 12:17:37 +0200 Subject: [PATCH 09/80] missing table header --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 0e33330..dd0ad78 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,4 @@ +| branch | status | | ------------- | ------------- | | master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) | | develop | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) | From 72fc99e3595a3a916b59a384ace93c3f085c89af Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 13:41:52 +0200 Subject: [PATCH 10/80] optimized travis build, more readme badges --- .travis.yml | 5 ++--- readme.md | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index ce32d80..acd1bea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,5 @@ language: java dist: trusty -after_success: mvn clean verify jacoco:report coveralls:report +after_success: jacoco:report coveralls:report jdk: - - oraclejdk8 - - openjdk8 \ No newline at end of file + - oraclejdk8 \ No newline at end of file diff --git a/readme.md b/readme.md index dd0ad78..5c583d6 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ | branch | status | | ------------- | ------------- | -| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) | +| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub Download Count](https://github-basic-badges.herokuapp.com/downloads/mrazjava/moo/total.svg)]() [![GitHub Release](https://github-basic-badges.herokuapp.com/release/mrazjava/moo.svg)]() | | develop | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) | # Moo - distributed chat experiment From 7da1310f8ea3512187e5d9695447ffe2f14dd627 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 13:58:54 +0200 Subject: [PATCH 11/80] version badge --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 5c583d6..abe1215 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ | branch | status | | ------------- | ------------- | -| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub Download Count](https://github-basic-badges.herokuapp.com/downloads/mrazjava/moo/total.svg)]() [![GitHub Release](https://github-basic-badges.herokuapp.com/release/mrazjava/moo.svg)]() | +| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub version](https://badge.fury.io/gh/moo.svg)](http://badge.fury.io/gh/moo) | | develop | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) | # Moo - distributed chat experiment From a547fabee3fc89488e38d2c5629d5445fa7ac5c8 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 14:00:47 +0200 Subject: [PATCH 12/80] version badge wrong id --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index abe1215..d1f1ae5 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ | branch | status | | ------------- | ------------- | -| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub version](https://badge.fury.io/gh/moo.svg)](http://badge.fury.io/gh/moo) | +| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub version](https://badge.fury.io/gh/mrazjava.svg)](http://badge.fury.io/gh/mrazjava) | | develop | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) | # Moo - distributed chat experiment From 19abc51c6fe9a6fc58c65ebe629746127e089f25 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 14:03:00 +0200 Subject: [PATCH 13/80] version badge - final fix --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index d1f1ae5..a7c25c2 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ | branch | status | | ------------- | ------------- | -| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub version](https://badge.fury.io/gh/mrazjava.svg)](http://badge.fury.io/gh/mrazjava) | +| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub version](https://badge.fury.io/gh/mrazjava%2Fmoo.svg)](https://badge.fury.io/gh/mrazjava%2Fmoo) | | develop | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) | # Moo - distributed chat experiment From 8bbeb1214d4d9dad21e45bc71f3dc5708b77b270 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 14:08:52 +0200 Subject: [PATCH 14/80] license + badge --- license.txt | 13 +++++++++++++ readme.md | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 license.txt diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..6a69073 --- /dev/null +++ b/license.txt @@ -0,0 +1,13 @@ +Copyright 2017 Adam Zimowski (mrazjava) + +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. \ No newline at end of file diff --git a/readme.md b/readme.md index a7c25c2..11ab50f 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ | branch | status | | ------------- | ------------- | -| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub version](https://badge.fury.io/gh/mrazjava%2Fmoo.svg)](https://badge.fury.io/gh/mrazjava%2Fmoo) | +| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub version](https://badge.fury.io/gh/mrazjava%2Fmoo.svg)](https://badge.fury.io/gh/mrazjava%2Fmoo) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | | develop | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) | # Moo - distributed chat experiment From 60fbd54fe6bd648b0c24dbb2bd324b99eecf42d4 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 14:50:26 +0200 Subject: [PATCH 15/80] formatted readme --- readme.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 11ab50f..861a762 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,8 @@ +[![GitHub version](https://badge.fury.io/gh/mrazjava%2Fmoo.svg)](https://badge.fury.io/gh/mrazjava%2Fmoo) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) + | branch | status | | ------------- | ------------- | -| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) [![GitHub version](https://badge.fury.io/gh/mrazjava%2Fmoo.svg)](https://badge.fury.io/gh/mrazjava%2Fmoo) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | +| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) | | develop | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) | # Moo - distributed chat experiment From ce5faed6aa2f70557d4ef40f59d594ef1ed798ad Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 14:55:48 +0200 Subject: [PATCH 16/80] readme formatting --- readme.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/readme.md b/readme.md index 861a762..a2f25b9 100644 --- a/readme.md +++ b/readme.md @@ -1,9 +1,8 @@ -[![GitHub version](https://badge.fury.io/gh/mrazjava%2Fmoo.svg)](https://badge.fury.io/gh/mrazjava%2Fmoo) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) -| branch | status | -| ------------- | ------------- | -| master | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) | -| develop | [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) | +master: [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) + +develop: [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) # Moo - distributed chat experiment ----------- From d4884b9f629a5e06af219bcfcc506fe70d085204 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 14:57:25 +0200 Subject: [PATCH 17/80] readme fmt (1) --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index a2f25b9..c68c1da 100644 --- a/readme.md +++ b/readme.md @@ -1,9 +1,9 @@ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) - +``` master: [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) develop: [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) - +``` # Moo - distributed chat experiment ----------- Mooo is a Java based chat service written as test bed for various concepts. From 5719632a270dfb0a6ecab0b6e0e14aeeb7d000be Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 15:00:00 +0200 Subject: [PATCH 18/80] readme fmt (2) --- readme.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/readme.md b/readme.md index c68c1da..00872ba 100644 --- a/readme.md +++ b/readme.md @@ -1,21 +1,25 @@ -[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) -``` -master: [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) - -develop: [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) -``` # Moo - distributed chat experiment ----------- Mooo is a Java based chat service written as test bed for various concepts. -Stack: +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) + +### master + +[![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) + +### develop + +[![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) + +### stack * Java 8 * Angular * REST * Spring Boot -Features: +### features * Distributed Architecture (eg: console client can chat with web client) * Server JMX reporting From b435fcc14b21870d94a8f8daf7561904e8d9c250 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sat, 16 Sep 2017 15:01:59 +0200 Subject: [PATCH 19/80] readme fmt (3) --- readme.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/readme.md b/readme.md index 00872ba..659c3a2 100644 --- a/readme.md +++ b/readme.md @@ -2,24 +2,16 @@ ----------- Mooo is a Java based chat service written as test bed for various concepts. -[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)   master:   [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master)   develop:   [![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) -### master - -[![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=master)](https://travis-ci.org/mrazjava/moo?branch=master) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=master)](https://coveralls.io/github/mrazjava/moo?branch=master) - -### develop - -[![Build Status](https://travis-ci.org/mrazjava/moo.svg?branch=develop)](https://travis-ci.org/mrazjava/moo?branch=develop) [![Coverage Status](https://coveralls.io/repos/github/mrazjava/moo/badge.svg?branch=develop)](https://coveralls.io/github/mrazjava/moo?branch=develop) - -### stack +### Stack * Java 8 * Angular * REST * Spring Boot -### features +### Features * Distributed Architecture (eg: console client can chat with web client) * Server JMX reporting From a8972485c32e96b4aac62b13a5425d10c82ed0b3 Mon Sep 17 00:00:00 2001 From: Adam Zimowski Date: Sun, 17 Sep 2017 09:53:21 +0200 Subject: [PATCH 20/80] removed web (angular) client The client was just an experimentation prototype. Very broken. It was never meant for anything more than that. A different web client based on the knowledge gained from this experiment will follow. --- moo-ui-web1/pom.xml | 68 -------- moo-ui-web1/readme.md | 37 ----- .../java/pl/zimowski/moo/ui/web1/App.java | 20 --- .../zimowski/moo/ui/web1/EventProvider.java | 150 ------------------ .../moo/ui/web1/HttpSessionListenerImpl.java | 57 ------- .../zimowski/moo/ui/web1/ServerListener.java | 81 ---------- .../pl/zimowski/moo/ui/web1/SocketConfig.java | 28 ---- .../src/main/resources/application.properties | 2 - .../src/main/resources/logback-spring.xml | 23 --- .../resources/static/assets/css/style.css | 39 ----- .../resources/static/assets/images/moo.png | Bin 2080 -> 0 bytes .../resources/static/assets/js/controller.js | 79 --------- .../assets/js/ng-stomp.standalone.min.js | 10 -- .../src/main/resources/static/index.html | 31 ---- pom.xml | 1 - readme.md | 28 +--- 16 files changed, 6 insertions(+), 648 deletions(-) delete mode 100644 moo-ui-web1/pom.xml delete mode 100644 moo-ui-web1/readme.md delete mode 100644 moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/App.java delete mode 100644 moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/EventProvider.java delete mode 100644 moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/HttpSessionListenerImpl.java delete mode 100644 moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/ServerListener.java delete mode 100644 moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/SocketConfig.java delete mode 100644 moo-ui-web1/src/main/resources/application.properties delete mode 100644 moo-ui-web1/src/main/resources/logback-spring.xml delete mode 100644 moo-ui-web1/src/main/resources/static/assets/css/style.css delete mode 100644 moo-ui-web1/src/main/resources/static/assets/images/moo.png delete mode 100644 moo-ui-web1/src/main/resources/static/assets/js/controller.js delete mode 100644 moo-ui-web1/src/main/resources/static/assets/js/ng-stomp.standalone.min.js delete mode 100644 moo-ui-web1/src/main/resources/static/index.html diff --git a/moo-ui-web1/pom.xml b/moo-ui-web1/pom.xml deleted file mode 100644 index d979df7..0000000 --- a/moo-ui-web1/pom.xml +++ /dev/null @@ -1,68 +0,0 @@ - - 4.0.0 - - pl.zimowski - moo - 1.2.0-SNAPSHOT - - moo-ui-web1 - - - - pl.zimowski - moo-api - - - org.apache.commons - commons-lang3 - - - javax.enterprise - cdi-api - - - org.springframework.boot - spring-boot-starter - - - org.springframework.boot - spring-boot-starter-websocket - ${spring.version} - - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring.version} - - - - - - pl.zimowski.moo.ui.web1.App - 1.5.6.RELEASE - UTF-8 - UTF-8 - - - Moo (client: angular, rest, springboot) - 1.1.0-SNAPSHOT - \ No newline at end of file diff --git a/moo-ui-web1/readme.md b/moo-ui-web1/readme.md deleted file mode 100644 index 71ed334..0000000 --- a/moo-ui-web1/readme.md +++ /dev/null @@ -1,37 +0,0 @@ -# Moo - browser based UI client -===================== - -Very simple single page web app based on Angular, websockets, REST and Spring -Boot. Graphical client for moo-server. - -## Running ------------ -Before starting the client, ensure that server is running: -``` -cd moo/moo-server -mvn spring-boot:run -``` -Once server is up and running, angular client can be started: -``` -cd moo/moo-ui-angular -mvn spring-boot:run -``` -The app immediately listens (and records) server activity, even if page was -not loaded yet. - -Point your favorite browser at: -``` -localhost:8080 -``` - -## Limitations ------------ -UI server side does not track users. It probably should, using HttpSession. As -a result, re-loading page aborts established chat link with the server without -notifying the server. Server continues to track an orphaned user link (reports -incorrect stats). This can be resolved by UI server tracking user session with -timeouts and informing server when UI user is no longer active. In addition, -the moo server should probably do something similar at the connection level, -so if connection had no activity in some time period, it should be ejected. UI -client would then have to introduce some sort of a heartbeat to prevent its -global connection being ejected by the server if there was no chat activity. \ No newline at end of file diff --git a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/App.java b/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/App.java deleted file mode 100644 index d7972d0..0000000 --- a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/App.java +++ /dev/null @@ -1,20 +0,0 @@ -package pl.zimowski.moo.ui.web1; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -/** - * UI processing backend entry point. - * - * @since 1.0.0 - * @author Adam Zimowski (mrazjava) - */ -@SpringBootApplication -public class App { - - public static final String SESSION_ATTR_NICK = "nick"; - - public static void main(String[] args) { - SpringApplication.run(App.class, args); - } -} \ No newline at end of file diff --git a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/EventProvider.java b/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/EventProvider.java deleted file mode 100644 index 9d9ba42..0000000 --- a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/EventProvider.java +++ /dev/null @@ -1,150 +0,0 @@ -package pl.zimowski.moo.ui.web1; - -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.net.Socket; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import javax.servlet.http.HttpSession; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.messaging.simp.SimpMessagingTemplate; -import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; - -import pl.zimowski.moo.api.ClientAction; -import pl.zimowski.moo.api.ClientEvent; -import pl.zimowski.moo.api.ServerEvent; - -/** - * Manager of server connection. Exposes REST endpoints for angular UI - * communication. - * - * @since 1.0.0 - * @author Adam Zimowski (mrazjava) - */ -@RestController -@Component -public class EventProvider { - - private static final Logger log = LoggerFactory.getLogger(EventProvider.class); - - @Inject - private SimpMessagingTemplate template; - - private ServerListener serverListener; - - private Socket socket; - - - @PostConstruct - public void init() { - - ExecutorService executor = Executors.newSingleThreadExecutor(); - - try { - log.debug("initializing...."); - socket = new Socket("localhost", 8000); - serverListener = new ServerListener(socket, template); - executor.submit(serverListener); - } - catch(IOException e) { - log.error("could not connect to server: {}", e.getMessage()); - } - - log.debug("READY!"); - } - - /** - * User invoked a login operation on the client. - * - * @param nick of the user that logged in - * @return {@code true} on success - */ - @RequestMapping(value = "/moo/login", method = RequestMethod.POST) - public boolean mooLogin(@RequestBody String nick) { - - log.debug("login: [{}]", nick); - - ClientEvent event = new ClientEvent(ClientAction.Signin).withAuthor(nick); - return sendClientEvent(event); - } - - /** - * User invoked a logout operation on a client. - * - * @param nick of the user that logged out - * @return {@code true} on success - */ - @RequestMapping(value = "/moo/logout", method = RequestMethod.POST) - public boolean mooLogout(@RequestBody String nick, HttpSession httpSession) { - - log.debug("logout: {}", nick); - - if(httpSession != null) { - httpSession.removeAttribute(App.SESSION_ATTR_NICK); - } - - ClientEvent event = new ClientEvent(ClientAction.Signoff).withAuthor(nick); - return sendClientEvent(event); - } - - /** - * User transmitted a chat message. - * - * @param event holding information about a trasmitted message - * @return {@code true} on success - */ - @RequestMapping("/moo/msg") - public boolean mooMsg(@RequestBody Map event) { - - log.debug(event.toString()); - String nickName = event.get("nickName"); - String message = event.get("msg"); - ClientEvent clientEvent = new ClientEvent(ClientAction.Message) - .withAuthor(nickName).withMessage(message); - return sendClientEvent(clientEvent); - } - - /** - * Allows UI client to peek at few recently processed messages. Useful - * when initializing new view. - * - * @return recently processed messages - */ - @RequestMapping("/latest-events") - public List getCachedEvents() { - return serverListener.getRecentEvents(); - } - - private boolean sendClientEvent(ClientEvent event) { - - boolean status = false; - - if(socket == null) { - log.warn("null socket"); - return status; - } - - try { - ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream()); - out.writeObject(event); - out.flush(); - status = true; - } - catch(IOException e) { - log.error("message transmission failed: {}", e.getMessage()); - } - - return status; - } -} \ No newline at end of file diff --git a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/HttpSessionListenerImpl.java b/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/HttpSessionListenerImpl.java deleted file mode 100644 index 534bc21..0000000 --- a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/HttpSessionListenerImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -package pl.zimowski.moo.ui.web1; - -import javax.inject.Inject; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpSessionEvent; -import javax.servlet.http.HttpSessionListener; - -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.messaging.simp.SimpMessagingTemplate; -import org.springframework.stereotype.Component; - -/** - * Standard listener for create/destroy events of {@link HttpSession}. - * - * @since 1.1.0 - * @author Adam Zimowski (mrazjava) - */ -@Component -public class HttpSessionListenerImpl implements HttpSessionListener { - - private static final Logger log = LoggerFactory.getLogger(HttpSessionListenerImpl.class); - - @Inject - private EventProvider eventProvider; - - @Inject - private SimpMessagingTemplate sender; - - - @Override - public void sessionCreated(HttpSessionEvent event) { - - if(log.isDebugEnabled()) { - HttpSession session = event.getSession(); - log.debug("created session {}", session.getId()); - } - } - - @Override - public void sessionDestroyed(HttpSessionEvent event) { - - HttpSession session = event.getSession(); - String nick = (String)session.getAttribute(App.SESSION_ATTR_NICK); - - log.debug("destrogying session {} | user = {}", session.getId(), nick); - - if(StringUtils.isNotEmpty(nick)) { - // user never signed off and session was destoryed, so invoke the - // signoff event; had user signed off, session would no longer - // contain nick attribute - eventProvider.mooLogout(nick, null); - sender.convertAndSend("/topic/session-expired", new String[] { nick }); - } - } -} \ No newline at end of file diff --git a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/ServerListener.java b/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/ServerListener.java deleted file mode 100644 index edbaacf..0000000 --- a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/ServerListener.java +++ /dev/null @@ -1,81 +0,0 @@ -package pl.zimowski.moo.ui.web1; - -import java.io.EOFException; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.net.Socket; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.messaging.simp.SimpMessageSendingOperations; - -import pl.zimowski.moo.api.ServerAction; -import pl.zimowski.moo.api.ServerEvent; - -/** - * Listens for incoming events from the server and echoes them back to the - * client. - * - * @since 1.0.0 - * @author Adam Zimowski (mrazjava) - */ -public class ServerListener extends Thread { - - private static final Logger log = LoggerFactory.getLogger(ServerListener.class); - - private Socket socket; - - private SimpMessageSendingOperations sender; - - private LinkedList recentMessages; - - - public ServerListener(Socket socket, SimpMessageSendingOperations sender) { - this.socket = socket; - this.sender = sender; - recentMessages = new LinkedList<>(); - } - - public List getRecentEvents() { - return Collections.unmodifiableList(recentMessages); - } - - @Override - public void run() { - - try { - while(true) { - ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); - ServerEvent serverEvent = (ServerEvent)in.readObject(); - - log.info(serverEvent.toString()); - - if(serverEvent.getAction() == ServerAction.ConnectionEstablished) { - continue; - } - - if(serverEvent.getAction() == ServerAction.NickGenerated) { - String nick = serverEvent.getMessage(); - serverEvent.setMessage(String.format("You will be known as '%s'", nick)); - sender.convertAndSend("/topic/nick-generated", new String[] { nick }); - } - - if(recentMessages.size() == 15) - recentMessages.removeFirst(); - - recentMessages.add(serverEvent); - - sender.convertAndSend("/topic/viewchats", recentMessages); - } - } - catch(EOFException e) { - log.info("(client) connection terminated by server; bye!"); - } - catch (IOException | ClassNotFoundException e) { - log.error("unexpected connection error: {}; aborting!", e.getMessage()); - } - } -} \ No newline at end of file diff --git a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/SocketConfig.java b/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/SocketConfig.java deleted file mode 100644 index b557aa4..0000000 --- a/moo-ui-web1/src/main/java/pl/zimowski/moo/ui/web1/SocketConfig.java +++ /dev/null @@ -1,28 +0,0 @@ -package pl.zimowski.moo.ui.web1; - -import org.springframework.context.annotation.Configuration; -import org.springframework.messaging.simp.config.MessageBrokerRegistry; -import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer; -import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; -import org.springframework.web.socket.config.annotation.StompEndpointRegistry; - -/** - * @since 1.0.0 - * @author Adam Zimowski (mrazjava) - */ -@Configuration -@EnableWebSocketMessageBroker -public class SocketConfig extends AbstractWebSocketMessageBrokerConfigurer { - - @Override - public void configureMessageBroker(MessageBrokerRegistry config) { - - config.enableSimpleBroker("/topic"); - config.setApplicationDestinationPrefixes("/app"); - } - - @Override - public void registerStompEndpoints(StompEndpointRegistry registry) { - registry.addEndpoint("/chat-websocket").setAllowedOrigins("*"). withSockJS(); - } -} diff --git a/moo-ui-web1/src/main/resources/application.properties b/moo-ui-web1/src/main/resources/application.properties deleted file mode 100644 index dc165c6..0000000 --- a/moo-ui-web1/src/main/resources/application.properties +++ /dev/null @@ -1,2 +0,0 @@ -server.session.timeout=10 -server.session-timeout=10 \ No newline at end of file diff --git a/moo-ui-web1/src/main/resources/logback-spring.xml b/moo-ui-web1/src/main/resources/logback-spring.xml deleted file mode 100644 index c9f97b6..0000000 --- a/moo-ui-web1/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr([%level]) %clr(%logger [%M]){cyan} - %m%n - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/moo-ui-web1/src/main/resources/static/assets/css/style.css b/moo-ui-web1/src/main/resources/static/assets/css/style.css deleted file mode 100644 index 8915f78..0000000 --- a/moo-ui-web1/src/main/resources/static/assets/css/style.css +++ /dev/null @@ -1,39 +0,0 @@ -.liveChat { - color: green; - width: 100%; - height: 350px; - border: solid 1px #E6E6E6; - overflow-y: scroll; - margin-top: 10px; - } -li{ - list-style: none; -} -#login { - width: 150px; -} -#loginPanel { - padding: 5px; - background-color: #F7F8E0; - float:right; -} -#logoutButton { - display: none; -} -#msgOutPanel { - padding: 5px; - background-color: #F6CECE; -} -#msgOut { - width: 100%; -} -#msgOutPanel { - display: none; -} -#sessionExpired { - display: none; - -} -#sessionExpired span { - color: red; -} diff --git a/moo-ui-web1/src/main/resources/static/assets/images/moo.png b/moo-ui-web1/src/main/resources/static/assets/images/moo.png deleted file mode 100644 index f7ab5df0b97456c5da7d60914d2293bdd87e6b9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2080 zcmV+*2;cXKP)=aw4t=6eJ z&Nw=?o$1uhfYa$84s~j=zMDi4YyjCL;s8=$U?D_<2?-%DvYXw_ZuaiI_w)~vNI;0? z_s2am=brQXe(&#mf4}p)a1G|G^-hd=zFKdyuhu*NT78J=7S;O$mu;GuyQikI7{qp^ z?9s$n{I`~A^=rBoOG!=Z8wm!J4yQBQvdnZPKlSf)ud8vg2Z`^je#Nh4==VbKq>bMjWW zq?V=(gV9Jh-ZR+$v8Ald+gnfhr;WfkfgE5na0u8crIr?ngdQjEsj1-ciQG)$_9B4nz_QU(m$Bo3}AGNf7 zsDFp!3InHrKLPiS#YbJ<1vlOJ^QT|r`s#&~i~7&?uy^;zET~%O+)%r2QHdvuR3%78 zBFJQv(}U+|I(mTnZ@rz|^o;CHJKz7kuhx51n-0CLYtX7J&N~fM*|xpPla)RDxmRAJ zY+f~+{`fq@Ljx3-RnqYOn=C7x$Li}!DRj8eVsVVII0{e#(q^Ra^*}Et&vsHXZxOwr z^O;?PeTMulO0D+?&H#_aW23w0FIvLvf;lLqh(*F6Bux$PP+`JSPcCV;V#}^Zj-2U0 z*DeHDDTPzl@fMcQKQhemv!}VO@&?Va?X_1WFroGz+*Z9*)3oN=@7=w2{R5BSaJmpe zu<@CfvBt(oJKM|6v*w^o696d%rw7g=#5WQ%EsLtcxolW|JHwF(#W{HhLHSjW;GUJ0 zR1{{-P4{Fp{`j$9l|K69v*hH?nsn@PyC`s{kRJ>oC%@Jvd!~mE_V1-AC!f6ZOl+k9 z(1au$8)a#E6+=UPG@U#mt{MR$rPLjc$E&LrmVSSoPjP-2GZ=(%hnN*=yUN+}l)_4e@AAD$OlGKrCq$$h_m z4tGi_%C@mW!&9=^vTbfDui{A8S7_Sh0k)MQ85yCu;{>{GiUMUHyUN(oFY^rfw8*@6_10M>Ppu%Y}=j^0ffMrH2L7OCjNQk^InCzL!YJu zD_^ZQHpAr>qtQt9h6jIEzGV3-8H*>dEDKFaL`o_u7Q2jqX<3(?r@&=dyt{7~|33bO zVJrLLZ7pp9{Yv1zTJLSZpMh$nY?+;#?^wLFM!RWQ4T(g8?w($Xiwe=p$}k28CP6MJ zaq@u>0wDyNWzqECeSCQA014B4Vp~hwCjfFH*Dp>zU#)kekaD*WVhNC9S+@K7>V;Zq zMb!oMyId4pH;Z$9{g`>Pa4cUz*cc-^*pCq$#t4V7;xU8}^o7oIr1L8hqfxej_ln0NumyigUk#Mjqkll z(n=B?4fEN~MzW+vc1o(1Dce9Q&z13adge0W)H zUH1A750T+XC;aG>ghN3J=ax>1lx11$Y1u` z_>tvn_{q}MMrDxiYwbryJ^L0Jn1t5NcUu31`crS@B#kz z>Pw6She=7DiOc0iN{KGzr#nAu-{{gEclAa?uf4u+myw8#(mm8iUt|QO)bNx%_tkn| z0GS!-NQ$NXDXu0hHxSL&kD3i^7x={R*9 z-Qk>=ej9kJ-XAb3i}R=~&f~+q$5s28p^-1oobNx?H5eVg;-?Te22=r?+PVgN7gQ8< zoeCVSD<~@Ul$2Lqk$|RY+`77sqLOmZQD-)`!DVzuC>($ z;I3t5pVa?ri!zf*_0AiARgLfcLw$Mjm^yrLpL+G>XOvP(weHzruU<6!^gT6IPp@CK zAoE(l^-G(Ni>~62+5$)KxO4sewC>qyv;~fw%FfM?M8hNV=9X1t0b+mao-tk1-;`3? zO4&6)KaFUb=GHXL1Ps7) zEq_^8Ye-HAAv$&4@e5!T@H!A5kJ_NFJAMkR1>OPv0>rL`!2bYIvwDB?S&AP30000< KMNUMnLSTZ!t`5uq diff --git a/moo-ui-web1/src/main/resources/static/assets/js/controller.js b/moo-ui-web1/src/main/resources/static/assets/js/controller.js deleted file mode 100644 index 7c28d80..0000000 --- a/moo-ui-web1/src/main/resources/static/assets/js/controller.js +++ /dev/null @@ -1,79 +0,0 @@ -var app = angular.module('mooChatDemo', ['ngStomp']); - -app.controller('MainController', function ($stomp, $scope, $http) { - - $scope.mooLogin = function() { - var nickTxt = angular.element(document.querySelector('#nickName'))[0]; - var nick = $scope.usr == undefined || $scope.usr.nickName == '' ? ' ' : $scope.usr.nickName; - - console.log("moo login: [" + nick + "]"); - angular.element(document.querySelector('#loginButton'))[0].style.display = "none"; - angular.element(document.querySelector('#logoutButton'))[0].style.display = "inline"; - angular.element(document.querySelector('#sessionExpired'))[0].style.display = "none"; - angular.element(document.querySelector('#msgOutPanel'))[0].style.display = "block"; - nickTxt.disabled = true; - - $http.post('/moo/login', nick).success(function(data) { - console.log("login result: " + data); - }); - }; - - $scope.mooLogout = function() { - console.log("moo logout: " + $scope.usr.nickName); - - $http.post('/moo/logout', $scope.usr.nickName).success(function(data) { - console.log("logout result: " + data); - }); - - if($scope.usr.autogen) { - $scope.usr.nickName = ''; - $scope.usr.autogen = false; - } - - resetUiAfterLogout(); - }; - - $scope.events = []; - - $http.get('/latest-events').success(function(data) { - $scope.events = data; - }); - $stomp.connect('http://localhost:8080/chat-websocket', {}) - .then(function (frame) { - var subscription1 = $stomp.subscribe('/topic/viewchats', - function (payload, headers, res) { - $scope.events = payload; - $scope.$apply($scope.events); - var chatDiv = angular.element(document.querySelector('.liveChat'))[0]; - chatDiv.scrollTop = chatDiv.scrollHeight; - }); - var subscription2 = $stomp.subscribe('/topic/session-expired', - function (payload, headers, res) { - console.log('session expired! (' + payload + ')'); - resetUiAfterLogout(); - angular.element(document.querySelector('#sessionExpired'))[0].style.display = "inline"; - }); - var subscription3 = $stomp.subscribe('/topic/nick-generated', - function (payload, headers, res) { - console.log('server generated nick:! (' + payload + ')'); - $scope.usr = {nickName: payload[0], autogen: true}; - }); - }); -}); - -app.controller('MooMsgController', function ($scope, $http) { - - $scope.mooMsg = function() { - console.log("msg out: " + $scope.usr); - $http.post('/moo/msg', $scope.usr); - angular.element(document.querySelector('#msgOut'))[0].value = ''; - }; -}); - -function resetUiAfterLogout() { - - angular.element(document.querySelector('#loginButton'))[0].style.display = "inline"; - angular.element(document.querySelector('#logoutButton'))[0].style.display = "none"; - angular.element(document.querySelector('#nickName'))[0].disabled = false; - angular.element(document.querySelector('#msgOutPanel'))[0].style.display = "none"; -} \ No newline at end of file diff --git a/moo-ui-web1/src/main/resources/static/assets/js/ng-stomp.standalone.min.js b/moo-ui-web1/src/main/resources/static/assets/js/ng-stomp.standalone.min.js deleted file mode 100644 index cb98a95..0000000 --- a/moo-ui-web1/src/main/resources/static/assets/js/ng-stomp.standalone.min.js +++ /dev/null @@ -1,10 +0,0 @@ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.SockJS=a()}}(function(){var a;return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;ge;e++)d[e-1]=arguments[e];for(var f=0;f1?this._listeners[a]=c.slice(0,d).concat(c.slice(d+1)):delete this._listeners[a]):void 0}},c.prototype.dispatchEvent=function(){var a=arguments[0],b=a.type,c=1===arguments.length?[a]:Array.apply(null,arguments);if(this["on"+b]&&this["on"+b].apply(this,c),b in this._listeners)for(var d=this._listeners[b],e=0;e=3e3&&4999>=a}a("./shims");var f,g=a("url-parse"),h=a("inherits"),i=a("json3"),j=a("./utils/random"),k=a("./utils/escape"),l=a("./utils/url"),m=a("./utils/event"),n=a("./utils/transport"),o=a("./utils/object"),p=a("./utils/browser"),q=a("./utils/log"),r=a("./event/event"),s=a("./event/eventtarget"),t=a("./location"),u=a("./event/close"),v=a("./event/trans-message"),w=a("./info-receiver");h(d,s),d.prototype.close=function(a,b){if(a&&!e(a))throw new Error("InvalidAccessError: Invalid code");if(b&&b.length>123)throw new SyntaxError("reason argument has an invalid length");if(this.readyState!==d.CLOSING&&this.readyState!==d.CLOSED){var c=!0;this._close(a||1e3,b||"Normal closure",c)}},d.prototype.send=function(a){if("string"!=typeof a&&(a=""+a),this.readyState===d.CONNECTING)throw new Error("InvalidStateError: The connection has not been established yet");this.readyState===d.OPEN&&this._transport.send(k.quote(a))},d.version=a("./version"),d.CONNECTING=0,d.OPEN=1,d.CLOSING=2,d.CLOSED=3,d.prototype._receiveInfo=function(a,b){if(this._ir=null,!a)return void this._close(1002,"Cannot connect to server");this._rto=this.countRTO(b),this._transUrl=a.base_url?a.base_url:this.url,a=o.extend(a,this._urlInfo);var c=f.filterToEnabled(this._transportsWhitelist,a);this._transports=c.main,this._connect()},d.prototype._connect=function(){for(var a=this._transports.shift();a;a=this._transports.shift()){if(a.needBody&&(!c.document.body||"undefined"!=typeof c.document.readyState&&"complete"!==c.document.readyState&&"interactive"!==c.document.readyState))return this._transports.unshift(a),void m.attachEvent("load",this._connect.bind(this));var b=this._rto*a.roundTrips||5e3;this._transportTimeoutId=setTimeout(this._transportTimeout.bind(this),b);var d=l.addPath(this._transUrl,"/"+this._server+"/"+this._generateSessionId()),e=this._transportOptions[a.transportName],f=new a(d,this._transUrl,e);return f.on("message",this._transportMessage.bind(this)),f.once("close",this._transportClose.bind(this)),f.transportName=a.transportName,void(this._transport=f)}this._close(2e3,"All transports failed",!1)},d.prototype._transportTimeout=function(){this.readyState===d.CONNECTING&&this._transportClose(2007,"Transport timed out")},d.prototype._transportMessage=function(a){var b,c=this,d=a.slice(0,1),e=a.slice(1);switch(d){case"o":return void this._open();case"h":return void this.dispatchEvent(new r("heartbeat"))}if(e)try{b=i.parse(e)}catch(a){}if("undefined"!=typeof b)switch(d){case"a":Array.isArray(b)&&b.forEach(function(a){c.dispatchEvent(new v(a))});break;case"m":this.dispatchEvent(new v(b));break;case"c":Array.isArray(b)&&2===b.length&&this._close(b[0],b[1],!0)}},d.prototype._transportClose=function(a,b){return this._transport&&(this._transport.removeAllListeners(),this._transport=null,this.transport=null),e(a)||2e3===a||this.readyState!==d.CONNECTING?void this._close(a,b):void this._connect()},d.prototype._open=function(){this.readyState===d.CONNECTING?(this._transportTimeoutId&&(clearTimeout(this._transportTimeoutId),this._transportTimeoutId=null),this.readyState=d.OPEN,this.transport=this._transport.transportName,this.dispatchEvent(new r("open"))):this._close(1006,"Server lost session")},d.prototype._close=function(a,b,c){var e=!1;if(this._ir&&(e=!0,this._ir.close(),this._ir=null),this._transport&&(this._transport.close(),this._transport=null,this.transport=null),this.readyState===d.CLOSED)throw new Error("InvalidStateError: SockJS has already been closed");this.readyState=d.CLOSING,setTimeout(function(){this.readyState=d.CLOSED,e&&this.dispatchEvent(new r("error"));var f=new u("close");f.wasClean=c||!1,f.code=a||1e3,f.reason=b,this.dispatchEvent(f),this.onmessage=this.onclose=this.onerror=null}.bind(this),0)},d.prototype.countRTO=function(a){return a>100?4*a:300+a},b.exports=function(b){return f=n(b),a("./iframe-bootstrap")(d,b),d}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./event/close":2,"./event/event":4,"./event/eventtarget":5,"./event/trans-message":6,"./iframe-bootstrap":8,"./info-receiver":12,"./location":13,"./shims":15,"./utils/browser":44,"./utils/escape":45,"./utils/event":46,"./utils/log":48,"./utils/object":49,"./utils/random":50,"./utils/transport":51,"./utils/url":52,"./version":53,debug:void 0,inherits:54,json3:55,"url-parse":56}],15:[function(){"use strict";function a(a){var b=+a;return b!==b?b=0:0!==b&&b!==1/0&&b!==-(1/0)&&(b=(b>0||-1)*Math.floor(Math.abs(b))),b}function b(a){return a>>>0}function c(){}var d,e=Array.prototype,f=Object.prototype,g=Function.prototype,h=String.prototype,i=e.slice,j=f.toString,k=function(a){return"[object Function]"===f.toString.call(a)},l=function(a){return"[object Array]"===j.call(a)},m=function(a){return"[object String]"===j.call(a)},n=Object.defineProperty&&function(){try{return Object.defineProperty({},"x",{}),!0}catch(a){return!1}}();d=n?function(a,b,c,d){!d&&b in a||Object.defineProperty(a,b,{configurable:!0,enumerable:!1,writable:!0,value:c})}:function(a,b,c,d){!d&&b in a||(a[b]=c)};var o=function(a,b,c){for(var e in b)f.hasOwnProperty.call(b,e)&&d(a,e,b[e],c)},p=function(a){if(null==a)throw new TypeError("can't convert "+a+" to object");return Object(a)};o(g,{bind:function(a){var b=this;if(!k(b))throw new TypeError("Function.prototype.bind called on incompatible "+b);for(var d=i.call(arguments,1),e=function(){if(this instanceof j){var c=b.apply(this,d.concat(i.call(arguments)));return Object(c)===c?c:this}return b.apply(a,d.concat(i.call(arguments)))},f=Math.max(0,b.length-d.length),g=[],h=0;f>h;h++)g.push("$"+h);var j=Function("binder","return function ("+g.join(",")+"){ return binder.apply(this, arguments); }")(e);return b.prototype&&(c.prototype=b.prototype,j.prototype=new c,c.prototype=null),j}}),o(Array,{isArray:l});var q=Object("a"),r="a"!==q[0]||!(0 in q),s=function(a){var b=!0,c=!0;return a&&(a.call("foo",function(a,c,d){"object"!=typeof d&&(b=!1)}),a.call([1],function(){c="string"==typeof this},"x")),!!a&&b&&c};o(e,{forEach:function(a){var b=p(this),c=r&&m(this)?this.split(""):b,d=arguments[1],e=-1,f=c.length>>>0;if(!k(a))throw new TypeError;for(;++e>>0;if(!d)return-1;var e=0;for(arguments.length>1&&(e=a(arguments[1])),e=e>=0?e:Math.max(0,d+e);d>e;e++)if(e in c&&c[e]===b)return e;return-1}},t);var u=h.split;2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||"t"==="tesst".split(/(s)*/)[1]||4!=="test".split(/(?:)/,-1).length||"".split(/.?/).length||".".split(/()()/).length>1?!function(){var a=void 0===/()??/.exec("")[1];h.split=function(c,d){var f=this;if(void 0===c&&0===d)return[];if("[object RegExp]"!==j.call(c))return u.call(this,c,d);var g,h,i,k,l=[],m=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.extended?"x":"")+(c.sticky?"y":""),n=0;for(c=new RegExp(c.source,m+"g"),f+="",a||(g=new RegExp("^"+c.source+"$(?!\\s)",m)),d=void 0===d?-1>>>0:b(d);(h=c.exec(f))&&(i=h.index+h[0].length,!(i>n&&(l.push(f.slice(n,h.index)),!a&&h.length>1&&h[0].replace(g,function(){for(var a=1;a1&&h.index=d)));)c.lastIndex===h.index&&c.lastIndex++;return n===f.length?(k||!c.test(""))&&l.push(""):l.push(f.slice(n)),l.length>d?l.slice(0,d):l}}():"0".split(void 0,0).length&&(h.split=function(a,b){return void 0===a&&0===b?[]:u.call(this,a,b)});var v="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff",w="​",x="["+v+"]",y=new RegExp("^"+x+x+"*"),z=new RegExp(x+x+"*$"),A=h.trim&&(v.trim()||!w.trim());o(h,{trim:function(){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");return String(this).replace(y,"").replace(z,"")}},A);var B=h.substr,C="".substr&&"b"!=="0b".substr(-1);o(h,{substr:function(a,b){return B.call(this,0>a&&(a=this.length+a)<0?0:a,b)}},C)},{}],16:[function(a,b){"use strict";b.exports=[a("./transport/websocket"),a("./transport/xhr-streaming"),a("./transport/xdr-streaming"),a("./transport/eventsource"),a("./transport/lib/iframe-wrap")(a("./transport/eventsource")),a("./transport/htmlfile"),a("./transport/lib/iframe-wrap")(a("./transport/htmlfile")),a("./transport/xhr-polling"),a("./transport/xdr-polling"),a("./transport/lib/iframe-wrap")(a("./transport/xhr-polling")),a("./transport/jsonp-polling")]},{"./transport/eventsource":20,"./transport/htmlfile":21,"./transport/jsonp-polling":23,"./transport/lib/iframe-wrap":26,"./transport/websocket":38,"./transport/xdr-polling":39,"./transport/xdr-streaming":40,"./transport/xhr-polling":41,"./transport/xhr-streaming":42}],17:[function(a,b){(function(c){"use strict";function d(a,b,c,d){var f=this;e.call(this),setTimeout(function(){f._start(a,b,c,d)},0)}var e=a("events").EventEmitter,f=a("inherits"),g=a("../../utils/event"),h=a("../../utils/url"),i=c.XMLHttpRequest;f(d,e),d.prototype._start=function(a,b,c,e){var f=this;try{this.xhr=new i}catch(a){}if(!this.xhr)return this.emit("finish",0,"no xhr support"),void this._cleanup();b=h.addQuery(b,"t="+ +new Date),this.unloadRef=g.unloadAdd(function(){f._cleanup(!0)});try{this.xhr.open(a,b,!0),this.timeout&&"timeout"in this.xhr&&(this.xhr.timeout=this.timeout,this.xhr.ontimeout=function(){f.emit("finish",0,""),f._cleanup(!1)})}catch(a){return this.emit("finish",0,""),void this._cleanup(!1)}if(e&&e.noCredentials||!d.supportsCORS||(this.xhr.withCredentials="true"),e&&e.headers)for(var j in e.headers)this.xhr.setRequestHeader(j,e.headers[j]);this.xhr.onreadystatechange=function(){if(f.xhr){var a,b,c=f.xhr;switch(c.readyState){case 3:try{b=c.status,a=c.responseText}catch(a){}1223===b&&(b=204),200===b&&a&&a.length>0&&f.emit("chunk",b,a);break;case 4:b=c.status,1223===b&&(b=204),(12005===b||12029===b)&&(b=0),f.emit("finish",b,c.responseText),f._cleanup(!1)}}};try{f.xhr.send(c)}catch(a){f.emit("finish",0,""),f._cleanup(!1)}},d.prototype._cleanup=function(a){if(this.xhr){if(this.removeAllListeners(),g.unloadDel(this.unloadRef),this.xhr.onreadystatechange=function(){},this.xhr.ontimeout&&(this.xhr.ontimeout=null),a)try{this.xhr.abort()}catch(a){}this.unloadRef=this.xhr=null}},d.prototype.close=function(){this._cleanup(!0)},d.enabled=!!i;var j=["Active"].concat("Object").join("X");!d.enabled&&j in c&&(i=function(){try{return new c[j]("Microsoft.XMLHTTP")}catch(a){return null}},d.enabled=!!new i);var k=!1;try{k="withCredentials"in new i}catch(a){}d.supportsCORS=k,b.exports=d}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../utils/event":46,"../../utils/url":52,debug:void 0,events:3,inherits:54}],18:[function(a,b){(function(a){b.exports=a.EventSource}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],19:[function(a,b){(function(a){"use strict";var c=a.WebSocket||a.MozWebSocket;c&&(b.exports=function(a){return new c(a)})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],20:[function(a,b){"use strict";function c(a){if(!c.enabled())throw new Error("Transport created when disabled");e.call(this,a,"/eventsource",f,g)}var d=a("inherits"),e=a("./lib/ajax-based"),f=a("./receiver/eventsource"),g=a("./sender/xhr-cors"),h=a("eventsource");d(c,e),c.enabled=function(){return!!h},c.transportName="eventsource",c.roundTrips=2,b.exports=c},{"./lib/ajax-based":24,"./receiver/eventsource":29,"./sender/xhr-cors":35,eventsource:18,inherits:54}],21:[function(a,b){"use strict";function c(a){if(!e.enabled)throw new Error("Transport created when disabled");g.call(this,a,"/htmlfile",e,f)}var d=a("inherits"),e=a("./receiver/htmlfile"),f=a("./sender/xhr-local"),g=a("./lib/ajax-based");d(c,g),c.enabled=function(a){return e.enabled&&a.sameOrigin},c.transportName="htmlfile",c.roundTrips=2,b.exports=c},{"./lib/ajax-based":24,"./receiver/htmlfile":30,"./sender/xhr-local":37,inherits:54}],22:[function(a,b){"use strict";function c(a,b,d){if(!c.enabled())throw new Error("Transport created when disabled");f.call(this);var e=this;this.origin=h.getOrigin(d),this.baseUrl=d,this.transUrl=b,this.transport=a,this.windowId=k.string(8);var g=h.addPath(d,"/iframe.html")+"#"+this.windowId;this.iframeObj=i.createIframe(g,function(a){e.emit("close",1006,"Unable to load an iframe ("+a+")"),e.close()}),this.onmessageCallback=this._message.bind(this),j.attachEvent("message",this.onmessageCallback)}var d=a("inherits"),e=a("json3"),f=a("events").EventEmitter,g=a("../version"),h=a("../utils/url"),i=a("../utils/iframe"),j=a("../utils/event"),k=a("../utils/random");d(c,f),c.prototype.close=function(){if(this.removeAllListeners(),this.iframeObj){j.detachEvent("message",this.onmessageCallback);try{this.postMessage("c")}catch(a){}this.iframeObj.cleanup(),this.iframeObj=null,this.onmessageCallback=this.iframeObj=null}},c.prototype._message=function(a){if(h.isOriginEqual(a.origin,this.origin)){var b;try{b=e.parse(a.data)}catch(a){return}if(b.windowId===this.windowId)switch(b.type){case"s":this.iframeObj.loaded(),this.postMessage("s",e.stringify([g,this.transport,this.transUrl,this.baseUrl]));break;case"t":this.emit("message",b.data);break;case"c":var c;try{c=e.parse(b.data)}catch(a){return}this.emit("close",c[0],c[1]),this.close()}}},c.prototype.postMessage=function(a,b){this.iframeObj.post(e.stringify({windowId:this.windowId,type:a,data:b||""}),this.origin)},c.prototype.send=function(a){this.postMessage("m",a)},c.enabled=function(){return i.iframeEnabled},c.transportName="iframe",c.roundTrips=2,b.exports=c},{"../utils/event":46,"../utils/iframe":47,"../utils/random":50,"../utils/url":52,"../version":53,debug:void 0,events:3,inherits:54,json3:55}],23:[function(a,b){(function(c){"use strict";function d(a){if(!d.enabled())throw new Error("Transport created when disabled");f.call(this,a,"/jsonp",h,g)}var e=a("inherits"),f=a("./lib/sender-receiver"),g=a("./receiver/jsonp"),h=a("./sender/jsonp");e(d,f),d.enabled=function(){return!!c.document},d.transportName="jsonp-polling",d.roundTrips=1,d.needBody=!0,b.exports=d}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./lib/sender-receiver":28,"./receiver/jsonp":31,"./sender/jsonp":33,inherits:54}],24:[function(a,b){"use strict";function c(a){return function(b,c,d){var e={};"string"==typeof c&&(e.headers={"Content-type":"text/plain"});var g=f.addPath(b,"/xhr_send"),h=new a("POST",g,c,e);return h.once("finish",function(a){return h=null,200!==a&&204!==a?d(new Error("http status "+a)):void d()}),function(){h.close(),h=null;var a=new Error("Aborted");a.code=1e3,d(a)}}}function d(a,b,d,e){g.call(this,a,b,c(e),d,e)}var e=a("inherits"),f=a("../../utils/url"),g=a("./sender-receiver");e(d,g),b.exports=d},{"../../utils/url":52,"./sender-receiver":28,debug:void 0,inherits:54}],25:[function(a,b){"use strict";function c(a,b){e.call(this),this.sendBuffer=[],this.sender=b,this.url=a}var d=a("inherits"),e=a("events").EventEmitter;d(c,e),c.prototype.send=function(a){this.sendBuffer.push(a),this.sendStop||this.sendSchedule()},c.prototype.sendScheduleWait=function(){var a,b=this;this.sendStop=function(){b.sendStop=null,clearTimeout(a)},a=setTimeout(function(){b.sendStop=null,b.sendSchedule()},25)},c.prototype.sendSchedule=function(){var a=this;if(this.sendBuffer.length>0){var b="["+this.sendBuffer.join(",")+"]";this.sendStop=this.sender(this.url,b,function(b){a.sendStop=null,b?(a.emit("close",b.code||1006,"Sending error: "+b),a._cleanup()):a.sendScheduleWait()}),this.sendBuffer=[]}},c.prototype._cleanup=function(){this.removeAllListeners()},c.prototype.stop=function(){this._cleanup(),this.sendStop&&(this.sendStop(),this.sendStop=null)},b.exports=c},{debug:void 0,events:3,inherits:54}],26:[function(a,b){(function(c){"use strict";var d=a("inherits"),e=a("../iframe"),f=a("../../utils/object");b.exports=function(a){function b(b,c){e.call(this,a.transportName,b,c)}return d(b,e),b.enabled=function(b,d){if(!c.document)return!1;var g=f.extend({},d);return g.sameOrigin=!0,a.enabled(g)&&e.enabled()},b.transportName="iframe-"+a.transportName,b.needBody=!0,b.roundTrips=e.roundTrips+a.roundTrips-1,b.facadeTransport=a,b}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../utils/object":49,"../iframe":22,inherits:54}],27:[function(a,b){"use strict";function c(a,b,c){e.call(this),this.Receiver=a,this.receiveUrl=b,this.AjaxObject=c,this._scheduleReceiver()}var d=a("inherits"),e=a("events").EventEmitter;d(c,e),c.prototype._scheduleReceiver=function(){var a=this,b=this.poll=new this.Receiver(this.receiveUrl,this.AjaxObject);b.on("message",function(b){a.emit("message",b)}),b.once("close",function(c,d){a.poll=b=null,a.pollIsClosing||("network"===d?a._scheduleReceiver():(a.emit("close",c||1006,d),a.removeAllListeners()))})},c.prototype.abort=function(){this.removeAllListeners(),this.pollIsClosing=!0,this.poll&&this.poll.abort()},b.exports=c},{debug:void 0,events:3,inherits:54}],28:[function(a,b){"use strict";function c(a,b,c,d,h){var i=e.addPath(a,b),j=this;f.call(this,a,c),this.poll=new g(d,i,h),this.poll.on("message",function(a){j.emit("message",a)}),this.poll.once("close",function(a,b){j.poll=null,j.emit("close",a,b),j.close()})}var d=a("inherits"),e=a("../../utils/url"),f=a("./buffered-sender"),g=a("./polling");d(c,f),c.prototype.close=function(){this.removeAllListeners(),this.poll&&(this.poll.abort(),this.poll=null),this.stop()},b.exports=c},{"../../utils/url":52,"./buffered-sender":25,"./polling":27,debug:void 0,inherits:54}],29:[function(a,b){"use strict";function c(a){e.call(this);var b=this,c=this.es=new f(a);c.onmessage=function(a){b.emit("message",decodeURI(a.data))},c.onerror=function(a){var d=2!==c.readyState?"network":"permanent";b._cleanup(),b._close(d)}}var d=a("inherits"),e=a("events").EventEmitter,f=a("eventsource");d(c,e),c.prototype.abort=function(){this._cleanup(),this._close("user")},c.prototype._cleanup=function(){var a=this.es;a&&(a.onmessage=a.onerror=null,a.close(),this.es=null)},c.prototype._close=function(a){var b=this;setTimeout(function(){b.emit("close",null,a),b.removeAllListeners()},200)},b.exports=c},{debug:void 0,events:3,eventsource:18,inherits:54}],30:[function(a,b){(function(c){"use strict";function d(a){h.call(this);var b=this;f.polluteGlobalNamespace(),this.id="a"+i.string(6),a=g.addQuery(a,"c="+decodeURIComponent(f.WPrefix+"."+this.id));var e=d.htmlfileEnabled?f.createHtmlfile:f.createIframe;c[f.WPrefix][this.id]={start:function(){b.iframeObj.loaded()},message:function(a){b.emit("message",a)},stop:function(){b._cleanup(),b._close("network")}},this.iframeObj=e(a,function(){b._cleanup(),b._close("permanent")})}var e=a("inherits"),f=a("../../utils/iframe"),g=a("../../utils/url"),h=a("events").EventEmitter,i=a("../../utils/random");e(d,h),d.prototype.abort=function(){this._cleanup(),this._close("user")},d.prototype._cleanup=function(){this.iframeObj&&(this.iframeObj.cleanup(),this.iframeObj=null),delete c[f.WPrefix][this.id]},d.prototype._close=function(a){this.emit("close",null,a),this.removeAllListeners()},d.htmlfileEnabled=!1;var j=["Active"].concat("Object").join("X");if(j in c)try{d.htmlfileEnabled=!!new c[j]("htmlfile")}catch(a){}d.enabled=d.htmlfileEnabled||f.iframeEnabled,b.exports=d}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../utils/iframe":47,"../../utils/random":50,"../../utils/url":52,debug:void 0,events:3,inherits:54}],31:[function(a,b){(function(c){"use strict";function d(a){var b=this;j.call(this),e.polluteGlobalNamespace(),this.id="a"+f.string(6);var g=h.addQuery(a,"c="+encodeURIComponent(e.WPrefix+"."+this.id));c[e.WPrefix][this.id]=this._callback.bind(this),this._createScript(g),this.timeoutId=setTimeout(function(){b._abort(new Error("JSONP script loaded abnormally (timeout)"))},d.timeout)}var e=a("../../utils/iframe"),f=a("../../utils/random"),g=a("../../utils/browser"),h=a("../../utils/url"),i=a("inherits"),j=a("events").EventEmitter;i(d,j),d.prototype.abort=function(){if(c[e.WPrefix][this.id]){var a=new Error("JSONP user aborted read");a.code=1e3,this._abort(a)}},d.timeout=35e3,d.scriptErrorTimeout=1e3,d.prototype._callback=function(a){this._cleanup(),this.aborting||(a&&this.emit("message",a),this.emit("close",null,"network"),this.removeAllListeners())},d.prototype._abort=function(a){this._cleanup(),this.aborting=!0,this.emit("close",a.code,a.message),this.removeAllListeners()},d.prototype._cleanup=function(){if(clearTimeout(this.timeoutId),this.script2&&(this.script2.parentNode.removeChild(this.script2),this.script2=null),this.script){var a=this.script;a.parentNode.removeChild(a),a.onreadystatechange=a.onerror=a.onload=a.onclick=null,this.script=null}delete c[e.WPrefix][this.id]},d.prototype._scriptError=function(){var a=this;this.errorTimer||(this.errorTimer=setTimeout(function(){a.loadedOkay||a._abort(new Error("JSONP script loaded abnormally (onerror)"))},d.scriptErrorTimeout))},d.prototype._createScript=function(a){var b,d=this,e=this.script=c.document.createElement("script");if(e.id="a"+f.string(8),e.src=a,e.type="text/javascript",e.charset="UTF-8",e.onerror=this._scriptError.bind(this),e.onload=function(){d._abort(new Error("JSONP script loaded abnormally (onload)"))},e.onreadystatechange=function(){if(/loaded|closed/.test(e.readyState)){if(e&&e.htmlFor&&e.onclick){d.loadedOkay=!0;try{e.onclick()}catch(a){}}e&&d._abort(new Error("JSONP script loaded abnormally (onreadystatechange)")); -}},"undefined"==typeof e.async&&c.document.attachEvent)if(g.isOpera())b=this.script2=c.document.createElement("script"),b.text="try{var a = document.getElementById('"+e.id+"'); if(a)a.onerror();}catch(x){};",e.async=b.async=!1;else{try{e.htmlFor=e.id,e.event="onclick"}catch(a){}e.async=!0}"undefined"!=typeof e.async&&(e.async=!0);var h=c.document.getElementsByTagName("head")[0];h.insertBefore(e,h.firstChild),b&&h.insertBefore(b,h.firstChild)},b.exports=d}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../utils/browser":44,"../../utils/iframe":47,"../../utils/random":50,"../../utils/url":52,debug:void 0,events:3,inherits:54}],32:[function(a,b){"use strict";function c(a,b){e.call(this);var c=this;this.bufferPosition=0,this.xo=new b("POST",a,null),this.xo.on("chunk",this._chunkHandler.bind(this)),this.xo.once("finish",function(a,b){c._chunkHandler(a,b),c.xo=null;var d=200===a?"network":"permanent";c.emit("close",null,d),c._cleanup()})}var d=a("inherits"),e=a("events").EventEmitter;d(c,e),c.prototype._chunkHandler=function(a,b){if(200===a&&b)for(var c=-1;;this.bufferPosition+=c+1){var d=b.slice(this.bufferPosition);if(c=d.indexOf("\n"),-1===c)break;var e=d.slice(0,c);e&&this.emit("message",e)}},c.prototype._cleanup=function(){this.removeAllListeners()},c.prototype.abort=function(){this.xo&&(this.xo.close(),this.emit("close",null,"user"),this.xo=null),this._cleanup()},b.exports=c},{debug:void 0,events:3,inherits:54}],33:[function(a,b){(function(c){"use strict";function d(a){try{return c.document.createElement('