Example usage for org.apache.http.client.utils URIBuilder toString

List of usage examples for org.apache.http.client.utils URIBuilder toString

Introduction

In this page you can find the example usage for org.apache.http.client.utils URIBuilder toString.

Prototype

@Override
    public String toString() 

Source Link

Usage

From source file:org.eclipse.rdf4j.http.client.SPARQLProtocolSession.java

protected HttpUriRequest getQueryMethod(QueryLanguage ql, String query, String baseURI, Dataset dataset,
        boolean includeInferred, int maxQueryTime, Binding... bindings) {
    List<NameValuePair> queryParams = getQueryMethodParameters(ql, query, baseURI, dataset, includeInferred,
            maxQueryTime, bindings);//from  ww w. j a v  a  2  s.c  o  m
    HttpUriRequest method;
    String queryUrlWithParams;
    try {
        URIBuilder urib = new URIBuilder(getQueryURL());
        for (NameValuePair nvp : queryParams)
            urib.addParameter(nvp.getName(), nvp.getValue());
        queryUrlWithParams = urib.toString();
    } catch (URISyntaxException e) {
        throw new AssertionError(e);
    }
    if (shouldUsePost(queryUrlWithParams)) {
        // we just built up a URL for nothing. oh well.
        // It's probably not much overhead against
        // the poor triplestore having to process such as massive query
        HttpPost postMethod = new HttpPost(getQueryURL());
        postMethod.setHeader("Content-Type", Protocol.FORM_MIME_TYPE + "; charset=utf-8");
        postMethod.setEntity(new UrlEncodedFormEntity(queryParams, UTF8));
        method = postMethod;
    } else {
        method = new HttpGet(queryUrlWithParams);
    }
    // functionality to provide custom http headers as required by the
    // applications
    for (Map.Entry<String, String> additionalHeader : additionalHttpHeaders.entrySet()) {
        method.addHeader(additionalHeader.getKey(), additionalHeader.getValue());
    }
    return method;
}

From source file:org.apache.ambari.server.controller.metrics.timeline.AMSPropertyProviderTest.java

@Test
public void testPopulateResourcesForMultipleHostMetricscPointInTime() throws Exception {
    setUpCommonMocks();//ww w . jav  a  2 s . c  o  m
    TestStreamProvider streamProvider = new TestStreamProvider(MULTIPLE_HOST_METRICS_FILE_PATH);
    injectCacheEntryFactoryWithStreamProvider(streamProvider);
    TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
    ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);

    Map<String, Map<String, PropertyInfo>> propertyIds = PropertyHelper
            .getMetricPropertyIds(Resource.Type.Host);
    AMSPropertyProvider propertyProvider = new AMSHostPropertyProvider(propertyIds, streamProvider,
            sslConfiguration, cacheProvider, metricHostProvider, CLUSTER_NAME_PROPERTY_ID,
            HOST_NAME_PROPERTY_ID);

    Resource resource = new ResourceImpl(Resource.Type.Host);
    resource.setProperty(CLUSTER_NAME_PROPERTY_ID, "c1");
    resource.setProperty(HOST_NAME_PROPERTY_ID, "h1");
    Map<String, TemporalInfo> temporalInfoMap = Collections.emptyMap();
    Request request = PropertyHelper.getReadRequest(new HashSet<String>() {
        {
            add(PROPERTY_ID1);
            add(PROPERTY_ID2);
        }
    }, temporalInfoMap);
    Set<Resource> resources = propertyProvider.populateResources(Collections.singleton(resource), request,
            null);
    Assert.assertEquals(1, resources.size());
    Resource res = resources.iterator().next();
    Map<String, Object> properties = PropertyHelper.getProperties(resources.iterator().next());
    Assert.assertNotNull(properties);
    URIBuilder uriBuilder = AMSPropertyProvider.getAMSUriBuilder("localhost", 6188, false);
    uriBuilder.addParameter("metricNames", "cpu_user,mem_free");
    uriBuilder.addParameter("hostname", "h1");
    uriBuilder.addParameter("appId", "HOST");

    URIBuilder uriBuilder2 = AMSPropertyProvider.getAMSUriBuilder("localhost", 6188, false);
    uriBuilder2.addParameter("metricNames", "mem_free,cpu_user");
    uriBuilder2.addParameter("hostname", "h1");
    uriBuilder2.addParameter("appId", "HOST");
    Assert.assertTrue(uriBuilder.toString().equals(streamProvider.getLastSpec())
            || uriBuilder2.toString().equals(streamProvider.getLastSpec()));
    Double val1 = (Double) res.getPropertyValue(PROPERTY_ID1);
    Assert.assertNotNull("No value for property " + PROPERTY_ID1, val1);
    Assert.assertEquals(41.088, val1, 0.001);
    Double val2 = (Double) res.getPropertyValue(PROPERTY_ID2);
    Assert.assertNotNull("No value for property " + PROPERTY_ID2, val2);
    Assert.assertEquals(2.47025664E8, val2, 0.1);
}

