use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class StatusPageHandler method handle.
public Page handle(URL url) {
List<List<String>> rows = new ArrayList<List<String>>();
Set<String> names = ExtensionLoader.getExtensionLoader(StatusChecker.class).getSupportedExtensions();
Map<String, Status> statuses = new HashMap<String, Status>();
for (String name : names) {
StatusChecker checker = ExtensionLoader.getExtensionLoader(StatusChecker.class).getExtension(name);
List<String> row = new ArrayList<String>();
row.add(name);
Status status = checker.check();
if (status != null && !Status.Level.UNKNOWN.equals(status.getLevel())) {
statuses.put(name, status);
row.add(getLevelHtml(status.getLevel()));
row.add(status.getMessage());
rows.add(row);
}
}
Status status = StatusUtils.getSummaryStatus(statuses);
if ("status".equals(url.getPath())) {
return new Page("", "", "", status.getLevel().toString());
} else {
List<String> row = new ArrayList<String>();
row.add("summary");
row.add(getLevelHtml(status.getLevel()));
row.add("<a href=\"/status\" target=\"_blank\">summary</a>");
rows.add(row);
return new Page("Status (<a href=\"/status\" target=\"_blank\">summary</a>)", "Status", new String[] { "Name", "Status", "Description" }, rows);
}
}
use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class SubscribedPageHandler method handle.
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='subscribed.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<URL> services = ((AbstractRegistry) registry).getSubscribed().keySet();
if (services != null && services.size() > 0) {
for (URL u : services) {
List<String> row = new ArrayList<String>();
row.add(u.toFullString().replace("<", "<").replace(">", ">"));
rows.add(row);
}
}
}
return new Page("<a href=\"registries.html\">Registries</a>" + select.toString() + " > <a href=\"registered.html?registry=" + registryAddress + "\">Registered</a> | Subscribed", "Subscribed (" + rows.size() + ")", new String[] { "Consumer URL:" }, rows);
}
use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class ConsumersPageHandler method handle.
public Page handle(URL url) {
String service = url.getParameter("service");
String host = url.getParameter("host");
String application = url.getParameter("application");
if (service != null && service.length() > 0) {
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> consumers = RegistryContainer.getInstance().getConsumersByService(service);
if (consumers != null && consumers.size() > 0) {
for (URL u : consumers) {
List<String> row = new ArrayList<String>();
String s = u.toFullString();
row.add(s.replace("&", "&"));
row.add("<button onclick=\"if(confirm('Confirm unsubscribe consumer?')){window.location.href='unsubscribe.html?service=" + service + "&consumer=" + URL.encode(s) + "';}\">Unsubscribe</button>");
rows.add(row);
}
}
return new Page("<a href=\"services.html\">Services</a> > " + service + " > <a href=\"providers.html?service=" + service + "\">Providers</a> | Consumers | <a href=\"statistics.html?service=" + service + "\">Statistics</a> | <a href=\"charts.html?service=" + service + "\">Charts</a>", "Consumers (" + rows.size() + ")", new String[] { "Consumer URL:", "Unsubscribe" }, rows);
} else if (host != null && host.length() > 0) {
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> consumers = RegistryContainer.getInstance().getConsumersByHost(host);
if (consumers != null && consumers.size() > 0) {
for (URL u : consumers) {
List<String> row = new ArrayList<String>();
String s = u.toFullString();
row.add(s.replace("&", "&"));
row.add("<button onclick=\"if(confirm('Confirm unsubscribe consumer?')){window.location.href='unsubscribe.html?host=" + host + "&consumer=" + URL.encode(s) + "';}\">Unsubscribe</button>");
rows.add(row);
}
}
return new Page("<a href=\"hosts.html\">Hosts</a> > " + NetUtils.getHostName(host) + "/" + host + " > <a href=\"providers.html?host=" + host + "\">Providers</a> | Consumers", "Consumers (" + rows.size() + ")", new String[] { "Consumer URL:", "Unsubscribe" }, rows);
} else if (application != null && application.length() > 0) {
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> consumers = RegistryContainer.getInstance().getConsumersByApplication(application);
if (consumers != null && consumers.size() > 0) {
for (URL u : consumers) {
List<String> row = new ArrayList<String>();
String s = u.toFullString();
row.add(s.replace("&", "&"));
row.add("<button onclick=\"if(confirm('Confirm unsubscribe consumer?')){window.location.href='unsubscribe.html?application=" + application + "&consumer=" + URL.encode(s) + "';}\">Unsubscribe</button>");
rows.add(row);
}
}
return new Page("<a href=\"applications.html\">Applications</a> > " + application + " > <a href=\"providers.html?application=" + application + "\">Providers</a> | Consumers | <a href=\"dependencies.html?application=" + application + "\">Depends On</a> | <a href=\"dependencies.html?application=" + application + "&reverse=true\">Used By</a>", "Consumers (" + rows.size() + ")", new String[] { "Consumer URL:", "Unsubscribe" }, rows);
} else {
throw new IllegalArgumentException("Please input service or host or application parameter.");
}
}
use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class ServicesPageHandler method handle.
public Page handle(URL url) {
Set<String> services = RegistryContainer.getInstance().getServices();
List<List<String>> rows = new ArrayList<List<String>>();
int providerCount = 0;
int consumerCount = 0;
if (services != null && services.size() > 0) {
for (String service : services) {
List<URL> providers = RegistryContainer.getInstance().getProvidersByService(service);
int providerSize = providers == null ? 0 : providers.size();
providerCount += providerSize;
List<URL> consumers = RegistryContainer.getInstance().getConsumersByService(service);
int consumerSize = consumers == null ? 0 : consumers.size();
consumerCount += consumerSize;
List<String> row = new ArrayList<String>();
row.add(service);
if (providerSize > 0 || consumerSize > 0) {
if (providerSize > 0) {
URL provider = providers.iterator().next();
row.add(provider.getParameter(Constants.APPLICATION_KEY, ""));
row.add(provider.getParameter("owner", "") + (provider.hasParameter("organization") ? " (" + provider.getParameter("organization") + ")" : ""));
} else {
row.add("");
row.add("");
}
row.add(providerSize == 0 ? "<font color=\"red\">No provider</a>" : "<a href=\"providers.html?service=" + service + "\">Providers(" + providerSize + ")</a>");
row.add(consumerSize == 0 ? "<font color=\"blue\">No consumer</a>" : "<a href=\"consumers.html?service=" + service + "\">Consumers(" + consumerSize + ")</a>");
row.add("<a href=\"statistics.html?service=" + service + "\">Statistics</a>");
row.add("<a href=\"charts.html?service=" + service + "\">Charts</a>");
rows.add(row);
}
}
}
return new Page("Services", "Services (" + rows.size() + ")", new String[] { "Service Name:", "Application", "Owner", "Providers(" + providerCount + ")", "Consumers(" + consumerCount + ")", "Statistics", "Charts" }, rows);
}
use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class UnsubscribePageHandler method handle.
public Page handle(URL url) {
String consumer = url.getParameterAndDecoded("consumer");
if (consumer == null || consumer.length() == 0) {
throw new IllegalArgumentException("Please input consumer parameter.");
}
URL consumerUrl = URL.valueOf(consumer);
RegistryContainer.getInstance().getRegistry().unsubscribe(consumerUrl, NotifyListenerAdapter.NOTIFY_LISTENER);
String parameter;
if (url.hasParameter("service")) {
parameter = "service=" + url.getParameter("service");
} else if (url.hasParameter("host")) {
parameter = "host=" + url.getParameter("host");
} else if (url.hasParameter("application")) {
parameter = "application=" + url.getParameter("application");
} else {
parameter = "service=" + consumerUrl.getServiceInterface();
}
return new Page("<script type=\"text/javascript\">window.location.href=\"consumers.html?" + parameter + "\";</script>");
}
Aggregations