|  | [//]: # " Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. " | 
|  | [//]: # " " | 
|  | [//]: # " This program and the accompanying materials are made available under the " | 
|  | [//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at " | 
|  | [//]: # " http://www.eclipse.org/org/documents/edl-v10.php. " | 
|  | [//]: # " " | 
|  | [//]: # " SPDX-License-Identifier: BSD-3-Clause " | 
|  |  | 
|  | Declarative Hyperlinking Example | 
|  | ================================ | 
|  |  | 
|  | This example demonstrates how to use the declarative hyperlink | 
|  | annotations. | 
|  |  | 
|  | Contents | 
|  | -------- | 
|  |  | 
|  | The example consists of one resource class and one representation class | 
|  | along with a couple of model classes: | 
|  |  | 
|  | `org.glassfish.jersey.examples.linking.resources.ItemResource` | 
|  |  | 
|  | A resource class that produces a XML response to an HTTP GET. | 
|  |  | 
|  | `com.sun.jersey.samples.linking.representation.ItemRepresentation` | 
|  |  | 
|  | A JAXB representation class used to produce XML. This class also | 
|  | contains @Link and @Ref annotations to produce hyperlinks in the | 
|  | XML document. | 
|  |  | 
|  | The mapping of the URI path space is presented in the following table: | 
|  |  | 
|  | URI path               | Resource class   | HTTP methods | 
|  | ---------------------- | ---------------- | -------------- | 
|  | **_/items/{index}_**   | ItemResource     | GET | 
|  |  | 
|  | Sample Response | 
|  | --------------- | 
|  |  | 
|  | You can access resources of this application also using curl: | 
|  |  | 
|  | >     curl -v http://localhost:8080/items/1 | 
|  |  | 
|  | In this example you should see an XML snippet with a next and a previous | 
|  | link. | 
|  |  | 
|  | ```xml | 
|  | <item> | 
|  | <name>Item 1</name> | 
|  | <link href="http://localhost:8080/items/1" rel="self"/> | 
|  | <links> | 
|  | <link href="http://localhost:8080/items/2" rel="next"/> | 
|  | <link href="http://localhost:8080/items/0" rel="prev"/> | 
|  | </links> | 
|  | </item> | 
|  | ``` | 
|  |  | 
|  | Running the Example | 
|  | ------------------- | 
|  |  | 
|  | Run the example as follows: | 
|  |  | 
|  | >     mvn clean compile exec:java | 
|  |  | 
|  | This deploys current example using Grizzly. You can access the | 
|  | application at: | 
|  |  | 
|  | -   <http://localhost:8080/items/0>\ | 
|  | -   <http://localhost:8080/items/1>\ | 
|  | -   <http://localhost:8080/items/2>\ | 
|  | -   <http://localhost:8080/items/3>\ | 
|  | -   <http://localhost:8080/items/4>\ | 
|  |  | 
|  | Notice how the first has a self link, a next link but no previous link, | 
|  | the second, third and fourth have all three and the last one only has a | 
|  | self link and prev link. | 
|  |  | 
|  | Observe the HTTP headers included in the responses (e.g. via `curl -v`). | 
|  | Notice that there is a HTTP Link header for next and previous when | 
|  | appropriate. |