From source file:org.apache.ambari.server.controller.metrics.timeline.AMSPropertyProviderTest.java

@Test
public void testPopulateResourcesForHostComponentMetricsForMultipleHosts() throws Exception {
    setUpCommonMocks();/*from  ww  w .j ava  2 s .c  om*/
    TestStreamProviderForHostComponentMultipleHostsMetricsTest streamProvider = new TestStreamProviderForHostComponentMultipleHostsMetricsTest(
            null);
    injectCacheEntryFactoryWithStreamProvider(streamProvider);
    TestMetricHostProvider metricHostProvider = new TestMetricHostProvider("h1");
    ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);

    Map<String, Map<String, PropertyInfo>> propertyIds = PropertyHelper
            .getMetricPropertyIds(Resource.Type.HostComponent);

    Resource resource = new ResourceImpl(Resource.Type.Host);
    resource.setProperty(CLUSTER_NAME_PROPERTY_ID, "c1");
    resource.setProperty(HOST_NAME_PROPERTY_ID, "h1");
    resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "DATANODE");
    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();

    temporalInfoMap.put(PROPERTY_ID4, new TemporalInfoImpl(1416445244801L, 1416448936464L, 1L));
    Request request = PropertyHelper.getReadRequest(new HashSet<String>() {
        {
            add(PROPERTY_ID4);
            add("params/padding/NONE"); // Ignore padding to match result size
        }
    }, temporalInfoMap);

    AMSPropertyProvider propertyProvider = new AMSHostComponentPropertyProvider(propertyIds, streamProvider,
            sslConfiguration, cacheProvider, metricHostProvider, CLUSTER_NAME_PROPERTY_ID,
            HOST_NAME_PROPERTY_ID, COMPONENT_NAME_PROPERTY_ID);

    Set<Resource> resources1 = propertyProvider.populateResources(Collections.singleton(resource), request,
            null);
    Assert.assertEquals(1, resources1.size());
    Resource res1 = resources1.iterator().next();
    Map<String, Object> properties = PropertyHelper.getProperties(resources1.iterator().next());
    Assert.assertNotNull(properties);

    /////////////////////////////////////
    metricHostProvider = new TestMetricHostProvider("h2");

    resource = new ResourceImpl(Resource.Type.Host);
    resource.setProperty(CLUSTER_NAME_PROPERTY_ID, "c1");
    resource.setProperty(HOST_NAME_PROPERTY_ID, "h2");
    resource.setProperty(COMPONENT_NAME_PROPERTY_ID, "DATANODE");
    temporalInfoMap = new HashMap<String, TemporalInfo>();
    temporalInfoMap.put(PROPERTY_ID4, new TemporalInfoImpl(1416445244801L, 1416448936464L, 1L));
    request = PropertyHelper.getReadRequest(new HashSet<String>() {
        {
            add(PROPERTY_ID4);
            add("params/padding/NONE"); // Ignore padding to match result size
        }
    }, temporalInfoMap);

    propertyProvider = new AMSHostComponentPropertyProvider(propertyIds, streamProvider, sslConfiguration,
            cacheProvider, metricHostProvider, CLUSTER_NAME_PROPERTY_ID, HOST_NAME_PROPERTY_ID,
            COMPONENT_NAME_PROPERTY_ID);

    resource.setProperty(HOST_NAME_PROPERTY_ID, "h2");

    Set<Resource> resources2 = propertyProvider.populateResources(Collections.singleton(resource), request,
            null);
    Assert.assertEquals(1, resources2.size());
    Resource res2 = resources2.iterator().next();
    properties = PropertyHelper.getProperties(resources2.iterator().next());
    Assert.assertNotNull(properties);

    Set<String> specs = streamProvider.getAllSpecs();
    Assert.assertEquals(2, specs.size());

    URIBuilder uriBuilder1 = AMSPropertyProvider.getAMSUriBuilder("localhost", 6188, false);
    Number[][] val;

    for (String spec : specs) {
        Assert.assertNotNull(spec);

        if (spec.contains("h2")) {
            uriBuilder1.setParameter("metricNames", "dfs.datanode.blocks_removed");
            uriBuilder1.setParameter("hostname", "h2");
            uriBuilder1.setParameter("appId", "DATANODE");
            uriBuilder1.setParameter("startTime", "1416445244801");
            uriBuilder1.setParameter("endTime", "1416448936464");
            Assert.assertEquals(uriBuilder1.toString(), spec);
            val = (Number[][]) res2.getPropertyValue(PROPERTY_ID4);
            Assert.assertNotNull("No value for property " + PROPERTY_ID4, val);
            Assert.assertEquals(9, val.length);
        } else {
            uriBuilder1.setParameter("metricNames", "dfs.datanode.blocks_removed");
            uriBuilder1.setParameter("hostname", "h1");
            uriBuilder1.setParameter("appId", "DATANODE");
            uriBuilder1.setParameter("startTime", "1416445244801");
            uriBuilder1.setParameter("endTime", "1416448936464");
            Assert.assertEquals(uriBuilder1.toString(), spec);
            val = (Number[][]) res1.getPropertyValue(PROPERTY_ID4);
            Assert.assertNotNull("No value for property " + PROPERTY_ID4, val);
            Assert.assertEquals(8, val.length);
        }
    }
}

