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);
+            }
+        }
+    }
+}