Commit f0e474ab by Nepxion

增加动态版本功能

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