1. Adjust the directory hierarchy
[msb/apigateway.git] / apiroute / apiroute-service / src / main / java / org / openo / msb / wrapper / MicroServiceWrapper.java
diff --git a/apiroute/apiroute-service/src/main/java/org/openo/msb/wrapper/MicroServiceWrapper.java b/apiroute/apiroute-service/src/main/java/org/openo/msb/wrapper/MicroServiceWrapper.java
deleted file mode 100644 (file)
index 4e5e6cb..0000000
+++ /dev/null
@@ -1,536 +0,0 @@
-/**\r
-* Copyright (C) 2016 ZTE, Inc. and others. All rights reserved. (ZTE)\r
-*\r
-* Licensed under the Apache License, Version 2.0 (the "License");\r
-* you may not use this file except in compliance with the License.\r
-* You may obtain a copy of the License at\r
-*\r
-* http://www.apache.org/licenses/LICENSE-2.0\r
-*\r
-* Unless required by applicable law or agreed to in writing, software\r
-* distributed under the License is distributed on an "AS IS" BASIS,\r
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-* See the License for the specific language governing permissions and\r
-* limitations under the License.\r
-*/\r
-\r
-package org.openo.msb.wrapper;\r
-\r
-import java.util.Set;\r
-\r
-import org.apache.commons.lang3.StringUtils;\r
-import org.openo.msb.api.MicroServiceFullInfo;\r
-import org.openo.msb.api.MicroServiceInfo;\r
-import org.openo.msb.api.Node;\r
-import org.openo.msb.api.NodeInfo;\r
-import org.openo.msb.api.exception.ExtendedInternalServerErrorException;\r
-import org.openo.msb.api.exception.ExtendedNotFoundException;\r
-import org.openo.msb.api.exception.ExtendedNotSupportedException;\r
-import org.openo.msb.wrapper.util.MicroServiceDB;\r
-import org.openo.msb.wrapper.util.RegExpTestUtil;\r
-import org.openo.msb.wrapper.util.RouteUtil;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-public class MicroServiceWrapper {\r
-\r
-    private static final Logger LOGGER = LoggerFactory.getLogger(MicroServiceWrapper.class);\r
-\r
-    private static MicroServiceWrapper instance = new MicroServiceWrapper();\r
-\r
-\r
-    private MicroServiceWrapper() {}\r
-\r
-    public static MicroServiceWrapper getInstance() {\r
-        return instance;\r
-    }\r
-\r
-\r
-    /**\r
-     * @Title: getAllMicroServiceInstances\r
-     * @Description: getAllMicroServiceInstances\r
-     * @param: @return\r
-     * @return: Response\r
-     * @throws Exception\r
-     */\r
-    public MicroServiceFullInfo[] getAllMicroServiceInstances(){\r
-\r
-        try {\r
-            return MicroServiceDB.getInstance().getAllMicroServiceInstances();\r
-\r
-        } catch (Exception e) {\r
-            throw new ExtendedInternalServerErrorException(e.getMessage());\r
-        }\r
-\r
-    }\r
-\r
-    /**\r
-     * @Title: getMicroServiceInstance\r
-     * @Description: (getMicroServiceInstance)\r
-     * @param: @param serviceName\r
-     * @param: @param version\r
-     * @param: @return\r
-     * @return: ApiRouteInfo\r
-     */\r
-    public MicroServiceFullInfo getMicroServiceInstance(String serviceName, String version,String serverPort) {\r
-        if("null".equals(version)) {\r
-            version="";\r
-        }\r
-        serviceName=serviceName.replace("*", "/");\r
-        \r
-        if (StringUtils.isBlank(serviceName)) {\r
-            throw new ExtendedNotSupportedException("serviceName  can't be empty");\r
-        }\r
-\r
-        if (StringUtils.isNotBlank(version)) {\r
-            if (!RegExpTestUtil.versionRegExpTest(version)) {\r
-                throw new ExtendedNotSupportedException("version (" + version\r
-                        + ") is not a valid  format");\r
-            }\r
-        }\r
-\r
-        MicroServiceFullInfo microServiceInfo;\r
-        try {\r
-            microServiceInfo =\r
-                    MicroServiceDB.getInstance().getMicroServiceInstance(serviceName, version,serverPort);\r
-\r
-        } catch (Exception e) {\r
-            throw new ExtendedInternalServerErrorException(e.getMessage());\r
-        }\r
-\r
-        if (null == microServiceInfo) {\r
-            String errInfo =\r
-                    "microservice not found: serviceName-" + serviceName + ",version-" + version;\r
-            LOGGER.warn(errInfo);\r
-            throw new ExtendedNotFoundException(errInfo);\r
-\r
-        }\r
-\r
-        return microServiceInfo;\r
-    }\r
-\r
-\r
-\r
-    /**\r
-     * @Title: updateMicroServiceInstance\r
-     * @Description: updateMicroServiceInstance\r
-     * @param: serviceName\r
-     * @param: version\r
-     * @param: microServiceInfo\r
-     * @return: RouteResult\r
-     */\r
-    public synchronized MicroServiceFullInfo updateMicroServiceInstance(String serviceName,\r
-            String version, MicroServiceInfo microServiceInfo) {\r
-        if("null".equals(version)) {\r
-            version="";\r
-        }\r
-        serviceName=serviceName.replace("*", "/");\r
-\r
-        try {\r
-       \r
-            \r
-            MicroServiceFullInfo oldService= getMicroServiceInstance(serviceName,version,"");\r
-\r
-            // Delete the original record\r
-            MicroServiceDB.getInstance().deleteMicroService(serviceName, version,"");\r
-            // Notify the listeners\r
-            MicroServiceDB.getInstance().noticeApiListener(oldService, "DELETE","");\r
-            // Save the new record\r
-            MicroServiceDB.getInstance().saveMicroServiceInfo2Redis(microServiceInfo,"");\r
-          \r
-            MicroServiceDB.getInstance().noticeApiListener(microServiceInfo, "ADD","");\r
-            MicroServiceFullInfo newMicroServiceInfo =\r
-                    MicroServiceDB.getInstance().getMicroServiceInstance(\r
-                            microServiceInfo.getServiceName(), microServiceInfo.getVersion(),"");\r
-            return newMicroServiceInfo;\r
-        } catch (Exception e) {\r
-            LOGGER.error("update MicroService throw exception", e);\r
-            throw new ExtendedInternalServerErrorException(e.getMessage());\r
-        }\r
-\r
-\r
-    }\r
-\r
-    public synchronized MicroServiceFullInfo updateMicroServiceNode(String serviceName,\r
-            String version, String ip,String port, int ttl) {\r
-        if("null".equals(version)) {\r
-            version="";\r
-        }\r
-        serviceName=serviceName.replace("*", "/");\r
-        \r
-        if (StringUtils.isBlank(serviceName)) {\r
-            throw new ExtendedNotSupportedException(\r
-                    "update MicroService Node FAIL:serviceName  can't be empty");\r
-        }\r
-\r
-        if (StringUtils.isNotBlank(version)) {\r
-            if (!RegExpTestUtil.versionRegExpTest(version)) {\r
-                throw new ExtendedNotSupportedException(\r
-                        "update MicroService Node FAIL:version is not a valid  format");\r
-            }\r
-        }\r
-\r
-        if (!RegExpTestUtil.ipRegExpTest(ip)) {\r
-            throw new ExtendedNotSupportedException("update MicroService Node FAIL:ip(" + ip\r
-                    + ")is not a valid IP address");\r
-        }\r
-        \r
-        if (!RegExpTestUtil.portRegExpTest(port)) {\r
-            throw new ExtendedNotSupportedException("update MicroService Node FAIL:port(" + port\r
-                    + ")is not a valid Port address");\r
-        }\r
-        \r
-        try {\r
-\r
-            MicroServiceDB.getInstance().updateMicroServiceNode2Redis(serviceName, version, ip,port,ttl);\r
-\r
-            MicroServiceFullInfo newMicroServiceInfo =\r
-                    MicroServiceDB.getInstance().getMicroServiceInstance(serviceName, version,"");\r
-\r
-            return newMicroServiceInfo;\r
-        } catch (NullPointerException e) {\r
-            throw new ExtendedNotFoundException(e.getMessage());\r
-        } catch (Exception e) {\r
-            LOGGER.error("update MicroServiceNode throw exception", e);\r
-            throw new ExtendedInternalServerErrorException(e.getMessage());\r
-        }\r
-    }\r
-\r
-    /**\r
-     * @Title updateMicroServiceStatus\r
-     * @Description updateMicroServiceStatus\r
-     * @param serviceName\r
-     * @param version\r
-     * @param status\r
-     * @return\r
-     * @return RouteResult\r
-     */\r
\r
-    public synchronized MicroServiceFullInfo updateMicroServiceStatus(String serviceName, String version,\r
-            String status) {\r
-\r
-        if ("null".equals(version)) {\r
-            version = "";\r
-        }\r
-        serviceName=serviceName.replace("*", "/");\r
-\r
-        if (StringUtils.isBlank(serviceName)) {\r
-            throw new ExtendedNotSupportedException(\r
-                    "update MicroService status FAIL:serviceName  can't be empty");\r
-        }\r
-\r
-        if (StringUtils.isNotBlank(version)) {\r
-            if (!RegExpTestUtil.versionRegExpTest(version)) {\r
-                throw new ExtendedNotSupportedException(\r
-                        "update MicroService status FAIL:version is not a valid  format");\r
-            }\r
-        }\r
-        \r
-        if(!"0".equals(status) && !"2".equals(status) && !"1".equals(status)){\r
-\r
-            throw new ExtendedNotSupportedException("update MicroService status FAIL:status is wrong");\r
-        }\r
-        \r
-        \r
-        try {\r
-\r
-            MicroServiceDB.getInstance().updateMicroServiceStatus(serviceName, version, status);\r
-\r
-            MicroServiceFullInfo newMicroServiceInfo =\r
-                    MicroServiceDB.getInstance().getMicroServiceInstance(serviceName, version,"");\r
-            \r
-            // Notify the listeners\r
-            MicroServiceDB.getInstance().noticeUpdateStatusListener(newMicroServiceInfo, status);\r
-\r
-\r
-            return newMicroServiceInfo;\r
-        } catch (NullPointerException e) {\r
-            throw new ExtendedNotFoundException(e.getMessage());\r
-        } catch (Exception e) {\r
-            LOGGER.error("update MicroServiceNode throw exception", e);\r
-            throw new ExtendedInternalServerErrorException(e.getMessage());\r
-        }\r
\r
-\r
-    }\r
-\r
-\r
-    public synchronized MicroServiceFullInfo saveMicroServiceInstance(\r
-            MicroServiceInfo microServiceInfo, boolean createOrUpdate,String requestIP,String serverPort) {\r
-        // 保存数据格式判断\r
-\r
-        if (StringUtils.isBlank(microServiceInfo.getServiceName())\r
-                || StringUtils.isBlank(microServiceInfo.getProtocol())\r
-                || microServiceInfo.getNodes().size() == 0) {\r
-            throw new ExtendedNotSupportedException(\r
-                    "register MicroServiceInfo FAIL: Some required fields are empty");\r
-        }\r
-\r
-        for (Node node : microServiceInfo.getNodes()) {\r
-         \r
-            if(node.getIp()==null || node.getIp().isEmpty()){\r
-                node.setIp(requestIP);\r
-            }\r
-            else if (!RegExpTestUtil.ipRegExpTest(node.getIp())) {\r
-                throw new ExtendedNotSupportedException("register MicroServiceInfo FAIL:IP("\r
-                        + node.getIp() + ")is not a valid ip address");\r
-            }\r
-            \r
-            if (!RegExpTestUtil.portRegExpTest(node.getPort())) {\r
-                throw new ExtendedNotSupportedException("register MicroServiceInfo FAIL:Port("\r
-                        + node.getPort() + ")is not a valid Port address");\r
-            }\r
-        }\r
-\r
-        if (StringUtils.isNotBlank(microServiceInfo.getVersion())) {\r
-            if (!RegExpTestUtil.versionRegExpTest(microServiceInfo.getVersion())) {\r
-                throw new ExtendedNotSupportedException(\r
-                        "register MicroServiceInfo FAIL:version is not a valid  format");\r
-\r
-            }\r
-        }\r
-\r
-        if (StringUtils.isNotBlank(microServiceInfo.getUrl().trim())) {\r
-            if (!RegExpTestUtil.urlRegExpTest(microServiceInfo.getUrl())) {\r
-                throw new ExtendedNotSupportedException(\r
-                        "register MicroServiceInfo FAIL:url is not a valid format(url must be begin with /)");\r
-\r
-            }\r
-        }\r
-\r
-\r
-        if (RouteUtil.PROTOCOL_LIST.indexOf(microServiceInfo.getProtocol().trim()) == -1) {\r
-            throw new ExtendedNotSupportedException(\r
-                    "register MicroServiceInfo FAIL:Protocol is wrong,value range:("\r
-                            + RouteUtil.PROTOCOL_LIST + ")");\r
-        }\r
-\r
-        MicroServiceFullInfo existingMicroServiceInfo;\r
-        try {\r
-            //To determine whether a service already exists\r
-            existingMicroServiceInfo =\r
-                    MicroServiceDB.getInstance().getMicroServiceInstance(\r
-                            microServiceInfo.getServiceName().trim(), microServiceInfo.getVersion().trim(),serverPort);\r
-\r
-            MicroServiceFullInfo newMicroServiceInfo ;\r
-            if (existingMicroServiceInfo != null) {\r
-                //a service already exists\r
-\r
-                if (!existingMicroServiceInfo.getProtocol().equals(microServiceInfo.getProtocol())) {\r
-                    throw new ExtendedNotSupportedException(\r
-                            "MicroServiceInfo with different protocols and same serviceName is already existing");\r
-                }\r
-\r
-                if (createOrUpdate == false) {\r
-                    //After the first remove added\r
-                    MicroServiceDB.getInstance().deleteMicroService(\r
-                            microServiceInfo.getServiceName(), microServiceInfo.getVersion(),serverPort);\r
-\r
-                    MicroServiceDB.getInstance().saveMicroServiceInfo2Redis(microServiceInfo,serverPort);\r
-         \r
-                } else {\r
-                    //Add the original record and save directly\r
-                    MicroServiceDB.getInstance().saveMicroServiceInfo2Redis(microServiceInfo,serverPort);\r
-                }\r
-                \r
-                newMicroServiceInfo =\r
-                        MicroServiceDB.getInstance().getMicroServiceInstance(\r
-                                microServiceInfo.getServiceName(), microServiceInfo.getVersion(),serverPort);\r
-\r
-                //Notify the listeners\r
-                MicroServiceDB.getInstance().noticeUpdateApiListener(microServiceInfo.getServiceName(),microServiceInfo.getVersion(),newMicroServiceInfo,serverPort);\r
-\r
-            } else {\r
-                //Save the new record\r
-                MicroServiceDB.getInstance().saveMicroServiceInfo2Redis(microServiceInfo,serverPort);\r
-                //Notify the listeners\r
-                MicroServiceDB.getInstance().noticeApiListener(microServiceInfo, "ADD",serverPort);\r
-                newMicroServiceInfo =\r
-                        MicroServiceDB.getInstance().getMicroServiceInstance(\r
-                                microServiceInfo.getServiceName(), microServiceInfo.getVersion(),serverPort);\r
-            }\r
-\r
-  \r
-\r
-            return newMicroServiceInfo;\r
-\r
-        } catch (ExtendedNotSupportedException e) {\r
-            throw e;\r
-        } catch (Exception e) {\r
-            throw new ExtendedInternalServerErrorException(e.getMessage());\r
-        }\r
-\r
-    }\r
-    \r
-    \r
-    public synchronized void deleteMicroService(String serviceName, String version) {\r
-        if("null".equals(version)) {\r
-            version="";\r
-        }\r
-        serviceName=serviceName.replace("*", "/");\r
-        \r
-        if (StringUtils.isBlank(serviceName)) {\r
-            throw new ExtendedNotSupportedException(\r
-                    "delete MicroServiceInfo FAIL:serviceName  can't be empty");\r
-        }\r
-\r
-        if (StringUtils.isNotBlank(version)) {\r
-            if (!RegExpTestUtil.versionRegExpTest(version)) {\r
-                throw new ExtendedNotSupportedException(\r
-                        "delete MicroServiceInfo FAIL:version is not a valid  format");\r
-\r
-            }\r
-        }\r
-\r
-        try {\r
-\r
-            MicroServiceFullInfo microServiceInfo =\r
-                    MicroServiceDB.getInstance().getMicroServiceInstance(serviceName, version,"");\r
-\r
-            if (microServiceInfo == null) {\r
-                LOGGER.warn("serviceName-"+ serviceName + ",version-" + version + " not fond ");\r
-                return;\r
-            }\r
-\r
-            MicroServiceDB.getInstance().deleteMicroService(serviceName, version,"");\r
-            //Notify the listeners\r
-            MicroServiceDB.getInstance().noticeApiListener(microServiceInfo, "DELETE","");\r
-        \r
-        } catch (Exception e) {\r
-            LOGGER.error("delete MicroServiceInfo throw exception", e);\r
-            throw new ExtendedInternalServerErrorException(e.getMessage());\r
-\r
-        }\r
-        \r
-        LOGGER.info("delete MicroServiceInfo success:serviceName-"\r
-                + serviceName + ",version-" + version );\r
-\r
-    }\r
-\r
-\r
-    public synchronized void deleteMicroService(String serviceName, String version,String serverPort) {\r
-        if("null".equals(version)) {\r
-            version="";\r
-        }\r
-        serviceName=serviceName.replace("*", "/");\r
-        \r
-        if (StringUtils.isBlank(serviceName)) {\r
-            throw new ExtendedNotSupportedException(\r
-                    "delete MicroServiceInfo FAIL:serviceName  can't be empty");\r
-        }\r
-\r
-        if (StringUtils.isNotBlank(version)) {\r
-            if (!RegExpTestUtil.versionRegExpTest(version)) {\r
-                throw new ExtendedNotSupportedException(\r
-                        "delete MicroServiceInfo FAIL:version is not a valid  format");\r
-\r
-            }\r
-        }\r
-\r
-        try {\r
-\r
-            MicroServiceFullInfo microServiceInfo =\r
-                    MicroServiceDB.getInstance().getMicroServiceInstance(serviceName, version,serverPort);\r
-\r
-            if (microServiceInfo == null) {\r
-                throw new ExtendedNotFoundException("delete MicroServiceInfo FAIL:serviceName-"\r
-                        + serviceName + ",version-" + version + " not fond ");\r
-            }\r
-\r
-            MicroServiceDB.getInstance().deleteMicroService(serviceName, version,serverPort);\r
-            //Notify the listeners\r
-            MicroServiceDB.getInstance().noticeApiListener(microServiceInfo, "DELETE",serverPort);\r
-        } catch (ExtendedNotFoundException e) {\r
-            throw e;\r
-        } catch (Exception e) {\r
-            LOGGER.error("delete MicroServiceInfo throw exception", e);\r
-            throw new ExtendedInternalServerErrorException(e.getMessage());\r
-\r
-        }\r
-        \r
-        LOGGER.info("delete MicroServiceInfo success:serviceName-"\r
-                + serviceName + ",version-" + version );\r
-\r
-    }\r
-\r
-    public synchronized void deleteMicroServiceInstance(String serviceName, String version,\r
-            String ip,String port) {\r
-        if("null".equals(version)) {\r
-            version="";\r
-        }\r
-        serviceName=serviceName.replace("*", "/");\r
-        \r
-        if (StringUtils.isBlank(serviceName)) {\r
-            throw new ExtendedNotSupportedException(\r
-                    "delete MicroServiceInfo FAIL:serviceName  can't be empty");\r
-        }\r
-\r
-        if (StringUtils.isNotBlank(version)) {\r
-            if (!RegExpTestUtil.versionRegExpTest(version)) {\r
-                throw new ExtendedNotSupportedException(\r
-                        "delete MicroServiceInfo FAIL:version is not a valid  format");\r
-            }\r
-        }\r
-\r
-        if (!RegExpTestUtil.ipRegExpTest(ip)) {\r
-            throw new ExtendedNotSupportedException("delete MicroServiceInfo FAIL:IP(" + ip\r
-                    + ")is not a valid IP address");\r
-        }\r
-        \r
-        if (!RegExpTestUtil.portRegExpTest(port)) {\r
-            throw new ExtendedNotSupportedException("delete MicroServiceInfo FAIL:Port(" + port\r
-                    + ")is not a valid Port address");\r
-        }\r
-\r
-\r
-        try {\r
-            MicroServiceFullInfo microServiceInfo =\r
-                    MicroServiceDB.getInstance().getMicroServiceInstance(serviceName, version,"");\r
-\r
-            if (microServiceInfo == null) {\r
-                throw new ExtendedNotFoundException("delete MicroServiceInfo FAIL:serviceName-"\r
-                        + serviceName + ",version-" + version + " not fond ");\r
-            }\r
-\r
-            Set<NodeInfo> nodes = microServiceInfo.getNodes();\r
-\r
-            boolean ifFindBNode = false;\r
-\r
-            for (Node node : nodes) {\r
-                if (node.getIp().equals(ip) && node.getPort().equals(port)) {\r
-                    ifFindBNode = true;\r
-                    nodes.remove(node);\r
-\r
-                    if (nodes.isEmpty()) {\r
-                        //delete MicroService\r
-                        MicroServiceDB.getInstance().deleteMicroService(serviceName, version,"");\r
-                        //Notify the listeners\r
-                        MicroServiceDB.getInstance().noticeApiListener(microServiceInfo, "DELETE","");\r
-                    } else {\r
-                        //delete Node\r
-                        MicroServiceDB.getInstance().deleteNode(serviceName, version, ip,port);\r
-                        MicroServiceDB.getInstance().noticeUpdateApiListener(serviceName, version,microServiceInfo,"");\r
-                    }\r
-\r
-                    break;\r
-                }\r
-            }\r
-\r
-            if (!ifFindBNode) {\r
-                throw new ExtendedNotFoundException("delete MicroServiceInfo FAIL: node-" + ip+":"+port\r
-                        + " not fond ");\r
-            }\r
-\r
-\r
-        } catch (ExtendedNotFoundException e) {\r
-            throw e;\r
-        } catch (Exception e) {\r
-            LOGGER.error("deleteApiRoute throw exception", e);\r
-            throw new ExtendedInternalServerErrorException(e.getMessage());\r
-\r
-        }\r
-\r
-    }\r
-\r
-\r
-}\r