Bladeren bron

remove message module

zhou-hao 6 jaren geleden
bovenliggende
commit
bc21e947cb
80 gewijzigde bestanden met toevoegingen van 6 en 3392 verwijderingen
  1. 5 6
      README.md
  2. 0 39
      hsweb-message/README.md
  3. 0 27
      hsweb-message/hsweb-message-api/pom.xml
  4. 0 9
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/Message.java
  5. 0 28
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessagePublish.java
  6. 0 29
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubject.java
  7. 0 30
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubscribe.java
  8. 0 57
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/Messager.java
  9. 0 20
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessagerAutoConfiguration.java
  10. 0 34
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageConsumer.java
  11. 0 35
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageSupplier.java
  12. 0 39
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageBuilder.java
  13. 0 46
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageSubjectBuilder.java
  14. 0 57
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/SimpleMessageBuilder.java
  15. 0 76
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/SimpleMessageSubjectBuilder.java
  16. 0 49
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/StaticMessageBuilder.java
  17. 0 68
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/StaticMessageSubjectBuilder.java
  18. 0 108
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/memory/MemoryMessager.java
  19. 0 66
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/memory/MemoryPublish.java
  20. 0 29
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/memory/MemoryTopic.java
  21. 0 34
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/memory/MemoryTopicSubscribe.java
  22. 0 30
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/DataMessage.java
  23. 0 14
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/MultipleQueueMessageSubject.java
  24. 0 38
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/MultipleUserMessageSubject.java
  25. 0 30
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/ObjectMessage.java
  26. 0 12
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/QueueMessageSubject.java
  27. 0 34
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/ServiceInvokerMessage.java
  28. 0 30
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/TextMessage.java
  29. 0 30
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/TopicMessageSubject.java
  30. 0 33
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/UserMessageSubject.java
  31. 0 46
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleDataMessage.java
  32. 0 29
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleObjectMessage.java
  33. 0 54
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleServiceInvokerMessage.java
  34. 0 33
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleTextMessage.java
  35. 0 3
      hsweb-message/hsweb-message-api/src/main/resources/META-INF/spring.factories
  36. 0 30
      hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/MessagePublishHandler.java
  37. 0 35
      hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/SimpleMessagePublish.java
  38. 0 78
      hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/SimpleMessageSubscribe.java
  39. 0 48
      hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/SimpleMessageTests.java
  40. 0 85
      hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/SimpleMessager.java
  41. 0 38
      hsweb-message/hsweb-message-jms/pom.xml
  42. 0 50
      hsweb-message/hsweb-message-jms/src/main/java/org/hswebframework/web/message/jms/JmsMessagePublish.java
  43. 0 70
      hsweb-message/hsweb-message-jms/src/main/java/org/hswebframework/web/message/jms/JmsMessageSubscribe.java
  44. 0 60
      hsweb-message/hsweb-message-jms/src/main/java/org/hswebframework/web/message/jms/JmsMessager.java
  45. 0 75
      hsweb-message/hsweb-message-jms/src/test/java/org/hswebframework/web/message/jms/JmsMessagerTest.java
  46. 0 10
      hsweb-message/hsweb-message-jms/src/test/java/org/hswebframework/web/message/jms/SampleActiveMQApplication.java
  47. 0 16
      hsweb-message/hsweb-message-jms/src/test/resources/application.yml
  48. 0 31
      hsweb-message/hsweb-message-redis/pom.xml
  49. 0 69
      hsweb-message/hsweb-message-redis/src/main/java/org/hswebframework/web/message/redis/RedissonMessagePublish.java
  50. 0 100
      hsweb-message/hsweb-message-redis/src/main/java/org/hswebframework/web/message/redis/RedissonMessageSubscribe.java
  51. 0 30
      hsweb-message/hsweb-message-redis/src/main/java/org/hswebframework/web/message/redis/RedissonMessager.java
  52. 0 22
      hsweb-message/hsweb-message-redis/src/main/java/org/hswebframework/web/message/redis/starter/RedissonMessagerAutoConfiguration.java
  53. 0 3
      hsweb-message/hsweb-message-redis/src/main/resources/META-INF/spring.factories
  54. 0 48
      hsweb-message/hsweb-message-redis/src/test/java/org/hswebframework/web/message/redis/RedissonMessagerTest.java
  55. 0 52
      hsweb-message/hsweb-message-websocket/README.md
  56. 0 88
      hsweb-message/hsweb-message-websocket/pom.xml
  57. 0 17
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/CommandRequest.java
  58. 0 22
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/WebSocketSessionListener.java
  59. 0 45
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/authorize/AuthorizeCommandProcessor.java
  60. 0 27
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/authorize/SessionIdWebSocketTokenParser.java
  61. 0 7
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/authorize/WebSocketTokenParser.java
  62. 0 13
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/authorize/XAccessTokenParser.java
  63. 0 180
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/handler/CommandWebSocketMessageDispatcher.java
  64. 0 28
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/handler/WebSocketCommandRequest.java
  65. 0 156
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/message/DefaultWebSocketMessager.java
  66. 0 71
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/message/WebSocketMessage.java
  67. 0 46
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/message/WebSocketMessager.java
  68. 0 34
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/processor/AbstractCommandProcessor.java
  69. 0 20
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/processor/CommandProcessor.java
  70. 0 17
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/processor/CommandProcessorContainer.java
  71. 0 44
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/processor/DefaultCommandProcessorContainer.java
  72. 0 127
      hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/starter/CommandWebSocketAutoConfiguration.java
  73. 0 3
      hsweb-message/hsweb-message-websocket/src/main/resources/META-INF/spring.factories
  74. 0 72
      hsweb-message/hsweb-message-websocket/src/test/java/org/hswebframework/web/socket/TestProcessor.java
  75. 0 27
      hsweb-message/hsweb-message-websocket/src/test/java/org/hswebframework/web/socket/WebSocketClientTests.java
  76. 0 55
      hsweb-message/hsweb-message-websocket/src/test/java/org/hswebframework/web/socket/WebSocketServerTests.java
  77. 0 15
      hsweb-message/hsweb-message-websocket/src/test/resources/application.yml
  78. 0 24
      hsweb-message/pom.xml
  79. 1 1
      hsweb-system/README.md
  80. 0 1
      pom.xml

+ 5 - 6
README.md

@@ -30,13 +30,12 @@
 
 | 模块       | 说明          |   进度 |
 | ------------- |:-------------:| ----|
-|[hsweb-authorization](hsweb-authorization)|权限控制| 90%|
-|[hsweb-commons](hsweb-commons) |基础通用功能| 90%|
+|[hsweb-authorization](hsweb-authorization)|权限控制| 100%|
+|[hsweb-commons](hsweb-commons) |基础通用功能| 100%|
 |[hsweb-concurrent](hsweb-concurrent)|并发包,缓存,锁,计数器等| 80%|
-|[hsweb-core](hsweb-core)|框架核心,基础工具类| 90%|
-|[hsweb-datasource](hsweb-datasource)|数据源| 90%|
+|[hsweb-core](hsweb-core)|框架核心,基础工具类| 100%|
+|[hsweb-datasource](hsweb-datasource)|数据源| 100%|
 |[hsweb-logging](hsweb-logging)| 日志|  100%|
-|[hsweb-message](hsweb-message)|mq,websocket...| 80%|
-|[hsweb-starter](hsweb-starter)|模块启动器| 90%|
+|[hsweb-starter](hsweb-starter)|模块启动器| 100%|
 |[hsweb-system](hsweb-system)|**系统常用功能**| 80%|
 |[hsweb-thirdparty](hsweb-thirdparty)| 第三方插件 | 100% |

+ 0 - 39
hsweb-message/README.md

@@ -1,39 +0,0 @@
-## 消息模块,提供简单的消息收发功能
-
-1. [hsweb-message-api](hsweb-message-api) API
-2. [hsweb-message-jms](hsweb-message-jms) JMS实现
-3. [hsweb-message-redis](hsweb-message-redis) Redis实现(redisson)
-4. [hsweb-message-websocket](hsweb-message-websocket) 使用websocket进行消息推送
-
-
-## API
-```java
-import org.hswebframework.web.message.Messager;
-import static org.hswebframework.web.message.builder.StaticMessageBuilder.object;
-import static org.hswebframework.web.message.builder.StaticMessageSubjectBuilder.queue;
-import static org.hswebframework.web.message.builder.StaticMessageSubjectBuilder.topic;
-
-@Autowired
-private Messager messager;
-
-public void sendToQueue(){
-    messager.publish(text("hello queue!"))
-            .to(queue("test_queue"))
-            .send();
-}
-
-public void subscribeQueue(){
-    messager.<TextMessage>subscribe(queue("test_queue"))
-            .onMessage(textMsg->System.out.println(textMsg.getMessage()));
-    
-public void sendToTopic(){
-    messager.publish(text("hello topic!"))
-            .to(queue("test_topic"))
-            .send();
-}
-
-public void subscribeTopic(){
-    messager.<TextMessage>subscribe(queue("test_topic"))
-            .onMessage(textMsg->System.out.println(textMsg.getMessage()));
-}
-```

+ 0 - 27
hsweb-message/hsweb-message-api/pom.xml

@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-message</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0.5-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <description>DSL LIKE的message API</description>
-
-    <artifactId>hsweb-message-api</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-    </dependencies>
-</project>

+ 0 - 9
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/Message.java

@@ -1,9 +0,0 @@
-package org.hswebframework.web.message;
-
-import java.io.Serializable;
-
-/**
- * @author zhouhao
- */
-public interface Message extends Serializable {
-}

+ 0 - 28
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessagePublish.java

@@ -1,28 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message;
-
-/**
- * @author zhouhao
- */
-public interface MessagePublish {
-    MessagePublish to(MessageSubject subject);
-
-    void send();
-}

+ 0 - 29
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubject.java

@@ -1,29 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message;
-
-import java.io.Serializable;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface MessageSubject extends Serializable {
-}

+ 0 - 30
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubscribe.java

@@ -1,30 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message;
-
-import java.util.function.Consumer;
-
-/**
- * @author zhouhao
- */
-public interface MessageSubscribe<M extends Message> {
-    MessageSubscribe<M> onMessage(Consumer<M> consumer);
-
-    void cancel();
-}

+ 0 - 57
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/Messager.java

@@ -1,57 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message;
-
-/**
- * simple
- * <pre>
- *     messager
- *     .publish(text("hello"))
- *     .to(user("admin"))
- *     .send();
- * </pre>
- * send object to topic
- * <pre>
- *     messager
- *     .publish(object(user))
- *     .to(topic("user-login"))
- *     .send();
- * </pre>
- * subscribe topic
- * <pre>
- *     messager
- *     .subscribe(topic("user-login"))
- *     .iam(user("admin"))
- *     .onMessage(user->System.out.println(user));
- * </pre>
- * subscribe user msg
- * <pre>
- *      messager
- *     .subscribe(user("admin"))
- *     .onMessage(message->System.out.println(message));
- * </pre>
- *
- * @author zhouhao
- * @since 3.0
- */
-public interface Messager {
-    MessagePublish publish(Message message);
-
-    <M extends Message> MessageSubscribe<M> subscribe(MessageSubject subscribe);
-}

+ 0 - 20
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessagerAutoConfiguration.java

@@ -1,20 +0,0 @@
-package org.hswebframework.web.message;
-
-import org.hswebframework.web.message.memory.MemoryMessager;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-@Configuration
-@ConditionalOnMissingBean(Messager.class)
-public class MessagerAutoConfiguration {
-    @Bean
-    public Messager messager() {
-        return new MemoryMessager();
-    }
-}

+ 0 - 34
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageConsumer.java

