// Path: src/main/java/io/github/jklingsporn/vertx/push/PushToDestinationStep.java
// public interface PushToDestinationStep extends PushStep {
// 
// 
// 
//     /**
//      * Targeting the audience of your push message using a <code>Filter</code>.
//      * Use the <code>Filters</code> factory to create filters. <br>
//      * <b>Example:</b><code>Filters.firstSession().less(4f).and(Filters.appVersion().greater("1.2.3"))</code>
//      * @param filter
//      * @return a SendWithOptionsStep
//      * @see <a href="https://documentation.onesignal.com/reference#section-send-to-users-based-on-filters">Notifications using filters</a>
//      */
//     SendWithOptionsStep targetByFilter(Filter filter);
// 
//     /**
//      * Targeting the audience using segments (which can be set up in the OneSignal dashboard).
//      * @param includeSegments a list of segments you want to include
//      * @return a SendToSegmentStep which allows you to exclude segments.
//      * @see <a href="https://documentation.onesignal.com/reference#section-send-to-segments">Notifications using segments</a>
//      */
//     SendToSegmentStep targetBySegments(JsonArray includeSegments);
// 
//     /**
//      * Targeting the audience using OneSignal-playerIds.
//      * @param playerIds a list of playerIds
//      * @return a SendWithOptionsStep
//      * @see <a href="https://documentation.onesignal.com/reference#section-send-to-specific-devices">Notifications using playerIds</a>
//      */
//     SendWithOptionsStep targetByPlayerIds(JsonArray playerIds);
// }
// 
// Path: src/main/java/io/github/jklingsporn/vertx/push/SendToSegmentStep.java
// public interface SendToSegmentStep extends SendWithOptionsStep {
// 
//     /**
//      * Targeting the audience using segments (which can be set up in the OneSignal dashboard).
//      * @param excludeSegments a list of segments you want to <b>exclude</b>
//      * @return a SendWithOptionsStep
//      * @see <a href="https://documentation.onesignal.com/reference#section-send-to-segments">Notifications using segments</a>
//      */
//     SendWithOptionsStep exclude(JsonArray excludeSegments);
// }
// 
// Path: src/main/java/io/github/jklingsporn/vertx/push/SendWithOptionsStep.java
// public interface SendWithOptionsStep extends SendStep{
// 
//     /**
//      * Specify further options. Some common options are directly included in the <code>SendOptions</code> class others
//      * can be manually added using the <code>SendOptions#addCustom</code>-method.<br>
//      * <b>Example:</b> <code>new SendOptions().setPlatform(EnumSet.of(SendOptions.Platform.AMAZON, SendOptions.Platform.ANDROID)).setCustom("foo","bar")</code>
//      * @param sendOptions
//      * @return a SendStep
//      * @see <a href="https://documentation.onesignal.com/reference#section-example-code-create-notification">OneSignal documentation</a>
//      */
//     SendStep addOptions(SendOptions sendOptions);
// 
// }
// 
// Path: src/main/java/io/github/jklingsporn/vertx/push/filters/Filter.java
// public interface Filter {
// 
//     Filter and(Filter other);
// 
//     Filter or(Filter other);
// 
//     JsonArray asJsonArray();
// 
//     JsonObject content();
// 
// }


import io.github.jklingsporn.vertx.push.PushToDestinationStep;
import io.github.jklingsporn.vertx.push.SendToSegmentStep;
import io.github.jklingsporn.vertx.push.SendWithOptionsStep;
import io.github.jklingsporn.vertx.push.filters.Filter;
import io.vertx.core.json.JsonArray;
package io.github.jklingsporn.vertx.push.noop;


/**
 * Created by jensklingsporn on 06.04.17.
 */
public class NoopPushToDestinationStep extends AbstractNoopPushStep implements PushToDestinationStep {

    private static final PushToDestinationStep INSTANCE = new NoopPushToDestinationStep();

    public static PushToDestinationStep getInstance() {
        return INSTANCE;
    }

    @Override
    public SendWithOptionsStep targetByFilter(Filter filter) {
        return NoopSendWithOptionsStep.getInstance();
    }

    @Override
    public SendToSegmentStep targetBySegments(JsonArray includeSegments) {
        return NoopSendToSegmentStep.getInstance();
    }

