Commit 8910a447 by Nepxion

重构类结构

parent 1de3455c
......@@ -24,17 +24,17 @@ import org.springframework.beans.factory.annotation.Autowired;
import com.nepxion.discovery.plugin.configuration.constant.ConfigurationConstant;
import com.nepxion.discovery.plugin.configuration.xml.Dom4JParser;
import com.nepxion.discovery.plugin.core.entity.ConsumerEntity;
import com.nepxion.discovery.plugin.core.entity.DiscoveryEntity;
import com.nepxion.discovery.plugin.core.entity.FilterEntity;
import com.nepxion.discovery.plugin.core.entity.PluginEntity;
import com.nepxion.discovery.plugin.core.entity.RegisterEntity;
import com.nepxion.discovery.plugin.core.entity.FilterType;
import com.nepxion.discovery.plugin.core.entity.VersionEntity;
import com.nepxion.discovery.plugin.core.entity.DiscoveryEntity;
import com.nepxion.discovery.plugin.core.exception.PluginException;
public class ConfigurationParser extends Dom4JParser {
private static final Logger LOG = LoggerFactory.getLogger(ConfigurationParser.class);
@Autowired
private DiscoveryEntity discoveryEntity;
private PluginEntity pluginEntity;
@Autowired
private ReentrantReadWriteLock reentrantReadWriteLock;
......@@ -42,29 +42,29 @@ public class ConfigurationParser extends Dom4JParser {
@SuppressWarnings("rawtypes")
@Override
protected void parseRoot(Element element) {
LOG.info("Start to parse xml...");
LOG.info("Start to parse plugin xml...");
int filterElementCount = element.elements(ConfigurationConstant.FILTER_ELEMENT_NAME).size();
if (filterElementCount > 1) {
throw new PluginException("The count of element[" + ConfigurationConstant.FILTER_ELEMENT_NAME + "] can't be more than 1");
int registerElementCount = element.elements(ConfigurationConstant.REGISTER_ELEMENT_NAME).size();
if (registerElementCount > 1) {
throw new PluginException("The count of element[" + ConfigurationConstant.REGISTER_ELEMENT_NAME + "] can't be more than 1");
}
int versionElementCount = element.elements(ConfigurationConstant.VERSION_ELEMENT_NAME).size();
if (versionElementCount > 1) {
throw new PluginException("The count of element[" + ConfigurationConstant.VERSION_ELEMENT_NAME + "] can't be more than 1");
int discoveryElementCount = element.elements(ConfigurationConstant.DISCOVERY_ELEMENT_NAME).size();
if (discoveryElementCount > 1) {
throw new PluginException("The count of element[" + ConfigurationConstant.DISCOVERY_ELEMENT_NAME + "] can't be more than 1");
}
FilterEntity filterEntity = new FilterEntity();
VersionEntity versionEntity = new VersionEntity();
RegisterEntity registerEntity = new RegisterEntity();
DiscoveryEntity discoveryEntity = new DiscoveryEntity();
for (Iterator elementIterator = element.elementIterator(); elementIterator.hasNext();) {
Object childElementObject = elementIterator.next();
if (childElementObject instanceof Element) {
Element childElement = (Element) childElementObject;
if (StringUtils.equals(childElement.getName(), ConfigurationConstant.FILTER_ELEMENT_NAME)) {
parseFilter(childElement, filterEntity);
} else if (StringUtils.equals(childElement.getName(), ConfigurationConstant.VERSION_ELEMENT_NAME)) {
parseVersion(childElement, versionEntity);
if (StringUtils.equals(childElement.getName(), ConfigurationConstant.REGISTER_ELEMENT_NAME)) {
parseRegister(childElement, registerEntity);
} else if (StringUtils.equals(childElement.getName(), ConfigurationConstant.DISCOVERY_ELEMENT_NAME)) {
parseDiscovery(childElement, discoveryEntity);
}
}
}
......@@ -72,31 +72,31 @@ public class ConfigurationParser extends Dom4JParser {
try {
reentrantReadWriteLock.writeLock().lock();
discoveryEntity.setFilterEntity(filterEntity);
discoveryEntity.setVersionEntity(versionEntity);
pluginEntity.setRegisterEntity(registerEntity);
pluginEntity.setDiscoveryEntity(discoveryEntity);
} finally {
reentrantReadWriteLock.writeLock().unlock();
}
LOG.info("Discovery entity is {}", discoveryEntity);
LOG.info("Plugin entity is {}", pluginEntity);
}
@SuppressWarnings("rawtypes")
private void parseFilter(Element element, FilterEntity filterEntity) {
private void parseRegister(Element element, RegisterEntity registerEntity) {
Attribute filterTypeAttribute = element.attribute(ConfigurationConstant.FILTER_TYPE_ATTRIBUTE_NAME);
if (filterTypeAttribute == null) {
throw new PluginException("Attribute[" + ConfigurationConstant.FILTER_TYPE_ATTRIBUTE_NAME + "] in element[" + element.getName() + "] is missing");
}
String filterType = filterTypeAttribute.getData().toString().trim();
filterEntity.setFilterType(FilterType.fromString(filterType));
registerEntity.setFilterType(FilterType.fromString(filterType));
Attribute globalFilterAttribute = element.attribute(ConfigurationConstant.FILTER_VALUE_ATTRIBUTE_NAME);
if (globalFilterAttribute != null) {
String globalFilterValue = globalFilterAttribute.getData().toString().trim();
filterEntity.setFilterValue(globalFilterValue);
registerEntity.setFilterValue(globalFilterValue);
}
Map<String, String> filterMap = filterEntity.getFilterMap();
Map<String, String> filterMap = registerEntity.getFilterMap();
for (Iterator elementIterator = element.elementIterator(); elementIterator.hasNext();) {
Object childElementObject = elementIterator.next();
......@@ -120,8 +120,8 @@ public class ConfigurationParser extends Dom4JParser {
}
@SuppressWarnings("rawtypes")
private void parseVersion(Element element, VersionEntity versionEntity) {
List<ConsumerEntity> consumerEntityList = versionEntity.getConsumerEntityList();
private void parseDiscovery(Element element, DiscoveryEntity discoveryEntity) {
List<ConsumerEntity> consumerEntityList = discoveryEntity.getConsumerEntityList();
for (Iterator elementIterator = element.elementIterator(); elementIterator.hasNext();) {
Object childElementObject = elementIterator.next();
if (childElementObject instanceof Element) {
......
......@@ -12,13 +12,13 @@ package com.nepxion.discovery.plugin.configuration.constant;
public class ConfigurationConstant {
public static final String SPRING_APPLICATION_DISCOVERY_REMOTE_CONFIG_ENABLED = "spring.application.discovery.remote.config.enabled";
public static final String DISCOVERY_ELEMENT_NAME = "discovery";
public static final String FILTER_ELEMENT_NAME = "filter";
public static final String PLUGIN_ELEMENT_NAME = "plugin";
public static final String REGISTER_ELEMENT_NAME = "register";
public static final String SERVICE_ELEMENT_NAME = "service";
public static final String FILTER_TYPE_ATTRIBUTE_NAME = "filter-type";
public static final String FILTER_VALUE_ATTRIBUTE_NAME = "filter-value";
public static final String SERVICE_NAME_ATTRIBUTE_NAME = "service-name";
public static final String VERSION_ELEMENT_NAME = "version";
public static final String DISCOVERY_ELEMENT_NAME = "discovery";
public static final String CONSUMER_ELEMENT_NAME = "consumer";
public static final String PROVIDER_ELEMENT_NAME = "provider";
public static final String VERSION_VALUE_NAME_ATTRIBUTE_NAME = "version-value";
......
......@@ -14,15 +14,15 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.nepxion.discovery.plugin.core.entity.DiscoveryEntity;
import com.nepxion.discovery.plugin.core.strategy.FilterStrategy;
import com.nepxion.discovery.plugin.core.strategy.VersionStrategy;
import com.nepxion.discovery.plugin.core.entity.PluginEntity;
import com.nepxion.discovery.plugin.core.strategy.RegisterStrategy;
import com.nepxion.discovery.plugin.core.strategy.DiscoveryStrategy;
@Configuration
public class PluginConfig {
@Bean
public DiscoveryEntity discoveryEntity() {
return new DiscoveryEntity();
public PluginEntity pluginEntity() {
return new PluginEntity();
}
@Bean
......@@ -31,12 +31,12 @@ public class PluginConfig {
}
@Bean
public FilterStrategy filterStrategy() {
return new FilterStrategy();
public RegisterStrategy registerStrategy() {
return new RegisterStrategy();
}
@Bean
public VersionStrategy versionStrategy() {
return new VersionStrategy();
public DiscoveryStrategy discoveryStrategy() {
return new DiscoveryStrategy();
}
}
\ No newline at end of file
......@@ -17,7 +17,7 @@ import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import com.nepxion.discovery.plugin.core.constant.PluginConstant;
import com.nepxion.discovery.plugin.core.strategy.VersionStrategy;
import com.nepxion.discovery.plugin.core.strategy.DiscoveryStrategy;
public class DiscoveryClientDecorator implements DiscoveryClient {
private DiscoveryClient discoveryClient;
......@@ -49,8 +49,8 @@ public class DiscoveryClientDecorator implements DiscoveryClient {
if (discoveryVersionEnabled) {
String applicationName = environment.getProperty(PluginConstant.SPRING_APPLICATION_NAME);
VersionStrategy versionStrategy = applicationContext.getBean(VersionStrategy.class);
versionStrategy.apply(applicationName, serviceId, instances);
DiscoveryStrategy discoveryStrategy = applicationContext.getBean(DiscoveryStrategy.class);
discoveryStrategy.apply(applicationName, serviceId, instances);
}
return instances;
......
......@@ -15,7 +15,7 @@ import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceReg
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import com.nepxion.discovery.plugin.core.strategy.FilterStrategy;
import com.nepxion.discovery.plugin.core.strategy.RegisterStrategy;
public class EurekaServiceRegistryDecorator extends EurekaServiceRegistry {
private ServiceRegistry<EurekaRegistration> serviceRegistry;
......@@ -33,8 +33,8 @@ public class EurekaServiceRegistryDecorator extends EurekaServiceRegistry {
String serviceId = registration.getServiceId();
String ipAddress = registration.getInstanceConfig().getIpAddress();
FilterStrategy filterStrategy = applicationContext.getBean(FilterStrategy.class);
filterStrategy.apply(serviceId, ipAddress);
RegisterStrategy registerStrategy = applicationContext.getBean(RegisterStrategy.class);
registerStrategy.apply(serviceId, ipAddress);
serviceRegistry.register(registration);
}
......
......@@ -10,6 +10,8 @@ package com.nepxion.discovery.plugin.core.entity;
*/
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
......@@ -17,25 +19,20 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class DiscoveryEntity implements Serializable {
private static final long serialVersionUID = 7079024435084528751L;
private static final long serialVersionUID = 6281838121286637807L;
private FilterEntity filterEntity;
private VersionEntity versionEntity;
private List<ConsumerEntity> consumerEntityList = new ArrayList<ConsumerEntity>();
public FilterEntity getFilterEntity() {
return filterEntity;
}
public DiscoveryEntity() {
public void setFilterEntity(FilterEntity filterEntity) {
this.filterEntity = filterEntity;
}
public VersionEntity getVersionEntity() {
return versionEntity;
public List<ConsumerEntity> getConsumerEntityList() {
return consumerEntityList;
}
public void setVersionEntity(VersionEntity versionEntity) {
this.versionEntity = versionEntity;
public void setConsumerEntityList(List<ConsumerEntity> consumerEntityList) {
this.consumerEntityList = consumerEntityList;
}
@Override
......
......@@ -10,29 +10,32 @@ package com.nepxion.discovery.plugin.core.entity;
*/
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class VersionEntity implements Serializable {
private static final long serialVersionUID = 6281838121286637807L;
public class PluginEntity implements Serializable {
private static final long serialVersionUID = 7079024435084528751L;
private List<ConsumerEntity> consumerEntityList = new ArrayList<ConsumerEntity>();
private RegisterEntity registerEntity;
private DiscoveryEntity discoveryEntity;
public VersionEntity() {
public RegisterEntity getRegisterEntity() {
return registerEntity;
}
public void setRegisterEntity(RegisterEntity registerEntity) {
this.registerEntity = registerEntity;
}
public List<ConsumerEntity> getConsumerEntityList() {
return consumerEntityList;
public DiscoveryEntity getDiscoveryEntity() {
return discoveryEntity;
}
public void setConsumerEntityList(List<ConsumerEntity> consumerEntityList) {
this.consumerEntityList = consumerEntityList;
public void setDiscoveryEntity(DiscoveryEntity discoveryEntity) {
this.discoveryEntity = discoveryEntity;
}
@Override
......
......@@ -18,14 +18,14 @@ import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class FilterEntity implements Serializable {
public class RegisterEntity implements Serializable {
private static final long serialVersionUID = -2097322826969006191L;
private FilterType filterType;
private String filterValue;
private Map<String, String> filterMap = new LinkedHashMap<String, String>();
public FilterEntity() {
public RegisterEntity() {
}
......
......@@ -21,12 +21,12 @@ import org.springframework.cloud.client.ServiceInstance;
import com.nepxion.discovery.plugin.core.constant.PluginConstant;
import com.nepxion.discovery.plugin.core.entity.ConsumerEntity;
import com.nepxion.discovery.plugin.core.entity.PluginEntity;
import com.nepxion.discovery.plugin.core.entity.DiscoveryEntity;
import com.nepxion.discovery.plugin.core.entity.VersionEntity;
public class VersionStrategy {
public class DiscoveryStrategy {
@Autowired
private DiscoveryEntity discoveryEntity;
private PluginEntity pluginEntity;
@Autowired
private ReentrantReadWriteLock reentrantReadWriteLock;
......@@ -35,8 +35,8 @@ public class VersionStrategy {
try {
reentrantReadWriteLock.readLock().lock();
VersionEntity versionEntity = discoveryEntity.getVersionEntity();
ConsumerEntity consumerEntity = getConsumerEntity(consumerServiceId, versionEntity);
DiscoveryEntity discoveryEntity = pluginEntity.getDiscoveryEntity();
ConsumerEntity consumerEntity = getConsumerEntity(consumerServiceId, discoveryEntity);
if (consumerEntity != null) {
Map<String, String> providerMap = consumerEntity.getProviderMap();
String version = providerMap.get(providerServiceId);
......@@ -56,8 +56,8 @@ public class VersionStrategy {
}
}
private ConsumerEntity getConsumerEntity(String consumerServiceId, VersionEntity versionEntity) {
List<ConsumerEntity> consumerEntityList = versionEntity.getConsumerEntityList();
private ConsumerEntity getConsumerEntity(String consumerServiceId, DiscoveryEntity discoveryEntity) {
List<ConsumerEntity> consumerEntityList = discoveryEntity.getConsumerEntityList();
for (ConsumerEntity consumerEntity : consumerEntityList) {
String serviceName = consumerEntity.getServiceName();
if (StringUtils.equals(consumerServiceId, serviceName)) {
......
......@@ -18,16 +18,16 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.nepxion.discovery.plugin.core.constant.PluginConstant;
import com.nepxion.discovery.plugin.core.entity.DiscoveryEntity;
import com.nepxion.discovery.plugin.core.entity.FilterEntity;
import com.nepxion.discovery.plugin.core.entity.PluginEntity;
import com.nepxion.discovery.plugin.core.entity.RegisterEntity;
import com.nepxion.discovery.plugin.core.entity.FilterType;
import com.nepxion.discovery.plugin.core.exception.PluginException;
public class FilterStrategy {
private static final Logger LOG = LoggerFactory.getLogger(FilterStrategy.class);
public class RegisterStrategy {
private static final Logger LOG = LoggerFactory.getLogger(RegisterStrategy.class);
@Autowired
private DiscoveryEntity discoveryEntity;
private PluginEntity pluginEntity;
@Autowired
private ReentrantReadWriteLock reentrantReadWriteLock;
......@@ -36,29 +36,29 @@ public class FilterStrategy {
try {
reentrantReadWriteLock.readLock().lock();
FilterEntity filterEntity = discoveryEntity.getFilterEntity();
FilterType filterType = filterEntity.getFilterType();
RegisterEntity registerEntity = pluginEntity.getRegisterEntity();
FilterType filterType = registerEntity.getFilterType();
String globalFilterValue = filterEntity.getFilterValue();
String globalFilterValue = registerEntity.getFilterValue();
Map<String, String> filterMap = filterEntity.getFilterMap();
Map<String, String> filterMap = registerEntity.getFilterMap();
String filterValue = filterMap.get(serviceId);
String allFilter = "";
String allFilterValue = "";
if (StringUtils.isNotEmpty(globalFilterValue)) {
allFilter += globalFilterValue;
allFilterValue += globalFilterValue;
}
if (StringUtils.isNotEmpty(filterValue)) {
allFilter += StringUtils.isEmpty(allFilter) ? filterValue : PluginConstant.SEPARATE + filterValue;
allFilterValue += StringUtils.isEmpty(allFilterValue) ? filterValue : PluginConstant.SEPARATE + filterValue;
}
switch (filterType) {
case BLACKLIST:
validateBlacklist(allFilter, ipAddress);
validateBlacklist(allFilterValue, ipAddress);
break;
case WHITELIST:
validateWhitelist(allFilter, ipAddress);
validateWhitelist(allFilterValue, ipAddress);
break;
}
......
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