From source file:org.apache.ambari.server.controller.metrics.timeline.AMSReportPropertyProvider.java

private void setProperties(Resource resource, String clusterName, Request request, Set<String> ids)
        throws SystemException {

    Map<String, MetricReportRequest> reportRequestMap = getPropertyIdMaps(request, ids);
    String host = hostProvider.getCollectorHostName(clusterName, TIMELINE_METRICS);
    String port = hostProvider.getCollectorPort(clusterName, TIMELINE_METRICS);
    URIBuilder uriBuilder = AMSPropertyProvider.getAMSUriBuilder(host,
            port != null ? Integer.parseInt(port) : 6188, configuration.isHttpsEnabled());

    for (Map.Entry<String, MetricReportRequest> entry : reportRequestMap.entrySet()) {
        MetricReportRequest reportRequest = entry.getValue();
        TemporalInfo temporalInfo = reportRequest.getTemporalInfo();
        Map<String, String> propertyIdMap = reportRequest.getPropertyIdMap();

        uriBuilder.removeQuery();//from w  ww  . j a  va2s.co  m
        // Call with hostname = null
        uriBuilder.addParameter("metricNames",
                MetricsPropertyProvider.getSetString(propertyIdMap.keySet(), -1));

        uriBuilder.setParameter("appId", "HOST");
        long startTime = temporalInfo.getStartTime();
        if (startTime != -1) {
            uriBuilder.setParameter("startTime", String.valueOf(startTime));
        }

        long endTime = temporalInfo.getEndTime();
        if (endTime != -1) {
            uriBuilder.setParameter("endTime", String.valueOf(endTime));
        }

        TimelineAppMetricCacheKey metricCacheKey = new TimelineAppMetricCacheKey(propertyIdMap.keySet(), "HOST",
                temporalInfo);

        metricCacheKey.setSpec(uriBuilder.toString());

        // Self populating cache updates itself on every get with latest results
        TimelineMetrics timelineMetrics;
        if (metricCache != null && metricCacheKey.getTemporalInfo() != null) {
            timelineMetrics = metricCache.getAppTimelineMetricsFromCache(metricCacheKey);
        } else {
            try {
                timelineMetrics = requestHelper.fetchTimelineMetrics(uriBuilder,
                        temporalInfo.getStartTimeMillis(), temporalInfo.getEndTimeMillis());
            } catch (IOException e) {
                timelineMetrics = null;
            }
        }

        if (timelineMetrics != null) {
            for (TimelineMetric metric : timelineMetrics.getMetrics()) {
                if (metric.getMetricName() != null && metric.getMetricValues() != null) {
                    // Pad zeros or nulls if needed to a clone so we do not cache
                    // padded values
                    TimelineMetric timelineMetricClone = new TimelineMetric(metric);
                    metricsPaddingMethod.applyPaddingStrategy(timelineMetricClone, temporalInfo);

                    String propertyId = propertyIdMap.get(metric.getMetricName());
                    if (propertyId != null) {
                        resource.setProperty(propertyId, getValue(timelineMetricClone, temporalInfo));
                    }
                }
            }
        }
    }
}

