// Path: src/main/java/org/wildfly/metrics/scheduler/config/Address.java
// public class Address implements Iterable<Address.Tuple> {
// 
//     public static Address apply(String address) {
//         List<String> tokens = address == null ? Collections.<String>emptyList() :
//                 Splitter.on(CharMatcher.anyOf("/="))
//                         .trimResults()
//                         .omitEmptyStrings()
//                         .splitToList(address);
// 
//         List<Tuple> tuples = new ArrayList<>(tokens.size() / 2 + 1);
//         for (Iterator<String> iterator = tokens.iterator(); iterator.hasNext(); ) {
//             String type = iterator.next();
//             String name = iterator.hasNext() ? iterator.next() : "";
//             tuples.add(new Tuple(type, name));
//         }
// 
//         return new Address(tuples);
//     }
// 
// 
//     private final List<Tuple> tuples;
// 
//     private Address(final List<Tuple> tuples) {
//         this.tuples = new ArrayList<>();
//         if (tuples != null) {
//             this.tuples.addAll(tuples);
//         }
//     }
// 
//     @Override
//     public boolean equals(final Object o) {
//         if (this == o) { return true; }
//         if (!(o instanceof Address)) { return false; }
// 
//         Address address = (Address) o;
// 
//         if (!tuples.equals(address.tuples)) { return false; }
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return tuples.hashCode();
//     }
// 
//     @Override
//     public String toString() {
//         return Joiner.on('/').join(tuples);
//     }
// 
//     @Override
//     public Iterator<Tuple> iterator() {
//         return Iterators.unmodifiableIterator(tuples.iterator());
//     }
// 
//     public boolean isEmpty() {return tuples.isEmpty();}
// 
//     public boolean isBalanced() {
//         for (Tuple tuple : this) {
//             if (tuple.getValue() == null || tuple.getValue().length() == 0) {
//                 return false;
//             }
//         }
//         return true;
//     }
// 
//     public boolean startsWith(Tuple tuple) {
//         return !tuples.isEmpty() && tuples.get(0).equals(tuple);
//     }
// 
// 
//     /**
//      * @author Harald Pehl
//      */
//     public static class Tuple {
// 
//         public static Tuple apply(String tuple) {
//             if (tuple == null) {
//                 throw new IllegalArgumentException("Tuple must not be null");
//             }
//             List<String> tuples = Splitter.on('=')
//                     .omitEmptyStrings()
//                     .trimResults()
//                     .splitToList(tuple);
//             if (tuples.isEmpty() || tuples.size() != 2) {
//                 throw new IllegalArgumentException("Malformed tuple: " + tuple);
//             }
//             return new Tuple(tuples.get(0), tuples.get(1));
//         }
// 
//         private final String key;
//         private final String value;
// 
//         private Tuple(final String key, final String value) {
//             this.key = key;
//             this.value = value;
//         }
// 
//         @Override
//         public boolean equals(final Object o) {
//             if (this == o) { return true; }
//             if (!(o instanceof Tuple)) { return false; }
// 
//             Tuple that = (Tuple) o;
// 
//             if (!value.equals(that.value)) { return false; }
//             if (!key.equals(that.key)) { return false; }
// 
//             return true;
//         }
// 
//         @Override
//         public int hashCode() {
//             int result = key.hashCode();
//             result = 31 * result + value.hashCode();
//             return result;
//         }
// 
//         @Override
//         public String toString() {
//             return key + "=" + value;
//         }
// 
//         public String getKey() {
//             return key;
//         }
// 
//         public String getValue() {
//             return value;
//         }
//     }
// }
// 
// Path: src/main/java/org/wildfly/metrics/scheduler/config/Interval.java
// public class Interval{
// 
//     public final static Interval EACH_SECOND = new Interval(1, SECONDS);
//     public final static Interval TWENTY_SECONDS = new Interval(20, SECONDS);
//     public final static Interval EACH_MINUTE = new Interval(1, MINUTES);
//     public final static Interval TWENTY_MINUTES = new Interval(20, MINUTES);
//     public final static Interval EACH_HOUR = new Interval(1, HOURS);
//     public final static Interval FOUR_HOURS = new Interval(4, HOURS);
//     public final static Interval EACH_DAY = new Interval(24, HOURS);
// 
//     private final int val;
//     private final TimeUnit unit;
// 
//     public Interval(int val, TimeUnit unit) {
//         this.val = val;
//         this.unit = unit;
//     }
// 
//     public long millis() {
//         return MILLISECONDS.convert(val, unit);
//     }
// 
//     public int getVal() {
//         return val;
//     }
// 
//     public TimeUnit getUnit() {
//         return unit;
//     }
// }


import org.wildfly.metrics.scheduler.config.Address;
import org.wildfly.metrics.scheduler.config.Interval;
package org.wildfly.metrics.scheduler.polling;


/**
 * Represents a monitoring task. Represents and absolute address within a domain.
 *
 * @author Heiko Braun
 * @since 10/10/14
 */
public class Task {

    private final String host;
    private final String server;
    private final Address address;
    private final String attribute;
    private final String subref;
    private final Interval interval;

