diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageContext.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageContext.java new file mode 100644 index 000000000..a9feef4a7 --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageContext.java @@ -0,0 +1,30 @@ +/* + * 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 MessageContext { + MessageContext from(MessageSubject subject); + + MessageContext to(MessageSubject subject); + + void send(); +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageListener.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageListener.java deleted file mode 100644 index 9f391f99e..000000000 --- a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageListener.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.hswebframework.web.message; - -/** - * TODO 完成注释 - * - * @author zhouhao - */ -public interface MessageListener { - void onMessage(T message); -} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageManager.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageManager.java deleted file mode 100644 index 4a7c324a5..000000000 --- a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageManager.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.hswebframework.web.message; - -/** - * TODO 完成注释 - * - * @author zhouhao - */ -public interface MessageManager { - - void send(String toUser,String destination, Message message); - - void publish(String topic, Message message); - - void subscribe(String topic, MessageListener listener); - - void deSubscribe(String topic); -} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubject.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubject.java new file mode 100644 index 000000000..6e219bbdd --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubject.java @@ -0,0 +1,29 @@ +/* + * 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 { +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubscribe.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubscribe.java new file mode 100644 index 000000000..b409de9ad --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubscribe.java @@ -0,0 +1,32 @@ +/* + * 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; + +/** + * TODO 完成注释 + * + * @author zhouhao + */ +public interface MessageSubscribe { + MessageSubscribe iam(MessageSubject iam); + + MessageSubscribe onMessage(Consumer consumer); +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/Messager.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/Messager.java new file mode 100644 index 000000000..0a351acf8 --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/Messager.java @@ -0,0 +1,49 @@ +/* + * 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; + +/** + *
+ *     messager
+ *     .create(text("hello"))
+ *     .from(system())
+ *     .to(user("admin"))
+ *     .send();
+ * 
+ *
+ *     messager
+ *     .create(object(user))
+ *     .from(system())
+ *     .to(topic("user-login"))
+ *     .send();
+ * 
+ *
+ *     messager
+ *     .subscribe(topic("user-login"))
+ *     .iam(user("admin"))
+ *     .onMessage(user->System.out.println(user));
+ * 
+ * + * @author zhouhao + */ +public interface Messager { + MessageContext create(Message message); + + MessageSubscribe subscribe(MessageSubject subscribe); +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageConsumer.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageConsumer.java new file mode 100644 index 000000000..e373bea13 --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageConsumer.java @@ -0,0 +1,33 @@ +/* + * 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 ""; + +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageSupplier.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageSupplier.java new file mode 100644 index 000000000..55e7d3117 --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageSupplier.java @@ -0,0 +1,33 @@ +/* + * 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 { + +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageBuilder.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageBuilder.java new file mode 100644 index 000000000..52faf5785 --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageBuilder.java @@ -0,0 +1,35 @@ +/* + * 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.TextMessage; + +/** + * @author zhouhao + */ +public interface MessageBuilder { + TextMessage text(String msg); + + ObjectMessage object(T msg); + + DataMessage data(byte[] msg); + +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageSubjectBuilder.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageSubjectBuilder.java new file mode 100644 index 000000000..f29abf483 --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageSubjectBuilder.java @@ -0,0 +1,38 @@ +/* + * 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 java.util.Set; + +/** + * @author zhouhao + */ +public interface MessageSubjectBuilder { + MessageSubject user(String userId); + + MessageSubject users(String... userIds); + + MessageSubject users(Set userIds); + + MessageSubject system(); + + MessageSubject topic(String subId); +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/DataMessage.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/DataMessage.java new file mode 100644 index 000000000..f58c4b2eb --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/DataMessage.java @@ -0,0 +1,30 @@ +/* + * 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(); +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/ObjectMessage.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/ObjectMessage.java new file mode 100644 index 000000000..6710f7e3b --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/ObjectMessage.java @@ -0,0 +1,30 @@ +/* + * 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 ObjectMessage extends Message { + T getObject(); +} diff --git a/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/TextMessage.java b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/TextMessage.java new file mode 100644 index 000000000..2ddb32325 --- /dev/null +++ b/hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/TextMessage.java @@ -0,0 +1,30 @@ +/* + * 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(); +} diff --git a/hsweb-message/hsweb-message-jms/src/main/java/org/hswebframework/web/message/jms/JmsMessageManager.java b/hsweb-message/hsweb-message-jms/src/main/java/org/hswebframework/web/message/jms/JmsMessageManager.java deleted file mode 100644 index 79d0e44d5..000000000 --- a/hsweb-message/hsweb-message-jms/src/main/java/org/hswebframework/web/message/jms/JmsMessageManager.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.hswebframework.web.message.jms; - -import org.hswebframework.web.message.Message; -import org.hswebframework.web.message.MessageListener; -import org.hswebframework.web.message.MessageManager; -import org.springframework.jms.core.JmsTemplate; - -/** - * TODO 完成注释 - * - * @author zhouhao - */ -public class JmsMessageManager implements MessageManager { - JmsTemplate jmsTemplate; - - @Override - public void send(String toUser,String destination, Message message) { - - } - - @Override - public void publish(String topic, Message message) { - - } - - @Override - public void subscribe(String topic, MessageListener listener) { - - } - - @Override - public void deSubscribe(String topic) { - - } -}