diff options
author | youbowu <wu.youbo@zte.com.cn> | 2017-03-13 15:54:30 +0800 |
---|---|---|
committer | 6092002067 <wu.youbo@zte.com.cn> | 2017-03-13 15:54:30 +0800 |
commit | aac5a54d21387217b99285d46cd6dcd9bdef1555 (patch) | |
tree | 69484180cb53cebd63f550ef2ffefcefdd8360f4 /rulemgt/src/main | |
parent | 4c39f7390aebf3f8c6ca3b072dce0514a6cf8f99 (diff) |
Change the Way to Invoke HTTP Requests
Change-Id: Ide3962f548e619c4cdeee416b02c1cda2b2d9b9a
Issue-ID: HOLMES-50
Signed-off-by: youbowu <wu.youbo@zte.com.cn>
Diffstat (limited to 'rulemgt/src/main')
3 files changed, 37 insertions, 190 deletions
diff --git a/rulemgt/src/main/java/org/openo/holmes/rulemgt/bolt/enginebolt/EngineService.java b/rulemgt/src/main/java/org/openo/holmes/rulemgt/bolt/enginebolt/EngineService.java index 21e29b3..ac381d1 100644 --- a/rulemgt/src/main/java/org/openo/holmes/rulemgt/bolt/enginebolt/EngineService.java +++ b/rulemgt/src/main/java/org/openo/holmes/rulemgt/bolt/enginebolt/EngineService.java @@ -15,37 +15,17 @@ */
package org.openo.holmes.rulemgt.bolt.enginebolt;
-import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
-
import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.Charset;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.http.ConnectionClosedException;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpRequestBase;
-import org.apache.http.entity.BufferedHttpEntity;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.entity.ContentType;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.protocol.HTTP;
-import org.apache.http.util.EntityUtils;
+import org.glassfish.jersey.client.ClientConfig;
import org.jvnet.hk2.annotations.Service;
-import org.openo.holmes.common.config.MicroServiceConfig;
-import org.openo.holmes.common.exception.CorrelationException;
-import org.openo.holmes.common.utils.I18nProxy;
import org.openo.holmes.rulemgt.bean.request.CorrelationCheckRule4Engine;
import org.openo.holmes.rulemgt.bean.request.CorrelationDeployRule4Engine;
import org.openo.holmes.rulemgt.constant.RuleMgtConstant;
@@ -56,152 +36,31 @@ public class EngineService { String url = "http://10.250.0.3:9102";
- protected HttpResponse delete(String packageName) throws IOException {
- return deleteRequest(url + RuleMgtConstant.ENGINE_PATH + "/" + packageName);
+ protected Response delete(String packageName) throws IOException {
+ Client client = createClient();
+ WebTarget webTarget = client.target(url + RuleMgtConstant.ENGINE_PATH + "/" + packageName);
+ return webTarget.request(MediaType.APPLICATION_JSON).delete();
+ }
+
+ private Client createClient() {
+ ClientConfig clientConfig = new ClientConfig();
+ return ClientBuilder.newClient(clientConfig);
}
- protected HttpResponse check(CorrelationCheckRule4Engine correlationCheckRule4Engine)
+ protected Response check(CorrelationCheckRule4Engine correlationCheckRule4Engine)
throws IOException {
+ Client client = createClient();
ObjectMapper mapper = new ObjectMapper();
String content = mapper.writeValueAsString(correlationCheckRule4Engine);
- String queryUrl = MicroServiceConfig.getMsbServerAddr()
- + "/openoapi/microservices/v1/services/holmes-engine/version/v1";
- HttpGet httpGet = new HttpGet(queryUrl);
- CloseableHttpClient httpClient = HttpClients.createDefault();
- try {
- HttpResponse httpResponse = httpClient.execute(httpGet);
- log.info("response entity:" + EntityUtils.toString(httpResponse.getEntity()));
- } finally {
- httpClient.close();
- }
- return postRequest(url + RuleMgtConstant.ENGINE_PATH, content);
+ WebTarget webTarget = client.target(url + RuleMgtConstant.ENGINE_PATH);
+ return webTarget.request(MediaType.APPLICATION_JSON).post(Entity.entity(content, MediaType.APPLICATION_JSON));
}
- protected HttpResponse deploy(CorrelationDeployRule4Engine correlationDeployRule4Engine) throws IOException {
+ protected Response deploy(CorrelationDeployRule4Engine correlationDeployRule4Engine) throws IOException {
+ Client client = createClient();
ObjectMapper mapper = new ObjectMapper();
String content = mapper.writeValueAsString(correlationDeployRule4Engine);
- return putRequest(url + RuleMgtConstant.ENGINE_PATH, content);
- }
-
- private HttpResponse postRequest(String url, String content) throws IOException {
- CloseableHttpClient httpClient = HttpClients.createDefault();
- try {
- HttpPost httpPost = new HttpPost(url);
- log.info("url:" + url + "," + "post:" + httpPost);
- setHeader(httpPost);
- if (StringUtils.isNotEmpty(content)) {
- httpPost.setEntity(new ByteArrayEntity(content.getBytes()));
- }
- return httpClient.execute(httpPost);
- } finally {
- httpClient.close();
- }
- }
-
- private HttpResponse putRequest(String url, String content) throws IOException {
- CloseableHttpClient httpClient = HttpClients.createDefault();
- try {
- HttpPut httpPut = new HttpPut(url);
- setHeader(httpPut);
- if (StringUtils.isNotEmpty(content)) {
- httpPut.setEntity(new ByteArrayEntity(content.getBytes()));
- }
- HttpResponse response = httpClient.execute(httpPut);
- log.info("Return value for put request is " + EntityUtils.toString(response.getEntity()) + ".");
- return response;
- } finally {
- httpClient.close();
- }
- }
-
- private HttpResponse deleteRequest(String url) throws IOException {
- CloseableHttpClient httpClient = HttpClients.createDefault();
- try {
- HttpDelete httpDelete = new HttpDelete(url);
- setHeader(httpDelete);
- return httpClient.execute(httpDelete);
- } finally {
- httpClient.close();
- }
- }
-
- private void setHeader(HttpRequestBase httpRequestBase) {
- httpRequestBase.setHeader("Accept", "application/json");
- httpRequestBase.setHeader("Content-Type", "application/json");
- }
-
- public String getResponseContent(HttpResponse response) {
- HttpEntity entity = response.getEntity();
- InputStream is = null;
- if (entity != null) {
- try {
- is = entity.getContent();
- final ContentType contentType = ContentType.getOrDefault(entity);
- Charset charset = contentType.getCharset();
- if (charset == null) {
- charset = HTTP.DEF_CONTENT_CHARSET;
- }
- final StringBuilder b = new StringBuilder();
- final char[] tmp = new char[1024];
- final Reader reader = new InputStreamReader(is, charset);
- try {
- int l;
- while ((l = reader.read(tmp)) != -1) {
- b.append(tmp, 0, l);
- }
- } catch (ConnectionClosedException ignore) {
-
- } catch (IOException e) {
- log.info("Failed to read the contents of the input stream of the http entity.", e);
- }
- return b.toString();
- } catch (IOException e) {
- log.info("Failed to read the contents of the http entity.", e);
- } finally {
- try {
- if (is != null) {
- is.close();
- }
- } catch (IOException e) {
- log.info("Failed to close the input stream of the http entity.", e);
- }
- }
- }
- return "{}";
- }
-
- public byte[] getData(HttpEntity httpEntity) throws IOException {
- log.info("Rule deployed. Package name: " + httpEntity.getContent().toString()
- + ". Content length: " + httpEntity.getContentLength());
- BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity(httpEntity);
- ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
- bufferedHttpEntity.writeTo(byteArrayOutputStream);
- byte[] responseBytes = byteArrayOutputStream.toByteArray();
- return responseBytes;
- }
-
-// public String getResponseContent(HttpResponse httpResponse) throws CorrelationException {
-// byte[] dataByte;
-// String result = null;
-// try {
-// HttpEntity httpEntity = httpResponse.getEntity();
-// if (httpEntity != null) {
-// byte[] responseBytes = getData(httpEntity);
-// dataByte = responseBytes;
-// result = bytesToString(dataByte);
-// }
-// return result;
-// } catch (Exception e) {
-// throw new CorrelationException(I18nProxy.RULE_MANAGEMENT_PARSE_DEPLOY_RESULT_ERROR, e);
-// }
-// }
-
- private String bytesToString(byte[] bytes) throws UnsupportedEncodingException {
- if (bytes != null) {
- String returnStr = new String(bytes, "utf-8");
- returnStr = StringUtils.trim(returnStr);
- return returnStr;
- }
- return null;
+ WebTarget webTarget = client.target(url + RuleMgtConstant.ENGINE_PATH);
+ return webTarget.request(MediaType.APPLICATION_JSON).put(Entity.entity(content, MediaType.APPLICATION_JSON));
}
}
diff --git a/rulemgt/src/main/java/org/openo/holmes/rulemgt/bolt/enginebolt/EngineWrapper.java b/rulemgt/src/main/java/org/openo/holmes/rulemgt/bolt/enginebolt/EngineWrapper.java index a65d88b..c568723 100644 --- a/rulemgt/src/main/java/org/openo/holmes/rulemgt/bolt/enginebolt/EngineWrapper.java +++ b/rulemgt/src/main/java/org/openo/holmes/rulemgt/bolt/enginebolt/EngineWrapper.java @@ -15,12 +15,10 @@ */
package org.openo.holmes.rulemgt.bolt.enginebolt;
-import java.io.IOException;
import javax.inject.Inject;
+import javax.ws.rs.core.Response;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
-import org.apache.http.HttpResponse;
-import org.apache.http.util.EntityUtils;
import org.jvnet.hk2.annotations.Service;
import org.openo.holmes.common.exception.CorrelationException;
import org.openo.holmes.common.utils.I18nProxy;
@@ -36,18 +34,16 @@ public class EngineWrapper { private EngineService engineService;
public String deployEngine(CorrelationDeployRule4Engine correlationRule) throws CorrelationException {
- HttpResponse httpResponse;
+ Response response;
try {
- httpResponse = engineService.deploy(correlationRule);
+ response = engineService.deploy(correlationRule);
} catch (Exception e) {
throw new CorrelationException(I18nProxy.RULE_MANAGEMENT_CALL_DEPLOY_RULE_REST_FAILED, e);
}
- if (httpResponse.getStatusLine().getStatusCode() == RuleMgtConstant.RESPONSE_STATUS_OK) {
+ if (response.getStatus() == RuleMgtConstant.RESPONSE_STATUS_OK) {
log.info("Call deploy rule rest interface in engine successfully.");
- String content = engineService.getResponseContent(httpResponse);
try {
- log.info("Deploy result from the engine is: " + content + ".");
- JSONObject json = JSONObject.fromObject(content);
+ JSONObject json = JSONObject.fromObject(response.readEntity(String.class));
return json.get(RuleMgtConstant.PACKAGE).toString();
} catch (Exception e) {
throw new CorrelationException(I18nProxy.RULE_MANAGEMENT_PARSE_DEPLOY_RESULT_ERROR, e);
@@ -58,13 +54,13 @@ public class EngineWrapper { }
public boolean deleteRuleFromEngine(String packageName) throws CorrelationException {
- HttpResponse httpResponse;
+ Response response;
try {
- httpResponse = engineService.delete(packageName);
+ response = engineService.delete(packageName);
} catch (Exception e) {
throw new CorrelationException(I18nProxy.RULE_MANAGEMENT_CALL_DELETE_RULE_REST_FAILED, e);
}
- if (httpResponse.getStatusLine().getStatusCode() == RuleMgtConstant.RESPONSE_STATUS_OK) {
+ if (response.getStatus() == RuleMgtConstant.RESPONSE_STATUS_OK) {
log.info("Call delete rule rest interface in engine successfully.");
return true;
} else {
@@ -75,25 +71,17 @@ public class EngineWrapper { public boolean checkRuleFromEngine(CorrelationCheckRule4Engine correlationCheckRule4Engine)
throws CorrelationException {
log.info("content:" + correlationCheckRule4Engine.getContent());
- HttpResponse httpResponse;
+ Response response;
try {
- httpResponse = engineService.check(correlationCheckRule4Engine);
+ response = engineService.check(correlationCheckRule4Engine);
} catch (Exception e) {
throw new CorrelationException(I18nProxy.RULE_MANAGEMENT_CALL_CHECK_RULE_REST_FAILED, e);
}
- if (httpResponse.getStatusLine().getStatusCode() == RuleMgtConstant.RESPONSE_STATUS_OK) {
+ if (response.getStatus() == RuleMgtConstant.RESPONSE_STATUS_OK) {
log.info("Call check rule rest interface in engine successfully.");
return true;
} else {
- try {
- log.info(httpResponse.getStatusLine().getStatusCode() + "," + EntityUtils
- .toString(httpResponse.getEntity()));
- throw new CorrelationException(I18nProxy.RULE_MANAGEMENT_CHECK_NO_PASS);
- } catch (IOException e) {
- log.info(httpResponse.getStatusLine().getStatusCode() + "," + httpResponse.getStatusLine()
- .getReasonPhrase());
- throw new CorrelationException(I18nProxy.RULE_MANAGEMENT_CHECK_NO_PASS, e);
- }
+ throw new CorrelationException(I18nProxy.RULE_MANAGEMENT_CHECK_NO_PASS);
}
}
}
diff --git a/rulemgt/src/main/java/org/openo/holmes/rulemgt/db/CorrelationRuleDao.java b/rulemgt/src/main/java/org/openo/holmes/rulemgt/db/CorrelationRuleDao.java index f800f0c..3a7f300 100644 --- a/rulemgt/src/main/java/org/openo/holmes/rulemgt/db/CorrelationRuleDao.java +++ b/rulemgt/src/main/java/org/openo/holmes/rulemgt/db/CorrelationRuleDao.java @@ -31,7 +31,7 @@ import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper; public abstract class CorrelationRuleDao {
@GetGeneratedKeys
- @SqlUpdate("INSERT INTO APLUS_RULE (NAME,DESCRIPTION,ENABLE,TEMPLATEID,ENGINETYPE,CREATOR,UPDATOR,PARAMS,DOMAIN ,CONTENT ,VENDOR,CREATETIME,UPDATETIME,ENGINEID,ISMANUAL,PACKAGE,RID) VALUES (:name,:description,:enabled,:templateID,:engineType,:creator,:modifier,:params,:domain,:content,:vendor,:createTime,:updateTime,:engineId,:isManual,:packageName,:rid)")
+ @SqlUpdate("INSERT INTO APLUS_RULE (NAME,DESCRIPTION,ENABLE,TEMPLATEID,ENGINETYPE,CREATOR,UPDATOR,PARAMS,CONTENT ,VENDOR,CREATETIME,UPDATETIME,ENGINEID,PACKAGE,RID) VALUES (:name,:description,:enabled,:templateID,:engineType,:creator,:modifier,:params,:content,:vendor,:createTime,:updateTime,:engineID,:packageName,:rid)")
protected abstract int addRule(@BindBean CorrelationRule correlationRule);
@SqlUpdate("UPDATE APLUS_RULE SET DESCRIPTION=:description,ENABLE=:enabled,CONTENT=:content,UPDATOR=:modifier,UPDATETIME=:updateTime WHERE RID=:rid")
|