// Path: config-toolkit/src/main/java/com/dangdang/config/service/zookeeper/ZookeeperConfigProfile.java
// public class ZookeeperConfigProfile extends ConfigProfile {
// 
//     private static final ExponentialBackoffRetry DEFAULT_RETRY_POLICY = new ExponentialBackoffRetry(1000, 3);
// 
//     /**
//      * zookeeper地址
//      */
//     private final String connectStr;
// 
//     /**
//      * 项目配置根目录
//      */
//     private final String rootNode;
// 
//     /**
//      * 重试策略
//      */
//     private final RetryPolicy retryPolicy;
// 
//     /**
//      * 是否开启本地缓存, 基础为当前用户目录下的.config-toolkit
//      */
//     private final boolean openLocalCache;
// 
//     public ZookeeperConfigProfile(final String connectStr, final String rootNode, final String version) {
//         this(connectStr, rootNode, version, false);
//     }
// 
//     public ZookeeperConfigProfile(final String connectStr, final String rootNode, final String version, final boolean openLocalCache) {
//         this(connectStr, rootNode, version, openLocalCache, DEFAULT_RETRY_POLICY);
//     }
// 
//     public ZookeeperConfigProfile(final String connectStr, final String rootNode, final String version, final boolean openLocalCache,
//                                   final RetryPolicy retryPolicy) {
//         super(version);
// 
//         if(connectStr == null || rootNode == null || retryPolicy == null) {
//             throw new IllegalArgumentException();
//         }
// 
//         this.connectStr = connectStr;
//         this.rootNode = rootNode;
//         this.retryPolicy = retryPolicy;
//         this.openLocalCache = openLocalCache;
//     }
// 
//     public String getConnectStr() {
//         return connectStr;
//     }
// 
//     public String getRootNode() {
//         return rootNode;
//     }
// 
//     public RetryPolicy getRetryPolicy() {
//         return retryPolicy;
//     }
// 
//     public String getVersionedRootNode() {
//         if (version == null) {
//             throw new IllegalArgumentException("Version cannot be null");
//         }
//         return ZKPaths.makePath(rootNode, version);
//     }
// 
//     public boolean isOpenLocalCache() {
//         return openLocalCache;
//     }
// 
//     @Override
//     public String toString() {
//         return "ZookeeperConfigProfile{" +
//                 "connectStr='" + connectStr + '\'' +
//                 ", rootNode='" + rootNode + '\'' +
//                 ", retryPolicy=" + retryPolicy +
//                 ", openLocalCache=" + openLocalCache +
//                 '}';
//     }
// }


import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.w3c.dom.Element;
import com.dangdang.config.service.zookeeper.ZookeeperConfigProfile;
package com.dangdang.config.service.support.spring;



public class ZookeeperConfigProfileConfigBean extends AbstractSingleBeanDefinitionParser {

	@Override
	protected Class<?> getBeanClass(Element element) {
		return ZookeeperConfigProfile.class;
	}

	@Override
	protected void doParse(Element element, BeanDefinitionBuilder builder) {
		String connectStr = element.getAttribute("connect-str");
		builder.addConstructorArgValue(connectStr);
// Path: config-toolkit/src/main/java/com/dangdang/config/service/zookeeper/ZookeeperConfigProfile.java
// public class ZookeeperConfigProfile extends ConfigProfile {
// 
//     private static final ExponentialBackoffRetry DEFAULT_RETRY_POLICY = new ExponentialBackoffRetry(1000, 3);
// 
//     /**
//      * zookeeper地址
//      */
//     private final String connectStr;
// 
//     /**
//      * 项目配置根目录
//      */
//     private final String rootNode;
// 
//     /**
//      * 重试策略
//      */
//     private final RetryPolicy retryPolicy;
// 
//     /**
//      * 是否开启本地缓存, 基础为当前用户目录下的.config-toolkit
//      */
//     private final boolean openLocalCache;
// 
//     public ZookeeperConfigProfile(final String connectStr, final String rootNode, final String version) {
//         this(connectStr, rootNode, version, false);
//     }
// 
//     public ZookeeperConfigProfile(final String connectStr, final String rootNode, final String version, final boolean openLocalCache) {
//         this(connectStr, rootNode, version, openLocalCache, DEFAULT_RETRY_POLICY);
//     }
// 
//     public ZookeeperConfigProfile(final String connectStr, final String rootNode, final String version, final boolean openLocalCache,
//                                   final RetryPolicy retryPolicy) {
//         super(version);
// 
//         if(connectStr == null || rootNode == null || retryPolicy == null) {
//             throw new IllegalArgumentException();
//         }
// 
//         this.connectStr = connectStr;
//         this.rootNode = rootNode;
//         this.retryPolicy = retryPolicy;
//         this.openLocalCache = openLocalCache;
//     }
// 
//     public String getConnectStr() {
//         return connectStr;
//     }
// 
//     public String getRootNode() {
//         return rootNode;
//     }
// 
//     public RetryPolicy getRetryPolicy() {
//         return retryPolicy;
//     }
// 
//     public String getVersionedRootNode() {
//         if (version == null) {
//             throw new IllegalArgumentException("Version cannot be null");
//         }
//         return ZKPaths.makePath(rootNode, version);
//     }
// 
//     public boolean isOpenLocalCache() {
//         return openLocalCache;
//     }
// 
//     @Override
//     public String toString() {
//         return "ZookeeperConfigProfile{" +
//                 "connectStr='" + connectStr + '\'' +
//                 ", rootNode='" + rootNode + '\'' +
//                 ", retryPolicy=" + retryPolicy +
//                 ", openLocalCache=" + openLocalCache +
//                 '}';
//     }
// }


// Path: config-toolkit/src/main/java/com/dangdang/config/service/support/spring/ZookeeperConfigProfileConfigBean.java
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.w3c.dom.Element;
import com.dangdang.config.service.zookeeper.ZookeeperConfigProfile;

package com.dangdang.config.service.support.spring;



public class ZookeeperConfigProfileConfigBean extends AbstractSingleBeanDefinitionParser {

	@Override
	protected Class<?> getBeanClass(Element element) {
		return ZookeeperConfigProfile.class;
	}

	@Override
	protected void doParse(Element element, BeanDefinitionBuilder builder) {
		String connectStr = element.getAttribute("connect-str");
		builder.addConstructorArgValue(connectStr);
		String rootNode = element.getAttribute("root-node");