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

org.jboss.resteasy.links.RESTServiceDiscovery Maven / Gradle / Ivy

There is a newer version: 7.0.0.Alpha3
Show newest version
package org.jboss.resteasy.links;

import java.net.URI;
import java.util.ArrayList;

import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlRootElement;

/**
 * 

* This holds a list of atom links describing the REST service discovered. This will * be injected by RESTEasy on any entity in the response if the JAX-RS method was * annotated with {@link AddLinks @AddLinks} if your entity declares a field of this * type. *

*

* For this to work you need to add {@link LinkResource @LinkResource} annotations on * all the JAX-RS methods you want to be discovered. *

* * @author Stéphane Épardaud */ @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) public class RESTServiceDiscovery extends ArrayList { /** * An Atom link * * @author Stéphane Épardaud */ @XmlRootElement(name = "link", namespace = "http://www.w3.org/2005/Atom") @XmlAccessorType(XmlAccessType.NONE) public static class AtomLink { @XmlAttribute String rel; @XmlAttribute String href; @XmlAttribute String type; @XmlAttribute String hreflang; @XmlAttribute String title; @XmlAttribute String length; public AtomLink() { } public AtomLink(final String href, final String rel) { this.href = href; this.rel = rel; } public String getRel() { return rel; } public void setRel(String rel) { this.rel = rel; } public String getHref() { return href; } public void setHref(String href) { this.href = href; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getHreflang() { return hreflang; } public void setHreflang(String hreflang) { this.hreflang = hreflang; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getLength() { return length; } public void setLength(String length) { this.length = length; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((href == null) ? 0 : href.hashCode()); result = prime * result + ((hreflang == null) ? 0 : hreflang.hashCode()); result = prime * result + ((length == null) ? 0 : length.hashCode()); result = prime * result + ((rel == null) ? 0 : rel.hashCode()); result = prime * result + ((title == null) ? 0 : title.hashCode()); result = prime * result + ((type == null) ? 0 : type.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; AtomLink other = (AtomLink) obj; if (href == null) { if (other.href != null) return false; } else if (!href.equals(other.href)) return false; if (hreflang == null) { if (other.hreflang != null) return false; } else if (!hreflang.equals(other.hreflang)) return false; if (length == null) { if (other.length != null) return false; } else if (!length.equals(other.length)) return false; if (rel == null) { if (other.rel != null) return false; } else if (!rel.equals(other.rel)) return false; if (title == null) { if (other.title != null) return false; } else if (!title.equals(other.title)) return false; if (type == null) { if (other.type != null) return false; } else if (!type.equals(other.type)) return false; return true; } } public void addAllLinks(RESTServiceDiscovery restServiceDiscovery) { for (AtomLink link : restServiceDiscovery) { if (!contains(link)) { add(link); } } } public void addLink(URI uri, String rel) { AtomLink link = new AtomLink(uri.toString(), rel); if (!contains(link)) { add(link); } } public AtomLink getLinkForRel(String rel) { for (AtomLink link : this) { if (rel.equals(link.getRel())) return link; } return null; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy