com.tc.simple.apn.factories.PushByteFactory.java Source code

Java tutorial

Introduction

Here is the source code for com.tc.simple.apn.factories.PushByteFactory.java

Source

/*
 *  Copyright Tek Counsel LLC 2013
 * 
 * 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.
 */

package com.tc.simple.apn.factories;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.codec.binary.Hex;
import com.tc.simple.apn.Payload;
import com.tc.utils.CloseUtils;

public class PushByteFactory implements IPushByteFactory {

    private static Logger logger = Logger.getLogger(PushByteFactory.class.getName());

    /* (non-Javadoc)
     * @see com.tc.simple.apn.factories.IPushByteFactory#buildPushBytes(int, com.tc.simple.apn.Payload)
     */
    @Override
    public byte[] buildPushBytes(int id, Payload payload) {
        byte[] byteMe = null;
        ByteArrayOutputStream baos = null;
        DataOutputStream dos = null;

        try {
            baos = new ByteArrayOutputStream();

            dos = new DataOutputStream(baos);

            int expiry = 0; // (int) ((System.currentTimeMillis () / 1000L) + 7200);

            char[] cars = payload.getToken().trim().toCharArray();

            byte[] tokenBytes = Hex.decodeHex(cars);

            //command
            dos.writeByte(1);

            //id
            dos.writeInt(id);

            //expiry
            dos.writeInt(expiry);

            //token length.
            dos.writeShort(tokenBytes.length);

            //token
            dos.write(tokenBytes);

            //payload length
            dos.writeShort(payload.getJson().length());

            logger.log(Level.FINE, payload.getJson());

            //payload.
            dos.write(payload.getJson().getBytes());

            byteMe = baos.toByteArray();

        } catch (Exception e) {
            logger.log(Level.SEVERE, null, e);

        } finally {
            CloseUtils.close(dos);
            CloseUtils.close(baos);
        }

        return byteMe;

    }

}