Api pairing doc set add description property

This commit is contained in:
hongqiaowei
2021-10-27 18:01:24 +08:00
committed by GitHub
parent c8fa0033fe
commit a82ee863ef
13 changed files with 218 additions and 73 deletions

View File

@@ -132,15 +132,16 @@ public class ApiPairingController {
}
private List<AppApiPairingDocSet> getAppDocSet(String appId) {
Map<Integer, ApiPairingDocSet> docSetMap = apiPairingDocSetService.getDocSetMap();
Map<Long, ApiPairingDocSet> docSetMap = apiPairingDocSetService.getDocSetMap();
ArrayList<AppApiPairingDocSet> result = ThreadContext.getArrayList();
for (Map.Entry<Integer, ApiPairingDocSet> entry : docSetMap.entrySet()) {
for (Map.Entry<Long, ApiPairingDocSet> entry : docSetMap.entrySet()) {
ApiPairingDocSet ds = entry.getValue();
AppApiPairingDocSet appDocSet = new AppApiPairingDocSet();
appDocSet.id = ds.id;
appDocSet.name = ds.name;
appDocSet.services = ds.docs.stream().map(d -> d.service).collect(Collectors.toSet());
appDocSet.enabled = false;
appDocSet.id = ds.id;
appDocSet.name = ds.name;
appDocSet.description = ds.description;
appDocSet.services = ds.docs.stream().map(d -> d.service).collect(Collectors.toSet());
appDocSet.enabled = false;
if (ds.appIds.contains(appId)) {
appDocSet.enabled = true;
}

View File

@@ -34,10 +34,12 @@ public class ApiPairingDocSet {
public int isDeleted = 0;
public int id;
public long id;
public String name;
public String description;
public List<ApiPairingDoc> docs = Collections.emptyList();
public Set<String> appIds = Collections.emptySet();

View File

@@ -25,7 +25,6 @@ import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import we.Fizz;
import we.config.AggregateRedisConfig;
import we.config.SystemConfig;
import we.plugin.auth.ApiConfig;
@@ -47,7 +46,7 @@ public class ApiPairingDocSetService {
private static final Logger log = LoggerFactory.getLogger(ApiPairingDocSetService.class);
private Map<Integer/* doc set id */, ApiPairingDocSet> docSetMap = new HashMap<>(64);
private Map<Long /* doc set id */, ApiPairingDocSet> docSetMap = new HashMap<>(64);
private Map<String /* app id */, Set<ApiPairingDocSet>> appDocSetMap = new HashMap<>(64);
@@ -77,7 +76,7 @@ public class ApiPairingDocSetService {
.defaultIfEmpty(Collections.emptyList())
.flatMap(
es -> {
if (Fizz.context != null) {
if (!es.isEmpty()) {
String json = null;
try {
for (Map.Entry<Object, Object> e : es) {
@@ -90,6 +89,8 @@ public class ApiPairingDocSetService {
result.msg = "init api pairing doc set error, doc set: " + json;
result.t = t;
}
} else {
log.info("no api pairing doc set");
}
return Mono.empty();
}
@@ -126,14 +127,12 @@ public class ApiPairingDocSetService {
)
.doOnNext(
msg -> {
if (Fizz.context != null) {
String message = msg.getMessage();
try {
ApiPairingDocSet docSet = JacksonUtils.readValue(message, ApiPairingDocSet.class);
updateDocSetDataStruct(docSet);
} catch (Throwable t) {
log.error("update api pairing doc set error, {}", message, t);
}
String message = msg.getMessage();
try {
ApiPairingDocSet docSet = JacksonUtils.readValue(message, ApiPairingDocSet.class);
updateDocSetDataStruct(docSet);
} catch (Throwable t) {
log.error("update api pairing doc set error, {}", message, t);
}
}
)
@@ -221,11 +220,11 @@ public class ApiPairingDocSetService {
}
}
public Map<Integer, ApiPairingDocSet> getDocSetMap() {
public Map<Long, ApiPairingDocSet> getDocSetMap() {
return docSetMap;
}
public ApiPairingDocSet get(int id) {
public ApiPairingDocSet get(long id) {
return docSetMap.get(id);
}

View File

@@ -24,7 +24,6 @@ import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import we.Fizz;
import we.config.AggregateRedisConfig;
import we.config.SystemConfig;
import we.util.JacksonUtils;
@@ -71,7 +70,7 @@ public class ApiPairingInfoService {
.defaultIfEmpty(Collections.emptyList())
.flatMap(
es -> {
if (Fizz.context != null) {
if (!es.isEmpty()) {
String json = null;
try {
for (Map.Entry<Object, Object> e : es) {
@@ -87,6 +86,8 @@ public class ApiPairingInfoService {
result.msg = "init api pairing info error, info: " + json;
result.t = t;
}
} else {
log.info("no api pairing info");
}
return Mono.empty();
}
@@ -123,24 +124,22 @@ public class ApiPairingInfoService {
)
.doOnNext(
msg -> {
if (Fizz.context != null) {
String message = msg.getMessage();
try {
ApiPairingInfo info = JacksonUtils.readValue(message, ApiPairingInfo.class);
if (info.isDeleted == ApiPairingDocSet.DELETED) {
for (String service : info.services) {
serviceApiPairingInfoMap.remove(service);
}
log.info("remove api pairing info: {}", info);
} else {
for (String service : info.services) {
serviceApiPairingInfoMap.put(service, info);
}
log.info("update api pairing info: {}", info);
String message = msg.getMessage();
try {
ApiPairingInfo info = JacksonUtils.readValue(message, ApiPairingInfo.class);
if (info.isDeleted == ApiPairingDocSet.DELETED) {
for (String service : info.services) {
serviceApiPairingInfoMap.remove(service);
}
} catch (Throwable t) {
log.error("update api pairing info error, {}", message, t);
log.info("remove api pairing info: {}", info);
} else {
for (String service : info.services) {
serviceApiPairingInfoMap.put(service, info);
}
log.info("update api pairing info: {}", info);
}
} catch (Throwable t) {
log.error("update api pairing info error, {}", message, t);
}
}
)

View File

@@ -21,6 +21,7 @@ import com.alibaba.cloud.nacos.NacosServiceManager;
import com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration;
import com.alibaba.cloud.nacos.registry.NacosRegistration;
import com.alibaba.cloud.nacos.registry.NacosServiceRegistry;
import com.alibaba.nacos.api.naming.NamingService;
import com.netflix.appinfo.ApplicationInfoManager;
import com.netflix.appinfo.DataCenterInfo;
import com.netflix.appinfo.HealthCheckHandler;
@@ -42,7 +43,7 @@ import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.ConfigurableEnvironment;
import we.config.SystemConfig;
import we.nacos.ext.FizzNacosDiscoveryProperties;
import we.service_registry.nacos.FizzNacosDiscoveryProperties;
import we.util.ReflectionUtils;
import javax.annotation.PreDestroy;
@@ -61,9 +62,6 @@ import java.util.Properties;
@AutoConfigureAfter({EurekaClientAutoConfiguration.class, NacosDiscoveryAutoConfiguration.class})
public class ApiPairingServiceRegistration<R extends Registration> implements ApplicationListener<FizzApiPairingWebServerInitializedEvent> {
// @Resource
// private NacosServiceManager nacosServiceManager;
private ServiceRegistry serviceRegistry;
private EurekaRegistration eurekaRegistration;
@@ -79,11 +77,11 @@ public class ApiPairingServiceRegistration<R extends Registration> implements Ap
ReactiveWebServerApplicationContext applicationContext = event.getApplicationContext();
// ConfigurableEnvironment env = applicationContext.getEnvironment();
/* nacos
FizzNacosDiscoveryProperties nacosDiscoveryProperties = new FizzNacosDiscoveryProperties();
/*FizzNacosDiscoveryProperties nacosDiscoveryProperties = new FizzNacosDiscoveryProperties();
nacosDiscoveryProperties.setInetUtils(inetUtils);
nacosDiscoveryProperties.setService("xxyyzz");
nacosDiscoveryProperties.setIp("x.x.x.x");
nacosDiscoveryProperties.setIp("");
nacosDiscoveryProperties.setPort(8601);
nacosDiscoveryProperties.setGroup("DEFAULT_GROUP");
nacosDiscoveryProperties.setClusterName("DEFAULT");
@@ -96,7 +94,7 @@ public class ApiPairingServiceRegistration<R extends Registration> implements Ap
nacosDiscoveryProperties.setLogName("");
nacosDiscoveryProperties.setNamingLoadCacheAtStart("false");
nacosDiscoveryProperties.setServerAddr("x.x.x.x:8848");
nacosDiscoveryProperties.setServerAddr(":8848");
Properties props = nacosDiscoveryProperties.getNacosProperties();
props.put("enabled", true);
@@ -106,15 +104,18 @@ public class ApiPairingServiceRegistration<R extends Registration> implements Ap
nacosDiscoveryProperties.init();
serviceRegistry = new NacosServiceRegistry(nacosDiscoveryProperties);
NacosServiceManager nacosServiceManager = new NacosServiceManager();
ReflectionUtils.set(serviceRegistry, "nacosServiceManager", nacosServiceManager);
NacosRegistration nacosRegistration = new NacosRegistration(null, nacosDiscoveryProperties, applicationContext);
serviceRegistry.register(nacosRegistration);*/
serviceRegistry.register(nacosRegistration);
NamingService namingService = nacosServiceManager.getNamingService(props);*/
/* eureka
EurekaInstanceConfigBean eurekaInstanceConfig = new EurekaInstanceConfigBean(inetUtils);
// eureka
/*EurekaInstanceConfigBean eurekaInstanceConfig = new EurekaInstanceConfigBean(inetUtils);
String app = "xxyyzz";
eurekaInstanceConfig.setAppname(app);
eurekaInstanceConfig.setVirtualHostName(app);

View File

@@ -28,10 +28,12 @@ import java.util.Set;
public class AppApiPairingDocSet {
public int id;
public long id;
public String name;
public String description;
public Set<String> services;
public boolean enabled;

View File

@@ -24,14 +24,11 @@ import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import we.Fizz;
import we.config.AggregateRedisConfig;
import we.config.SystemConfig;
import we.fizz.input.PathMapping;
import we.util.JacksonUtils;
import we.util.ReactiveResult;
import we.util.Result;
import we.util.Utils;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
@@ -82,7 +79,7 @@ public class GlobalResourceService {
.defaultIfEmpty(Collections.emptyList())
.flatMap(
es -> {
if (Fizz.context != null) {
if (!es.isEmpty()) {
String json = null;
try {
for (Map.Entry<Object, Object> e : es) {
@@ -97,6 +94,8 @@ public class GlobalResourceService {
result.msg = "init global resource error, json: " + json;
result.t = t;
}
} else {
log.info("no global resource");
}
return Mono.empty();
}
@@ -133,23 +132,21 @@ public class GlobalResourceService {
)
.doOnNext(
msg -> {
if (Fizz.context != null) {
String message = msg.getMessage();
try {
GlobalResource r = JacksonUtils.readValue(message, GlobalResource.class);
if (r.isDeleted == GlobalResource.DELETED) {
resourceMap.remove(r.key);
objectMap.remove(r.key);
log.info("remove global resource {}", r.key);
} else {
resourceMap.put(r.key, r);
objectMap.put(r.key, r.originalVal);
log.info("update global resource {}", r.key);
}
updateResNode();
} catch (Throwable t) {
log.error("update global resource error, {}", message, t);
String message = msg.getMessage();
try {
GlobalResource r = JacksonUtils.readValue(message, GlobalResource.class);
if (r.isDeleted == GlobalResource.DELETED) {
resourceMap.remove(r.key);
objectMap.remove(r.key);
log.info("remove global resource {}", r.key);
} else {
resourceMap.put(r.key, r);
objectMap.put(r.key, r.originalVal);
log.info("update global resource {}", r.key);
}
updateResNode();
} catch (Throwable t) {
log.error("update global resource error, {}", message, t);
}
}
)

View File

@@ -0,0 +1,26 @@
package we.service_registry.eureka;
import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.cloud.commons.util.InetUtilsProperties;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class EurekaHelper {
private static final InetUtils inetUtils = new InetUtils(new InetUtilsProperties());
public static FizzEurekaServiceRegistration get(FizzEurekaProperties fizzEurekaProperties) {
return null;
}
public static Map<String, FizzEurekaServiceRegistration> get(List<FizzEurekaProperties> fizzEurekaPropertiesList) {
Map<String, FizzEurekaServiceRegistration> result = new HashMap<>();
for (FizzEurekaProperties properties : fizzEurekaPropertiesList) {
FizzEurekaServiceRegistration fizzEurekaServiceRegistration = get(properties);
result.put(properties.id, fizzEurekaServiceRegistration);
}
return result;
}
}

View File

@@ -0,0 +1,102 @@
package we.service_registry.eureka;
import com.netflix.appinfo.DataCenterInfo;
import com.netflix.appinfo.MyDataCenterInfo;
import org.springframework.cloud.netflix.eureka.EurekaClientConfigBean;
public class FizzEurekaProperties {
public String id;
public String appName;
public String virtualHostName;
public String ipAddress;
public int nonSecurePort = 80;
public String instanceId;
public boolean preferIpAddress = true;
public boolean securePortEnabled = false;
public String healthCheckUrl;
public DataCenterInfo dataCenterInfo = new MyDataCenterInfo(
DataCenterInfo.Name.MyOwn);
public String region = "default";
public String zone = EurekaClientConfigBean.DEFAULT_ZONE;
public String serviceUrl;
public int securePort = 443;
public FizzEurekaProperties id(String id) {
this.id = id;
return this;
}
public FizzEurekaProperties appName(String appName) {
this.appName = appName;
return this;
}
public FizzEurekaProperties virtualHostName(String virtualHostName) {
this.virtualHostName = virtualHostName;
return this;
}
public FizzEurekaProperties ipAddress(String ipAddress) {
this.ipAddress = ipAddress;
return this;
}
public FizzEurekaProperties nonSecurePort(int nonSecurePort) {
this.nonSecurePort = nonSecurePort;
return this;
}
public FizzEurekaProperties instanceId(String instanceId) {
this.instanceId = instanceId;
return this;
}
public FizzEurekaProperties preferIpAddress(boolean preferIpAddress) {
this.preferIpAddress = preferIpAddress;
return this;
}
public FizzEurekaProperties securePortEnabled(boolean securePortEnabled) {
this.securePortEnabled = securePortEnabled;
return this;
}
public FizzEurekaProperties healthCheckUrl(String healthCheckUrl) {
this.healthCheckUrl = healthCheckUrl;
return this;
}
public FizzEurekaProperties region(String region) {
this.region = region;
return this;
}
public FizzEurekaProperties zone(String zone) {
this.zone = zone;
return this;
}
public FizzEurekaProperties serviceUrl(String serviceUrl) {
this.serviceUrl = serviceUrl;
return this;
}
public FizzEurekaProperties securePort(int securePort) {
this.securePort = securePort;
return this;
}
}

View File

@@ -0,0 +1,16 @@
package we.service_registry.eureka;
import org.springframework.cloud.netflix.eureka.CloudEurekaClient;
import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistration;
import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry;
public class FizzEurekaServiceRegistration {
public String id;
public EurekaRegistration registration;
public EurekaServiceRegistry serviceRegistry;
public CloudEurekaClient client;
}

View File

@@ -1,4 +1,4 @@
package we.nacos.ext;
package we.service_registry.nacos;
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.nacos.api.naming.PreservedMetadataKeys;

View File

@@ -56,7 +56,7 @@ public class ApiPairingDocSetServiceTests {
stringRedisTemplate.opsForHash().putAll("fizz_api_pairing_doc", hash);
apiPairingDocSetService.init();
Map<Integer, ApiPairingDocSet> docSetMap = apiPairingDocSetService.getDocSetMap();
Map<Long, ApiPairingDocSet> docSetMap = apiPairingDocSetService.getDocSetMap();
Map<String, Set<ApiPairingDocSet>> appDocSetMap = apiPairingDocSetService.getAppDocSetMap();
Map<String, Set<ApiPairingDocSet>> serviceExistsInDocSetMap = apiPairingDocSetService.getServiceExistsInDocSetMap();
Map<String, Map<Object, Set<ApiPairingDocSet>>> pathMethodExistsInDocSetMap = apiPairingDocSetService.getPathMethodExistsInDocSetMap();