com.windowsazure.messaging.Registration Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of NotificationHubs Show documentation
Show all versions of NotificationHubs Show documentation
This package contains the JAVA SDK for Azure Notification Hubs.
The newest version!
package com.windowsazure.messaging;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.apache.commons.digester3.Digester;
import org.apache.commons.digester3.ObjectCreationFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
/**
* Abstract class representing a registration.
*
*/
public abstract class Registration implements Cloneable {
protected String registrationId;
protected Set tags = new HashSet();
protected String etag;
protected Date expirationTime;
private static final ThreadLocal singleRegParser;
private static final ThreadLocal multiRegParser;
static {
singleRegParser = new ThreadLocal(){
@Override protected Digester initialValue() {
Digester instance = new Digester();
addRegistrationRules(instance);
return instance;
}
};
multiRegParser = new ThreadLocal(){
@Override protected Digester initialValue() {
Digester instance = new Digester();
addRegistrationRules(instance);
addCollectionRules(instance);
return instance;
}
};
}
public Registration() {
}
public Registration clone(){
try {
return (Registration) super.clone();
} catch (CloneNotSupportedException e) {
throw new RuntimeException(e);
}
}
public Registration(String registrationId) {
super();
this.registrationId = registrationId;
}
public Registration(Set tags) {
super();
this.tags = tags;
}
public abstract String getXml();
public String getRegistrationId() {
return registrationId;
}
public void setRegistrationId(String registrationId) {
this.registrationId = registrationId;
}
public Set getTags() {
return tags;
}
public void setTags(Set tags) {
this.tags = tags;
}
public String getEtag() {
return etag;
}
public void setEtag(String etag) {
this.etag = etag;
}
public void setTagsFromString(String string) {
tags = new HashSet();
String[] tagsArray = string.split(",");
for (int i = 0; i < tagsArray.length; i++) {
tags.add(tagsArray[i].trim());
}
}
protected String getTagsXml() {
StringBuffer buf = new StringBuffer();
if (!tags.isEmpty()) {
buf.append("");
for (Iterator i = tags.iterator(); i.hasNext();) {
buf.append(i.next());
if (i.hasNext())
buf.append(",");
}
buf.append(" ");
}
return buf.toString();
}
public Date getExpirationTime() {
return expirationTime;
}
public void setExpirationTime(Date expirationTime) {
this.expirationTime = expirationTime;
}
public void setExpirationTimeFromString(String expirationTimeString) throws ParseException {
this.expirationTime = javax.xml.bind.DatatypeConverter.parseDateTime(expirationTimeString).getTime();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((etag == null) ? 0 : etag.hashCode());
result = prime * result
+ ((expirationTime == null) ? 0 : expirationTime.hashCode());
result = prime * result
+ ((registrationId == null) ? 0 : registrationId.hashCode());
result = prime * result + ((tags == null) ? 0 : tags.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Registration other = (Registration) obj;
if (etag == null) {
if (other.etag != null)
return false;
} else if (!etag.equals(other.etag))
return false;
if (expirationTime == null) {
if (other.expirationTime != null)
return false;
} else if (!expirationTime.equals(other.expirationTime))
return false;
if (registrationId == null) {
if (other.registrationId != null)
return false;
} else if (!registrationId.equals(other.registrationId))
return false;
if (tags == null) {
if (other.tags != null)
return false;
} else if (!tags.equals(other.tags))
return false;
return true;
}
public static Registration parse(InputStream content) throws IOException,
SAXException {
return singleRegParser.get().parse(content);
}
private static void addRegistrationRules(Digester digester) {
digester.addFactoryCreate("*/RegistrationDescription",
new Registration.RegistrationCreationFactory());
digester.addObjectCreate("*/WindowsRegistrationDescription",
WindowsRegistration.class);
digester.addObjectCreate("*/WindowsTemplateRegistrationDescription",
WindowsTemplateRegistration.class);
digester.addObjectCreate("*/AppleRegistrationDescription",
AppleRegistration.class);
digester.addObjectCreate("*/AppleTemplateRegistrationDescription",
AppleTemplateRegistration.class);
digester.addObjectCreate("*/GcmRegistrationDescription",
GcmRegistration.class);
digester.addObjectCreate("*/GcmTemplateRegistrationDescription",
GcmTemplateRegistration.class);
digester.addObjectCreate("*/MpnsRegistrationDescription",
MpnsRegistration.class);
digester.addObjectCreate("*/MpnsTemplateRegistrationDescription",
MpnsTemplateRegistration.class);
digester.addObjectCreate("*/AdmRegistrationDescription",
AdmRegistration.class);
digester.addObjectCreate("*/AdmTemplateRegistrationDescription",
AdmTemplateRegistration.class);
digester.addObjectCreate("*/BaiduRegistrationDescription",
BaiduRegistration.class);
digester.addObjectCreate("*/BaiduTemplateRegistrationDescription",
BaiduTemplateRegistration.class);
digester.addCallMethod("*/RegistrationId", "setRegistrationId", 1);
digester.addCallParam("*/RegistrationId", 0);
digester.addCallMethod("*/ETag", "setEtag", 1);
digester.addCallParam("*/ETag", 0);
digester.addCallMethod("*/ChannelUri", "setChannelUri", 1);
digester.addCallParam("*/ChannelUri", 0);
digester.addCallMethod("*/DeviceToken", "setDeviceToken", 1);
digester.addCallParam("*/DeviceToken", 0);
digester.addCallMethod("*/GcmRegistrationId", "setGcmRegistrationId", 1);
digester.addCallParam("*/GcmRegistrationId", 0);
digester.addCallMethod("*/Tags", "setTagsFromString", 1);
digester.addCallParam("*/Tags", 0);
digester.addCallMethod("*/BodyTemplate", "setBodyTemplate", 1);
digester.addCallParam("*/BodyTemplate", 0);
digester.addCallMethod("*/WnsHeader", "addHeader", 2);
digester.addCallParam("*/WnsHeader/Header", 0);
digester.addCallParam("*/WnsHeader/Value", 1);
digester.addCallMethod("*/MpnsHeader", "addHeader", 2);
digester.addCallParam("*/MpnsHeader/Header", 0);
digester.addCallParam("*/MpnsHeader/Value", 1);
digester.addCallMethod("*/Expiry", "setExpiry", 1);
digester.addCallParam("*/Expiry", 0);
digester.addCallMethod("*/ExpirationTime", "setExpirationTimeFromString", 1);
digester.addCallParam("*/ExpirationTime", 0);
digester.addCallMethod("*/AdmRegistrationId", "setAdmRegistrationId", 1);
digester.addCallParam("*/AdmRegistrationId", 0);
digester.addCallMethod("*/BaiduUserId", "setBaiduUserId", 1);
digester.addCallParam("*/BaiduUserId", 0);
digester.addCallMethod("*/BaiduChannelId", "setBaiduChannelId", 1);
digester.addCallParam("*/BaiduChannelId", 0);
}
public static CollectionResult parseRegistrations(InputStream content)
throws IOException, SAXException {
return multiRegParser.get().parse(content);
}
private static void addCollectionRules(Digester digester) {
digester.addObjectCreate("feed", CollectionResult.class);
digester.addSetNext("*/RegistrationDescription", "addRegistration");
digester.addSetNext("*/WindowsRegistrationDescription", "addRegistration");
digester.addSetNext("*/WindowsTemplateRegistrationDescription", "addRegistration");
digester.addSetNext("*/AppleRegistrationDescription", "addRegistration");
digester.addSetNext("*/AppleTemplateRegistrationDescription", "addRegistration");
digester.addSetNext("*/GcmRegistrationDescription", "addRegistration");
digester.addSetNext("*/GcmTemplateRegistrationDescription", "addRegistration");
digester.addSetNext("*/MpnsRegistrationDescription", "addRegistration");
digester.addSetNext("*/MpnsTemplateRegistrationDescription", "addRegistration");
digester.addSetNext("*/AdmRegistrationDescription", "addRegistration");
digester.addSetNext("*/AdmTemplateRegistrationDescription", "addRegistration");
digester.addSetNext("*/BaiduRegistrationDescription", "addRegistration");
digester.addSetNext("*/BaiduTemplateRegistrationDescription", "addRegistration");
}
public static class RegistrationCreationFactory implements
ObjectCreationFactory © 2015 - 2025 Weber Informatics LLC | Privacy Policy