@Override public boolean accepts(NorthboundAlarm alarm) { if (m_config.getAcceptableUeis() == null || m_config.getAcceptableUeis().contains(alarm.getUei())) { return true; } return false; }
@Override public void forwardAlarms(List<NorthboundAlarm> alarms) throws NorthbounderException { LOG.info("Forwarding {} alarms", alarms.size()); // Need a configuration bean for these int connectionTimeout = 3000; int socketTimeout = 3000; Integer retryCount = Integer.valueOf(3); URI uri = m_config.getURI(); final HttpClientWrapper clientWrapper = HttpClientWrapper.create() .setConnectionTimeout(connectionTimeout) .setSocketTimeout(socketTimeout) .setRetries(retryCount) .useBrowserCompatibleCookies(); if (m_config.getVirtualHost() != null && !m_config.getVirtualHost().trim().isEmpty()) { clientWrapper.setVirtualHost(m_config.getVirtualHost()); } if (m_config.getUserAgent() != null && !m_config.getUserAgent().trim().isEmpty()) { clientWrapper.setUserAgent(m_config.getUserAgent()); } if ("https".equals(uri.getScheme())) { try { clientWrapper.useRelaxedSSL("https"); } catch (final GeneralSecurityException e) { throw new NorthbounderException( "Failed to configure HTTP northbounder for relaxed SSL.", e); } } HttpUriRequest method = null; if (HttpMethod.POST == (m_config.getMethod())) { HttpPost postMethod = new HttpPost(uri); // TODO: need to configure these List<NameValuePair> postParms = new ArrayList<NameValuePair>(); // FIXME:do this for now NameValuePair p = new BasicNameValuePair("foo", "bar"); postParms.add(p); try { UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParms, "UTF-8"); postMethod.setEntity(entity); } catch (UnsupportedEncodingException e) { throw new NorthbounderException(e); } HttpEntity entity = null; try { // I have no idea what I'm doing here ;) entity = new StringEntity("XML HERE"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } postMethod.setEntity(entity); method = postMethod; } else if (HttpMethod.GET == m_config.getMethod()) { // TODO: need to configure these // List<NameValuePair> getParms = null; method = new HttpGet(uri); } HttpVersion httpVersion = determineHttpVersion(m_config.getHttpVersion()); clientWrapper.setVersion(httpVersion); HttpResponse response = null; try { response = clientWrapper.execute(method); int code = response.getStatusLine().getStatusCode(); HttpResponseRange range = new HttpResponseRange("200-399"); if (!range.contains(code)) { LOG.debug( "response code out of range for uri:{}. Expected {} but received {}", uri, range, code); throw new NorthbounderException( "response code out of range for uri:" + uri + ". Expected " + range + " but received " + code); } LOG.debug( "HTTP Northbounder received response: {}", response.getStatusLine().getReasonPhrase()); } catch (final ClientProtocolException e) { throw new NorthbounderException(e); } catch (final IOException e) { throw new NorthbounderException(e); } finally { IOUtils.closeQuietly(clientWrapper); } }