All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.windowsazure.messaging.NotificationHubDescription Maven / Gradle / Ivy

//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------

package com.windowsazure.messaging;

import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedList;
import java.util.List;

import org.apache.commons.digester3.Digester;
import org.xml.sax.SAXException;

public class NotificationHubDescription {
    private static final String XML_HEADER = "";
    private static final String XML_FOOTER = "";
    private String path;
    private AdmCredential admCredential;
    private ApnsCredential apnsCredential;
    private WindowsCredential windowsCredential;
    private MpnsCredential mpnsCredential;
    private GcmCredential gcmCredential;
    private FcmCredential fcmCredential;
    private BaiduCredential baiduCredential;

    private static final ThreadLocal singleEntryParser;
    private static final ThreadLocal collectionParser;

    static {
        singleEntryParser = ThreadLocal.withInitial(() -> {
            Digester instance = new Digester();
            setupSingleEntryParser(instance);
            return instance;
        });

        collectionParser = ThreadLocal.withInitial(() -> {
            Digester instance = new Digester();
            setupCollectionParser(instance);
            return instance;
        });
    }

    public NotificationHubDescription() {
        this(null);
    }

    public NotificationHubDescription(String path) {
        super();
        this.path = path;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public AdmCredential getAdmCredential() {
        return admCredential;
    }

    public void setAdmCredential(AdmCredential admCredential) {
        this.admCredential = admCredential;
    }

    public ApnsCredential getApnsCredential() {
        return apnsCredential;
    }

    public void setApnsCredential(ApnsCredential apnsCredential) {
        this.apnsCredential = apnsCredential;
    }

    public WindowsCredential getWindowsCredential() {
        return windowsCredential;
    }

    public void setWindowsCredential(WindowsCredential windowsCredential) {
        this.windowsCredential = windowsCredential;
    }

    public MpnsCredential getMpnsCredential() {
        return mpnsCredential;
    }

    public void setMpnsCredential(MpnsCredential mpnsCredential) {
        this.mpnsCredential = mpnsCredential;
    }

    public GcmCredential getGcmCredential() {
        return gcmCredential;
    }

    public void setGcmCredential(GcmCredential gcmCredential) {
        this.gcmCredential = gcmCredential;
    }

    public FcmCredential getFcmCredential() {
        return fcmCredential;
    }

    public void setFcmCredential(FcmCredential fcmCredential) {
        this.fcmCredential = fcmCredential;
    }

    public BaiduCredential getBaiduCredential() {
        return baiduCredential;
    }

    public void setBaiduCredential(BaiduCredential baiduCredential) {
        this.baiduCredential = baiduCredential;
    }

    public static NotificationHubDescription parseOne(InputStream content) throws IOException, SAXException {
        return singleEntryParser.get().parse(content);
    }

    public static List parseCollection(InputStream content) throws IOException, SAXException {
        return collectionParser.get().parse(content);
    }

    public String getXml() {
        StringBuilder buf = new StringBuilder();
        buf.append(XML_HEADER);
        if (this.apnsCredential != null) buf.append(this.apnsCredential.getXml());
        if (this.windowsCredential != null) buf.append(this.windowsCredential.getXml());
        if (this.gcmCredential != null) buf.append(this.gcmCredential.getXml());
        if (this.fcmCredential != null) buf.append(this.fcmCredential.getXml());
        if (this.mpnsCredential != null) buf.append(this.mpnsCredential.getXml());
        if (this.admCredential != null) buf.append(this.admCredential.getXml());
        if (this.baiduCredential != null) buf.append(this.baiduCredential.getXml());
        buf.append(XML_FOOTER);
        return buf.toString();
    }

    private static void setupCollectionParser(Digester digester) {
        digester.addObjectCreate("*/feed", LinkedList.class);
        setupSingleEntryParser(digester);
        digester.addSetNext("*/entry", "add", NotificationHubDescription.class.getName());
    }

    private static void setupSingleEntryParser(Digester digester) {
        digester.addObjectCreate("*/entry", NotificationHubDescription.class);
        digester.addCallMethod("*/entry/title", "setPath", 1);
        digester.addCallParam("*/entry/title", 0);
        digester.addObjectCreate("*/ApnsCredential", ApnsCredential.class);
        digester.addObjectCreate("*/AdmCredential", AdmCredential.class);
        digester.addObjectCreate("*/WnsCredential", WindowsCredential.class);
        digester.addObjectCreate("*/MpnsCredential", MpnsCredential.class);
        digester.addObjectCreate("*/GcmCredential", GcmCredential.class);
        digester.addObjectCreate("*/FcmCredential", FcmCredential.class);
        digester.addObjectCreate("*/BaiduCredential", BaiduCredential.class);
        PnsCredential.setupDigister(digester);
        digester.addSetNext("*/ApnsCredential", "setApnsCredential", ApnsCredential.class.getName());
        digester.addSetNext("*/AdmCredential", "setAdmCredential", AdmCredential.class.getName());
        digester.addSetNext("*/WnsCredential", "setWindowsCredential", WindowsCredential.class.getName());
        digester.addSetNext("*/MpnsCredential", "setMpnsCredential", MpnsCredential.class.getName());
        digester.addSetNext("*/GcmCredential", "setGcmCredential", GcmCredential.class.getName());
        digester.addSetNext("*/FcmCredential", "setFcmCredential", FcmCredential.class.getName());
        digester.addSetNext("*/BaiduCredential", "setBaiduCredential", BaiduCredential.class.getName());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy