Commit f0e474ab by Nepxion

增加动态版本功能

parent 04301b3e
......@@ -18,7 +18,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.nepxion.discovery.plugin.configcenter.loader.ConfigLoader;
import com.nepxion.discovery.plugin.framework.adapter.PluginAdapter;
import com.nepxion.discovery.plugin.framework.context.PluginContextAware;
import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
public class ConfigInitializer {
private static final Logger LOG = LoggerFactory.getLogger(ConfigInitializer.class);
......@@ -26,6 +28,9 @@ public class ConfigInitializer {
@Autowired
private PluginContextAware pluginContextAware;
@Autowired
private PluginAdapter pluginAdapter;
@Autowired(required = false)
private ConfigLoader configLoader;
......@@ -59,7 +64,8 @@ public class ConfigInitializer {
inputStream = configLoader.getLocalInputStream();
}
try {
configParser.parse(inputStream);
RuleEntity ruleEntity = configParser.parse(inputStream);
pluginAdapter.setLocalRule(ruleEntity);
} catch (Exception e) {
LOG.error("Parse rule xml failed", e);
}
......
......@@ -19,14 +19,13 @@ import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.nepxion.discovery.plugin.configcenter.constant.ConfigConstant;
import com.nepxion.discovery.plugin.configcenter.xml.Dom4JParser;
import com.nepxion.discovery.plugin.framework.adapter.PluginAdapter;
import com.nepxion.discovery.plugin.configcenter.xml.Dom4JReader;
import com.nepxion.discovery.plugin.framework.config.PluginConfigParser;
import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
import com.nepxion.discovery.plugin.framework.entity.CountFilterEntity;
......@@ -40,18 +39,19 @@ import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
import com.nepxion.discovery.plugin.framework.entity.VersionFilterEntity;
import com.nepxion.discovery.plugin.framework.exception.PluginException;
public class ConfigParser extends Dom4JParser implements PluginConfigParser {
public class ConfigParser implements PluginConfigParser {
private static final Logger LOG = LoggerFactory.getLogger(ConfigParser.class);
@Autowired
private PluginAdapter pluginAdapter;
@Override
public void parse(InputStream inputStream) {
public RuleEntity parse(InputStream inputStream) {
try {
String text = IOUtils.toString(inputStream, PluginConstant.ENCODING_UTF_8);
super.parse(text);
Document document = Dom4JReader.getDocument(text);
Element rootElement = document.getRootElement();
return parseRoot(text, rootElement);
} catch (NullPointerException e) {
throw new PluginException("Input stream is null");
} catch (Exception e) {
......@@ -64,8 +64,7 @@ public class ConfigParser extends Dom4JParser implements PluginConfigParser {
}
@SuppressWarnings("rawtypes")
@Override
protected void parseRoot(Element element) {
private RuleEntity parseRoot(String text, Element element) {
LOG.info("Start to parse rule xml...");
int registerElementCount = element.elements(ConfigConstant.REGISTER_ELEMENT_NAME).size();
......@@ -95,16 +94,14 @@ public class ConfigParser extends Dom4JParser implements PluginConfigParser {
}
}
String text = getText();
RuleEntity ruleEntity = new RuleEntity();
ruleEntity.setRegisterEntity(registerEntity);
ruleEntity.setDiscoveryEntity(discoveryEntity);
ruleEntity.setContent(text);
pluginAdapter.setRule(ruleEntity);
LOG.info("Rule entity=\n{}", ruleEntity);
return ruleEntity;
}
@SuppressWarnings("rawtypes")
......
......@@ -45,26 +45,51 @@ public abstract class AbstractPluginAdapter implements PluginAdapter {
@Override
public String getDynamicVersion() {
return pluginCache.get(PluginConstant.VERSION);
return pluginCache.get(PluginConstant.DYNAMIC_VERSION);
}
@Override
public void setDynamicVersion(String version) {
pluginCache.put(PluginConstant.VERSION, version);
pluginCache.put(PluginConstant.DYNAMIC_VERSION, version);
}
@Override
public void clearDynamicVersion() {
pluginCache.clear(PluginConstant.VERSION);
pluginCache.clear(PluginConstant.DYNAMIC_VERSION);
}
@Override
public RuleEntity getRule() {
RuleEntity dynamicRuleEntity = getDynamicRule();
if (dynamicRuleEntity != null) {
return dynamicRuleEntity;
}
return getLocalRule();
}
@Override
public RuleEntity getLocalRule() {
return ruleCache.get(PluginConstant.RULE);
}
@Override
public void setRule(RuleEntity ruleEntity) {
public void setLocalRule(RuleEntity ruleEntity) {
ruleCache.put(PluginConstant.RULE, ruleEntity);
}
@Override
public RuleEntity getDynamicRule() {
return ruleCache.get(PluginConstant.DYNAMIC_RULE);
}
@Override
public void setDynamicRule(RuleEntity ruleEntity) {
ruleCache.put(PluginConstant.DYNAMIC_RULE, ruleEntity);
}
@Override
public void clearDynamicRule() {
ruleCache.clear(PluginConstant.DYNAMIC_RULE);
}
}
\ No newline at end of file
......@@ -39,5 +39,13 @@ public interface PluginAdapter {
RuleEntity getRule();
void setRule(RuleEntity ruleEntity);
RuleEntity getLocalRule();
void setLocalRule(RuleEntity ruleEntity);
RuleEntity getDynamicRule();
void setDynamicRule(RuleEntity ruleEntity);
void clearDynamicRule();
}
\ No newline at end of file
......@@ -11,6 +11,8 @@ package com.nepxion.discovery.plugin.framework.config;
import java.io.InputStream;
import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
public interface PluginConfigParser {
void parse(InputStream inputStream);
RuleEntity parse(InputStream inputStream);
}
\ No newline at end of file
......@@ -18,10 +18,12 @@ public class PluginConstant {
public static final String SPRING_APPLICATION_NAME = "spring.application.name";
public static final String SERVICE_ID = "serviceId";
public static final String VERSION = "version";
public static final String DYNAMIC_VERSION = "dynamicVersion";
public static final String METADATA = "metadata";
public static final String HOST = "host";
public static final String PORT = "port";
public static final String RULE = "rule";
public static final String DYNAMIC_RULE = "dynamicRule";
public static final String REACH_MAX_LIMITED_COUNT = "reach max limited count";
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
......
......@@ -20,6 +20,7 @@ import com.google.common.eventbus.Subscribe;
import com.nepxion.discovery.plugin.framework.adapter.PluginAdapter;
import com.nepxion.discovery.plugin.framework.config.PluginConfigParser;
import com.nepxion.discovery.plugin.framework.context.PluginContextAware;
import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
import com.nepxion.discovery.plugin.framework.exception.PluginException;
import com.nepxion.discovery.plugin.framework.listener.loadbalance.LoadBalanceListenerExecutor;
import com.nepxion.eventbus.annotation.EventBus;
......@@ -66,7 +67,8 @@ public class PluginSubscriber {
InputStream inputStream = ruleUpdatedEvent.getInputStream();
try {
pluninConfigParser.parse(inputStream);
RuleEntity ruleEntity = pluninConfigParser.parse(inputStream);
pluginAdapter.setDynamicRule(ruleEntity);
} catch (Exception e) {
LOG.error("Parse rule xml failed", e);
......
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