/*
* Copyright 1999-2101 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.governance.web.home.module.screen;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.governance.service.ConsumerService;
import com.alibaba.dubbo.registry.RegistryService;
/**
* @author tony.chenl
*/
public class Lookup extends Restful{
@Autowired
ConsumerService consumerDAO;
@Autowired
private RegistryService registryService;
public Result doExecute(Map<String, Object> context) throws Exception {
String inf = request.getParameter("interface");
if(inf==null || inf.isEmpty()){
throw new IllegalArgumentException("please give me the interface");
}
String group = null;
if(inf.contains("/")) {
int idx = inf.indexOf('/');
group = inf.substring(idx);
inf = inf.substring(idx + 1, inf.length());
}
String version = null;
if(inf.contains(":")) {
int idx = inf.lastIndexOf(':');
version = inf.substring(idx + 1, inf.length());
inf = inf.substring(idx);
}
String parameters = request.getParameter("parameters");
String url = "subscribe://" + operatorAddress + "/" + request.getParameter("interface") ;
if(parameters != null && parameters.trim().length() > 0) {
url += parameters.trim();
}
URL u = URL.valueOf(url);
if(group != null) {
u.addParameter("group", group);
}
if(version != null) u.addParameter("version", version);
List<URL> lookup = registryService.lookup(u);
Map<String, Map<String, String>> serviceUrl = new HashMap<String, Map<String,String>>();
Map<String, String> urls = new HashMap<String, String>();
serviceUrl.put(request.getParameter("interface").trim(), urls);
for(URL u2 : lookup) {
urls.put(u2.toIdentityString(), u2.toParameterString());
}
Result result = new Result();
result.setMessage(serviceUrl);
return result;
}
}