3.2. Services Resource

The /services link indicated in Section 3.1, “HomePageResource” corresponds to the ServicesResource:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

public interface ServicesResource {

  @GET
  @Produces( {"application/xhtml+xml", "text/html"} )
  @Path("/")
  public String services();
}

The implementation of this interface in Restful Objects viewer (ServicesResourceImpl) also defines a @Path("/services") for the class as a whole. This therefore defines a URL in the form /services supporting the GET method.

Note

I believe that the @Path("/services") annotation should reside on the interface, not the implementation. This seems to be a limitation with RestEasy, the underlying library used by Restful Objects. Certainly for RestEasy 1.0.2 and also 1.1-rc2 this did not work, however.

Here's the resource that's returned, as shown in a browser:

The first two sections are the same; what's new is the list of services, corresponding to the registered services in nakedobjects.properties. The XHTML for this is:

<?xml version="1.0"?>
<html>
  <head><title>Services</title></head>
  <body id="body">
    ...
    <div class="nof-section">
      <p class="nof-section">Services</p>
      <ul class="nof-services">
        <li>
          <a href="/object/OID:1" rel="service" rev="services" class="nof-service">
            Employees
          </a>
        </li>
        <li>
          <a href="/object/OID:2" rel="service" rev="services" class="nof-service">
            Claims
          </a>
        </li>
      </ul>
    </div>
  </body>
</html>

Again, we can use XPath to pull back the resources:

And let's look at object resources next.