/* | |
* Copyright 1999-2011 Alibaba Group. | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package com.alibaba.dubbo.registry.pages; | |
import java.util.ArrayList; | |
import java.util.Collection; | |
import java.util.List; | |
import java.util.Set; | |
import com.alibaba.dubbo.common.URL; | |
import com.alibaba.dubbo.container.page.Page; | |
import com.alibaba.dubbo.container.page.PageHandler; | |
import com.alibaba.dubbo.registry.Registry; | |
import com.alibaba.dubbo.registry.support.AbstractRegistry; | |
import com.alibaba.dubbo.registry.support.AbstractRegistryFactory; | |
/** | |
* RegisteredPageHandler | |
* | |
* @author william.liangf | |
*/ | |
public class RegisteredPageHandler implements PageHandler { | |
public Page handle(URL url) { | |
String registryAddress = url.getParameter("registry", ""); | |
List<List<String>> rows = new ArrayList<List<String>>(); | |
Collection<Registry> registries = AbstractRegistryFactory.getRegistries(); | |
StringBuilder select = new StringBuilder(); | |
Registry registry = null; | |
if (registries != null && registries.size() > 0) { | |
if (registries.size() == 1) { | |
registry = registries.iterator().next(); | |
select.append(" > " + registry.getUrl().getAddress()); | |
} else { | |
select.append(" > <select onchange=\"window.location.href='registered.html?registry=' + this.value;\">"); | |
for (Registry r : registries) { | |
String sp = r.getUrl().getAddress(); | |
select.append("<option value=\">"); | |
select.append(sp); | |
if (((registryAddress == null || registryAddress.length() == 0) && registry == null) | |
|| registryAddress.equals(sp)) { | |
registry = r; | |
select.append("\" selected=\"selected"); | |
} | |
select.append("\">"); | |
select.append(sp); | |
select.append("</option>"); | |
} | |
select.append("</select>"); | |
} | |
} | |
if (registry instanceof AbstractRegistry) { | |
Set<String> services = ((AbstractRegistry) registry).getRegistered(); | |
if (services != null && services.size() > 0) { | |
for (String u : services) { | |
List<String> row = new ArrayList<String>(); | |
row.add(u.replace("<", "<").replace(">", ">")); | |
rows.add(row); | |
} | |
} | |
} | |
return new Page("<a href=\"registries.html\">Registries</a>" + select.toString() + " > Registered | <a href=\"subscribed.html?registry=" + registryAddress + "\">Subscribed</a>", "Registered (" + rows.size() + ")", | |
new String[] { "Provider URL:" }, rows); | |
} | |
} |