@@ -1,34 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.annotation;
-
-import java.lang.annotation.*;
-
-/**
- * @author zhouhao
- */
-@Target({ElementType.TYPE, ElementType.METHOD})
-@Retention(RetentionPolicy.RUNTIME)
-@Inherited
-@Documented
-public @interface MessageConsumer {
-    String topic() default "";
-
-    String queue() default "";
-}

+ 0 - 35
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageSupplier.java

@@ -1,35 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.annotation;
-
-
-import java.lang.annotation.*;
-
-/**
- * @author zhouhao
- */
-@Target({ElementType.TYPE, ElementType.METHOD})
-@Retention(RetentionPolicy.RUNTIME)
-@Inherited
-@Documented
-public @interface MessageSupplier {
-    String queue() default "";
-
-    String topic() default "";
-}

+ 0 - 39
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageBuilder.java

@@ -1,39 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.builder;
-
-import org.hswebframework.web.message.support.DataMessage;
-import org.hswebframework.web.message.support.ObjectMessage;
-import org.hswebframework.web.message.support.ServiceInvokerMessage;
-import org.hswebframework.web.message.support.TextMessage;
-
-import java.io.Serializable;
-
-/**
- * @author zhouhao
- */
-public interface MessageBuilder {
-    TextMessage text(String msg);
-
-    <T extends Serializable> ObjectMessage<T> object(T msg);
-
-    DataMessage data(byte[] msg);
-
-    ServiceInvokerMessage service(String serviceName, String method, Serializable... args);
-}

+ 0 - 46
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageSubjectBuilder.java

@@ -1,46 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.builder;
-
-import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.support.*;
-
-import java.util.Set;
-
-/**
- * @author zhouhao
- */
-public interface MessageSubjectBuilder {
-    UserMessageSubject user(String userId);
-
-    MultipleUserMessageSubject users(String... userIds);
-
-    MultipleUserMessageSubject users(Set<String> userIds);
-
-    MessageSubject system();
-
-    TopicMessageSubject topic(String topicName);
-
-    QueueMessageSubject queue(String queueName);
-
-    MultipleQueueMessageSubject queues(String... userIds);
-
-    MultipleQueueMessageSubject queues(Set<String> userIds);
-
-}

+ 0 - 57
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/SimpleMessageBuilder.java

@@ -1,57 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.builder;
-
-import org.hswebframework.web.message.support.DataMessage;
-import org.hswebframework.web.message.support.ObjectMessage;
-import org.hswebframework.web.message.support.ServiceInvokerMessage;
-import org.hswebframework.web.message.support.TextMessage;
-import org.hswebframework.web.message.support.simple.SimpleDataMessage;
-import org.hswebframework.web.message.support.simple.SimpleObjectMessage;
-import org.hswebframework.web.message.support.simple.SimpleServiceInvokerMessage;
-import org.hswebframework.web.message.support.simple.SimpleTextMessage;
-
-import java.io.Serializable;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class SimpleMessageBuilder implements MessageBuilder, Serializable {
-    @Override
-    public TextMessage text(String msg) {
-        return new SimpleTextMessage(msg);
-    }
-
-    @Override
-    public <T extends Serializable> ObjectMessage<T> object(T msg) {
-        return new SimpleObjectMessage<>(msg);
-    }
-
-    @Override
-    public DataMessage data(byte[] msg) {
-        return new SimpleDataMessage(msg);
-    }
-
-    @Override
-    public ServiceInvokerMessage service(String serviceName, String method, Serializable... args) {
-        return new SimpleServiceInvokerMessage(serviceName,method,args);
-    }
-}

+ 0 - 76
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/SimpleMessageSubjectBuilder.java

@@ -1,76 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.builder;
-
-import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.support.*;
-
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class SimpleMessageSubjectBuilder implements MessageSubjectBuilder, Serializable {
-    @Override
-    public UserMessageSubject user(String userId) {
-        return () -> userId;
-    }
-
-    @Override
-    public MultipleUserMessageSubject users(String... userIds) {
-        return (MultipleUserMessageSubject) () -> new HashSet<>(Arrays.asList(userIds));
-    }
-
-    @Override
-    public MultipleUserMessageSubject users(Set<String> userIds) {
-        return (MultipleUserMessageSubject) () -> userIds;
-    }
-
-    @Override
-    public MessageSubject system() {
-        return null;
-    }
-
-    @Override
-    public TopicMessageSubject topic(String topic) {
-        return () -> topic;
-    }
-
-    @Override
-    public QueueMessageSubject queue(String queueName) {
-        return () -> queueName;
-    }
-
-    @Override
-    public MultipleQueueMessageSubject queues(String... userIds) {
-        Set<String> ids = Arrays.stream(userIds).collect(Collectors.toSet());
-        return queues(ids);
-    }
-
-    @Override
-    public MultipleQueueMessageSubject queues(Set<String> userIds) {
-        return () -> userIds;
-    }
-}

+ 0 - 49
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/StaticMessageBuilder.java

@@ -1,49 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.builder;
-
-import org.hswebframework.web.message.support.DataMessage;
-import org.hswebframework.web.message.support.ObjectMessage;
-import org.hswebframework.web.message.support.ServiceInvokerMessage;
-import org.hswebframework.web.message.support.TextMessage;
-
-import java.io.Serializable;
-
-/**
- * @author zhouhao
- */
-public class StaticMessageBuilder {
-    private static MessageBuilder messageBuilder = new SimpleMessageBuilder();
-
-    public static TextMessage text(String msg) {
-        return messageBuilder.text(msg);
-    }
-
-    public static <T extends Serializable> ObjectMessage<T> object(T msg) {
-        return messageBuilder.object(msg);
-    }
-
-    public static DataMessage data(byte[] msg) {
-        return messageBuilder.data(msg);
-    }
-
-    public static ServiceInvokerMessage service(String serviceName, String method, Serializable... args) {
-        return messageBuilder.service(serviceName, method, args);
-    }
-}

+ 0 - 68
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/StaticMessageSubjectBuilder.java

@@ -1,68 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.builder;
-
-import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.support.*;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class StaticMessageSubjectBuilder {
-    private static MessageSubjectBuilder messageSubjectBuilder = new SimpleMessageSubjectBuilder();
-
-    public static UserMessageSubject user(String userId) {
-        return messageSubjectBuilder.user(userId);
-    }
-
-    public static MultipleUserMessageSubject users(String... userIds) {
-        return messageSubjectBuilder.users(userIds);
-    }
-
-    public static MultipleUserMessageSubject users(Set<String> userIds) {
-        return messageSubjectBuilder.users(userIds);
-    }
-
-    public static MessageSubject system() {
-        return messageSubjectBuilder.system();
-    }
-
-    public static TopicMessageSubject topic(String topic) {
-        return messageSubjectBuilder.topic(topic);
-    }
-
-    public static QueueMessageSubject queue(String queueName) {
-        return messageSubjectBuilder.queue(queueName);
-    }
-
-    public static MultipleQueueMessageSubject queues(String... queueNames) {
-        return messageSubjectBuilder.queues(queueNames);
-    }
-
-    public static MultipleQueueMessageSubject queues(Set<String> queueNames) {
-        return messageSubjectBuilder.queues(queueNames);
-    }
-
-}

+ 0 - 108
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/memory/MemoryMessager.java

@@ -1,108 +0,0 @@
-package org.hswebframework.web.message.memory;
-
-import lombok.extern.slf4j.Slf4j;
-import org.hswebframework.web.message.*;
-import org.hswebframework.web.message.support.QueueMessageSubject;
-import org.hswebframework.web.message.support.TopicMessageSubject;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.*;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-import java.util.function.Consumer;
-
-/**
- * @author zhouhao
- */
-
-@Slf4j
-public class MemoryMessager implements Messager {
-
-    private Map<String, MemoryTopic<? extends Message>> topicStore = new ConcurrentHashMap<>(256);
-
-    private Map<String, QueueConsumer<? extends Message>> queueStore = new ConcurrentHashMap<>(512);
-
-    private Executor executor;
-
-    public MemoryMessager(Executor executor) {
-        this.executor = executor;
-    }
-
-    public MemoryMessager() {
-        this(Executors.newCachedThreadPool());
-    }
-
-    public void setExecutor(Executor executor) {
-        this.executor = executor;
-    }
-
-    @Override
-    public MessagePublish publish(Message message) {
-        return new MemoryPublish(this::getQueue, this::getTopic, message);
-    }
-
-    @SuppressWarnings("unchecked")
-    private <M extends Message> QueueConsumer<M> getQueue(String name) {
-        return (QueueConsumer) queueStore
-                .computeIfAbsent(name, queueName -> new QueueConsumer<>());
-    }
-
-    @SuppressWarnings("unchecked")
-    public <M extends Message> MemoryTopic<M> getTopic(String name) {
-        return (MemoryTopic) topicStore
-                .computeIfAbsent(name, topic -> new MemoryTopic<>());
-    }
-
-    @Override
-    public <M extends Message> MessageSubscribe<M> subscribe(MessageSubject subject) {
-        if (subject instanceof QueueMessageSubject) {
-            QueueConsumer<M> queue = getQueue(((QueueMessageSubject) subject).getQueueName());
-            return new MessageSubscribe<M>() {
-                private List<Consumer<M>> consumers = new ArrayList<>();
-                private Consumer<M> consumer = m -> consumers.forEach(cons -> cons.accept(m));
-
-                {
-                    queue.lock.writeLock().lock();
-                    try {
-                        queue.consumers.add(consumer);
-                    } finally {
-                        queue.lock.writeLock().unlock();
-                    }
-                }
-
-                @Override
-                public MessageSubscribe<M> onMessage(Consumer<M> consumer) {
-                    consumers.add(consumer);
-                    return this;
-                }
-
-                @Override
-                public void cancel() {
-                    try {
-                        queue.lock.writeLock().tryLock(5, TimeUnit.SECONDS);
-                        try {
-                            queue.consumers.remove(consumer);
-                        } finally {
-                            queue.lock.writeLock().unlock();
-                        }
-                    } catch (Exception e) {
-                        log.warn(e.getMessage(), e);
-                    }
-
-                }
-            };
-        } else if (subject instanceof TopicMessageSubject) {
-            return new MemoryTopicSubscribe<>(topicStore
-                    .computeIfAbsent(((TopicMessageSubject) subject).getTopic(), topic -> new MemoryTopic<>()));
-        }
-        throw new UnsupportedOperationException(subject.getClass().getName());
-    }
-
-    class QueueConsumer<M extends Message> {
-        final List<Consumer<M>> consumers = new ArrayList<>();
-        final ReadWriteLock lock = new ReentrantReadWriteLock();
-    }
-}

+ 0 - 66
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/memory/MemoryPublish.java

@@ -1,66 +0,0 @@
-package org.hswebframework.web.message.memory;
-
-import org.hswebframework.web.message.Message;
-import org.hswebframework.web.message.MessagePublish;
-import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.support.MultipleQueueMessageSubject;
-import org.hswebframework.web.message.support.QueueMessageSubject;
-import org.hswebframework.web.message.support.TopicMessageSubject;
-
-import java.util.Objects;
-import java.util.Random;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Function;
-
-/**
- * @author zhouhao
- */
-public class MemoryPublish implements MessagePublish {
-    private MessageSubject subject;
-
-    private Function<String, MemoryMessager.QueueConsumer<Message>> queueGetter;
-    private Function<String, MemoryTopic<Message>>                  topicGetter;
-    private Message                                                 message;
-
-    public MemoryPublish(Function<String, MemoryMessager.QueueConsumer<Message>> queueGetter
-            , Function<String, MemoryTopic<Message>> topicGetter, Message message) {
-        this.queueGetter = queueGetter;
-        this.topicGetter = topicGetter;
-        this.message = message;
-    }
-
-    @Override
-    public MessagePublish to(MessageSubject subject) {
-        this.subject = subject;
-        return this;
-    }
-
-    private static Random random = new Random();
-
-    private void pubQueue(String name) {
-        final MemoryMessager.QueueConsumer<Message> queueConsumer = queueGetter.apply(name);
-        queueConsumer.lock.readLock().lock();
-        try {
-            int size = queueConsumer.consumers.size();
-            if (size > 0) {
-                queueConsumer.consumers.get(random.nextInt(size)).accept(message);
-            }
-        } finally {
-            queueConsumer.lock.readLock().unlock();
-        }
-    }
-
-    @Override
-    public void send() {
-        Objects.requireNonNull(subject);
-        if (subject instanceof QueueMessageSubject) {
-            pubQueue(((QueueMessageSubject) subject).getQueueName());
-        }
-        if (subject instanceof MultipleQueueMessageSubject) {
-            ((MultipleQueueMessageSubject) subject).getQueueName().forEach(this::pubQueue);
-        }
-        if (subject instanceof TopicMessageSubject) {
-            topicGetter.apply(((TopicMessageSubject) subject).getTopic()).publish(message);
-        }
-    }
-}

