/** * Copyright 2005-2014 Restlet * * The contents of this file are subject to the terms of one of the following * open source licenses: Apache 2.0 or or EPL 1.0 (the "Licenses"). You can * select the license that you prefer but you may not use this file except in * compliance with one of these Licenses. * * You can obtain a copy of the Apache 2.0 license at * http://www.opensource.org/licenses/apache-2.0 * * You can obtain a copy of the EPL 1.0 license at * http://www.opensource.org/licenses/eclipse-1.0 * * See the Licenses for the specific language governing permissions and * limitations under the Licenses. * * Alternatively, you can obtain a royalty free commercial license with less * limitations, transferable or non-transferable, directly at * http://restlet.com/products/restlet-framework * * Restlet is a registered trademark of Restlet S.A.S. */ package org.restlet.ext.atom; import static org.restlet.ext.atom.Feed.ATOM_NAMESPACE; import org.restlet.data.Reference; import org.restlet.ext.xml.XmlWriter; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; /** * Identifies the agent used to generate a feed, for debugging and other * purposes. * * @author Jerome Louvel */ public class Generator { /** Human-readable name for the generating agent. */ private volatile String name; /** Reference of the generating agent. */ private volatile Reference uri; /** Version of the generating agent. */ private volatile String version; /** * Constructor. */ public Generator() { this(null, null, null); } /** * Constructor. * * @param name * Human-readable name for the generating agent. * @param uri * Reference of the generating agent. * @param version * Version of the generating agent. */ public Generator(String name, Reference uri, String version) { this.uri = uri; this.version = version; this.name = name; } /** * Returns the human-readable name for the generating agent. * * @return The human-readable name for the generating agent. */ public String getName() { return this.name; } /** * Returns the reference of the generating agent. * * @return The reference of the generating agent. */ public Reference getUri() { return this.uri; } /** * Returns the version of the generating agent. * * @return The version of the generating agent. */ public String getVersion() { return this.version; } /** * Sets the human-readable name for the generating agent. * * @param name * The human-readable name for the generating agent. */ public void setName(String name) { this.name = name; } /** * Sets the reference of the generating agent. * * @param uri * The reference of the generating agent. */ public void setUri(Reference uri) { this.uri = uri; } /** * Sets the version of the generating agent. * * @param version * The version of the generating agent. */ public void setVersion(String version) { this.version = version; } /** * Writes the current object as an XML element using the given SAX writer. * * @param writer * The SAX writer. * @throws SAXException */ public void writeElement(XmlWriter writer) throws SAXException { final AttributesImpl attributes = new AttributesImpl(); if ((getUri() != null) && (getUri().toString() != null)) { attributes.addAttribute("", "uri", null, "atomURI", getUri() .toString()); } if (getVersion() != null) { attributes.addAttribute("", "version", null, "text", getVersion()); } if (getName() != null) { writer.dataElement(ATOM_NAMESPACE, "generator", null, attributes, getName()); } else { writer.emptyElement(ATOM_NAMESPACE, "generator", null, attributes); } } }