com.nepxion.discovery.plugin.framework.util.MetadataUtil Maven / Gradle / Ivy
package com.nepxion.discovery.plugin.framework.util;
/**
* Title: Nepxion Discovery
* Description: Nepxion Discovery
* Copyright: Copyright (c) 2017-2050
* Company: Nepxion
* @author Haojun Ren
* @version 1.0
*/
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.springframework.core.env.Environment;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.util.PropertiesUtil;
public class MetadataUtil {
// 过滤设置元数据到Metadata Map
public static void filter(Map metadata, Environment environment) {
Properties properties = System.getProperties();
// 统一注册中心元数据的设置方式
// 支持spring.cloud.discovery.metadata.xyz配置获取
PropertiesUtil.enrichProperties(properties, environment, DiscoveryConstant.SPRING_CLOUD_DISCOVERY_PREFIX, false, true);
// 运维参数元数据的设置方式
// 支持从-Dmetadata.xyz参数获取
Set propertyNames = properties.stringPropertyNames();
for (String propertyName : propertyNames) {
if (propertyName.startsWith(DiscoveryConstant.METADATA + ".")) {
String key = propertyName.substring((DiscoveryConstant.METADATA + ".").length());
String value = properties.get(propertyName).toString();
metadata.put(key, value);
}
}
}
// 过滤设置元数据到Metadata List
// 该方式适用于Consul元数据的模式
public static void filter(List metadata, Environment environment) {
Properties properties = System.getProperties();
// 统一注册中心元数据的设置方式
// 支持spring.cloud.discovery.metadata.xyz配置获取
PropertiesUtil.enrichProperties(properties, environment, DiscoveryConstant.SPRING_CLOUD_DISCOVERY_PREFIX, false, true);
// 运维参数元数据的设置方式
// 支持从-Dmetadata.xyz参数获取
Set propertyNames = properties.stringPropertyNames();
for (String propertyName : propertyNames) {
if (propertyName.startsWith(DiscoveryConstant.METADATA + ".")) {
String key = propertyName.substring((DiscoveryConstant.METADATA + ".").length());
String value = properties.get(propertyName).toString();
int index = getIndex(metadata, key);
if (index > -1) {
metadata.set(index, key + "=" + value);
} else {
metadata.add(key + "=" + value);
}
}
}
}
public static int getIndex(List metadata, String key) {
for (int i = 0; i < metadata.size(); i++) {
String value = metadata.get(i);
if (value.startsWith(key + "=")) {
return i;
}
}
return -1;
}
public static boolean containsKey(List metadata, String key) {
for (String value : metadata) {
if (value.startsWith(key + "=")) {
return true;
}
}
return false;
}
} © 2015 - 2025 Weber Informatics LLC | Privacy Policy