+ 0 - 29
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/memory/MemoryTopic.java

@@ -1,29 +0,0 @@
-package org.hswebframework.web.message.memory;
-
-import org.hswebframework.web.message.Message;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Consumer;
-
-/**
- * @author zhouhao
- */
-class MemoryTopic<M extends Message> {
-    private Map<String, List<Consumer<M>>> consumers = new ConcurrentHashMap<>();
-
-    public void remove(String id) {
-        consumers.remove(id);
-    }
-
-    public void subscribe(String id, Consumer<M> consumer) {
-        consumers.computeIfAbsent(id, i -> new ArrayList<>())
-                .add(consumer);
-    }
-
-    public void publish(M message) {
-        consumers.values().stream().flatMap(List::stream).forEach(consumer -> consumer.accept(message));
-    }
-}

+ 0 - 34
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/memory/MemoryTopicSubscribe.java

@@ -1,34 +0,0 @@
-package org.hswebframework.web.message.memory;
-
-import org.hswebframework.web.message.Message;
-import org.hswebframework.web.message.MessageSubscribe;
-
-import java.util.UUID;
-import java.util.function.Consumer;
-
-/**
- * @author zhouhao
- */
-public class MemoryTopicSubscribe<M extends Message> implements MessageSubscribe<M> {
-
-    private MemoryTopic topic;
-
-    private String id;
-
-    public MemoryTopicSubscribe(MemoryTopic topic) {
-        this.topic = topic;
-        id = UUID.randomUUID().toString();
-    }
-
-    @Override
-    public MessageSubscribe<M> onMessage(Consumer<M> consumer) {
-        topic.subscribe(id, consumer);
-        return this;
-    }
-
-    @Override
-    public void cancel() {
-        topic.remove(id);
-    }
-
-}

+ 0 - 30
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/DataMessage.java

@@ -1,30 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.support;
-
-import org.hswebframework.web.message.Message;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface DataMessage extends Message {
-    byte[] getMessage();
-}

+ 0 - 14
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/MultipleQueueMessageSubject.java

@@ -1,14 +0,0 @@
-package org.hswebframework.web.message.support;
-
-import org.hswebframework.web.message.MessageSubject;
-
-import java.util.Set;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface MultipleQueueMessageSubject extends MessageSubject {
-    Set<String> getQueueName();
-}

+ 0 - 38
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/MultipleUserMessageSubject.java

@@ -1,38 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.support;
-
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface MultipleUserMessageSubject extends MultipleQueueMessageSubject {
-    Set<String> getUserIdList();
-
-    @Override
-    default Set<String> getQueueName() {
-        return getUserIdList().stream()
-                .map(id -> "queue_for_user:" + id)
-                .collect(Collectors.toSet());
-    }
-}

+ 0 - 30
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/ObjectMessage.java

@@ -1,30 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.support;
-
-import org.hswebframework.web.message.Message;
-
-import java.io.Serializable;
-
-/**
- * @author zhouhao
- */
-public interface ObjectMessage<T extends Serializable> extends Message {
-    T getObject();
-}

+ 0 - 12
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/QueueMessageSubject.java

@@ -1,12 +0,0 @@
-package org.hswebframework.web.message.support;
-
-import org.hswebframework.web.message.MessageSubject;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface QueueMessageSubject extends MessageSubject {
-    String getQueueName();
-}

+ 0 - 34
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/ServiceInvokerMessage.java

@@ -1,34 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.support;
-
-import org.hswebframework.web.message.Message;
-
-import java.io.Serializable;
-
-/**
- * @author zhouhao
- */
-public interface ServiceInvokerMessage extends Message {
-    String getServiceName();
-
-    String getMethod();
-
-    Serializable[] getArgs();
-}

+ 0 - 30
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/TextMessage.java

@@ -1,30 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.support;
-
-import org.hswebframework.web.message.Message;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface TextMessage extends Message {
-    String getMessage();
-}

+ 0 - 30
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/TopicMessageSubject.java

@@ -1,30 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.support;
-
-import org.hswebframework.web.message.MessageSubject;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface TopicMessageSubject extends MessageSubject {
-    String getTopic();
-}

+ 0 - 33
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/UserMessageSubject.java

@@ -1,33 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.support;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface UserMessageSubject extends QueueMessageSubject {
-    String getUserId();
-
-    @Override
-    default String getQueueName() {
-        return "queue_for_user:" + getUserId();
-    }
-}

+ 0 - 46
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleDataMessage.java

@@ -1,46 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message.support.simple;
-
-import org.hswebframework.web.message.support.DataMessage;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class SimpleDataMessage implements DataMessage {
-    private byte[] message;
-
-    @Override
-    public byte[] getMessage() {
-        return message;
-    }
-
-    public void setMessage(byte[] message) {
-        this.message = message;
-    }
-
-    public SimpleDataMessage(byte[] message) {
-        this.message = message;
-    }
-
-    public SimpleDataMessage() {
-    }
-}

+ 0 - 29
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleObjectMessage.java

@@ -1,29 +0,0 @@
-package org.hswebframework.web.message.support.simple;
-
-import org.hswebframework.web.message.support.ObjectMessage;
-
-import java.io.Serializable;
-
-/**
- * @author zhouhao
- */
-public class SimpleObjectMessage<T extends Serializable> implements ObjectMessage<T> {
-
-    private T object;
-
-    @Override
-    public T getObject() {
-        return object;
-    }
-
-    public void setObject(T object) {
-        this.object = object;
-    }
-
-    public SimpleObjectMessage(T object) {
-        this.object = object;
-    }
-
-    public SimpleObjectMessage() {
-    }
-}

+ 0 - 54
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleServiceInvokerMessage.java

@@ -1,54 +0,0 @@
-package org.hswebframework.web.message.support.simple;
-
-import org.hswebframework.web.message.support.ServiceInvokerMessage;
-
-import java.io.Serializable;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class SimpleServiceInvokerMessage implements ServiceInvokerMessage {
-    private String serviceName;
-
-    private String method;
-
-    private Serializable[] args;
-
-    @Override
-    public String getServiceName() {
-        return serviceName;
-    }
-
-    @Override
-    public String getMethod() {
-        return method;
-    }
-
-    @Override
-    public Serializable[] getArgs() {
-        return args;
-    }
-
-    public void setArgs(Serializable[] args) {
-        this.args = args;
-    }
-
-    public void setMethod(String method) {
-        this.method = method;
-    }
-
-    public void setServiceName(String serviceName) {
-        this.serviceName = serviceName;
-    }
-
-    public SimpleServiceInvokerMessage(String serviceName, String method, Serializable... args) {
-        this.serviceName = serviceName;
-        this.method = method;
-        this.args = args;
-    }
-
-    public SimpleServiceInvokerMessage() {
-    }
-}

+ 0 - 33
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleTextMessage.java