From source file:net.shibboleth.idp.oidc.flow.BuildAuthorizationRequestContextAction.java

/**
 * Check for none prompt pair./*from   ww  w .  j  a  va 2  s .  c  o m*/
 *
 * @param client      the client
 * @param authRequest the auth request
 * @return the pair
 */
private Pair<Events, ? extends Object> checkForNonePrompt(final ClientDetailsEntity client,
        final OIDCAuthorizationRequestContext authRequest) {
    log.debug("Prompt contains {}", ConnectRequestParameters.PROMPT_NONE);
    final Authentication auth = SecurityContextHolder.getContext().getAuthentication();

    if (auth != null) {
        log.debug("Authentication context is found for {}. Already logged in; continue without prompt",
                auth.getPrincipal());
        return new Pair(Events.Success, auth);
    }

    log.info("Client requested no prompt");
    if (client != null && authRequest.getRedirectUri() != null) {
        try {
            final String url = redirectResolver.resolveRedirect(authRequest.getRedirectUri(), client);
            log.debug("Initial redirect url resolved for client {} is {}", client.getClientName(), url);

            final URIBuilder uriBuilder = new URIBuilder(url);

            if (authRequest.isImplicitResponseType()) {
                log.debug("Request is asking for implicit grant type. Encoding parameters as fragments");
                final StringBuilder builder = new StringBuilder();
                builder.append(ConnectRequestParameters.ERROR).append('=')
                        .append(ConnectRequestParameters.LOGIN_REQUIRED);

                if (!Strings.isNullOrEmpty(authRequest.getState())) {
                    builder.append('&').append(ConnectRequestParameters.STATE).append('=')
                            .append(authRequest.getState());
                }
                uriBuilder.setFragment(builder.toString());
            } else {
                log.debug("Request is asking for code grant type. Encoding parameters as url parameters");
                uriBuilder.addParameter(ConnectRequestParameters.ERROR,
                        ConnectRequestParameters.LOGIN_REQUIRED);
                if (!Strings.isNullOrEmpty(authRequest.getState())) {
                    uriBuilder.addParameter(ConnectRequestParameters.STATE, authRequest.getState());
                }
            }
            log.debug("Resolved redirect url {}", uriBuilder.toString());
            return new Pair<>(Events.Redirect, uriBuilder.toString());

        } catch (final URISyntaxException e) {
            log.error("Can't build redirect URI for prompt=none, sending error instead", e);
        }
    } else {
        log.warn("Access denied. Either client is not found or no redirect uri is specified");

    }
    return new Pair(Events.Failure, null);
}

