diff options
Diffstat (limited to 'msb-core/apiroute/apiroute-service/src/main/java/org/openo/msb/wrapper/ServiceAccessWrapper.java')
-rw-r--r-- | msb-core/apiroute/apiroute-service/src/main/java/org/openo/msb/wrapper/ServiceAccessWrapper.java | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/msb-core/apiroute/apiroute-service/src/main/java/org/openo/msb/wrapper/ServiceAccessWrapper.java b/msb-core/apiroute/apiroute-service/src/main/java/org/openo/msb/wrapper/ServiceAccessWrapper.java deleted file mode 100644 index 23a02a1..0000000 --- a/msb-core/apiroute/apiroute-service/src/main/java/org/openo/msb/wrapper/ServiceAccessWrapper.java +++ /dev/null @@ -1,171 +0,0 @@ -/** - * Copyright 2016 ZTE Corporation. - * - * 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 org.openo.msb.wrapper; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.openo.msb.api.ServiceAccessInfo; -import org.openo.msb.wrapper.util.JedisUtil; -import org.openo.msb.wrapper.util.RouteUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import redis.clients.jedis.Jedis; - -public class ServiceAccessWrapper { - private static final Logger LOGGER = LoggerFactory.getLogger(ServiceAccessWrapper.class); - - private static ServiceAccessWrapper instance = new ServiceAccessWrapper(); - - private ServiceAccessWrapper() {} - - public static ServiceAccessWrapper getInstance() { - return instance; - } - - public ServiceAccessInfo getApiServiceAccessAddr(String serviceName, String version, String host) { - - ServiceAccessInfo apiRouteAccessInfo = null; - - Jedis jedis = null; - try { - jedis = JedisUtil.borrowJedisInstance(); - if (jedis == null) { - throw new Exception("fetch from jedis pool failed,null object!"); - } - - if ("null".equals(version)) { - version = ""; - } - - String routekey = - RouteUtil.getPrefixedKey("",RouteUtil.APIROUTE, serviceName, version, - RouteUtil.ROUTE_PATH_INFO); - Boolean isExist = jedis.exists(routekey); - if (isExist) { - apiRouteAccessInfo = new ServiceAccessInfo(); - apiRouteAccessInfo.setServiceName(serviceName); - apiRouteAccessInfo.setVersion(version); - String accessAddr = "http://" + host + "/api/" + serviceName + "/" + version; - apiRouteAccessInfo.setAccessAddr(accessAddr); - } - } catch (Exception e) { - LOGGER.error("call redis throw exception", e); - } finally { - JedisUtil.returnJedisInstance(jedis); - } - return apiRouteAccessInfo; - - } - - public List<ServiceAccessInfo> getApiRouteAccessAddr(String serviceType, String serviceName, - String version, String host) { - List<ServiceAccessInfo> serviceList = new ArrayList<ServiceAccessInfo>(); - Jedis jedis = null; - try { - jedis = JedisUtil.borrowJedisInstance(); - if (jedis == null) { - throw new Exception("fetch from jedis pool failed,null object!"); - } - - String keyPattern = this.getRedisSearchPattern(serviceType, serviceName, version); - Set<String> infoKeys = jedis.keys(keyPattern); - Pattern pattern = this.getKeyPattern(); - for (Iterator<String> iterator = infoKeys.iterator(); iterator.hasNext();) { - String infoKey = (String) iterator.next(); - Matcher matcher = pattern.matcher(infoKey); - if (matcher.matches()) { - ServiceAccessInfo serviceAccessInfo = new ServiceAccessInfo(); - serviceAccessInfo.setServiceType(matcher.group("servicetype")); - serviceAccessInfo.setServiceName(matcher.group("servicename")); - serviceAccessInfo.setVersion(matcher.group("version")); - this.buildServiceAccessAddr(serviceAccessInfo, host, infoKey, jedis); - serviceList.add(serviceAccessInfo); - } - } - } catch (Exception e) { - LOGGER.error("call redis throw exception", e); - } finally { - JedisUtil.returnJedisInstance(jedis); - } - return serviceList; - - } - - private void buildServiceAccessAddr(ServiceAccessInfo serviceAccessInfo, String host, - String infoKey, Jedis jedis) { - String serviceType = serviceAccessInfo.getServiceType(); - StringBuffer accessAddr = new StringBuffer(); - switch (serviceType) { - case RouteUtil.APIROUTE: - accessAddr.append("http://").append(host).append(":").append(JedisUtil.serverPort) - .append("/").append(serviceAccessInfo.getServiceType()).append("/") - .append(serviceAccessInfo.getServiceName()).append("/") - .append(serviceAccessInfo.getVersion()); - serviceAccessInfo.setAccessAddr(accessAddr.toString()); - break; - case RouteUtil.IUIROUTE: - accessAddr.append("http://").append(host).append(":").append(JedisUtil.serverPort) - .append("/").append(serviceAccessInfo.getServiceType()).append("/") - .append(serviceAccessInfo.getServiceName()); - serviceAccessInfo.setAccessAddr(accessAddr.toString()); - break; - case RouteUtil.CUSTOMROUTE: - accessAddr.append("http://").append(host).append(":").append(JedisUtil.serverPort) - .append(serviceAccessInfo.getServiceName()); - serviceAccessInfo.setAccessAddr(accessAddr.toString()); - break; - case RouteUtil.P2PROUTE: - accessAddr.append(jedis.hget(infoKey, "url")); - serviceAccessInfo.setAccessAddr(accessAddr.toString()); - break; - default: - serviceAccessInfo.setAccessAddr("not supported now"); - break; - } - } - - private String getRedisSearchPattern(String serviceType, String serviceName, String version) { - StringBuffer sb = new StringBuffer(); - sb.append(RouteUtil.ROUTE_PATH); - if (null != serviceType && !"".equals(serviceType)) { - sb.append(":").append(serviceType); - } else { - sb.append(":").append("*"); - } - sb.append(":").append(serviceName); - if (null != version && !"".equals(version)) { - sb.append(":"); - sb.append(version); - sb.append(":"); - } else { - sb.append(":*"); - } - sb.append(RouteUtil.ROUTE_PATH_INFO); - return sb.toString(); - } - - private Pattern getKeyPattern() { - String pStr = - "conductor:routing:(?<servicetype>api|iui|custom|p2p):(?<servicename>[^:]+)(:(?<version>[^:]*))?:info"; - return Pattern.compile(pStr); - } -}
\ No newline at end of file |