@@ -1,33 +0,0 @@
-package org.hswebframework.web.message.support.simple;
-
-import org.hswebframework.web.message.support.TextMessage;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class SimpleTextMessage implements TextMessage {
-    private String message;
-
-    public SimpleTextMessage() {
-    }
-
-    public SimpleTextMessage(String message) {
-        this.message = message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    @Override
-    public String getMessage() {
-        return message;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(message);
-    }
-}

+ 0 - 3
hsweb-message/hsweb-message-api/src/main/resources/META-INF/spring.factories

@@ -1,3 +0,0 @@
-# Auto Configure
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-org.hswebframework.web.message.MessagerAutoConfiguration

+ 0 - 30
hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/MessagePublishHandler.java

@@ -1,30 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface MessagePublishHandler {
-    boolean isSupport(Message message);
-
-    MessagePublish handle(Message message);
-}

+ 0 - 35
hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/SimpleMessagePublish.java

@@ -1,35 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public abstract class SimpleMessagePublish implements MessagePublish {
-
-    MessageSubject to;
-
-    @Override
-    public MessagePublish to(MessageSubject subject) {
-        this.to = subject;
-        return this;
-    }
-}

+ 0 - 78
hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/SimpleMessageSubscribe.java

@@ -1,78 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Queue;
-import java.util.function.Consumer;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class SimpleMessageSubscribe<T extends Message> implements MessageSubscribe<T> {
-    MessageSubject subject;
-
-    final List<Consumer<T>> consumers = new ArrayList<>();
-
-    Queue<T> queue;
-
-    boolean started = false;
-
-    boolean stop = false;
-
-    public SimpleMessageSubscribe(MessageSubject subject, Queue<T> queue) {
-        this.subject = subject;
-        this.queue = queue;
-    }
-
-    @Override
-    public MessageSubscribe<T> onMessage(Consumer<T> consumer) {
-        synchronized (consumers) {
-            consumers.add(consumer);
-        }
-        startConsumer();
-        return this;
-    }
-
-    @Override
-    public void cancel() {
-        stop = true;
-    }
-
-    public void startConsumer() {
-        if (started) return;
-        new Thread(() -> {
-
-            while (!stop) {
-                T msg = queue.poll();
-                if (msg != null)
-                    consumers.forEach(consumer -> consumer.accept(msg));
-                else
-                    try {
-                        Thread.sleep(50);
-                    } catch (InterruptedException e) {
-                        e.printStackTrace();
-                    }
-            }
-        }).start();
-    }
-}

+ 0 - 48
hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/SimpleMessageTests.java

@@ -1,48 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.hswebframework.web.message.builder.StaticMessageBuilder.text;
-import static org.hswebframework.web.message.builder.StaticMessageSubjectBuilder.user;
-
-/**
- * @author zhouhao
- */
-public class SimpleMessageTests {
-    Messager messager = new SimpleMessager();
-
-    @Test
-    public void simpleTest() throws InterruptedException {
-        byte[] stat = new byte[1];
-
-       messager.subscribe(user("test"))
-                .onMessage(System.out::println)
-                .onMessage(msg -> stat[0] = 1);
-
-        messager.publish(text("hello2"))
-                .to(user("test"))
-                .send();
-
-        Thread.sleep(1000);
-        Assert.assertEquals(stat[0], 1);
-    }
-}

+ 0 - 85
hsweb-message/hsweb-message-api/src/test/java/org/hswebframework/web/message/SimpleMessager.java

@@ -1,85 +0,0 @@
-/*
- *  Copyright 2016 http://www.hswebframework.org
- *
- *  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 org.hswebframework.web.message;
-
-import org.hswebframework.web.message.support.TextMessage;
-import org.hswebframework.web.message.support.UserMessageSubject;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.LinkedBlockingQueue;
-
-/**
- * @author zhouhao
- */
-public class SimpleMessager implements Messager {
-
-    Map<String, Queue<Message>> queueStorage = new ConcurrentHashMap<>(256);
-
-    private Queue<Message> getQueue(String key) {
-        return queueStorage.computeIfAbsent(key, k -> new LinkedBlockingQueue<>());
-    }
-
-    List<MessagePublishHandler> publishHanlders = new ArrayList<>();
-
-    public SimpleMessager() {
-        //just support TextMessage
-        publishHanlders.add(new MessagePublishHandler() {
-            @Override
-            public boolean isSupport(Message message) {
-                return message instanceof TextMessage;
-            }
-
-            @Override
-            public MessagePublish handle(Message message) {
-                return new SimpleMessagePublish() {
-                    @Override
-                    public void send() {
-                        getQueue(buildKey(to)).offer(message);
-                    }
-                };
-            }
-        });
-    }
-
-    public String buildKey(MessageSubject subject) {
-        if (subject instanceof UserMessageSubject) {
-            return UserMessageSubject.class.getName().concat(((UserMessageSubject) subject).getUserId());
-        }
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public MessagePublish publish(Message message) {
-        return publishHanlders.stream()
-                .filter(handler -> handler.isSupport(message))
-                .findFirst()
-                .orElseThrow(UnsupportedOperationException::new)
-                .handle(message);
-    }
-
-    @Override
-    public <M extends Message> MessageSubscribe<M> subscribe(MessageSubject subscribe) {
-        return new SimpleMessageSubscribe(subscribe, getQueue(buildKey(subscribe)));
-    }
-
-}

+ 0 - 38
hsweb-message/hsweb-message-jms/pom.xml

@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-message</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0.5-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-message-jms</artifactId>
-    <description>使用jms来实现hsweb-message-api</description>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-message-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-activemq</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-tests</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-</project>

+ 0 - 50
hsweb-message/hsweb-message-jms/src/main/java/org/hswebframework/web/message/jms/JmsMessagePublish.java

@@ -1,50 +0,0 @@
-package org.hswebframework.web.message.jms;
-
-import org.hswebframework.web.message.Message;
-import org.hswebframework.web.message.MessagePublish;
-import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.support.MultipleQueueMessageSubject;
-import org.hswebframework.web.message.support.QueueMessageSubject;
-import org.hswebframework.web.message.support.TopicMessageSubject;
-import org.springframework.jms.core.JmsTemplate;
-
-import java.util.Set;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class JmsMessagePublish implements MessagePublish {
-    private MessageSubject subject;
-
-    private JmsTemplate queueTemplate;
-    private JmsTemplate topicTemplate;
-    private Message     message;
-
-    public JmsMessagePublish(JmsTemplate queueTemplate, JmsTemplate topicTemplate, Message message) {
-        this.queueTemplate = queueTemplate;
-        this.topicTemplate = topicTemplate;
-        this.message = message;
-    }
-
-    @Override
-    public MessagePublish to(MessageSubject subject) {
-        this.subject = subject;
-        return this;
-    }
-
-    @Override
-    public void send() {
-        if (subject instanceof QueueMessageSubject) {
-            queueTemplate.convertAndSend(((QueueMessageSubject) subject).getQueueName(), message);
-        }
-        if (subject instanceof MultipleQueueMessageSubject) {
-            Set<String> queueNames = ((MultipleQueueMessageSubject) subject).getQueueName();
-            queueNames.forEach(name -> queueTemplate.convertAndSend(name, message));
-        }
-        if (subject instanceof TopicMessageSubject) {
-            topicTemplate.convertAndSend(((TopicMessageSubject) subject).getTopic(), message);
-        }
-    }
-}

+ 0 - 70
hsweb-message/hsweb-message-jms/src/main/java/org/hswebframework/web/message/jms/JmsMessageSubscribe.java

@@ -1,70 +0,0 @@
-package org.hswebframework.web.message.jms;
-
-import org.hswebframework.web.message.Message;
-import org.hswebframework.web.message.MessageSubscribe;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.jms.UncategorizedJmsException;
-import org.springframework.jms.core.JmsTemplate;
-import org.springframework.jms.core.SessionCallback;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Executor;
-import java.util.function.Consumer;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class JmsMessageSubscribe<M extends Message> implements MessageSubscribe<M> {
-    private List<Consumer<M>> consumers = new ArrayList<>();
-    private JmsTemplate jmsTemplate;
-
-    private Executor executor;
-
-    private String subjectName;
-
-    private volatile boolean running = false;
-
-    private Logger logger = LoggerFactory.getLogger(this.getClass());
-
-    public JmsMessageSubscribe(JmsTemplate jmsTemplate, Executor executor, String subject) {
-        this.jmsTemplate = jmsTemplate;
-        this.executor = executor;
-        this.subjectName = subject;
-    }
-
-    @Override
-    public MessageSubscribe<M> onMessage(Consumer<M> consumer) {
-        consumers.add(consumer);
-        if (!running) {
-            run();
-        }
-        return this;
-    }
-
-    private void run() {
-        running = true;
-        executor.execute(() -> {
-            while (running) {
-                try {
-                    M message = (M) jmsTemplate.receiveAndConvert(subjectName);
-                    consumers.forEach(con -> con.accept(message));
-                } catch (UncategorizedJmsException e) {
-                    logger.error("stop subscribe", e);
-                    running = false;
-                } catch (Exception e) {
-                    logger.error(e.getMessage(), e);
-                    // running = false;
-                }
-            }
-        });
-    }
-
-    @Override
-    public void cancel() {
-        running = false;
-    }
-}

+ 0 - 60
hsweb-message/hsweb-message-jms/src/main/java/org/hswebframework/web/message/jms/JmsMessager.java

@@ -1,60 +0,0 @@
-package org.hswebframework.web.message.jms;
-
-import org.apache.activemq.command.ActiveMQQueue;
-import org.hswebframework.web.message.*;
-import org.hswebframework.web.message.support.QueueMessageSubject;
-import org.hswebframework.web.message.support.TopicMessageSubject;
-import org.springframework.jms.core.JmsTemplate;
-
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class JmsMessager implements Messager {
-
-    private JmsTemplate queueTemplate;
-
-    private JmsTemplate topicTemplate;
-
-    private Executor executor;
-
-    public JmsMessager(JmsTemplate template) {
-        this(template, Executors.newCachedThreadPool());
-    }
-
-    public JmsMessager(JmsTemplate template, Executor executor) {
-        queueTemplate = new JmsTemplate(template.getConnectionFactory());
-        queueTemplate.setDestinationResolver(template.getDestinationResolver());
-        queueTemplate.setPubSubDomain(false);
-        topicTemplate = new JmsTemplate(template.getConnectionFactory());
-        topicTemplate.setDestinationResolver(template.getDestinationResolver());
-        topicTemplate.setPubSubDomain(true);
-        this.executor = executor;
-    }
-
-    @Override
-    public MessagePublish publish(Message message) {
-        return new JmsMessagePublish(queueTemplate, topicTemplate, message);
-    }
-
-    @Override
-    public <M extends Message> MessageSubscribe<M> subscribe(MessageSubject subject) {
-        String subjectName = null;
-        JmsTemplate template = null;
-        if (subject instanceof QueueMessageSubject) {
-            subjectName = ((QueueMessageSubject) subject).getQueueName();
-            template = queueTemplate;
-        } else if (subject instanceof TopicMessageSubject) {
-            subjectName = ((TopicMessageSubject) subject).getTopic();
-            template = topicTemplate;
-        }
-        if (null == subjectName) {
-            throw new UnsupportedOperationException(subject.getClass().getName());
-        }
-        return new JmsMessageSubscribe<>(template, executor, subjectName);
-    }
-}

+ 0 - 75
hsweb-message/hsweb-message-jms/src/test/java/org/hswebframework/web/message/jms/JmsMessagerTest.java

@@ -1,75 +0,0 @@
-package org.hswebframework.web.message.jms;
-
-import org.hswebframework.web.message.Messager;
-import org.hswebframework.web.message.builder.StaticMessageBuilder;
-import org.hswebframework.web.message.builder.StaticMessageSubjectBuilder;
-import org.hswebframework.web.message.support.TextMessage;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.jms.annotation.EnableJms;
-import org.springframework.jms.core.JmsTemplate;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import static org.hswebframework.web.message.builder.StaticMessageBuilder.*;
-import static org.hswebframework.web.message.builder.StaticMessageSubjectBuilder.queue;
-import static org.hswebframework.web.message.builder.StaticMessageSubjectBuilder.topic;
-
-/**
- * @author zhouhao
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = SampleActiveMQApplication.class, properties = "application.yml")
-@EnableJms
-public class JmsMessagerTest {
-    @Autowired
-    private JmsTemplate jmsTemplate;
-
-    private Messager messager;
-
-    @Before
-    public void setup() {
-        messager = new JmsMessager(jmsTemplate);
-    }
-
-    static {
-        System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES", "*");
-    }
-
-    @Test
-    public void testQueue() throws InterruptedException {
-
-        messager.<TextMessage>subscribe(queue("test"))
-                .onMessage(textMessage -> System.out.println(textMessage.getMessage() + " sub1"));
-        messager.<TextMessage>subscribe(queue("test"))
-                .onMessage(textMessage -> System.out.println(textMessage.getMessage() + " sub2"));
-
-
-        for (int i = 0; i < 100; i++) {
-            Thread.sleep(100);
-            messager.publish(text("hello jms"))
-                    .to(queue("test"))
-                    .send();
-        }
-    }
-
-    @Test
-    public void testTopic() throws InterruptedException {
-
-        messager.<TextMessage>subscribe(topic("test"))
-                .onMessage(textMessage -> System.out.println(textMessage.getMessage() + " topic1"));
-        messager.<TextMessage>subscribe(topic("test"))
-                .onMessage(textMessage -> System.out.println(textMessage.getMessage() + " topic2"));
-
-
-        for (int i = 0; i < 10; i++) {
-            Thread.sleep(100);
-            messager.publish(text("hello jms"))
-                    .to(topic("test"))
-                    .send();
-        }
-        
-    }
-}

+ 0 - 10
hsweb-message/hsweb-message-jms/src/test/java/org/hswebframework/web/message/jms/SampleActiveMQApplication.java

@@ -1,10 +0,0 @@
-package org.hswebframework.web.message.jms;
-
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.jms.annotation.EnableJms;
-
-@SpringBootApplication
-@EnableJms
-public class SampleActiveMQApplication {
-
-}

+ 0 - 16
hsweb-message/hsweb-message-jms/src/test/resources/application.yml

@@ -1,16 +0,0 @@
-spring:
-    activemq:
-        in-memory: true
-    datasource:
-       url : jdbc:h2:mem:test_mem
-       username : sa
-       password :
-       type: com.alibaba.druid.pool.DruidDataSource
-       driver-class-name : org.h2.Driver
-    jms:
-      pub-sub-domain: true
-
-hsweb:
-    app:
-      name: jms测试
-      version: 3.0.0

+ 0 - 31
hsweb-message/hsweb-message-redis/pom.xml

@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-message</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0.5-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-message-redis</artifactId>
-
-    <description>使用redis来实现hsweb-message-api</description>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-message-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.redisson</groupId>
-            <artifactId>redisson</artifactId>
-        </dependency>
-    </dependencies>
-</project>

+ 0 - 69
hsweb-message/hsweb-message-redis/src/main/java/org/hswebframework/web/message/redis/RedissonMessagePublish.java

@@ -1,69 +0,0 @@
-package org.hswebframework.web.message.redis;
-
-import org.hswebframework.web.message.Message;
-import org.hswebframework.web.message.MessagePublish;
-import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.support.MultipleQueueMessageSubject;
-import org.hswebframework.web.message.support.QueueMessageSubject;
-import org.hswebframework.web.message.support.TopicMessageSubject;
-import org.redisson.api.RCountDownLatch;
-import org.redisson.api.RQueue;
-import org.redisson.api.RTopic;
-import org.redisson.api.RedissonClient;
-import org.redisson.client.codec.Codec;
-import org.redisson.codec.JsonJacksonCodec;
-import org.redisson.codec.SerializationCodec;
-
-import java.util.function.Consumer;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class RedissonMessagePublish implements MessagePublish {
-    private MessageSubject to;
-    private RedissonClient redissonClient;
-    private Message        message;
-
-    public RedissonMessagePublish(RedissonClient redissonClient, Message message) {
-        this.redissonClient = redissonClient;
-        this.message = message;
-    }
-
-    @Override
-    public MessagePublish to(MessageSubject subject) {
-        this.to = subject;
-        return this;
-    }
-
-    private boolean useQueue() {
-        return to instanceof QueueMessageSubject || to instanceof MultipleQueueMessageSubject;
-    }
-
-    private static Codec codec = JsonJacksonCodec.INSTANCE;
-
-    private Consumer<String> queueConsumer = queueName -> {
-        RQueue<Message> queue = redissonClient.getQueue(queueName, codec);
-        RCountDownLatch downLatch = redissonClient.getCountDownLatch("cdl_" + queueName);
-        queue.add(message);
-        downLatch.countDown();
-    };
-
-    @Override
-    public void send() {
-        if (redissonClient.isShutdown() || redissonClient.isShuttingDown()) {
-            return;
-        }
-        if (to instanceof QueueMessageSubject) {
-            queueConsumer.accept(((QueueMessageSubject) to).getQueueName());
-        }
-        if (to instanceof MultipleQueueMessageSubject) {
-            ((MultipleQueueMessageSubject) to).getQueueName().forEach(queueConsumer);
-        }
-        if (to instanceof TopicMessageSubject) {
-            RTopic<Message> topic = redissonClient.getTopic("topic_" + ((TopicMessageSubject) to).getTopic(), codec);
-            topic.publish(message);
-        }
-    }
-}

+ 0 - 100
hsweb-message/hsweb-message-redis/src/main/java/org/hswebframework/web/message/redis/RedissonMessageSubscribe.java

@@ -1,100 +0,0 @@
-package org.hswebframework.web.message.redis;
-
-import org.hswebframework.web.message.Message;
-import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.MessageSubscribe;
-import org.hswebframework.web.message.support.QueueMessageSubject;
-import org.hswebframework.web.message.support.TopicMessageSubject;
-import org.redisson.api.RCountDownLatch;
-import org.redisson.api.RQueue;
-import org.redisson.api.RTopic;
-import org.redisson.api.RedissonClient;
-import org.redisson.client.codec.Codec;
-import org.redisson.codec.JsonJacksonCodec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.Consumer;
-
-/**
- * @author zhouhao
- */
-public class RedissonMessageSubscribe<M extends Message> implements MessageSubscribe<M> {
-    private MessageSubject subject;
-    private RedissonClient redisson;
-    private boolean           running    = false;
-    private int               listenerId = 0;
-    private List<Consumer<M>> consumers  = new ArrayList<>();
-    private RTopic<M> topic;
-
-    private Logger logger = LoggerFactory.getLogger(this.getClass());
-
-    public RedissonMessageSubscribe(MessageSubject subject, RedissonClient redisson) {
-        this.subject = subject;
-        this.redisson = redisson;
-    }
-
-    public RedissonMessageSubscribe(RedissonClient redisson) {
-        this.redisson = redisson;
-    }
-
-    @Override
-    public MessageSubscribe<M> onMessage(Consumer<M> consumer) {
-        consumers.add(consumer);
-        if (!running) {
-            doRun();
-        }
-        return this;
-    }
-
-    @Override
-    public void cancel() {
-        running = false;
-        if (listenerId != 0 && topic != null) {
-            topic.removeListener(listenerId);
-            topic = null;
-        }
-        consumers.clear();
-    }
-
-    private static Codec codec = JsonJacksonCodec.INSTANCE;
-
-    private void doRun() {
-        if (subject instanceof QueueMessageSubject) {
-            String queueName = ((QueueMessageSubject) subject).getQueueName();
-            RQueue<M> queue = redisson.getQueue(queueName, codec);
-            RCountDownLatch countDownLatch = redisson.getCountDownLatch("cdl_" + queueName);
-            Thread thread = new Thread(() -> {
-                while (running) {
-                    try {
-                        if (redisson.isShutdown() || redisson.isShuttingDown()) {
-                            return;
-                        }
-                        countDownLatch.trySetCount(1);
-                        countDownLatch.await();
-                        consumers.forEach(cons -> {
-                            M message = queue.poll();
-                            if (null != message) {
-                                cons.accept(message);
-                            }
-                        });
-                    } catch (InterruptedException e) {
-                        running = false;
-                        logger.error("queue consumer thread interrupted", e);
-                        Thread.currentThread().interrupt();
-                    }
-                }
-            });
-            running = true;
-            thread.start();
-            return;
-        }
-        if (subject instanceof TopicMessageSubject) {
-            topic = redisson.getTopic("topic_" + ((TopicMessageSubject) subject).getTopic(), codec);
-            listenerId = topic.addListener((channel, msg) -> consumers.forEach(cons -> cons.accept(msg)));
-        }
-        running = true;
-    }
-}

+ 0 - 30
hsweb-message/hsweb-message-redis/src/main/java/org/hswebframework/web/message/redis/RedissonMessager.java

@@ -1,30 +0,0 @@
-package org.hswebframework.web.message.redis;
-
-import org.hswebframework.web.message.*;
-import org.redisson.api.RedissonClient;
-
-/**
- * @author zhouhao
- */
-public class RedissonMessager implements Messager {
-
-    private RedissonClient redisson;
-
-    public RedissonMessager(RedissonClient redisson) {
-        this.redisson = redisson;
-    }
-
-    public void setRedisson(RedissonClient redisson) {
-        this.redisson = redisson;
-    }
-
-    @Override
-    public MessagePublish publish(Message message) {
-        return new RedissonMessagePublish(redisson, message);
-    }
-
-    @Override
-    public <M extends Message> MessageSubscribe<M> subscribe(MessageSubject subscribe) {
-        return new RedissonMessageSubscribe<>(subscribe, redisson);
-    }
-}

+ 0 - 22
hsweb-message/hsweb-message-redis/src/main/java/org/hswebframework/web/message/redis/starter/RedissonMessagerAutoConfiguration.java

@@ -1,22 +0,0 @@
-package org.hswebframework.web.message.redis.starter;
-
-import org.hswebframework.web.message.Messager;
-import org.hswebframework.web.message.redis.RedissonMessager;
-import org.redisson.api.RedissonClient;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author zhouhao
- */
-@Configuration
-@ConditionalOnBean(RedissonClient.class)
-@ConditionalOnMissingBean(Messager.class)
-public class RedissonMessagerAutoConfiguration {
-    @Bean
-    public Messager messager(RedissonClient client) {
-        return new RedissonMessager(client);
-    }
-}

+ 0 - 3
hsweb-message/hsweb-message-redis/src/main/resources/META-INF/spring.factories

@@ -1,3 +0,0 @@
-# Auto Configure
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-org.hswebframework.web.message.redis.starter.RedissonMessagerAutoConfiguration

+ 0 - 48
hsweb-message/hsweb-message-redis/src/test/java/org/hswebframework/web/message/redis/RedissonMessagerTest.java

@@ -1,48 +0,0 @@
-package org.hswebframework.web.message.redis;
-
-import org.hswebframework.web.message.Messager;
-import org.redisson.Redisson;
-import org.redisson.api.RedissonClient;
-import org.redisson.config.Config;
-
-import static org.hswebframework.web.message.builder.StaticMessageSubjectBuilder.topic;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class RedissonMessagerTest {
-
-
-    public void testSimple() {
-
-    }
-
-    public static void main(String[] args) throws InterruptedException {
-        Config config = new Config();
-        config.useSingleServer().setAddress("127.0.0.1:6379");
-        RedissonClient redisson = Redisson.create(config);
-        Messager messager = new RedissonMessager(redisson);
-
-        byte[] stat = new byte[1];
-
-//        new Thread(() -> {
-//            for (int i = 0; i < 1000; i++) {
-//                try {
-//                    Thread.sleep(1000);
-//                } catch (InterruptedException e) {
-//                    e.printStackTrace();
-//                }
-//                messager.publish(text("hello2"))
-//                        .to(topic("test"))
-//                        .from(user("admin"))
-//                        .send();
-//            }
-//        }).start();
-        messager.subscribe(topic("test"))
-                .onMessage(System.out::println)
-                .onMessage(msg -> stat[0] = 1);
-        //redisson.shutdown();
-    }
-}

+ 0 - 52
hsweb-message/hsweb-message-websocket/README.md

@@ -1,52 +0,0 @@
-# websocket支持
-此模块使用命令模式,提供统一的socket链接
-
-# socket api
-1. ws://localhost:8080/socket  使用html5
-2. ws://localhost:8080/sockjs  不支持html5的浏览器使用sockjs
-
-# 开发命令处理器
-创建类,实现 `CommandProcessor`接口,例如:
-
-```java
-import org.hswebframework.web.socket.processor.CommandProcessor;
-
-@Component  //注意,需要注入spring,命令才会生效,或者使用CommandProcessorContainer.install进行安装
-public class MyCommand implements CommandProcessor {
-    @Override
-    public String getName() {
-        return "my-command";
-    }
-
-    @Override
-    public void execute(CommandRequest request) {
-        request.getSession(); // WebSocketSession
-        request.getAuthentication(); //获取权限信息
-        request.getParameters(); //参数
-    }
-
-    @Override
-    public void init() {
-        //初始化时调用
-    }
-
-    @Override
-    public void destroy() {
-        //销毁时调用
-    }
-}
-
-```
-
-客户端请求
-```js
-var ws = new WebSocket("ws://localhost:8080/socket");
-//其他设置....
-// 将调用上面类的execute方法
- ws.send('{"command":"my-command","parameters":{"type":"conn"}}');
-```
-
-更多例子请看: [TestProcessor](src/test/java/org/hswebframework/web/socket/TestProcessor.java) ,
- [WebSocketClientTest](src/test/java/org/hswebframework/web/socket/WebSocketClientTest.java) ,
-[WebSocketServerTests](src/test/java/org/hswebframework/web/socket/WebSocketServerTests.java)
-

+ 0 - 88
hsweb-message/hsweb-message-websocket/pom.xml

@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-message</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0.5-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>hsweb-message-websocket</artifactId>
-
-    <description>使用hsweb-message-api进行websocket 消息传递</description>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-message-redis</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <!--<dependency>-->
-        <!--<groupId>org.hswebframework.web</groupId>-->
-        <!--<artifactId>hsweb-message-jms</artifactId>-->
-        <!--<version>${project.version}</version>-->
-        <!--<scope>test</scope>-->
-        <!--</dependency>-->
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-concurrent-counter-redis</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-concurrent-counter-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-commons-utils</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-message-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-websocket</artifactId>
-            <!--<exclusions>-->
-            <!--<exclusion>-->
-            <!--<groupId>org.springframework.boot</groupId>-->
-            <!--<artifactId>spring-boot-starter-tomcat</artifactId>-->
-            <!--</exclusion>-->
-            <!--</exclusions>-->
-        </dependency>
-
-        <!--使用undertow作为web容器-->
-        <!--<dependency>-->
-        <!--<groupId>org.springframework.boot</groupId>-->
-        <!--<artifactId>spring-boot-starter-undertow</artifactId>-->
-        <!--</dependency>-->
-
-        <dependency>
-            <groupId>org.hswebframework.web</groupId>
-            <artifactId>hsweb-authorization-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.fusesource</groupId>
-            <artifactId>sigar</artifactId>
-            <version>1.6.4</version>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>fastjson</artifactId>
-        </dependency>
-    </dependencies>
-</project>

+ 0 - 17
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/CommandRequest.java

@@ -1,17 +0,0 @@
-package org.hswebframework.web.socket;
-
-import org.hswebframework.web.authorization.Authentication;
-import org.springframework.web.socket.WebSocketSession;
-
-import java.util.Map;
-
-/**
- * @author zhouhao
- */
-public interface CommandRequest {
-    Authentication getAuthentication();
-
-    Map<String, Object> getParameters();
-
-    WebSocketSession getSession();
-}

+ 0 - 22
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/WebSocketSessionListener.java

@@ -1,22 +0,0 @@
-package org.hswebframework.web.socket;
-
-import org.springframework.web.socket.WebSocketSession;
-
-public interface WebSocketSessionListener {
-    /**
-     * 当session创建时,调用此方法
-     *
-     * @param session WebSocketSession 实例
-     * @throws Exception
-     */
-    void onSessionConnect(WebSocketSession session);
-
-    /**
-     * 当session关闭时,调用此方法
-     *
-     * @param session WebSocketSession 实例
-     * @throws Exception
-     */
-    void onSessionClose(WebSocketSession session);
-
-}

+ 0 - 45
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/authorize/AuthorizeCommandProcessor.java

@@ -1,45 +0,0 @@
-package org.hswebframework.web.socket.authorize;
-
-import org.hswebframework.web.authorization.Authentication;
-import org.hswebframework.web.authorization.token.UserToken;
-import org.hswebframework.web.authorization.token.UserTokenHolder;
-import org.hswebframework.web.authorization.token.UserTokenManager;
-import org.hswebframework.web.socket.CommandRequest;
-import org.hswebframework.web.socket.message.WebSocketMessage;
-import org.hswebframework.web.socket.processor.AbstractCommandProcessor;
-
-public class AuthorizeCommandProcessor extends AbstractCommandProcessor {
-
-    private UserTokenManager userTokenManager;
-
-    public AuthorizeCommandProcessor(UserTokenManager userTokenManager) {
-        this.userTokenManager = userTokenManager;
-    }
-
-    public void setUserTokenManager(UserTokenManager userTokenManager) {
-        this.userTokenManager = userTokenManager;
-    }
-
-    @Override
-    public String getName() {
-        return "authorize";
-    }
-
-    @Override
-    public void execute(CommandRequest command) {
-        String accessToken = (String) command.getParameters().get("access_token");
-        boolean success = false;
-
-        if (null != accessToken) {
-            UserToken token = userTokenManager.getByToken(accessToken);
-            if (token != null) {
-                UserTokenHolder.setCurrent(token);
-                success = Authentication.current().orElse(null) != null;
-                if (success) {
-                    command.getSession().getAttributes().put("user_token", accessToken);
-                }
-            }
-            sendMessage(command.getSession(), new WebSocketMessage(200, token == null ? "token not exists":"", success));
-        }
-    }
-}

+ 0 - 27
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/authorize/SessionIdWebSocketTokenParser.java

@@ -1,27 +0,0 @@
-package org.hswebframework.web.socket.authorize;
-
-import org.springframework.http.HttpHeaders;
-import org.springframework.web.socket.WebSocketSession;
-
-import java.util.*;
-
-public class SessionIdWebSocketTokenParser implements WebSocketTokenParser {
-    @Override
-    public String parseToken(WebSocketSession session) {
-        HttpHeaders headers = session.getHandshakeHeaders();
-        List<String> cookies = headers.get("Cookie");
-        if (cookies == null || cookies.isEmpty()) {
-            return null;
-        }
-        String[] cookie = cookies.get(0).split("[;]");
-        Map<String, Set<String>> sessionId = new HashMap<>();
-        for (String aCookie : cookie) {
-            String[] tmp = aCookie.split("[=]");
-            if (tmp.length == 2) {
-                sessionId.computeIfAbsent(tmp[0].trim().toUpperCase(), k -> new HashSet<>())
-                        .add(tmp[1].trim());
-            }
-        }
-        return sessionId.getOrDefault("JSESSIONID", sessionId.getOrDefault("SESSIONID", new java.util.HashSet<>())).stream().findFirst().orElse(null);
-    }
-}

+ 0 - 7
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/authorize/WebSocketTokenParser.java

@@ -1,7 +0,0 @@
-package org.hswebframework.web.socket.authorize;
-
-import org.springframework.web.socket.WebSocketSession;
-
-public interface WebSocketTokenParser {
-    String parseToken(WebSocketSession session);
-}

+ 0 - 13
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/authorize/XAccessTokenParser.java

@@ -1,13 +0,0 @@
-package org.hswebframework.web.socket.authorize;
-
-import org.springframework.web.socket.WebSocketSession;
-
-import java.util.List;
-
-public class XAccessTokenParser implements WebSocketTokenParser {
-    @Override
-    public String parseToken(WebSocketSession session) {
-        List<String> tokens = session.getHandshakeHeaders().get("x-access-token");
-        return tokens == null || tokens.isEmpty() ? null : tokens.get(0);
-    }
-}

+ 0 - 180
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/handler/CommandWebSocketMessageDispatcher.java

@@ -1,180 +0,0 @@
-package org.hswebframework.web.socket.handler;
-
-import com.alibaba.fastjson.JSON;
-import com.fasterxml.jackson.core.JsonParseException;
-import org.hswebframework.web.ThreadLocalUtils;
-import org.hswebframework.web.authorization.Authentication;
-import org.hswebframework.web.authorization.AuthenticationHolder;
-import org.hswebframework.web.authorization.exception.AccessDenyException;
-import org.hswebframework.web.authorization.exception.UnAuthorizedException;
-import org.hswebframework.web.authorization.token.UserToken;
-import org.hswebframework.web.authorization.token.UserTokenHolder;
-import org.hswebframework.web.authorization.token.UserTokenManager;
-import org.hswebframework.web.socket.CommandRequest;
-import org.hswebframework.web.socket.WebSocketSessionListener;
-import org.hswebframework.web.socket.authorize.WebSocketTokenParser;
-import org.hswebframework.web.socket.message.WebSocketMessage;
-import org.hswebframework.web.socket.processor.CommandProcessor;
-import org.hswebframework.web.socket.processor.CommandProcessorContainer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.StringUtils;
-import org.springframework.web.socket.CloseStatus;
-import org.springframework.web.socket.TextMessage;
-import org.springframework.web.socket.WebSocketSession;
-import org.springframework.web.socket.handler.TextWebSocketHandler;
-
-import java.nio.file.AccessDeniedException;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * @author zhouhao
- */
-public class CommandWebSocketMessageDispatcher extends TextWebSocketHandler {
-
-    private CommandProcessorContainer processorContainer;
-
-    private UserTokenManager userTokenManager;
-
-    private List<WebSocketSessionListener> webSocketSessionListeners;
-
-    private List<WebSocketTokenParser> tokenParsers;
-
-    private Logger logger = LoggerFactory.getLogger(this.getClass());
-
-    public void setWebSocketSessionListeners(List<WebSocketSessionListener> webSocketSessionListeners) {
-        this.webSocketSessionListeners = webSocketSessionListeners;
-    }
-
-    public void setTokenParsers(List<WebSocketTokenParser> tokenParsers) {
-        this.tokenParsers = tokenParsers;
-    }
-
-    public void setUserTokenManager(UserTokenManager userTokenManager) {
-        this.userTokenManager = userTokenManager;
-    }
-
-    public void setProcessorContainer(CommandProcessorContainer processorContainer) {
-        this.processorContainer = processorContainer;
-    }
-
-    private static final TextMessage requestFormatErrorMessage = new TextMessage(new WebSocketMessage(400, "message format error!").toString());
-
-    private static final TextMessage commandNotFoundMessage = new TextMessage(new WebSocketMessage(404, "command not found!").toString());
-
-    @Override
-    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
-        String payload = message.getPayload();
-        if (StringUtils.isEmpty(payload)) {
-            return;
-        }
-        String cmd = null;
-        WebSocketMessage errorMessage = null;
-        try {
-            WebSocketCommandRequest request = JSON.parseObject(payload, WebSocketCommandRequest.class);
-            cmd = request.getCommand();
-            CommandRequest command = buildCommand(request, session);
-            CommandProcessor processor = processorContainer.getProcessor(request.getCommand());
-            if (processor != null) {
-                processor.execute(command);
-            } else {
-                session.sendMessage(commandNotFoundMessage);
-            }
-        } catch (JsonParseException e) {
-            session.sendMessage(requestFormatErrorMessage);
-        } catch (UnAuthorizedException e) {
-            errorMessage = new WebSocketMessage(401, "un authorized");
-        } catch (AccessDenyException e) {
-            errorMessage = new WebSocketMessage(403, "access deny");
-        } catch (Exception e) {
-            logger.warn("handle websocket message error ", e);
-            errorMessage = new WebSocketMessage(500, e.getMessage());
-        } finally {
-            ThreadLocalUtils.clear();
-        }
-        if (errorMessage != null) {
-            errorMessage.setCommand(cmd);
-            session.sendMessage(new TextMessage(errorMessage.toString()));
-        }
-    }
-
-    private Authentication getAuthenticationFromSession(WebSocketSession session) {
-        if (null == userTokenManager) {
-            return null;
-        }
-        String token = (String) session.getAttributes().get("user_token");
-        if(null==token){
-            return null;
-        }
-        UserToken userToken = userTokenManager.getByToken(token);
-        if (null == userToken) {
-            return null;
-        }
-        UserTokenHolder.setCurrent(userToken);
-        return Authentication.current().orElse(null);
-    }
-
-    private CommandRequest buildCommand(WebSocketCommandRequest request, WebSocketSession socketSession) {
-        Authentication authentication = getAuthenticationFromSession(socketSession);
-        return new CommandRequest() {
-            @Override
-            public Authentication getAuthentication() {
-                return authentication;
-            }
-
-            @Override
-            public Map<String, Object> getParameters() {
-                return request.getParameters();
-            }
-
-            @Override
-            public WebSocketSession getSession() {
-                return socketSession;
-            }
-        };
-    }
-
-    @Override
-    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
-        logger.debug("new WebSocket Session Established,sessionId:{}",session.getId());
-        if (tokenParsers != null) {
-            String token = tokenParsers.stream()
-                    .map(parser -> parser.parseToken(session))
-                    .filter(Objects::nonNull)
-                    .findFirst()
-                    .orElse(null);
-            if (null != token) {
-                UserToken userToken = userTokenManager.getByToken(token);
-                if (null != userToken) {
-                    UserTokenHolder.setCurrent(userToken);
-                    Authentication authentication = Authentication.current().orElse(null);
-                    session.getAttributes().put("user_token", token);
-
-                    if (null != authentication) {
-                        logger.debug("websocket authentication init ok!");
-                    } else {
-                        logger.debug("websocket authentication init fail!");
-                    }
-                }
-            }
-        }
-        if (webSocketSessionListeners != null) {
-            webSocketSessionListeners.forEach(webSocketSessionListener ->
-                    webSocketSessionListener.onSessionConnect(session));
-        }
-    }
-
-    @Override
-    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
-        logger.debug("WebSocket Session Closed,sessionId:{}",session.getId());
-
-        ThreadLocalUtils.clear();
-        if (webSocketSessionListeners != null) {
-            webSocketSessionListeners.forEach(webSocketSessionListener ->
-                    webSocketSessionListener.onSessionClose(session));
-        }
-    }
-}