From source file:org.apache.ambari.server.controller.ganglia.GangliaPropertyProviderTest.java

@Test
public void testPopulateManyResources() throws Exception {
    TestStreamProvider streamProvider = new TestStreamProvider("temporal_ganglia_data_1.txt");
    TestGangliaHostProvider hostProvider = new TestGangliaHostProvider();

    GangliaPropertyProvider propertyProvider = new GangliaHostPropertyProvider(
            PropertyHelper.getGangliaPropertyIds(Resource.Type.Host), streamProvider, configuration,
            hostProvider, CLUSTER_NAME_PROPERTY_ID, HOST_NAME_PROPERTY_ID);

    Set<Resource> resources = new HashSet<Resource>();

    // host/* ww  w . j a  v  a  2  s  . c  o  m*/
    Resource resource = new ResourceImpl(Resource.Type.Host);
    resource.setProperty(HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E1.compute-1.internal");
    resources.add(resource);

    resource = new ResourceImpl(Resource.Type.Host);
    resource.setProperty(HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E2.compute-1.internal");
    resources.add(resource);

    resource = new ResourceImpl(Resource.Type.Host);
    resource.setProperty(HOST_NAME_PROPERTY_ID, "domU-12-31-39-0E-34-E3.compute-1.internal");
    resources.add(resource);

    // only ask for one property
    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
    temporalInfoMap.put(PROPERTY_ID, new TemporalInfoImpl(10L, 20L, 1L));
    Request request = PropertyHelper.getReadRequest(Collections.singleton(PROPERTY_ID), temporalInfoMap);

    Assert.assertEquals(3, propertyProvider.populateResources(resources, request, null).size());

    URIBuilder uriBuilder = new URIBuilder();

    uriBuilder.setScheme((configuration.isGangliaSSL() ? "https" : "http"));
    uriBuilder.setHost("domU-12-31-39-0E-34-E1.compute-1.internal");
    uriBuilder.setPath("/cgi-bin/rrd.py");
    uriBuilder.setParameter("c",
            "HDPJobTracker,HDPHBaseMaster,HDPKafka,HDPResourceManager,HDPFlumeServer,HDPSlaves,HDPHistoryServer,HDPJournalNode,HDPTaskTracker,HDPHBaseRegionServer,HDPNameNode");
    uriBuilder.setParameter("h",
            "domU-12-31-39-0E-34-E3.compute-1.internal,domU-12-31-39-0E-34-E1.compute-1.internal,domU-12-31-39-0E-34-E2.compute-1.internal");
    uriBuilder.setParameter("m", "jvm.metrics.gcCount");
    uriBuilder.setParameter("s", "10");
    uriBuilder.setParameter("e", "20");
    uriBuilder.setParameter("r", "1");

    String expected = uriBuilder.toString();

    Assert.assertEquals(expected, streamProvider.getLastSpec());

    for (Resource res : resources) {
        Assert.assertEquals(2, PropertyHelper.getProperties(res).size());
        Assert.assertNotNull(res.getPropertyValue(PROPERTY_ID));
    }
}

From source file:org.apache.ambari.server.controller.metrics.timeline.AMSPropertyProviderTest.java

@Test
public void testPopulateResourcesForMultipleHostMetrics() throws Exception {
    setUpCommonMocks();//from  www.  jav a 2s  .  c o  m
    TestStreamProvider streamProvider = new TestStreamProvider(MULTIPLE_HOST_METRICS_FILE_PATH);
    injectCacheEntryFactoryWithStreamProvider(streamProvider);
    TestMetricHostProvider metricHostProvider = new TestMetricHostProvider();
    ComponentSSLConfiguration sslConfiguration = mock(ComponentSSLConfiguration.class);

    Map<String, Map<String, PropertyInfo>> propertyIds = PropertyHelper
            .getMetricPropertyIds(Resource.Type.Host);
    AMSPropertyProvider propertyProvider = new AMSHostPropertyProvider(propertyIds, streamProvider,
            sslConfiguration, cacheProvider, metricHostProvider, CLUSTER_NAME_PROPERTY_ID,
            HOST_NAME_PROPERTY_ID);

    Resource resource = new ResourceImpl(Resource.Type.Host);
    resource.setProperty(CLUSTER_NAME_PROPERTY_ID, "c1");
    resource.setProperty(HOST_NAME_PROPERTY_ID, "h1");
    Map<String, TemporalInfo> temporalInfoMap = new HashMap<String, TemporalInfo>();
    temporalInfoMap.put(PROPERTY_ID1, new TemporalInfoImpl(1416445244701L, 1416448936564L, 15L));
    temporalInfoMap.put(PROPERTY_ID2, new TemporalInfoImpl(1416445244701L, 1416448936564L, 15L));
    Request request = PropertyHelper.getReadRequest(new HashSet<String>() {
        {
            add(PROPERTY_ID1);
            add(PROPERTY_ID2);
            add("params/padding/NONE"); // Ignore padding to match result size
        }
    }, temporalInfoMap);
    Set<Resource> resources = propertyProvider.populateResources(Collections.singleton(resource), request,
            null);
    Assert.assertEquals(1, resources.size());
    Resource res = resources.iterator().next();
    Map<String, Object> properties = PropertyHelper.getProperties(resources.iterator().next());
    Assert.assertNotNull(properties);
    URIBuilder uriBuilder1 = AMSPropertyProvider.getAMSUriBuilder("localhost", 6188, false);
    uriBuilder1.addParameter("metricNames", "cpu_user,mem_free");
    uriBuilder1.addParameter("hostname", "h1");
    uriBuilder1.addParameter("appId", "HOST");
    uriBuilder1.addParameter("startTime", "1416445244701");
    uriBuilder1.addParameter("endTime", "1416448936564");

    URIBuilder uriBuilder2 = AMSPropertyProvider.getAMSUriBuilder("localhost", 6188, false);
    uriBuilder2.addParameter("metricNames", "mem_free,cpu_user");
    uriBuilder2.addParameter("hostname", "h1");
    uriBuilder2.addParameter("appId", "HOST");
    uriBuilder2.addParameter("startTime", "1416445244701");
    uriBuilder2.addParameter("endTime", "1416448936564");

    List<String> allSpecs = new ArrayList<String>(streamProvider.getAllSpecs());
    Assert.assertEquals(1, allSpecs.size());
    Assert.assertTrue(
            uriBuilder1.toString().equals(allSpecs.get(0)) || uriBuilder2.toString().equals(allSpecs.get(0)));
    Number[][] val = (Number[][]) res.getPropertyValue(PROPERTY_ID1);
    Assert.assertEquals(111, val.length);
    val = (Number[][]) res.getPropertyValue(PROPERTY_ID2);
    Assert.assertEquals(86, val.length);
}

From source file:org.apache.ambari.server.controller.metrics.ganglia.GangliaPropertyProvider.java

/**
 * Get the spec to locate the Ganglia stream from the given
 * request info.//from w w  w .  j  ava  2  s.c  om
 *
 * @param clusterName   the cluster name
 * @param clusterSet    the set of ganglia cluster names
 * @param hostSet       the set of host names
 * @param metricSet     the set of metric names
 * @param temporalInfo  the temporal information
 *
 * @return the spec, like http://example.com/path?param1=val1&paramn=valn
 *
 * @throws org.apache.ambari.server.controller.spi.SystemException if unable to get the Ganglia Collector host name
 */
private String getSpec(String clusterName, Set<String> clusterSet, Set<String> hostSet, Set<String> metricSet,
        TemporalInfo temporalInfo) throws SystemException {

    String clusters = getSetString(clusterSet, -1);
    String hosts = getSetString(hostSet, -1);
    String metrics = getSetString(metricSet, -1);

    URIBuilder uriBuilder = new URIBuilder();

    if (configuration.isHttpsEnabled()) {
        uriBuilder.setScheme("https");
    } else {
        uriBuilder.setScheme("http");
    }

    uriBuilder.setHost(hostProvider.getCollectorHostName(clusterName, GANGLIA));

    uriBuilder.setPath("/cgi-bin/rrd.py");

    uriBuilder.setParameter("c", clusters);

    if (hosts.length() > 0) {
        uriBuilder.setParameter("h", hosts);
    }

    if (metrics.length() > 0) {
        uriBuilder.setParameter("m", metrics);
    } else {
        // get all metrics
        uriBuilder.setParameter("m", ".*");
    }

    if (temporalInfo != null) {
        long startTime = temporalInfo.getStartTime();
        if (startTime != -1) {
            uriBuilder.setParameter("s", String.valueOf(startTime));
        }

        long endTime = temporalInfo.getEndTime();
        if (endTime != -1) {
            uriBuilder.setParameter("e", String.valueOf(endTime));
        }

        long step = temporalInfo.getStep();
        if (step != -1) {
            uriBuilder.setParameter("r", String.valueOf(step));
        }
    } else {
        uriBuilder.setParameter("e", "now");
        uriBuilder.setParameter("pt", "true");
    }

    return uriBuilder.toString();
}

From source file:org.apache.ambari.server.controller.ganglia.GangliaPropertyProvider.java

/**
 * Get the spec to locate the Ganglia stream from the given
 * request info.//from  w  w w  .j  a v  a2 s  . com
 *
 * @param clusterName   the cluster name
 * @param clusterSet    the set of ganglia cluster names
 * @param hostSet       the set of host names
 * @param metricSet     the set of metric names
 * @param temporalInfo  the temporal information
 *
 * @return the spec, like http://example.com/path?param1=val1&paramn=valn
 *
 * @throws org.apache.ambari.server.controller.spi.SystemException if unable to get the Ganglia Collector host name
 */
private String getSpec(String clusterName, Set<String> clusterSet, Set<String> hostSet, Set<String> metricSet,
        TemporalInfo temporalInfo) throws SystemException {

    String clusters = getSetString(clusterSet, -1);
    String hosts = getSetString(hostSet, -1);
    String metrics = getSetString(metricSet, -1);

    URIBuilder uriBuilder = new URIBuilder();

    if (configuration.isGangliaSSL()) {
        uriBuilder.setScheme("https");
    } else {
        uriBuilder.setScheme("http");
    }

    uriBuilder.setHost(hostProvider.getGangliaCollectorHostName(clusterName));

    uriBuilder.setPath("/cgi-bin/rrd.py");

    uriBuilder.setParameter("c", clusters);

    if (hosts.length() > 0) {
        uriBuilder.setParameter("h", hosts);
    }

    if (metrics.length() > 0) {
        uriBuilder.setParameter("m", metrics);
    } else {
        // get all metrics
        uriBuilder.setParameter("m", ".*");
    }

    if (temporalInfo != null) {
        long startTime = temporalInfo.getStartTime();
        if (startTime != -1) {
            uriBuilder.setParameter("s", String.valueOf(startTime));
        }

        long endTime = temporalInfo.getEndTime();
        if (endTime != -1) {
            uriBuilder.setParameter("e", String.valueOf(endTime));
        }

        long step = temporalInfo.getStep();
        if (step != -1) {
            uriBuilder.setParameter("r", String.valueOf(step));
        }
    } else {
        uriBuilder.setParameter("e", "now");
        uriBuilder.setParameter("pt", "true");
    }

    return uriBuilder.toString();
}