You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by mf...@apache.org on 2014/04/29 03:36:58 UTC
[05/11] git commit: Abstracted data calls to API
Abstracted data calls to API
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/4f16ba48
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/4f16ba48
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/4f16ba48
Branch: refs/heads/master
Commit: 4f16ba48cab834e9e5fbe6272183a40ad504a7d8
Parents: 4d549ec
Author: mfranklin <mf...@apache.org>
Authored: Mon Apr 28 14:21:55 2014 -0400
Committer: mfranklin <mf...@apache.org>
Committed: Mon Apr 28 14:21:55 2014 -0400
----------------------------------------------------------------------
.../streams/sysomos/AbstractRequestBuilder.java | 46 +----------
.../streams/sysomos/ContentRequestBuilder.java | 2 +
.../streams/sysomos/util/SysomosUtils.java | 84 ++++++++++++++++++++
3 files changed, 88 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4f16ba48/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/AbstractRequestBuilder.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/AbstractRequestBuilder.java b/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/AbstractRequestBuilder.java
index a740ca1..0699a1a 100644
--- a/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/AbstractRequestBuilder.java
+++ b/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/AbstractRequestBuilder.java
@@ -19,81 +19,39 @@
package org.apache.streams.sysomos;
-import com.google.common.base.Strings;
import com.sysomos.xml.BeatApi;
import com.sysomos.xml.ObjectFactory;
-import org.apache.commons.io.IOUtils;
-import org.joda.time.format.DateTimeFormat;
-import org.joda.time.format.DateTimeFormatter;
+import org.apache.streams.sysomos.util.SysomosUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
-import java.io.IOException;
-import java.io.InputStreamReader;
import java.io.StringReader;
-import java.io.StringWriter;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
import java.net.URL;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
/**
* Defines a common pattern for requesting data from the Sysomos API.
*/
public abstract class AbstractRequestBuilder implements RequestBuilder {
-
- protected static final Pattern CODE_PATTERN = Pattern.compile("code: ([0-9]+)");
- protected static final DateTimeFormatter SYSOMOS_DATE_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd'T'hh:mm:ssZ");
private final static Logger LOGGER = LoggerFactory.getLogger(AbstractRequestBuilder.class);
-
/**
* Executes the request to the Sysomos Heartbeat API and returns a valid response
*/
public BeatApi.BeatResponse execute() {
URL url = this.getRequestUrl();
try {
- String xmlResponse = querySysomos(url);
+ String xmlResponse = SysomosUtils.queryUrl(url);
JAXBContext context = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
BeatApi beatApi = (BeatApi) unmarshaller.unmarshal(new StringReader(xmlResponse));
return beatApi.getBeatResponse();
- } catch (IOException e) {
- LOGGER.error("Error executing request : {}", e, url.toString());
- String message = e.getMessage();
- Matcher match = CODE_PATTERN.matcher(message);
- if(match.find()) {
- int errorCode = Integer.parseInt(match.group(1));
- throw new SysomosException(message, e, errorCode);
- }
- else {
- throw new SysomosException(e.getMessage(), e);
- }
} catch (JAXBException e) {
LOGGER.error("Unable to unmarshal XML content");
throw new SysomosException("Unable to unmarshal XML content", e);
}
}
- protected String querySysomos(URL url) throws IOException {
- HttpURLConnection cn = (HttpURLConnection) url.openConnection();
- cn.setRequestMethod("GET");
- cn.addRequestProperty("Content-Type", "text/xml;charset=UTF-8");
- cn.setDoInput(true);
- cn.setDoOutput(false);
- StringWriter writer = new StringWriter();
- IOUtils.copy(new InputStreamReader(cn.getInputStream()), writer);
- writer.flush();
-
- String xmlResponse = writer.toString();
- if(Strings.isNullOrEmpty(xmlResponse)) {
- throw new SysomosException("XML Response from Sysomos was empty : "+xmlResponse+"\n"+cn.getResponseMessage(), cn.getResponseCode());
- }
- return xmlResponse;
- }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4f16ba48/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/ContentRequestBuilder.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/ContentRequestBuilder.java b/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/ContentRequestBuilder.java
index 951097e..3a019b6 100644
--- a/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/ContentRequestBuilder.java
+++ b/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/ContentRequestBuilder.java
@@ -25,6 +25,8 @@ import org.slf4j.LoggerFactory;
import java.net.MalformedURLException;
import java.net.URL;
+import static org.apache.streams.sysomos.util.SysomosUtils.*;
+
/**
* Builds requests for the Sysomos Heartbeat Content API. This is the preferred method of
* accessing data from Sysomoos Heartbeat
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4f16ba48/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/util/SysomosUtils.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/util/SysomosUtils.java b/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/util/SysomosUtils.java
new file mode 100644
index 0000000..338ce8f
--- /dev/null
+++ b/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/util/SysomosUtils.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.streams.sysomos.util;
+
+import com.google.common.base.Strings;
+import org.apache.commons.io.IOUtils;
+import org.apache.streams.sysomos.SysomosException;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Provides utilities for working with Sysomos
+ */
+public class SysomosUtils {
+
+ public static final Pattern CODE_PATTERN = Pattern.compile("code: ([0-9]+)");
+ public static final DateTimeFormatter SYSOMOS_DATE_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd'T'hh:mm:ssZ");
+ private final static Logger LOGGER = LoggerFactory.getLogger(SysomosUtils.class);
+
+ private SysomosUtils() {}
+
+ /**
+ * Queries the sysomos URL and provides the response as a String
+ *
+ * @param url the Sysomos URL to query
+ * @return valid XML String
+ */
+ public static String queryUrl(URL url) {
+ try {
+ HttpURLConnection cn = (HttpURLConnection) url.openConnection();
+ cn.setRequestMethod("GET");
+ cn.addRequestProperty("Content-Type", "text/xml;charset=UTF-8");
+ cn.setDoInput(true);
+ cn.setDoOutput(false);
+ StringWriter writer = new StringWriter();
+ IOUtils.copy(new InputStreamReader(cn.getInputStream()), writer);
+ writer.flush();
+
+ String xmlResponse = writer.toString();
+ if (Strings.isNullOrEmpty(xmlResponse)) {
+ throw new SysomosException("XML Response from Sysomos was empty : " + xmlResponse + "\n" + cn.getResponseMessage(), cn.getResponseCode());
+ }
+ return xmlResponse;
+ } catch (IOException e) {
+ LOGGER.error("Error executing request : {}", e, url.toString());
+ String message = e.getMessage();
+ Matcher match = CODE_PATTERN.matcher(message);
+ if(match.find()) {
+ int errorCode = Integer.parseInt(match.group(1));
+ throw new SysomosException(message, e, errorCode);
+ }
+ else {
+ throw new SysomosException(e.getMessage(), e);
+ }
+ }
+ }
+}