diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java index 637b093455..72c3136ce0 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/AbstractConfig.java @@ -105,6 +105,20 @@ public abstract class AbstractConfig implements Serializable { appendMaps(parameters, config, prefix, true); } + private static boolean isPrimitive(Class type) { + return type.isPrimitive() + || type == String.class + || type == Character.class + || type == Boolean.class + || type == Byte.class + || type == Short.class + || type == Integer.class + || type == Long.class + || type == Float.class + || type == Double.class + || type == Object.class; + } + @SuppressWarnings({ "unchecked", "rawtypes" }) private static void appendMaps(Map parameters, Object config, String prefix, boolean attribute) { if (config == null) { @@ -118,16 +132,7 @@ public abstract class AbstractConfig implements Serializable { && ! "getClass".equals(name) && Modifier.isPublic(method.getModifiers()) && method.getParameterTypes().length == 0 - && (method.getReturnType() == String.class - || method.getReturnType() == Character.class - || method.getReturnType() == Boolean.class - || method.getReturnType() == Byte.class - || method.getReturnType() == Short.class - || method.getReturnType() == Integer.class - || method.getReturnType() == Long.class - || method.getReturnType() == Float.class - || method.getReturnType() == Double.class - || method.getReturnType() == Object.class)) { + && isPrimitive(method.getReturnType())) { Parameter parameter = method.getAnnotation(Parameter.class); if (attribute){ if (parameter == null || !parameter.attribute()) @@ -271,5 +276,47 @@ public abstract class AbstractConfig implements Serializable { } }, "DubboShutdownHook")); } + + @Override + public String toString() { + try { + String tag = getClass().getSimpleName(); + if (tag.equals("Config")) { + tag = tag.substring(0, tag.length() - "Config".length()); + } + tag = tag.toLowerCase(); + StringBuilder buf = new StringBuilder(); + buf.append(""); + return buf.toString(); + } catch (Throwable t) { // 防御性容错 + return super.toString(); + } + } } \ No newline at end of file diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java index ddcb1e3686..fcf6840211 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ApplicationConfig.java @@ -140,36 +140,4 @@ public class ApplicationConfig extends AbstractConfig { this.monitor = new MonitorConfig(monitor); } - @Override - public String toString() { - StringBuilder buf = new StringBuilder(" 0) { - buf.append(" name=\""); - buf.append(name); - buf.append("\""); - } - if (owner != null && owner.length() > 0) { - buf.append(" owner=\""); - buf.append(owner); - buf.append("\""); - } - if (organization != null && organization.length() > 0) { - buf.append(" organization=\""); - buf.append(organization); - buf.append("\""); - } - if (architecture != null && architecture.length() > 0) { - buf.append(" architecture=\""); - buf.append(architecture); - buf.append("\""); - } - if (environment != null && environment.length() > 0) { - buf.append(" environment=\""); - buf.append(environment); - buf.append("\""); - } - buf.append(" />"); - return buf.toString(); - } - } \ No newline at end of file diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ServiceBean.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ServiceBean.java index d924624785..6a4feef6c7 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ServiceBean.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/spring/ServiceBean.java @@ -150,7 +150,10 @@ public class ServiceBean extends ServiceConfig implements InitializingBean if ((getProtocols() == null || getProtocols().size() == 0) && (getProvider() == null || getProvider().getProtocols() == null || getProvider().getProtocols().size() == 0)) { Map protocolConfigMap = applicationContext == null ? null : applicationContext.getBeansOfType(ProtocolConfig.class, false, false); - if (protocolConfigMap != null && protocolConfigMap.size() > 0) { + if (protocolConfigMap != null && protocolConfigMap.size() > 0) { + if (protocolConfigMap.size() > 1) { + throw new IllegalStateException("Found multi-protocols: " + protocolConfigMap.values() + ", You must be set default protocol in: , or set service protocol in: "); + } Collection protocolConfigs = protocolConfigMap.values(); if (protocolConfigs != null && protocolConfigs.size() > 0) { setProtocols(new ArrayList(protocolConfigs));