/******************************************************************************* * Copyright 2016-2017 ZTE, Inc. and others. * * 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.onap.msb.apiroute.wrapper; import java.util.List; import org.onap.msb.apiroute.api.CustomRouteInfo; import org.onap.msb.apiroute.api.exception.ExtendedInternalServerErrorException; import org.onap.msb.apiroute.api.exception.ExtendedNotFoundException; import org.onap.msb.apiroute.wrapper.service.CustomRouteService; import org.onap.msb.apiroute.wrapper.util.RouteUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class CustomRouteServiceWrapper { private static final Logger LOGGER = LoggerFactory.getLogger(CustomRouteServiceWrapper.class); private static CustomRouteServiceWrapper instance = new CustomRouteServiceWrapper(); private CustomRouteServiceWrapper() {} public static CustomRouteServiceWrapper getInstance() { return instance; } /** * @Title: getAllCustomRouteService * @Description: TODO(get AllCustomRoute Service) * @param: @return * @return: CustomRouteInfo[] */ public List getAllCustomRouteInstances(String routeWay) { RouteUtil.checkRouteWay(routeWay); try { String customRedisKey = RouteUtil.getMutiRedisKey(RouteUtil.CUSTOMROUTE, routeWay); return CustomRouteService.getInstance().getMultiCustomRouteInstances(customRedisKey); } catch (Exception e) { throw new ExtendedInternalServerErrorException(e.getMessage()); } } /** * @Title: getCustomRouteInstance * @Description: TODO(get CustomRouteInstance by serviceName) * @param: @param serviceName * @param: @return * @return: CustomRouteInfo */ public CustomRouteInfo getCustomRouteInstance(String serviceName, String host, String publish_port, String routeWay) { RouteUtil.checkRouteWay(routeWay); String customRedisPrefixedKey = RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, serviceName, host, publish_port, routeWay); CustomRouteInfo customRouteInfo; try { customRouteInfo = CustomRouteService.getInstance().getCustomRouteInstance(customRedisPrefixedKey); } catch (Exception e) { LOGGER.error("get customRouteInstance throw exception", e); throw new ExtendedInternalServerErrorException("get customRouteInstance throw exception"+ e.getMessage()); } if (null == customRouteInfo) { throw new ExtendedNotFoundException("customRoute Info not found"); } return customRouteInfo; } /** * @Title updateCustomRouteStatus * @Description TODO(update one CustomRoute Status) * @param serviceName * @param status * @return * @return RouteResult */ public synchronized CustomRouteInfo updateCustomRouteStatus(String serviceName, String host, String publish_port, String status, String routeWay) { RouteUtil.checkRouteWay(routeWay); RouteUtil.checkServiceStatus(status); String customRedisPrefixedKey = RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, serviceName, host, publish_port, routeWay); try { CustomRouteService.getInstance() .updateCustomRouteStatus2Redis(customRedisPrefixedKey, status); } catch (Exception e) { LOGGER.error("update CustomRoute status throw exception", e); throw new ExtendedInternalServerErrorException(e.getMessage()); } CustomRouteInfo new_customRouteInfo = getCustomRouteInstance(serviceName, host, publish_port, routeWay); return new_customRouteInfo; } /** * @Title: saveCustomRouteInstance * @Description: TODO(save one CustomRouteInstance) * @param: @param CustomRouteInfo * @param: @return * @return: CustomRouteInfo */ public synchronized CustomRouteInfo saveCustomRouteInstance4Rest(CustomRouteInfo customRouteInfo, String routeWay) { RouteUtil.checkRouteWay(routeWay); RouteUtil.checkRouterInfoFormat(customRouteInfo); try { saveCustomRouteInstance(customRouteInfo, routeWay); } catch (Exception e) { throw new ExtendedInternalServerErrorException("save CustomRouteInfo fail: [serviceName]"+customRouteInfo.getServiceName()+e.getMessage()); } return customRouteInfo; } public synchronized CustomRouteInfo saveCustomRouteInstance(CustomRouteInfo customRouteInfo, String routeWay) throws Exception { try { String customRedisPrefixedKey = RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, customRouteInfo.getServiceName(), customRouteInfo.getHost(), customRouteInfo.getPublish_port(), routeWay);; CustomRouteService.getInstance().saveCustomRouteService2Redis(customRouteInfo, customRedisPrefixedKey); LOGGER.info("save CustomRouteInfo [serviceName]"+customRouteInfo.getServiceName()+" [host]"+customRouteInfo.getHost() +" [publish_port]"+customRouteInfo.getPublish_port()+" [routeWay]"+routeWay+" success"); } catch (Exception e) { LOGGER.error("save CustomRouteInfo [serviceName]"+customRouteInfo.getServiceName()+" [host]"+customRouteInfo.getHost() +" [publish_port]"+customRouteInfo.getPublish_port()+" [routeWay]"+routeWay+" throw exception", e); throw e; } return customRouteInfo; } /** * @Title: deleteCustomRoute * @Description: TODO(delete one CustomRoute) * @param: @param type * @param: @param serviceName * @param: @param delKey * @param: @return * @return: void */ public synchronized void deleteCustomRoute(String serviceName, String host, String publish_port, String routeWay) { RouteUtil.checkRouteWay(routeWay); String customRedisPrefixedKey = RouteUtil.getRedisPrefixedKey(RouteUtil.CUSTOMROUTE, serviceName, host, publish_port, routeWay); try { CustomRouteService.getInstance().deleteCustomRouteService2Redis(customRedisPrefixedKey); LOGGER.info("delete CustomRouteInfo [serviceName]"+serviceName+" [host]"+host +" [publish_port]"+publish_port+" [routeWay]"+routeWay+" success"); } catch (ExtendedNotFoundException e) { throw e; } catch (Exception e) { LOGGER.error("delete CustomRouteInfo [serviceName]"+serviceName+" [host]"+host +" [publish_port]"+publish_port+" [routeWay]"+routeWay+" throw exception", e); throw new ExtendedInternalServerErrorException("delete CustomRouteInfo [serviceName]"+serviceName+e.getMessage()); } } }