wiki:RpRepDeployment

Version 6 (modified by s.meissner, 14 years ago) (diff)

--

Resource Endpoint

Table of Contents

  1. Role of Resource Endpoints
  2. Resource Provider's efforts
    1. Resource Access Interface
    2. RAI handler SensorType? class explained
    3. RPI methods:

Role of Resource Endpoints

The Resource Endpoint (REP) provides a standardised access to the sensors inside the test bed which are exposed as SENSEI Resources. The Resource Access Interface (RAI) is the standard RESTful interface provided to SENSEI users.

Each sensor of the test bed will have a counterpart on the REP modelled as a Resource. One REP can accommodate more Resources. A router will take care that a REST call will be directed to the Resource the call concerns.

Once a method on a Resource is called, the call will be translated into the proprietary call the sensor island gateway is able to handle. This Gateway inside the test bed will forward the call to the desired sensor.

Resource Provider's efforts

The REP is basically the adapter to the SENSEI system that needs to be implemented. The Java REP reference implementation provides some helpers to Resource Providers. The stubs for RPI and RAI methods are given in the example code.

Resource Access Interface

The RAI methods are provided by the RAI handler which is attached to the REP. The RAI handler presents the Resource the REP exposes to the SENSEI Resource Users. In the example project a com.sensinode.sensei.rep.rest.test.SensorType?.class is uses as an example for a RAI handler attached to the REP.

RAI handler SensorType? class explained

GET requests are handled by the method toXML(). This method returns the Observation & Measurement value in XML/RDF format.

@Get("xml")
public Representation toXml() {
	try {
		DomRepresentation representation = new DomRepresentation(
				MediaType.TEXT_XML);

		// read the Observation & Measurement value from the respective file
		String fileName = "./xml/sensors/" + sensorName + ".rdf";

		File file = new File(fileName);

		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();

		// Generate a DOM document
		Document doc = db.parse(file);
		doc.normalize();
		representation.setDocument(doc);

		// Returns the XML representation of this document.
		return representation;

	} catch (IOException e) {
		e.printStackTrace();
	} catch (ParserConfigurationException e) {
		e.printStackTrace();
	} catch (SAXException e) {
		e.printStackTrace();
	}
	return null;
}

POST requests are handled by:

  • public void acceptRepresentation(Representation entity)

The POST request is meant to be used to subscribe to sensor readings. A subscription needs to be sent in the POST body. The subscription handling is not yet standardised.

The describeXXX methods in the SensorType? class are used to create a WADL description of the Resource's RAI interface. In the currently used version of the Restlet framework the WADL support is not yet finalised, so that the WADL support cannot be guaranteed.

RPI methods:

  • public List<String> publishResourceDescription(String descriptionString)
  • public List<String> publishResourceDescription(ResourceDescription? desc)
  • public String updateResourceDescription(String resourceID, ResourceDescription? description)
  • public String deleteResourceDescription(List<String> resourceIDs)

Attachments (2)

Download all attachments as: .zip