diff --git a/src/main/java/com/notnoop/apns/ApnsService.java b/src/main/java/com/notnoop/apns/ApnsService.java index bee830c3..2826346f 100644 --- a/src/main/java/com/notnoop/apns/ApnsService.java +++ b/src/main/java/com/notnoop/apns/ApnsService.java @@ -67,6 +67,8 @@ public interface ApnsService { EnhancedApnsNotification push(String deviceToken, String payload, Date expiry) throws NetworkIOException; + EnhancedApnsNotification push(String deviceToken, String payload, int expiry) throws NetworkIOException; + /** * Sends a push notification with the provided {@code payload} to the * iPhone of {@code deviceToken}. @@ -82,6 +84,8 @@ public interface ApnsService { */ ApnsNotification push(byte[] deviceToken, byte[] payload) throws NetworkIOException; + EnhancedApnsNotification push(byte[] deviceToken, byte[] payload, Date expiry) throws NetworkIOException; + EnhancedApnsNotification push(byte[] deviceToken, byte[] payload, int expiry) throws NetworkIOException; /** @@ -98,8 +102,11 @@ public interface ApnsService { * attempting to send the message */ Collection<? extends ApnsNotification> push(Collection<String> deviceTokens, String payload) throws NetworkIOException; + Collection<? extends EnhancedApnsNotification> push(Collection<String> deviceTokens, String payload, Date expiry) throws NetworkIOException; + Collection<? extends EnhancedApnsNotification> push(Collection<String> deviceTokens, String payload, int expiry) throws NetworkIOException; + /** * Sends a bulk push notification with the provided * {@code payload} to iPhone of {@code deviceToken}s set. @@ -114,6 +121,9 @@ public interface ApnsService { * attempting to send the message */ Collection<? extends ApnsNotification> push(Collection<byte[]> deviceTokens, byte[] payload) throws NetworkIOException; + + Collection<? extends EnhancedApnsNotification> push(Collection<byte[]> deviceTokens, byte[] payload, Date expiry) throws NetworkIOException; + Collection<? extends EnhancedApnsNotification> push(Collection<byte[]> deviceTokens, byte[] payload, int expiry) throws NetworkIOException; /** @@ -168,5 +178,5 @@ public interface ApnsService { * or the service cannot send notifications for now */ void testConnection() throws NetworkIOException; - + } diff --git a/src/main/java/com/notnoop/apns/internal/AbstractApnsService.java b/src/main/java/com/notnoop/apns/internal/AbstractApnsService.java index 52d8e4ec..3bdd1dfc 100644 --- a/src/main/java/com/notnoop/apns/internal/AbstractApnsService.java +++ b/src/main/java/com/notnoop/apns/internal/AbstractApnsService.java @@ -43,92 +43,97 @@ import com.notnoop.exceptions.NetworkIOException; abstract class AbstractApnsService implements ApnsService { - private ApnsFeedbackConnection feedback; - private AtomicInteger c = new AtomicInteger(); + private final ApnsFeedbackConnection feedback; + private final AtomicInteger c = new AtomicInteger(); - public AbstractApnsService(ApnsFeedbackConnection feedback) { + public AbstractApnsService(final ApnsFeedbackConnection feedback) { this.feedback = feedback; } - public EnhancedApnsNotification push(String deviceToken, String payload) throws NetworkIOException { - EnhancedApnsNotification notification = - new EnhancedApnsNotification(c.incrementAndGet(), EnhancedApnsNotification.MAXIMUM_EXPIRY, deviceToken, payload); - push(notification); - return notification; + @Override + public EnhancedApnsNotification push(final String deviceToken, final String payload) throws NetworkIOException { + return push(deviceToken, payload, EnhancedApnsNotification.MAXIMUM_EXPIRY); } - public EnhancedApnsNotification push(String deviceToken, String payload, Date expiry) throws NetworkIOException { - EnhancedApnsNotification notification = - new EnhancedApnsNotification(c.incrementAndGet(), (int)(expiry.getTime() / 1000), deviceToken, payload); - push(notification); - return notification; + @Override + public EnhancedApnsNotification push(final String deviceToken, final String payload, final Date expiry) throws NetworkIOException { + return push(deviceToken, payload, (int) (expiry.getTime() / 1000)); } - public EnhancedApnsNotification push(byte[] deviceToken, byte[] payload) throws NetworkIOException { - EnhancedApnsNotification notification = - new EnhancedApnsNotification(c.incrementAndGet(), EnhancedApnsNotification.MAXIMUM_EXPIRY, deviceToken, payload); + @Override + public EnhancedApnsNotification push(final String deviceToken, final String payload, final int expiry) throws NetworkIOException { + final EnhancedApnsNotification notification = + new EnhancedApnsNotification(c.incrementAndGet(), expiry, deviceToken, payload); push(notification); return notification; } - public EnhancedApnsNotification push(byte[] deviceToken, byte[] payload, int expiry) throws NetworkIOException { - EnhancedApnsNotification notification = - new EnhancedApnsNotification(c.incrementAndGet(), expiry, deviceToken, payload); + @Override + public EnhancedApnsNotification push(final byte[] deviceToken, final byte[] payload) throws NetworkIOException { + return push(deviceToken, payload, EnhancedApnsNotification.MAXIMUM_EXPIRY); + } + + @Override + public EnhancedApnsNotification push(final byte[] deviceToken, final byte[] payload, final Date expiry) throws NetworkIOException { + return push(deviceToken, payload, (int) (expiry.getTime() / 1000)); + } + + @Override + public EnhancedApnsNotification push(final byte[] deviceToken, final byte[] payload, final int expiry) throws NetworkIOException { + final EnhancedApnsNotification notification = + new EnhancedApnsNotification(c.incrementAndGet(), expiry, deviceToken, payload); push(notification); return notification; } - public Collection<EnhancedApnsNotification> push(Collection<String> deviceTokens, String payload) throws NetworkIOException { - byte[] messageBytes = Utilities.toUTF8Bytes(payload); - List<EnhancedApnsNotification> notifications = new ArrayList<EnhancedApnsNotification>(deviceTokens.size()); - for (String deviceToken : deviceTokens) { - byte[] dtBytes = Utilities.decodeHex(deviceToken); - EnhancedApnsNotification notification = - new EnhancedApnsNotification(c.incrementAndGet(), EnhancedApnsNotification.MAXIMUM_EXPIRY, dtBytes, messageBytes); - notifications.add(notification); - push(notification); - } - return notifications; + @Override + public Collection<EnhancedApnsNotification> push(final Collection<String> deviceTokens, final String payload) throws NetworkIOException { + return push(deviceTokens, payload, EnhancedApnsNotification.MAXIMUM_EXPIRY); } - public Collection<EnhancedApnsNotification> push(Collection<String> deviceTokens, String payload, Date expiry) throws NetworkIOException { - byte[] messageBytes = Utilities.toUTF8Bytes(payload); - List<EnhancedApnsNotification> notifications = new ArrayList<EnhancedApnsNotification>(deviceTokens.size()); - for (String deviceToken : deviceTokens) { - byte[] dtBytes = Utilities.decodeHex(deviceToken); - EnhancedApnsNotification notification = - new EnhancedApnsNotification(c.incrementAndGet(), (int)(expiry.getTime() / 1000), dtBytes, messageBytes); - notifications.add(notification); - push(notification); - } - return notifications; + @Override + public Collection<EnhancedApnsNotification> push(final Collection<String> deviceTokens, final String payload, final Date expiry) throws NetworkIOException { + return push(deviceTokens, payload, (int) (expiry.getTime() / 1000)); } - public Collection<EnhancedApnsNotification> push(Collection<byte[]> deviceTokens, byte[] payload) throws NetworkIOException { - List<EnhancedApnsNotification> notifications = new ArrayList<EnhancedApnsNotification>(deviceTokens.size()); - for (byte[] deviceToken : deviceTokens) { - EnhancedApnsNotification notification = - new EnhancedApnsNotification(c.incrementAndGet(), EnhancedApnsNotification.MAXIMUM_EXPIRY, deviceToken, payload); - notifications.add(notification); - push(notification); + @Override + public Collection<EnhancedApnsNotification> push(final Collection<String> deviceTokens, final String payload, final int expiry) throws NetworkIOException { + final byte[] messageBytes = Utilities.toUTF8Bytes(payload); + final List<EnhancedApnsNotification> notifications = + new ArrayList<EnhancedApnsNotification>(deviceTokens.size()); + for (final String deviceToken : deviceTokens) { + final byte[] dtBytes = Utilities.decodeHex(deviceToken); + notifications.add(push(dtBytes, messageBytes, expiry)); } return notifications; } - public Collection<EnhancedApnsNotification> push(Collection<byte[]> deviceTokens, byte[] payload, int expiry) throws NetworkIOException { - List<EnhancedApnsNotification> notifications = new ArrayList<EnhancedApnsNotification>(deviceTokens.size()); - for (byte[] deviceToken : deviceTokens) { - EnhancedApnsNotification notification = - new EnhancedApnsNotification(c.incrementAndGet(), expiry, deviceToken, payload); - notifications.add(notification); - push(notification); + @Override + public Collection<EnhancedApnsNotification> push(final Collection<byte[]> deviceTokens, final byte[] payload) throws NetworkIOException { + return push(deviceTokens, payload, EnhancedApnsNotification.MAXIMUM_EXPIRY); + } + + @Override + public Collection<EnhancedApnsNotification> push(final Collection<byte[]> deviceTokens, final byte[] payload, final Date expiry) throws NetworkIOException { + return push(deviceTokens, payload, (int) (expiry.getTime() / 1000)); + } + + @Override + public Collection<EnhancedApnsNotification> push(final Collection<byte[]> deviceTokens, final byte[] payload, final int expiry) throws NetworkIOException { + final List<EnhancedApnsNotification> notifications = + new ArrayList<EnhancedApnsNotification>(deviceTokens.size()); + for (final byte[] deviceToken : deviceTokens) { + notifications.add(push(deviceToken, payload, expiry)); } return notifications; } + @Override public abstract void push(ApnsNotification message) throws NetworkIOException; - public Map<String, Date> getInactiveDevices() throws NetworkIOException { + @Override + public Map<String, Date> getInactiveDevices() throws NetworkIOException + { return feedback.getInactiveDevices(); } }