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

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

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 = new ThreadLocal(){
			@Override protected Digester initialValue() {
				Digester instance = new Digester();
				setupSingleEntryParser(instance);
                return instance;
             }
		};
		
		collectionParser = new ThreadLocal(){
			@Override protected Digester initialValue() {
				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(){
		StringBuffer buf = new StringBuffer();
		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