package org.openiot.sdum.client.rest;
/**
* Copyright (c) 2011-2014, OpenIoT
*
* This file is part of OpenIoT.
*
* OpenIoT is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* OpenIoT is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with OpenIoT. If not, see <http://www.gnu.org/licenses/>.
*
* Contact: OpenIoT mailto: info@openiot.eu
*/
import java.io.StringReader;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.stream.StreamSource;
import org.jboss.resteasy.client.ClientRequest;
import org.jboss.resteasy.client.ClientRequestFactory;
import org.jboss.resteasy.client.ClientResponse;
import org.openiot.commons.sdum.serviceresultset.model.PresentationAttr;
import org.openiot.commons.sdum.serviceresultset.model.SdumServiceResultSet;
import org.openiot.commons.sdum.serviceresultset.model.Widget;
import org.openiot.commons.sensortypes.model.SensorTypes;
import org.openiot.commons.sparql.protocoltypes.model.QueryResult;
import org.openiot.commons.sparql.result.model.Binding;
import org.openiot.commons.sparql.result.model.Result;
import org.openiot.commons.sparql.result.model.Results;
import org.openiot.commons.sparql.result.model.Variable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Nikos Kefalakis (nkef) e-mail: nkef@ait.edu.gr
* @author Stavros Petris (spet) e-mail: spet@ait.edu.gr
*/
public class ServiceDeliveryUtilityManagerClient
{
//logger
final static Logger logger = LoggerFactory.getLogger(ServiceDeliveryUtilityManagerClient.class);
static ClientRequestFactory clientRequestFactory;
public ServiceDeliveryUtilityManagerClient()
{
clientRequestFactory = new ClientRequestFactory(UriBuilder.
fromUri("http://localhost:8080/sdum.core").build());
}
public ServiceDeliveryUtilityManagerClient(String sdumURL)
{
clientRequestFactory = new ClientRequestFactory(UriBuilder.
fromUri(sdumURL).build());
}
public void welcomeMessage()
{
ClientRequest welcomeMessageClientRequest =
clientRequestFactory.createRelativeRequest("/rest/services");
welcomeMessageClientRequest.accept(MediaType.TEXT_PLAIN);
try {
String str = welcomeMessageClientRequest.get(String.class).getEntity();
logger.debug(str);
} catch (Exception e) {
logger.error("welcomeMessage getentity error",e);
}
}
public void pollForReport(String serviceID, String clientId, String token)
{
ClientRequest pollForReportClientRequest =
clientRequestFactory.createRelativeRequest("/rest/services/pollforreport");
pollForReportClientRequest.queryParameter("serviceID", serviceID);
pollForReportClientRequest.queryParameter("clientId", clientId);
pollForReportClientRequest.queryParameter("token", token);
pollForReportClientRequest.accept("application/xml");
// Handle the response
ClientResponse<String> response;
String str = null;
try {
response = pollForReportClientRequest.get(String.class);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
str = response.getEntity();
logger.debug(str);
} catch (Exception e) {
logger.error("pollForReport getentity error",e);
}
try {
String sdumServiceResultSet_JAXB_CONTEXT = "org.openiot.commons.sdum.serviceresultset.model";
JAXBContext context = JAXBContext
.newInstance(sdumServiceResultSet_JAXB_CONTEXT);
Unmarshaller um = context.createUnmarshaller();
SdumServiceResultSet sdumServiceResultSet = (SdumServiceResultSet) um
.unmarshal(new StreamSource(new StringReader(str)));
logger.debug("---------Service Query result---------");
for (QueryResult queryResult :sdumServiceResultSet.getQueryResult()){
for (Variable var : queryResult.getSparql().getHead().getVariable()) {
logger.debug("----var:---- " + var.getName());
}
for (Result result : queryResult.getSparql().getResults().getResult()) {
logger.debug("----result:---- ");
for (Binding binding : result.getBinding()) {
logger.debug("binding name: " + binding.getName());
logger.debug("literal: "
+ binding.getLiteral().getContent());
}
}
}
logger.debug("---------Service Presentation---------");
for (Widget widget : sdumServiceResultSet.getRequestPresentation()
.getWidget()) {
logger.debug("WidgetID: " + widget.getWidgetID());
for (PresentationAttr presentationAttr : widget
.getPresentationAttr()) {
logger.debug("WidgetAttrName: "
+ presentationAttr.getName() + " WidgetAttrValue: "
+ presentationAttr.getValue());
}
}
} catch (Exception e) {
logger.error("pollForReport unmarshall error",e);
}
}
public static void main(String[] args) throws Exception
{
ServiceDeliveryUtilityManagerClient sdumClient =
new ServiceDeliveryUtilityManagerClient();
sdumClient.welcomeMessage();
//sdumClient.pollForReport("nodeID://b47007");
}
}