/* * Copyright 2016, CMCC Technologies Co., Ltd. * * 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.portal.system; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import net.sf.json.JSONObject; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.apache.commons.httpclient.HttpStatus; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.openo.portal.bean.MsbRegisterBean; import org.openo.portal.bean.ServiceNodeBean; public class RegisterService { public static HashMap msbHostMap = new HashMap(); public static List> registerList = new ArrayList>(); public static void registerMsb(String configPath) { File inputXml = new File(configPath); SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(inputXml); Element rootNode = document.getRootElement(); getMsbHostInfo(rootNode); getRegisterList(rootNode); String url = msbHostMap.get("hostIp") + Constants.MARK_COLON + msbHostMap.get("hostPort") + msbHostMap.get("msbApiRootDomain"); for (int i = 0; i < registerList.size(); i++) { HashMap registerInfo = registerList.get(i); ServiceNodeBean serviceNode = new ServiceNodeBean(); serviceNode.setIp(registerInfo.get("ip")); serviceNode.setPort(registerInfo.get("port")); serviceNode.setTtl(Integer.valueOf(registerInfo.get("ttl"))); List nodeList = new ArrayList(); nodeList.add(serviceNode); MsbRegisterBean registerBean = new MsbRegisterBean(); registerBean.setNodes(nodeList); registerBean.setServiceName(registerInfo.get("serviceName")); registerBean.setUrl(registerInfo.get("url")); registerBean.setProtocol(registerInfo.get("protocol")); registerBean.setVisualRange(registerInfo.get("visualRange")); registerBean.setLb_policy(registerInfo.get("lb_policy")); JSONObject registerObj = JSONObject.fromObject(registerBean); String registerResponse = registerPortalService(url, registerObj, ""); // TODO System.out.println(registerResponse); } } catch (Exception e){ // TODO e.printStackTrace(); } } private static void getMsbHostInfo(Element rootNode) { Element msbHostNode = rootNode.element("msbHost"); Iterator iter = msbHostNode.elementIterator(); while (iter.hasNext()) { Element element = (Element) iter.next(); msbHostMap.put(element.getName(), element.getText()); } } private static void getRegisterList(Element rootNode) { Element registerListNode = rootNode.element("registerList"); Iterator iRegisterList = registerListNode.elementIterator(); while (iRegisterList.hasNext()) { HashMap registerMap = new HashMap(); Element registerInfo = (Element) iRegisterList.next(); Iterator iRegisterInfo = registerInfo.elementIterator(); while (iRegisterInfo.hasNext()) { Element element = (Element) iRegisterInfo.next(); registerMap.put(element.getName(), element.getText()); } registerList.add(registerMap); } } private static String registerPortalService(String url, JSONObject json, String token) { DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); String response = null; try { if (null != json) { StringEntity s = new StringEntity(json.toString()); s.setContentEncoding("UTF-8"); s.setContentType("application/json"); post.setEntity(s); } if (!CommonUtil.isEmpty(token)) { post.addHeader("X-Auth-Token", token); } HttpResponse res = client.execute(post); if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK || res.getStatusLine().getStatusCode() == HttpStatus.SC_CREATED) { String result = EntityUtils.toString(res.getEntity()); if (!CommonUtil.isEmpty(result)) { response = result; } else { response = null; } } } catch (Exception e) { // TODO e.printStackTrace();; } return response; } }