package net.dubboclub.catmonitor.registry; import com.alibaba.dubbo.common.Constants; import com.alibaba.dubbo.common.URL; import com.alibaba.dubbo.registry.NotifyListener; import com.alibaba.dubbo.registry.Registry; import com.alibaba.dubbo.registry.RegistryFactory; import net.dubboclub.catmonitor.constants.CatConstants; import java.util.List; /** * Created by bieber on 2015/11/12. */ public class CatRegistryFactoryWrapper implements RegistryFactory { private RegistryFactory registryFactory; public CatRegistryFactoryWrapper(RegistryFactory registryFactory) { this.registryFactory = registryFactory; } @Override public Registry getRegistry(URL url) { return new RegistryWrapper(registryFactory.getRegistry(url)); } class RegistryWrapper implements Registry { private Registry originRegistry; private URL appendProviderAppName(URL url){ String side = url.getParameter(Constants.SIDE_KEY); if(Constants.PROVIDER_SIDE.equals(side)){ url=url.addParameter(CatConstants.PROVIDER_APPLICATION_NAME,url.getParameter(Constants.APPLICATION_KEY)); } return url; } public RegistryWrapper(Registry originRegistry) { this.originRegistry = originRegistry; } @Override public URL getUrl() { return originRegistry.getUrl(); } @Override public boolean isAvailable() { return originRegistry.isAvailable(); } @Override public void destroy() { originRegistry.destroy(); } @Override public void register(URL url) { originRegistry.register(appendProviderAppName(url)); } @Override public void unregister(URL url) { originRegistry.unregister(appendProviderAppName(url)); } @Override public void subscribe(URL url, NotifyListener listener) { originRegistry.subscribe(url,listener); } @Override public void unsubscribe(URL url, NotifyListener listener) { originRegistry.unsubscribe(url,listener); } @Override public List<URL> lookup(URL url) { return originRegistry.lookup(appendProviderAppName(url)); } } }