/*
 * #%L
 * servo-cloudwatch
 * %%
 * Copyright (C) 2011 - 2012 Netflix
 * %%
 * Licensed 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.
 * #L%
 */
package com.netflix.servo.examples;

import com.amazonaws.auth.PropertiesCredentials;
import com.netflix.servo.*;
import com.netflix.servo.monitor.Monitors;
import com.netflix.servo.publish.BasicMetricFilter;
import com.netflix.servo.publish.MonitorRegistryMetricPoller;
import com.netflix.servo.publish.PollCallable;
import com.netflix.servo.publish.cloudwatch.CloudWatchMetricObserver;
import com.netflix.servo.tag.InjectableTag;
import com.netflix.servo.tag.Tag;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * Sample of publishing the SimpleSample to CloudWatch
 */
public class CloudWatchExample {

    public static void main(String[] args) throws Exception {
        if(args.length != 1){
            System.err.println("Please specify the path to a properties file with your amazon keys.");
            return;
        }

        CloudWatchMetricObserver observer = new CloudWatchMetricObserver("SampleObserver", "SampleDomain",
                new PropertiesCredentials(new File(args[0])));

        List<Tag> tags = new ArrayList<Tag>(2);
        tags.add(InjectableTag.HOSTNAME);
        tags.add(InjectableTag.IP);

        BasicExample example = new BasicExample(tags);

        DefaultMonitorRegistry.getInstance().register(Monitors.newObjectMonitor(example));

        PollCallable poller = new PollCallable(new MonitorRegistryMetricPoller(), BasicMetricFilter.MATCH_ALL);


        while(true){
            example.counter.incrementAndGet();
            example.setSampleGauge(Math.round(Math.random() * 1000));
            observer.update(poller.call());
            Thread.sleep(60000);
        }
    }
}

/*
 * #%L
 * servo-cloudwatch
 * %%
 * Copyright (C) 2011 - 2012 Netflix
 * %%
 * Licensed 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.
 * #L%
 */
package com.netflix.servo.examples;

import com.amazonaws.auth.PropertiesCredentials;
import com.netflix.servo.*;
import com.netflix.servo.monitor.Monitors;
import com.netflix.servo.publish.BasicMetricFilter;
import com.netflix.servo.publish.MonitorRegistryMetricPoller;
import com.netflix.servo.publish.PollCallable;
import com.netflix.servo.publish.cloudwatch.CloudWatchMetricObserver;
import com.netflix.servo.tag.InjectableTag;
import com.netflix.servo.tag.Tag;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * Sample of publishing the SimpleSample to CloudWatch
 */
public class CloudWatchExample {

    public static void main(String[] args) throws Exception {
        if(args.length != 1){
            System.err.println("Please specify the path to a properties file with your amazon keys.");
            return;
        }

        CloudWatchMetricObserver observer = new CloudWatchMetricObserver("SampleObserver", "SampleDomain",
                new PropertiesCredentials(new File(args[0])));

        List<Tag> tags = new ArrayList<Tag>(2);
        tags.add(InjectableTag.HOSTNAME);
        tags.add(InjectableTag.IP);

        BasicExample example = new BasicExample(tags);

        DefaultMonitorRegistry.getInstance().register(Monitors.newObjectMonitor(example));

        PollCallable poller = new PollCallable(new MonitorRegistryMetricPoller(), BasicMetricFilter.MATCH_ALL);


        while(true){
            example.setSampleGauge(Math.round(Math.random() * 1000));
            observer.update(poller.call());
            Thread.sleep(60000);
        }
    }
}

fix compile error