+ 0 - 28
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/handler/WebSocketCommandRequest.java

@@ -1,28 +0,0 @@
-package org.hswebframework.web.socket.handler;
-
-import java.util.Map;
-
-/**
- * @author zhouhao
- */
-public class WebSocketCommandRequest {
-    private String command;
-
-    private Map<String, Object> parameters;
-
-    public String getCommand() {
-        return command;
-    }
-
-    public void setCommand(String command) {
-        this.command = command;
-    }
-
-    public Map<String, Object> getParameters() {
-        return parameters;
-    }
-
-    public void setParameters(Map<String, Object> parameters) {
-        this.parameters = parameters;
-    }
-}

+ 0 - 156
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/message/DefaultWebSocketMessager.java

@@ -1,156 +0,0 @@
-package org.hswebframework.web.socket.message;
-
-import lombok.extern.slf4j.Slf4j;
-import org.hswebframework.web.concurrent.counter.Counter;
-import org.hswebframework.web.concurrent.counter.CounterManager;
-import org.hswebframework.web.concurrent.counter.SimpleCounterManager;
-import org.hswebframework.web.message.MessageSubscribe;
-import org.hswebframework.web.message.Messager;
-import org.hswebframework.web.message.support.ObjectMessage;
-import org.springframework.web.socket.TextMessage;
-import org.springframework.web.socket.WebSocketSession;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
-
-import static org.hswebframework.web.message.builder.StaticMessageBuilder.object;
-import static org.hswebframework.web.message.builder.StaticMessageSubjectBuilder.*;
-
-/**
- * @author zhouhao
- */
-@Slf4j
-public class DefaultWebSocketMessager implements WebSocketMessager {
-
-    private Messager messager;
-    private CounterManager counterManager;
-
-    public DefaultWebSocketMessager(Messager messager) {
-        this(messager, new SimpleCounterManager());
-    }
-
-    public DefaultWebSocketMessager(Messager messager, CounterManager counterManager) {
-        this.messager = messager;
-        this.counterManager = counterManager;
-    }
-
-    //              command,   type,     sessionId
-    private final Map<String, Map<String, Map<String, MessageSubscribeSession>>> store = new ConcurrentHashMap<>(32);
-
-
-
-    @Override
-    public void onSessionConnect(WebSocketSession session) {
-
-    }
-
-    private String getSubTotalKey(String command, String type) {
-        return "sub_".concat(command)
-                .concat("_")
-                .concat(type)
-                .concat("_total");
-    }
-
-    @Override
-    public int getSubscribeTotal(String command, String type) {
-        return (int) counterManager.getCounter(getSubTotalKey(command, type)).get();
-    }
-
-    @Override
-    public void onSessionClose(WebSocketSession session) {
-        store.values()  //command
-                .stream().map(Map::values).flatMap(Collection::stream)
-                .map(sessionStore -> sessionStore.get(session.getId()))
-                .filter(Objects::nonNull)
-                .forEach(MessageSubscribeSession::cancel);
-    }
-
-    @Override
-    public void publish(String command, String type, WebSocketMessage message) {
-        messager.publish(object(message))
-                .to(TYPE_QUEUE.equals(type) ? queue("queue_" + command) : topic("topic_" + command))
-                .send();
-    }
-
-    private Map<String, MessageSubscribeSession> getSubSession(String command, String type) {
-        return store.computeIfAbsent(command, cmd -> new ConcurrentHashMap<>(128))
-                .computeIfAbsent(type, t -> new ConcurrentHashMap<>());
-    }
-
-    @Override
-    public boolean subscribe(String command, String type, WebSocketSession socketSession) {
-        Map<String, MessageSubscribeSession> subscribeSessionStore = getSubSession(command, type);
-        subscribeSessionStore.computeIfAbsent(socketSession.getId(), sessionId -> {
-            MessageSubscribe<ObjectMessage<WebSocketMessage>> subscribe = messager
-                    .subscribe(TYPE_QUEUE.equals(type) ? queue("queue_" + command) : topic("topic_" + command));
-            subscribe.onMessage(message -> {
-                try {
-                    if (!socketSession.isOpen()) {
-                        deSubscribe(command, type, socketSession);
-                        return;
-                    }
-                    socketSession.sendMessage(new TextMessage(((ObjectMessage) message).getObject().toString()));
-                } catch (IOException e) {
-                    log.error("execute WebSocket command {} error",command,e);
-                }
-            });
-            return new MessageSubscribeSession(subscribe, socketSession) {
-                @Override
-                public void cancel() {
-                    super.cancel();
-                    counterManager.getCounter(getSubTotalKey(command, type)).decrement();
-                }
-            };
-        });
-        counterManager.getCounter(getSubTotalKey(command, type)).increment();
-        return true;
-    }
-
-    @Override
-    public boolean deSubscribe(String command, String type, WebSocketSession socketSession) {
-        Map<String, MessageSubscribeSession> subscribeSessionStore = getSubSession(command, type);
-        MessageSubscribeSession subscribeSession = subscribeSessionStore.get(socketSession.getId());
-        if (null != subscribeSession) {
-            subscribeSession.getSubscribe().cancel();
-            subscribeSessionStore.remove(socketSession.getId());
-            counterManager.getCounter(getSubTotalKey(command, type)).decrement();
-            return true;
-        }
-        return false;
-    }
-
-    public class MessageSubscribeSession {
-        private MessageSubscribe<ObjectMessage<WebSocketMessage>> subscribe;
-
-        private WebSocketSession session;
-
-        public MessageSubscribeSession(MessageSubscribe<ObjectMessage<WebSocketMessage>> subscribe, WebSocketSession session) {
-            this.subscribe = subscribe;
-            this.session = session;
-        }
-
-        public MessageSubscribe<ObjectMessage<WebSocketMessage>> getSubscribe() {
-            return subscribe;
-        }
-
-        public void setSubscribe(MessageSubscribe<ObjectMessage<WebSocketMessage>> subscribe) {
-            this.subscribe = subscribe;
-        }
-
-        public WebSocketSession getSession() {
-            return session;
-        }
-
-        public void setSession(WebSocketSession session) {
-            this.session = session;
-        }
-
-        public void cancel() {
-            subscribe.cancel();
-        }
-    }
-}

