diff --git a/center.manager/src/main/java/com/lyms/cm/controller/sys/SysRemoteController.java b/center.manager/src/main/java/com/lyms/cm/controller/sys/SysRemoteController.java index b07d9d8..ef22932 100644 --- a/center.manager/src/main/java/com/lyms/cm/controller/sys/SysRemoteController.java +++ b/center.manager/src/main/java/com/lyms/cm/controller/sys/SysRemoteController.java @@ -9,7 +9,7 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -import com.lyms.sycn.ParamsHandler; +import com.lyms.sycn.ParamsAdpter; import com.lyms.sycn.SycnHandler; import com.lyms.sycn.SycnUtils; import com.lyms.sycn.channel.ChannelData; @@ -25,7 +25,7 @@ public class SysRemoteController extends BaseController { public Object push(HttpServletRequest request) throws ClassNotFoundException, IOException { ChannelData model = SycnUtils.conver(request); Object object = SycnHandler.handler(model); - model.setData(ParamsHandler.builder().push(object).toJsonString()); + model.setData(ParamsAdpter.builder().push(object).toJsonString()); model.setAck(true); return model; } diff --git a/center.manager/src/main/java/com/lyms/cm/job/SycnFixJob.java b/center.manager/src/main/java/com/lyms/cm/job/SycnFixJob.java index 2c0ca1d..fef6340 100644 --- a/center.manager/src/main/java/com/lyms/cm/job/SycnFixJob.java +++ b/center.manager/src/main/java/com/lyms/cm/job/SycnFixJob.java @@ -6,7 +6,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import com.lyms.sycn.ParamsHandler; +import com.lyms.sycn.ParamsAdpter; import com.lyms.sycn.SycnCallback; import com.lyms.sycn.SycnCenter; import com.lyms.sycn.SycnCenter.Work; @@ -55,7 +55,7 @@ public class SycnFixJob { Boolean tag = (Boolean) handlResult; if (tag) { data.setRemote(oldData.getRemote()); - data.setData(ParamsHandler.builder().push(data.getId()).toJsonString()); + data.setData(ParamsAdpter.builder().push(data.getId()).toJsonString()); data.setAck(true); // 处理成功回执消息 data.setRemoteClazz("com.lyms.hospital.service.sys.impl.SyncDataBasicServiceImpl"); diff --git a/center.manager/src/test/java/center/manager/test/user/WorkTest.java b/center.manager/src/test/java/center/manager/test/user/WorkTest.java index 04ec55a..5316662 100644 --- a/center.manager/src/test/java/center/manager/test/user/WorkTest.java +++ b/center.manager/src/test/java/center/manager/test/user/WorkTest.java @@ -6,11 +6,11 @@ import org.springframework.beans.factory.annotation.Autowired; import com.alibaba.fastjson.JSON; import com.lyms.cm.entity.sys.SysUsers; -import com.lyms.synch.ParamsHandler; -import com.lyms.synch.SyncCallback; -import com.lyms.synch.SyncnCenter; -import com.lyms.synch.SyncnCenter.Work; -import com.lyms.synch.entity.ChannelData; +import com.lyms.sycn.ParamsAdpter; +import com.lyms.sycn.SycnCallback; +import com.lyms.sycn.SycnCenter; +import com.lyms.sycn.SycnCenter.Work; +import com.lyms.sycn.channel.ChannelData; import com.lyms.util.HttpUtils; import com.lyms.util.JsonUtils; import com.lyms.util.StrUtils; @@ -25,7 +25,7 @@ import com.lyms.util.StrUtils; public class WorkTest extends BaseTest { @Autowired - public SyncnCenter center; + public SycnCenter center; @Test public void push() { @@ -38,7 +38,7 @@ public class WorkTest extends BaseTest { ChannelData push = new ChannelData(remote, remoteClazz, remoteMethod, null, loop); - center.buildWork().push(push, new SyncCallback() { + center.buildWork().push(push, new SycnCallback() { @Override public void callBack(Object object) { System.out.println("push callBack : " + object); @@ -77,7 +77,7 @@ public class WorkTest extends BaseTest { try { // final AckObj ack = new AckObj(); - work.pullTmp(new SyncCallback() { + work.pullTmp(new SycnCallback() { @Override public void callBack(Object object) { if (object == null) @@ -115,7 +115,7 @@ public class WorkTest extends BaseTest { Work work2 = center.buildWork(); try { // final AckObj ack = new AckObj(); - work2.pullFix(new SyncCallback() { + work2.pullFix(new SycnCallback() { @Override public void callBack(Object object) { if (object != null && object instanceof ChannelData) { @@ -151,7 +151,7 @@ public class WorkTest extends BaseTest { // Object params = new Object[] { user, null }; // 设置参数 - ParamsHandler params = ParamsHandler.builder().push(user).push(null); + ParamsAdpter params = ParamsAdpter.builder().push(user).push(null); data.setData(params.toJsonString()); String str = JSON.toJSONString(data); diff --git a/core.sdk/src/main/java/com/lyms/sycn/ParamsAdpter.java b/core.sdk/src/main/java/com/lyms/sycn/ParamsAdpter.java new file mode 100644 index 0000000..4d2be98 --- /dev/null +++ b/core.sdk/src/main/java/com/lyms/sycn/ParamsAdpter.java @@ -0,0 +1,83 @@ +package com.lyms.sycn; + +import java.io.Serializable; +import java.util.LinkedList; +import java.util.List; + +import com.lyms.util.JsonUtils; + +/** + *
  • @ClassName: ParamsHandler + *
  • @Description: 参数处理 + *
  • @author maliang + *
  • @date 2017年3月15日 + *
  • + */ +public class ParamsAdpter implements Serializable { + + /** + */ + private static final long serialVersionUID = 7048461500310029490L; + private List params = new LinkedList<>(); + + public ParamsAdpter() { + } + + public static ParamsAdpter builder() { + return new ParamsAdpter(); + } + + public String toJsonString() { + return JsonUtils.beanToJson(this); + } + + public ParamsAdpter push(Object obj) { + if (obj == null) { + params.add(new Param(Object.class.getName(), "null")); + } else { + params.add(new Param(obj.getClass().getName(), obj)); + } + return this; + } + + public static class Param implements Serializable { + /** + */ + private static final long serialVersionUID = -1634342674830431814L; + private String className; + private Object obj; + + public Param() { + }; + + public Param(String className, Object obj) { + this.className = className; + this.obj = obj; + } + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public Object getObj() { + return obj; + } + + public void setObj(Object obj) { + this.obj = obj; + } + } + + public List getParams() { + return params; + } + + public void setParams(List params) { + this.params = params; + } + +} diff --git a/core.sdk/src/main/java/com/lyms/sycn/ParamsHandler.java b/core.sdk/src/main/java/com/lyms/sycn/ParamsHandler.java deleted file mode 100644 index 2264d5b..0000000 --- a/core.sdk/src/main/java/com/lyms/sycn/ParamsHandler.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.lyms.sycn; - -import java.io.Serializable; -import java.util.LinkedList; -import java.util.List; - -import com.lyms.util.JsonUtils; - -/** - *
  • @ClassName: ParamsHandler - *
  • @Description: 参数处理 - *
  • @author maliang - *
  • @date 2017年3月15日 - *
  • - */ -public class ParamsHandler implements Serializable { - - /** - */ - private static final long serialVersionUID = 7048461500310029490L; - private List params = new LinkedList<>(); - - public ParamsHandler() { - } - - public static ParamsHandler builder() { - return new ParamsHandler(); - } - - public String toJsonString() { - return JsonUtils.beanToJson(this); - } - - public ParamsHandler push(Object obj) { - if (obj == null) { - params.add(new Param(Object.class.getName(), "null")); - } else { - params.add(new Param(obj.getClass().getName(), obj)); - } - return this; - } - - public static class Param implements Serializable { - /** - */ - private static final long serialVersionUID = -1634342674830431814L; - private String className; - private Object obj; - - public Param() { - }; - - public Param(String className, Object obj) { - this.className = className; - this.obj = obj; - } - - public String getClassName() { - return className; - } - - public void setClassName(String className) { - this.className = className; - } - - public Object getObj() { - return obj; - } - - public void setObj(Object obj) { - this.obj = obj; - } - } - - public List getParams() { - return params; - } - - public void setParams(List params) { - this.params = params; - } - -} diff --git a/core.sdk/src/main/java/com/lyms/sycn/SycnHandler.java b/core.sdk/src/main/java/com/lyms/sycn/SycnHandler.java index 72c14a1..3b680fc 100644 --- a/core.sdk/src/main/java/com/lyms/sycn/SycnHandler.java +++ b/core.sdk/src/main/java/com/lyms/sycn/SycnHandler.java @@ -9,7 +9,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.lyms.spring.SpringContextHolder; -import com.lyms.sycn.ParamsHandler.Param; +import com.lyms.sycn.ParamsAdpter.Param; import com.lyms.sycn.channel.ChannelData; import com.lyms.util.JsonUtils; @@ -25,6 +25,13 @@ public class SycnHandler { private static Logger LOG = LoggerFactory.getLogger(SycnHandler.class); + /** + * 单例构建同步中心 + *

    + * 最好能保证确实是单例,由中心构建不同的 work + */ + private static final SycnCenter center = SycnCenter.install(); + public static Object handler(ChannelData data) { try { return invoke(data); @@ -54,7 +61,7 @@ public class SycnHandler { return null; Object[] objs = null; if (StringUtils.isNotBlank(params)) { - ParamsHandler handler = JsonUtils.jsonToBean(params, ParamsHandler.class); + ParamsAdpter handler = JsonUtils.jsonToBean(params, ParamsAdpter.class); if (handler != null) { List ps = handler.getParams(); objs = new Object[ps.size()]; @@ -108,4 +115,49 @@ public class SycnHandler { return null; } + /** + *

  • @Description:TODO(方法描述) + *
  • @param t + *
  • @param loop + *
  • @return + *
  • 创建人:maliang + *
  • 创建时间:2017年3月16日 + *
  • 修改人: + *
  • 修改时间: + */ + public static boolean pushFix(String id, String remote, String remoteClazz, String remoteMethod, + ParamsAdpter adpter) { + + ChannelData data = new ChannelData(id, remote, remoteClazz, remoteMethod, adpter.toJsonString(), true); + try { + center.buildWork().push(data, new SycnCallback() { + @Override + public void callBack(Object object) { + // nothing to do + } + }); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + + public static boolean pushTmp(String id, String remote, String remoteClazz, String remoteMethod, + ParamsAdpter adpter) { + ChannelData data = new ChannelData(id, remote, remoteClazz, remoteMethod, adpter.toJsonString(), false); + try { + center.buildWork().push(data, new SycnCallback() { + @Override + public void callBack(Object object) { + // nothing to do + } + }); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + } diff --git a/core.sdk/src/main/java/com/lyms/sycn/channel/ChannelData.java b/core.sdk/src/main/java/com/lyms/sycn/channel/ChannelData.java index 7209661..8ac9cf1 100644 --- a/core.sdk/src/main/java/com/lyms/sycn/channel/ChannelData.java +++ b/core.sdk/src/main/java/com/lyms/sycn/channel/ChannelData.java @@ -2,6 +2,8 @@ package com.lyms.sycn.channel; import java.io.Serializable; +import org.apache.commons.lang3.StringUtils; + import com.lyms.util.JsonUtils; import com.lyms.util.StrUtils; @@ -73,6 +75,29 @@ public class ChannelData implements Serializable { this.loop = loop; } + /** + * + * 使用不为空的ID,与业务数据保持一个相同的ID + *

    + * 如果为空将会创建新的ID + * + * @param id + * @param remote + * @param remoteClazz + * @param remoteMethod + * @param data + * @param loop + */ + public ChannelData(String id, String remote, String remoteClazz, String remoteMethod, String data, boolean loop) { + this.id = StringUtils.isBlank(id) ? StrUtils.uuid() : id; + this.remote = remote; + this.remoteClazz = remoteClazz; + this.remoteMethod = remoteMethod; + this.data = data; + this.ts = System.currentTimeMillis(); + this.loop = loop; + } + public String getId() { return id; } diff --git a/hospital.web/src/main/java/com/lyms/hospital/controller/RouterController.java b/hospital.web/src/main/java/com/lyms/hospital/controller/RouterController.java index 04c2873..5ba3e89 100644 --- a/hospital.web/src/main/java/com/lyms/hospital/controller/RouterController.java +++ b/hospital.web/src/main/java/com/lyms/hospital/controller/RouterController.java @@ -9,7 +9,7 @@ import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.lyms.sycn.ParamsHandler; +import com.lyms.sycn.ParamsAdpter; import com.lyms.sycn.SycnHandler; import com.lyms.sycn.SycnUtils; import com.lyms.sycn.channel.ChannelData; @@ -34,7 +34,7 @@ public class RouterController extends BaseController { if (data.getLoop()) { data = (ChannelData) handResult; } else { - data.setData(ParamsHandler.builder().push(handResult).toJsonString()); + data.setData(ParamsAdpter.builder().push(handResult).toJsonString()); } data.setAck(true); return data;