    public Task(
            String host, String server,
            Address address,
            String attribute,
            String subref,
            Interval interval
    ) {
        this.host = host;
        this.server = server;
        this.address = address;
        this.attribute = attribute;
// Path: src/main/java/org/wildfly/metrics/scheduler/config/Address.java
// public class Address implements Iterable<Address.Tuple> {
// 
//     public static Address apply(String address) {
//         List<String> tokens = address == null ? Collections.<String>emptyList() :
//                 Splitter.on(CharMatcher.anyOf("/="))
//                         .trimResults()
//                         .omitEmptyStrings()
//                         .splitToList(address);
// 
//         List<Tuple> tuples = new ArrayList<>(tokens.size() / 2 + 1);
//         for (Iterator<String> iterator = tokens.iterator(); iterator.hasNext(); ) {
//             String type = iterator.next();
//             String name = iterator.hasNext() ? iterator.next() : "";
//             tuples.add(new Tuple(type, name));
//         }
// 
//         return new Address(tuples);
//     }
// 
// 
//     private final List<Tuple> tuples;
// 
//     private Address(final List<Tuple> tuples) {
//         this.tuples = new ArrayList<>();
//         if (tuples != null) {
//             this.tuples.addAll(tuples);
//         }
//     }
// 
//     @Override
//     public boolean equals(final Object o) {
//         if (this == o) { return true; }
//         if (!(o instanceof Address)) { return false; }
// 
//         Address address = (Address) o;
// 
//         if (!tuples.equals(address.tuples)) { return false; }
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         return tuples.hashCode();
//     }
// 
//     @Override
//     public String toString() {
//         return Joiner.on('/').join(tuples);
//     }
// 
//     @Override
//     public Iterator<Tuple> iterator() {
//         return Iterators.unmodifiableIterator(tuples.iterator());
//     }
// 
//     public boolean isEmpty() {return tuples.isEmpty();}
// 
//     public boolean isBalanced() {
//         for (Tuple tuple : this) {
//             if (tuple.getValue() == null || tuple.getValue().length() == 0) {
//                 return false;
//             }
//         }
//         return true;
//     }
// 
//     public boolean startsWith(Tuple tuple) {
//         return !tuples.isEmpty() && tuples.get(0).equals(tuple);
//     }
// 
// 
//     /**
//      * @author Harald Pehl
//      */
//     public static class Tuple {
// 
//         public static Tuple apply(String tuple) {
//             if (tuple == null) {
//                 throw new IllegalArgumentException("Tuple must not be null");
//             }
//             List<String> tuples = Splitter.on('=')
//                     .omitEmptyStrings()
//                     .trimResults()
//                     .splitToList(tuple);
//             if (tuples.isEmpty() || tuples.size() != 2) {
//                 throw new IllegalArgumentException("Malformed tuple: " + tuple);
//             }
//             return new Tuple(tuples.get(0), tuples.get(1));
//         }
// 
//         private final String key;
//         private final String value;
// 
//         private Tuple(final String key, final String value) {
//             this.key = key;
//             this.value = value;
//         }
// 
//         @Override
//         public boolean equals(final Object o) {
//             if (this == o) { return true; }
//             if (!(o instanceof Tuple)) { return false; }
// 
//             Tuple that = (Tuple) o;
// 
//             if (!value.equals(that.value)) { return false; }
//             if (!key.equals(that.key)) { return false; }
// 
//             return true;
//         }
// 
//         @Override
//         public int hashCode() {
//             int result = key.hashCode();
//             result = 31 * result + value.hashCode();
//             return result;
//         }
// 
//         @Override
//         public String toString() {
//             return key + "=" + value;
//         }
// 
//         public String getKey() {
//             return key;
//         }
// 
//         public String getValue() {
//             return value;
//         }
//     }
// }
// 
// Path: src/main/java/org/wildfly/metrics/scheduler/config/Interval.java
// public class Interval{
// 
//     public final static Interval EACH_SECOND = new Interval(1, SECONDS);
//     public final static Interval TWENTY_SECONDS = new Interval(20, SECONDS);
//     public final static Interval EACH_MINUTE = new Interval(1, MINUTES);
//     public final static Interval TWENTY_MINUTES = new Interval(20, MINUTES);
//     public final static Interval EACH_HOUR = new Interval(1, HOURS);
//     public final static Interval FOUR_HOURS = new Interval(4, HOURS);
//     public final static Interval EACH_DAY = new Interval(24, HOURS);
// 
//     private final int val;
//     private final TimeUnit unit;
// 
//     public Interval(int val, TimeUnit unit) {
//         this.val = val;
//         this.unit = unit;
//     }
// 
//     public long millis() {
//         return MILLISECONDS.convert(val, unit);
//     }
// 
//     public int getVal() {
//         return val;
//     }
// 
//     public TimeUnit getUnit() {
//         return unit;
//     }
// }


// Path: src/main/java/org/wildfly/metrics/scheduler/polling/Task.java
import org.wildfly.metrics.scheduler.config.Address;
import org.wildfly.metrics.scheduler.config.Interval;

package org.wildfly.metrics.scheduler.polling;


/**
 * Represents a monitoring task. Represents and absolute address within a domain.
 *
 * @author Heiko Braun
 * @since 10/10/14
 */
public class Task {

    private final String host;
    private final String server;
    private final Address address;
    private final String attribute;
    private final String subref;
    private final Interval interval;

    public Task(
            String host, String server,
            Address address,
            String attribute,
            String subref,
            Interval interval
    ) {
        this.host = host;
        this.server = server;
        this.address = address;
        this.attribute = attribute;
        this.subref = subref;