Skip to content

Commit

Permalink
优化api
Browse files Browse the repository at this point in the history
  • Loading branch information
zhou-hao committed May 13, 2017
1 parent d5f9fac commit a00b2e3
Show file tree
Hide file tree
Showing 18 changed files with 272 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@
* @author zhouhao
*/
public interface MessageSubscribe<M extends Message> {
MessageSubscribe<M> iam(MessageSubject iam);

MessageSubscribe<M> onMessage(Consumer<M> consumer);

void cancel();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@
public @interface MessageConsumer {
String topic() default "";

String queue() default "";
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,7 @@
@Inherited
@Documented
public @interface MessageSupplier {

String queue() default "";

String topic() default "";
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,17 @@
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> ObjectMessage object(T msg);
<T extends Serializable> ObjectMessage<T> object(T msg);

DataMessage data(byte[] msg);

ServiceInvokerMessage service(String serviceName);
ServiceInvokerMessage service(String serviceName, String method, Serializable... args);
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@
package org.hswebframework.web.message.builder;

import org.hswebframework.web.message.MessageSubject;
import org.hswebframework.web.message.support.MultipleUserMessageSubject;
import org.hswebframework.web.message.support.TopicMessageSubject;
import org.hswebframework.web.message.support.UserMessageSubject;
import org.hswebframework.web.message.support.*;

import java.util.Set;

Expand All @@ -37,5 +35,12 @@ public interface MessageSubjectBuilder {

MessageSubject system();

TopicMessageSubject topic(String topic);
TopicMessageSubject topic(String topicName);

QueueMessageSubject queue(String queueName);

MultipleQueueMessageSubject queues(String... userIds);

MultipleQueueMessageSubject queues(Set<String> userIds);

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
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;

Expand All @@ -30,35 +34,24 @@
*
* @author zhouhao
*/
public class SimpleMessageBuilder implements MessageBuilder ,Serializable {
public class SimpleMessageBuilder implements MessageBuilder, Serializable {
@Override
public TextMessage text(String msg) {
return new TextMessage() {
@Override
public String getMessage() {
return msg;
}

@Override
public String toString() {
return msg;
}
};
return new SimpleTextMessage(msg);
}

@Override
public <T> ObjectMessage object(T msg) {
return (ObjectMessage) () -> msg;
public <T extends Serializable> ObjectMessage<T> object(T msg) {
return new SimpleObjectMessage<>(msg);
}

@Override
public DataMessage data(byte[] msg) {
return (DataMessage) () -> msg;
return new SimpleDataMessage(msg);
}

@Override
public ServiceInvokerMessage service(String serviceName) {

return null;
public ServiceInvokerMessage service(String serviceName, String method, Serializable... args) {
return new SimpleServiceInvokerMessage(serviceName,method,args);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,20 @@
package org.hswebframework.web.message.builder;

import org.hswebframework.web.message.MessageSubject;
import org.hswebframework.web.message.support.MultipleUserMessageSubject;
import org.hswebframework.web.message.support.TopicMessageSubject;
import org.hswebframework.web.message.support.UserMessageSubject;
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 {
public class SimpleMessageSubjectBuilder implements MessageSubjectBuilder, Serializable {
@Override
public UserMessageSubject user(String userId) {
return () -> userId;
Expand All @@ -58,4 +57,20 @@ public MessageSubject system() {
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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
import org.hswebframework.web.message.support.ServiceInvokerMessage;
import org.hswebframework.web.message.support.TextMessage;

import java.io.Serializable;

/**
* TODO 完成注释
*
Expand All @@ -35,15 +37,15 @@ public static TextMessage text(String msg) {
return messageBuilder.text(msg);
}

public static <T> ObjectMessage object(T 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) {
return messageBuilder.service(serviceName);
public static ServiceInvokerMessage service(String serviceName, String method, Serializable... args) {
return messageBuilder.service(serviceName, method, args);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@
package org.hswebframework.web.message.builder;

import org.hswebframework.web.message.MessageSubject;
import org.hswebframework.web.message.support.MultipleUserMessageSubject;
import org.hswebframework.web.message.support.TopicMessageSubject;
import org.hswebframework.web.message.support.UserMessageSubject;
import org.hswebframework.web.message.support.*;

import java.util.Arrays;
import java.util.HashSet;
Expand Down Expand Up @@ -54,4 +52,17 @@ public static MessageSubject 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);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
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();
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,20 @@

package org.hswebframework.web.message.support;

import org.hswebframework.web.message.MessageSubject;

import java.util.Set;
import java.util.stream.Collectors;

/**
* TODO 完成注释
*
* @author zhouhao
*/
public interface MultipleUserMessageSubject extends MessageSubject {
public interface MultipleUserMessageSubject extends MultipleQueueMessageSubject {
Set<String> getUserIdList();

default Set<String> getQueueName() {
return getUserIdList().stream()
.map(id -> "queue_for_user:" + id)
.collect(Collectors.toSet());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,13 @@

import org.hswebframework.web.message.Message;

import java.io.Serializable;

/**
* TODO 完成注释
*
* @author zhouhao
*/
public interface ObjectMessage<T> extends Message {
public interface ObjectMessage<T extends Serializable> extends Message {
T getObject();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.hswebframework.web.message.support;

import org.hswebframework.web.message.MessageSubject;

/**
* TODO 完成注释
*
* @author zhouhao
*/
public interface QueueMessageSubject extends MessageSubject {
String getQueueName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@

package org.hswebframework.web.message.support;

import org.hswebframework.web.message.MessageSubject;

/**
* TODO 完成注释
*
* @author zhouhao
*/
public interface UserMessageSubject extends MessageSubject {
public interface UserMessageSubject extends QueueMessageSubject {
String getUserId();

default String getQueueName() {
return "queue_for_user:" + getUserId();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* 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() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.hswebframework.web.message.support.simple;

import org.hswebframework.web.message.support.ObjectMessage;

import java.io.Serializable;

/**
* TODO 完成注释
*
* @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() {
}
}
Loading

0 comments on commit a00b2e3

Please sign in to comment.