+ 0 - 71
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/message/WebSocketMessage.java

@@ -1,71 +0,0 @@
-package org.hswebframework.web.socket.message;
-
-import com.alibaba.fastjson.JSON;
-
-import java.io.Serializable;
-
-/**
- * @author zhouhao
- */
-public class WebSocketMessage implements Serializable {
-    private static final long serialVersionUID = -1173161338949028545L;
-
-    private String command;
-
-    private int status;
-
-    private String message;
-
-    private Object result;
-
-    public int getStatus() {
-        return status;
-    }
-
-    public void setStatus(int status) {
-        this.status = status;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    public Object getResult() {
-        return result;
-    }
-
-    public void setResult(Object result) {
-        this.result = result;
-    }
-
-    public String getCommand() {
-        return command;
-    }
-
-    public void setCommand(String command) {
-        this.command = command;
-    }
-
-    @Override
-    public String toString() {
-        return JSON.toJSONString(this);
-    }
-
-    public WebSocketMessage() {
-    }
-
-    public WebSocketMessage(int status, String message) {
-        this.status = status;
-        this.message = message;
-    }
-
-    public WebSocketMessage(int status, String message, Object result) {
-        this.status = status;
-        this.message = message;
-        this.result = result;
-    }
-}

+ 0 - 46
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/message/WebSocketMessager.java

@@ -1,46 +0,0 @@
-package org.hswebframework.web.socket.message;
-
-import org.hswebframework.web.socket.WebSocketSessionListener;
-import org.springframework.web.socket.WebSocketSession;
-
-/**
- * @author zhouhao
- */
-public interface WebSocketMessager extends WebSocketSessionListener {
-
-    String TYPE_QUEUE = "queue";
-
-    String TYPE_TOPIC = "topic";
-
-    default void publishQueue(String command, WebSocketMessage message) {
-        publish(command, TYPE_QUEUE, message);
-    }
-
-    default void publishTopic(String command, WebSocketMessage message) {
-        publish(command, TYPE_TOPIC, message);
-    }
-
-    void publish(String command, String type, WebSocketMessage message);
-
-    int getSubscribeTotal(String command, String type);
-
-    boolean subscribe(String command, String type, WebSocketSession socketSession);
-
-    default boolean subscribeQueue(String command, WebSocketSession socketSession) {
-        return subscribe(command, TYPE_QUEUE, socketSession);
-    }
-
-    default boolean subscribeTopic(String command, WebSocketSession socketSession) {
-        return subscribe(command, TYPE_TOPIC, socketSession);
-    }
-
-    boolean deSubscribe(String command, String type, WebSocketSession socketSession);
-
-    default boolean deSubscribeQueue(String command, WebSocketSession socketSession) {
-        return deSubscribe(command, TYPE_QUEUE, socketSession);
-    }
-
-    default boolean deSubscribeTopic(String command, WebSocketSession socketSession) {
-        return deSubscribe(command, TYPE_TOPIC, socketSession);
-    }
-}

+ 0 - 34
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/processor/AbstractCommandProcessor.java

@@ -1,34 +0,0 @@
-package org.hswebframework.web.socket.processor;
-
-import org.hswebframework.web.socket.message.WebSocketMessage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.socket.TextMessage;
-import org.springframework.web.socket.WebSocketSession;
-
-import java.io.IOException;
-
-public abstract class AbstractCommandProcessor implements CommandProcessor {
-
-    protected Logger logger = LoggerFactory.getLogger(this.getClass());
-
-
-    protected void sendMessage(WebSocketSession session, WebSocketMessage message) {
-        message.setCommand(getName());
-        try {
-            session.sendMessage(new TextMessage(message.toString()));
-        } catch (IOException e) {
-            logger.error("send websocket message to {} error", session.getId(), message.toString(), e);
-        }
-    }
-
-    @Override
-    public void init() {
-
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-}

+ 0 - 20
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/processor/CommandProcessor.java

@@ -1,20 +0,0 @@
-package org.hswebframework.web.socket.processor;
-
-import org.hswebframework.web.socket.CommandRequest;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface CommandProcessor {
-    String getName();
-
-    void execute(CommandRequest command);
-
-    default void init() {
-    }
-
-    default void destroy() {
-    }
-}

+ 0 - 17
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/processor/CommandProcessorContainer.java

@@ -1,17 +0,0 @@
-package org.hswebframework.web.socket.processor;
-
-
-import java.util.List;
-
-/**
- * @author zhouhao
- */
-public interface CommandProcessorContainer {
-    CommandProcessor install(CommandProcessor command);
-
-    CommandProcessor uninstall(String name);
-
-    CommandProcessor getProcessor(String name);
-
-    List<CommandProcessor> getAllProcessor();
-}

+ 0 - 44
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/processor/DefaultCommandProcessorContainer.java

@@ -1,44 +0,0 @@
-package org.hswebframework.web.socket.processor;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * @author zhouhao
- */
-public class DefaultCommandProcessorContainer implements CommandProcessorContainer {
-
-    private final ConcurrentMap<String, CommandProcessor> processorStore = new ConcurrentHashMap<>();
-
-    @Override
-    public CommandProcessor install(CommandProcessor command) {
-        command.init();
-        return processorStore.put(command.getName(), command);
-    }
-
-    @Override
-    public CommandProcessor uninstall(String name) {
-        CommandProcessor processor = processorStore.remove(name);
-        if (null != processor) {
-            processor.destroy();
-        }
-        return processor;
-    }
-
-    public void destroy() {
-        getAllProcessor().forEach(CommandProcessor::destroy);
-        processorStore.clear();
-    }
-
-    @Override
-    public CommandProcessor getProcessor(String name) {
-        return processorStore.get(name);
-    }
-
-    @Override
-    public List<CommandProcessor> getAllProcessor() {
-        return new ArrayList<>(processorStore.values());
-    }
-}

+ 0 - 127
hsweb-message/hsweb-message-websocket/src/main/java/org/hswebframework/web/socket/starter/CommandWebSocketAutoConfiguration.java

@@ -1,127 +0,0 @@
-package org.hswebframework.web.socket.starter;
-
-import org.hswebframework.web.authorization.token.UserTokenManager;
-import org.hswebframework.web.concurrent.counter.CounterManager;
-import org.hswebframework.web.message.Messager;
-import org.hswebframework.web.socket.WebSocketSessionListener;
-import org.hswebframework.web.socket.authorize.AuthorizeCommandProcessor;
-import org.hswebframework.web.socket.authorize.SessionIdWebSocketTokenParser;
-import org.hswebframework.web.socket.authorize.WebSocketTokenParser;
-import org.hswebframework.web.socket.authorize.XAccessTokenParser;
-import org.hswebframework.web.socket.handler.CommandWebSocketMessageDispatcher;
-import org.hswebframework.web.socket.message.DefaultWebSocketMessager;
-import org.hswebframework.web.socket.message.WebSocketMessager;
-import org.hswebframework.web.socket.processor.DefaultCommandProcessorContainer;
-import org.hswebframework.web.socket.processor.CommandProcessor;
-import org.hswebframework.web.socket.processor.CommandProcessorContainer;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.socket.config.annotation.WebSocketConfigurationSupport;
-import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
-import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean;
-
-import java.util.List;
-
-/**
- * @author zhouhao
- */
-@Configuration
-public class CommandWebSocketAutoConfiguration {
-
-    @Bean
-    public SessionIdWebSocketTokenParser sessionIdWebSocketTokenParser() {
-        return new SessionIdWebSocketTokenParser();
-    }
-
-    @Bean
-    public XAccessTokenParser xAccessTokenParser() {
-        return new XAccessTokenParser();
-    }
-
-    @Bean
-    @ConditionalOnBean(UserTokenManager.class)
-    public AuthorizeCommandProcessor authorizeCommandProcessor(UserTokenManager userTokenManager) {
-        return new AuthorizeCommandProcessor(userTokenManager);
-    }
-
-    @Configuration
-    @ConditionalOnMissingBean(CommandProcessorContainer.class)
-    public static class WebSocketProcessorContainerConfiguration {
-        @Autowired(required = false)
-        private List<CommandProcessor> commandProcessors;
-
-        @Bean(destroyMethod = "destroy")
-        public DefaultCommandProcessorContainer defaultWebSocketProcessorContainer() {
-            DefaultCommandProcessorContainer container = new DefaultCommandProcessorContainer();
-            if (commandProcessors != null) {
-                commandProcessors.forEach(container::install);
-            }
-            return container;
-        }
-    }
-
-    @Configuration
-    @ConditionalOnBean(Messager.class)
-    @ConditionalOnMissingBean(WebSocketMessager.class)
-    public static class WebSocketMessagerConfiguration {
-        @Autowired(required = false)
-        private CounterManager counterManager;
-
-        @Bean
-        public WebSocketMessager webSocketMessager(Messager messager) {
-            return new DefaultWebSocketMessager(messager, counterManager);
-        }
-    }
-
-    @Bean
-    @ConfigurationProperties(prefix = "hsweb.websocket")
-    public ServletServerContainerFactoryBean createServletServerContainerFactoryBean() {
-        ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
-        container.setMaxTextMessageBufferSize(10 * 1024 * 1024);
-        container.setMaxBinaryMessageBufferSize(10 * 1024 * 1024);
-        return container;
-    }
-
-    @Configuration
-    @ConfigurationProperties(prefix = "hsweb.websocket")
-    public static class HandlerConfiguration extends WebSocketConfigurationSupport {
-        private String[] allowedOrigins;
-
-        public void setAllowedOrigins(String[] allowedOrigins) {
-            this.allowedOrigins = allowedOrigins;
-        }
-
-        @Autowired(required = false)
-        private UserTokenManager userTokenManager;
-
-        @Autowired(required = false)
-        private List<WebSocketSessionListener> webSocketSessionListeners;
-
-        @Autowired(required = false)
-        private List<WebSocketTokenParser> webSocketTokenParsers;
-
-        @Autowired
-        private CommandProcessorContainer commandProcessorContainer;
-
-        @Override
-        protected void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
-            CommandWebSocketMessageDispatcher dispatcher = new CommandWebSocketMessageDispatcher();
-            dispatcher.setProcessorContainer(commandProcessorContainer);
-            dispatcher.setUserTokenManager(userTokenManager);
-            dispatcher.setWebSocketSessionListeners(webSocketSessionListeners);
-            dispatcher.setTokenParsers(webSocketTokenParsers);
-            registry.addHandler(dispatcher, "/sockjs")
-                    .setAllowedOrigins(allowedOrigins)
-                    .withSockJS()
-                    .setSessionCookieNeeded(true);
-            registry.addHandler(dispatcher, "/socket")
-                    .setAllowedOrigins(allowedOrigins);
-        }
-    }
-
-}

+ 0 - 3
hsweb-message/hsweb-message-websocket/src/main/resources/META-INF/spring.factories

@@ -1,3 +0,0 @@
-# Auto Configure
-org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
-org.hswebframework.web.socket.starter.CommandWebSocketAutoConfiguration

+ 0 - 72
hsweb-message/hsweb-message-websocket/src/test/java/org/hswebframework/web/socket/TestProcessor.java

@@ -1,72 +0,0 @@
-package org.hswebframework.web.socket;
-
-import org.hswebframework.web.socket.message.WebSocketMessage;
-import org.hswebframework.web.socket.message.WebSocketMessager;
-import org.hswebframework.web.socket.processor.CommandProcessor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.socket.WebSocketSession;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class TestProcessor implements CommandProcessor, WebSocketSessionListener {
-
-    @Autowired
-    private WebSocketMessager messager;
-
-    @Override
-    public String getName() {
-        return "test";
-    }
-
-    private void sub(WebSocketSession socketSession) {
-        messager.subscribeQueue(getName(), socketSession);
-    }
-
-    private void deSub(WebSocketSession socketSession) {
-        messager.deSubscribeQueue(getName(), socketSession);
-    }
-
-    @Override
-    public void execute(CommandRequest command) {
-        String type = String.valueOf(command.getParameters().get("type"));
-        switch (type) {
-            case "conn":
-                sub(command.getSession());
-                break;
-            case "close": {
-                deSub(command.getSession());
-            }
-        }
-    }
-
-    @Override
-    public void init() {
-        new Thread(() -> {
-            long total = 0;
-            while (true) {
-                try {
-                    Thread.sleep(1000);
-                } catch (InterruptedException e) {
-                    e.printStackTrace();
-                }
-                if (messager.getSubscribeTotal(getName(), WebSocketMessager.TYPE_QUEUE) > 0) {
-                    messager.publishQueue(getName(), new WebSocketMessage(200, "hello" + total++));
-                    System.out.println(total);
-                }
-            }
-        }).start();
-    }
-
-    @Override
-    public void onSessionConnect(WebSocketSession session) {
-
-    }
-
-    @Override
-    public void onSessionClose(WebSocketSession session) {
-        deSub(session);
-    }
-}

+ 0 - 27
hsweb-message/hsweb-message-websocket/src/test/java/org/hswebframework/web/socket/WebSocketClientTests.java

@@ -1,27 +0,0 @@
-package org.hswebframework.web.socket;
-
-import org.springframework.util.concurrent.ListenableFuture;
-import org.springframework.web.socket.TextMessage;
-import org.springframework.web.socket.WebSocketMessage;
-import org.springframework.web.socket.WebSocketSession;
-import org.springframework.web.socket.client.WebSocketClient;
-import org.springframework.web.socket.client.standard.StandardWebSocketClient;
-import org.springframework.web.socket.handler.AbstractWebSocketHandler;
-
-public class WebSocketClientTests {
-    public static void main(String[] args) throws Exception {
-        WebSocketClient client = new StandardWebSocketClient();
-        String url = "ws://localhost:8081/socket";
-        ListenableFuture<WebSocketSession> future = client.doHandshake(new AbstractWebSocketHandler() {
-            @Override
-            public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
-                System.out.println(message.getPayload());
-            }
-        }, url);
-
-        WebSocketSession socketSession = future.get();
-        socketSession.sendMessage(new TextMessage("{\"command\":\"test\",\"parameters\":{\"type\":\"conn\"}}"));
-
-        System.in.read();
-    }
-}

