Commit 37c41831 by Nepxion

重构策略模块

parent 7c6eaf43
......@@ -9,64 +9,26 @@ package com.nepxion.discovery.plugin.strategy.extension.gateway.adapter;
* @version 1.0
*/
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.server.reactive.ServerHttpRequest;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.util.JsonUtil;
import com.nepxion.discovery.plugin.strategy.adapter.DiscoveryEnabledAdapter;
import com.nepxion.discovery.plugin.strategy.adapter.DiscoveryEnabledStrategy;
import com.nepxion.discovery.plugin.strategy.adapter.AbstractVersionDiscoveryEnabledAdapter;
import com.nepxion.discovery.plugin.strategy.extension.gateway.context.GatewayStrategyContext;
import com.netflix.loadbalancer.Server;
public class VersionDiscoveryEnabledAdapter implements DiscoveryEnabledAdapter {
@Autowired(required = false)
private DiscoveryEnabledStrategy discoveryEnabledStrategy;
public class VersionDiscoveryEnabledAdapter extends AbstractVersionDiscoveryEnabledAdapter {
@Override
public boolean apply(Server server, Map<String, String> metadata) {
boolean enabled = applyVersion(server, metadata);
if (!enabled) {
return false;
protected String getVersionJson() {
ServerHttpRequest request = getRequest();
if (request == null) {
return null;
}
return applyStrategy(server, metadata);
return request.getHeaders().getFirst(DiscoveryConstant.VERSION);
}
@SuppressWarnings("unchecked")
private boolean applyVersion(Server server, Map<String, String> metadata) {
public ServerHttpRequest getRequest() {
GatewayStrategyContext context = GatewayStrategyContext.getCurrentContext();
String versionJson = context.getExchange().getRequest().getHeaders().getFirst(DiscoveryConstant.VERSION);
if (StringUtils.isEmpty(versionJson)) {
return true;
}
String serviceId = server.getMetaInfo().getAppName().toLowerCase();
String version = metadata.get(DiscoveryConstant.VERSION);
if (StringUtils.isEmpty(version)) {
return true;
}
Map<String, String> versionMap = JsonUtil.fromJson(versionJson, Map.class);
String versions = versionMap.get(serviceId);
if (versions == null) {
return true;
}
if (versions.contains(version)) {
return true;
}
return false;
}
private boolean applyStrategy(Server server, Map<String, String> metadata) {
if (discoveryEnabledStrategy == null) {
return true;
}
return discoveryEnabledStrategy.apply(server, metadata);
return context.getExchange().getRequest();
}
}
\ No newline at end of file
......@@ -9,69 +9,31 @@ package com.nepxion.discovery.plugin.strategy.extension.service.adapter;
* @version 1.0
*/
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.util.JsonUtil;
import com.nepxion.discovery.plugin.strategy.adapter.DiscoveryEnabledAdapter;
import com.nepxion.discovery.plugin.strategy.adapter.DiscoveryEnabledStrategy;
import com.netflix.loadbalancer.Server;
public class VersionDiscoveryEnabledAdapter implements DiscoveryEnabledAdapter {
@Autowired(required = false)
private DiscoveryEnabledStrategy discoveryEnabledStrategy;
import com.nepxion.discovery.plugin.strategy.adapter.AbstractVersionDiscoveryEnabledAdapter;
public class VersionDiscoveryEnabledAdapter extends AbstractVersionDiscoveryEnabledAdapter {
@Override
public boolean apply(Server server, Map<String, String> metadata) {
boolean enabled = applyVersion(server, metadata);
if (!enabled) {
return false;
protected String getVersionJson() {
HttpServletRequest request = getRequest();
if (request == null) {
return null;
}
return applyStrategy(server, metadata);
return request.getHeader(DiscoveryConstant.VERSION);
}
@SuppressWarnings("unchecked")
private boolean applyVersion(Server server, Map<String, String> metadata) {
public HttpServletRequest getRequest() {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes == null) {
return true;
}
String versionJson = attributes.getRequest().getHeader(DiscoveryConstant.VERSION);
if (StringUtils.isEmpty(versionJson)) {
return true;
}
String serviceId = server.getMetaInfo().getAppName().toLowerCase();
String version = metadata.get(DiscoveryConstant.VERSION);
if (StringUtils.isEmpty(version)) {
return true;
}
Map<String, String> versionMap = JsonUtil.fromJson(versionJson, Map.class);
String versions = versionMap.get(serviceId);
if (versions == null) {
return true;
}
if (versions.contains(version)) {
return true;
}
return false;
}
private boolean applyStrategy(Server server, Map<String, String> metadata) {
if (discoveryEnabledStrategy == null) {
return true;
return null;
}
return discoveryEnabledStrategy.apply(server, metadata);
return attributes.getRequest();
}
}
\ No newline at end of file
......@@ -9,64 +9,26 @@ package com.nepxion.discovery.plugin.strategy.extension.zuul.adapter;
* @version 1.0
*/
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.util.JsonUtil;
import com.nepxion.discovery.plugin.strategy.adapter.DiscoveryEnabledAdapter;
import com.nepxion.discovery.plugin.strategy.adapter.DiscoveryEnabledStrategy;
import com.netflix.loadbalancer.Server;
import com.nepxion.discovery.plugin.strategy.adapter.AbstractVersionDiscoveryEnabledAdapter;
import com.netflix.zuul.context.RequestContext;
public class VersionDiscoveryEnabledAdapter implements DiscoveryEnabledAdapter {
@Autowired(required = false)
private DiscoveryEnabledStrategy discoveryEnabledStrategy;
public class VersionDiscoveryEnabledAdapter extends AbstractVersionDiscoveryEnabledAdapter {
@Override
public boolean apply(Server server, Map<String, String> metadata) {
boolean enabled = applyVersion(server, metadata);
if (!enabled) {
return false;
protected String getVersionJson() {
HttpServletRequest request = getRequest();
if (request == null) {
return null;
}
return applyStrategy(server, metadata);
return request.getHeader(DiscoveryConstant.VERSION);
}
@SuppressWarnings("unchecked")
private boolean applyVersion(Server server, Map<String, String> metadata) {
public HttpServletRequest getRequest() {
RequestContext context = RequestContext.getCurrentContext();
String versionJson = context.getRequest().getHeader(DiscoveryConstant.VERSION);
if (StringUtils.isEmpty(versionJson)) {
return true;
}
String serviceId = server.getMetaInfo().getAppName().toLowerCase();
String version = metadata.get(DiscoveryConstant.VERSION);
if (StringUtils.isEmpty(version)) {
return true;
}
Map<String, String> versionMap = JsonUtil.fromJson(versionJson, Map.class);
String versions = versionMap.get(serviceId);
if (versions == null) {
return true;
}
if (versions.contains(version)) {
return true;
}
return false;
}
private boolean applyStrategy(Server server, Map<String, String> metadata) {
if (discoveryEnabledStrategy == null) {
return true;
}
return discoveryEnabledStrategy.apply(server, metadata);
return context.getRequest();
}
}
\ No newline at end of file
package com.nepxion.discovery.plugin.strategy.adapter;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.util.JsonUtil;
import com.netflix.loadbalancer.Server;
public abstract class AbstractVersionDiscoveryEnabledAdapter implements DiscoveryEnabledAdapter {
@Autowired(required = false)
private DiscoveryEnabledStrategy discoveryEnabledStrategy;
@Override
public boolean apply(Server server, Map<String, String> metadata) {
boolean enabled = applyVersion(server, metadata);
if (!enabled) {
return false;
}
return applyStrategy(server, metadata);
}
@SuppressWarnings("unchecked")
private boolean applyVersion(Server server, Map<String, String> metadata) {
String versionJson = getVersionJson();
if (StringUtils.isEmpty(versionJson)) {
return true;
}
String serviceId = server.getMetaInfo().getAppName().toLowerCase();
String version = metadata.get(DiscoveryConstant.VERSION);
if (StringUtils.isEmpty(version)) {
return true;
}
Map<String, String> versionMap = JsonUtil.fromJson(versionJson, Map.class);
String versions = versionMap.get(serviceId);
if (versions == null) {
return true;
}
if (versions.contains(version)) {
return true;
}
return false;
}
private boolean applyStrategy(Server server, Map<String, String> metadata) {
if (discoveryEnabledStrategy == null) {
return true;
}
return discoveryEnabledStrategy.apply(server, metadata);
}
protected abstract String getVersionJson();
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment