搜索

2.7.12. RESTEasy Atom 支持

download PDF

RESTEasy Atom API 和提供程序是 RESTEasy 定义为代表 Atom 的简单对象模型。API 的主要类位于 org.jboss.resteasy.plugins.providers.atom 软件包中。RESTEasy 使用 JAXB 来托管和卸载 API。提供程序基于 JAXB,不限于使用 XML 发送 Atom 对象。RESTEasy 的所有 JAXB 提供程序都可以被 Atom API 和提供程序(包括 JSON)重复利用。

import org.jboss.resteasy.plugins.providers.atom.Content;
import org.jboss.resteasy.plugins.providers.atom.Entry;
import org.jboss.resteasy.plugins.providers.atom.Feed;
import org.jboss.resteasy.plugins.providers.atom.Link;
import org.jboss.resteasy.plugins.providers.atom.Person;

@Path("atom")
public class MyAtomService {

   @GET
   @Path("feed")
   @Produces("application/atom+xml")
   public Feed getFeed() throws URISyntaxException {
      Feed feed = new Feed();
      feed.setId(new URI("http://example.com/42"));
      feed.setTitle("My Feed");
      feed.setUpdated(new Date());
      Link link = new Link();
      link.setHref(new URI("http://localhost"));
      link.setRel("edit");
      feed.getLinks().add(link);
      feed.getAuthors().add(new Person("John Brown"));
      Entry entry = new Entry();
      entry.setTitle("Hello World");
      Content content = new Content();
      content.setType(MediaType.TEXT_HTML_TYPE);
      content.setText("Nothing much");
      entry.setContent(content);
      feed.getEntries().add(entry);
      return feed;
   }
}

2.7.12.1. 使用 JAXB 和 Atom Provider

org.jboss.resteasy.plugins.providers.atom.Content 类允许您解封和marshal JAXB 注解为内容主体的对象。

示例:与客户进行输入

@XmlRootElement(namespace = "http://jboss.org/Customer")
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
   @XmlElement
   private String name;

   public Customer() {
   }

   public Customer(String name) {
      this.name = name;
   }

   public String getName() {
      return name;
   }
}

@Path("atom")
public static class AtomServer {
   @GET
   @Path("entry")
   @Produces("application/atom+xml")
   public Entry getEntry() {
      Entry entry = new Entry();
      entry.setTitle("Hello World");
      Content content = new Content();
      content.setJAXBObject(new Customer("bill"));
      entry.setContent(content);
      return entry;
   }
}

Content.setJAXBObject() 方法允许您将发送到 JAXB 的内容对象相应地指定为 marshal。如果您使用的与 XML 不同的基本格式(即 application/atom+json ),则附加的 JAXB 对象会以相同的格式托管。如果您有 Atom 文档作为输入,您也可以使用 Content. getJAXBObject(Class clazz)方法从内容中提取 JAXB 对象。

示例:属性文档提取客户对象

@Path("atom")
public static class AtomServer {
   @PUT
   @Path("entry")
   @Produces("application/atom+xml")
   public void putCustomer(Entry entry) {
      Content content = entry.getContent();
      Customer cust = content.getJAXBObject(Customer.class);
   }
}

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.