+ 0 - 55
hsweb-message/hsweb-message-websocket/src/test/java/org/hswebframework/web/socket/WebSocketServerTests.java

@@ -1,55 +0,0 @@
-package org.hswebframework.web.socket;
-
-import org.hswebframework.web.concurrent.counter.CounterManager;
-import org.hswebframework.web.concurrent.counter.SimpleCounterManager;
-import org.hswebframework.web.message.Messager;
-import org.hswebframework.web.message.memory.MemoryMessager;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-@Configuration
-@EnableAutoConfiguration
-//@EnableJms
-public class WebSocketServerTests {
-
-    static {
-       // System.setProperty("org.apache.activemq.SERIALIZABLE_PACKAGES", "*");
-    }
-//
-
-//    @Bean(destroyMethod = "shutdown")
-//    public RedissonClient redissonClient(){
-//        Config config = new Config();
-//        config.useSingleServer().setAddress("redis://127.0.0.1:6379");
-//        return Redisson.create(config);
-//    }
-
-    @Bean
-    public CounterManager counterManager() {
-        return new SimpleCounterManager();
-    }
-
-    @Bean
-    public TestProcessor testProcessor() {
-        return new TestProcessor();
-    }
-
-//    // 使用redis
-//    @Bean(destroyMethod = "shutdown")
-//    public RedissonClient redissonClient() {
-//        Config config = new Config();
-//        config.useSingleServer().setAddress("127.0.0.1:6379");
-//        return Redisson.create(config);
-//    }
-
-    public static void main(String[] args) {
-        SpringApplication.run(WebSocketServerTests.class);
-    }
-}

+ 0 - 15
hsweb-message/hsweb-message-websocket/src/test/resources/application.yml

@@ -1,15 +0,0 @@
-spring:
-    activemq:
-        broker-url: tcp://localhost:61616
-        in-memory: false
-    jms:
-      pub-sub-domain: true
-
-hsweb:
-    websocket:
-      allowed-origins: "*"
-    app:
-      name: websocket测试
-      version: 3.0.0
-server:
-  port: 8081

+ 0 - 24
hsweb-message/pom.xml

@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>hsweb-framework</artifactId>
-        <groupId>org.hswebframework.web</groupId>
-        <version>3.0.5-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <description>消息相关模块(试行)</description>
-
-    <artifactId>hsweb-message</artifactId>
-    <packaging>pom</packaging>
-    <modules>
-        <module>hsweb-message-api</module>
-        <module>hsweb-message-jms</module>
-        <module>hsweb-message-redis</module>
-        <module>hsweb-message-websocket</module>
-    </modules>
-
-
-</project>

+ 1 - 1
hsweb-system/README.md

@@ -9,7 +9,7 @@
 |[hsweb-system-database-manager](hsweb-system-database-manager)|在线数据库维护| 90%|
 |[hsweb-system-datasource](hsweb-system-datasource)|动态数据源管理| 90%|
 |[hsweb-system-dictionary](hsweb-system-dictionary)| 数据字典功能|  90%|
-|[hsweb-system-dynamic-form](hsweb-system-dynamic-form)|动态表单| 80%|
+|[hsweb-system-dynamic-form](hsweb-system-dynamic-form)|动态表单| 90%|
 |[hsweb-system-file](hsweb-system-file)|文件管理| 100%|
 |[hsweb-system-oauth2-client](hsweb-system-oauth2-client)|OAuth2 客户端| 90%|
 |[hsweb-system-oauth2-server](hsweb-system-oauth2-server)|OAuth2 服务端| 90%|

+ 0 - 1
pom.xml

@@ -29,7 +29,6 @@
         <module>hsweb-starter</module>
         <module>hsweb-core</module>
         <module>hsweb-authorization</module>
-        <module>hsweb-message</module>
         <module>hsweb-system</module>
         <module>hsweb-tests</module>
         <module>hsweb-datasource</module>