    @Override
    public SendWithOptionsStep targetByPlayerIds(JsonArray playerIds) {
// Path: src/main/java/io/github/jklingsporn/vertx/push/PushToDestinationStep.java
// public interface PushToDestinationStep extends PushStep {
// 
// 
// 
//     /**
//      * Targeting the audience of your push message using a <code>Filter</code>.
//      * Use the <code>Filters</code> factory to create filters. <br>
//      * <b>Example:</b><code>Filters.firstSession().less(4f).and(Filters.appVersion().greater("1.2.3"))</code>
//      * @param filter
//      * @return a SendWithOptionsStep
//      * @see <a href="https://documentation.onesignal.com/reference#section-send-to-users-based-on-filters">Notifications using filters</a>
//      */
//     SendWithOptionsStep targetByFilter(Filter filter);
// 
//     /**
//      * Targeting the audience using segments (which can be set up in the OneSignal dashboard).
//      * @param includeSegments a list of segments you want to include
//      * @return a SendToSegmentStep which allows you to exclude segments.
//      * @see <a href="https://documentation.onesignal.com/reference#section-send-to-segments">Notifications using segments</a>
//      */
//     SendToSegmentStep targetBySegments(JsonArray includeSegments);
// 
//     /**
//      * Targeting the audience using OneSignal-playerIds.
//      * @param playerIds a list of playerIds
//      * @return a SendWithOptionsStep
//      * @see <a href="https://documentation.onesignal.com/reference#section-send-to-specific-devices">Notifications using playerIds</a>
//      */
//     SendWithOptionsStep targetByPlayerIds(JsonArray playerIds);
// }
// 
// Path: src/main/java/io/github/jklingsporn/vertx/push/SendToSegmentStep.java
// public interface SendToSegmentStep extends SendWithOptionsStep {
// 
//     /**
//      * Targeting the audience using segments (which can be set up in the OneSignal dashboard).
//      * @param excludeSegments a list of segments you want to <b>exclude</b>
//      * @return a SendWithOptionsStep
//      * @see <a href="https://documentation.onesignal.com/reference#section-send-to-segments">Notifications using segments</a>
//      */
//     SendWithOptionsStep exclude(JsonArray excludeSegments);
// }
// 
// Path: src/main/java/io/github/jklingsporn/vertx/push/SendWithOptionsStep.java
// public interface SendWithOptionsStep extends SendStep{
// 
//     /**
//      * Specify further options. Some common options are directly included in the <code>SendOptions</code> class others
//      * can be manually added using the <code>SendOptions#addCustom</code>-method.<br>
//      * <b>Example:</b> <code>new SendOptions().setPlatform(EnumSet.of(SendOptions.Platform.AMAZON, SendOptions.Platform.ANDROID)).setCustom("foo","bar")</code>
//      * @param sendOptions
//      * @return a SendStep
//      * @see <a href="https://documentation.onesignal.com/reference#section-example-code-create-notification">OneSignal documentation</a>
//      */
//     SendStep addOptions(SendOptions sendOptions);
// 
// }
// 
// Path: src/main/java/io/github/jklingsporn/vertx/push/filters/Filter.java
// public interface Filter {
// 
//     Filter and(Filter other);
// 
//     Filter or(Filter other);
// 
//     JsonArray asJsonArray();
// 
//     JsonObject content();
// 
// }


// Path: src/main/java/io/github/jklingsporn/vertx/push/noop/NoopPushToDestinationStep.java
import io.github.jklingsporn.vertx.push.PushToDestinationStep;
import io.github.jklingsporn.vertx.push.SendToSegmentStep;
import io.github.jklingsporn.vertx.push.SendWithOptionsStep;
import io.github.jklingsporn.vertx.push.filters.Filter;
import io.vertx.core.json.JsonArray;

package io.github.jklingsporn.vertx.push.noop;


/**
 * Created by jensklingsporn on 06.04.17.
 */
public class NoopPushToDestinationStep extends AbstractNoopPushStep implements PushToDestinationStep {

    private static final PushToDestinationStep INSTANCE = new NoopPushToDestinationStep();

    public static PushToDestinationStep getInstance() {
        return INSTANCE;
    }

    @Override
    public SendWithOptionsStep targetByFilter(Filter filter) {
        return NoopSendWithOptionsStep.getInstance();
    }

    @Override
    public SendToSegmentStep targetBySegments(JsonArray includeSegments) {
        return NoopSendToSegmentStep.getInstance();
    }

    @Override
    public SendWithOptionsStep targetByPlayerIds(JsonArray playerIds) {
        return NoopSendWithOptionsStep.getInstance();