org.cybergarage.upnp.control.QueryRequest Maven / Gradle / Ivy
/******************************************************************
*
* CyberUPnP for Java
*
* Copyright (C) Satoshi Konno 2002
*
* File: QueryRequest.java
*
* Revision;
*
* 01/29/03
* - first revision.
* 09/02/03
* - Giordano Sassaroli
* - Error : redundant code, the setRequest method in QueryRequest invokes setURI even if after a couple of rows setRequestHost is invoked
*
******************************************************************/
package org.cybergarage.upnp.control;
import org.cybergarage.http.*;
import org.cybergarage.xml.*;
import org.cybergarage.soap.*;
import org.cybergarage.upnp.*;
public class QueryRequest extends ControlRequest
{
////////////////////////////////////////////////
// Constructor
////////////////////////////////////////////////
public QueryRequest()
{
}
public QueryRequest(HTTPRequest httpReq)
{
set(httpReq);
}
////////////////////////////////////////////////
// Qyery
////////////////////////////////////////////////
private Node getVarNameNode()
{
Node bodyNode = getBodyNode();
if (bodyNode == null)
return null;
if (bodyNode.hasNodes() == false)
return null;
Node queryStateVarNode = bodyNode.getNode(0);
if (queryStateVarNode == null)
return null;
if (queryStateVarNode.hasNodes() == false)
return null;
return queryStateVarNode.getNode(0);
}
public String getVarName()
{
Node node = getVarNameNode();
if (node == null)
return "";
return node.getValue();
}
////////////////////////////////////////////////
// setRequest
////////////////////////////////////////////////
public void setRequest(StateVariable stateVar)
{
Service service = stateVar.getService();
//String ctrlURL = service.getControlURL();
setRequestHost(service);
setEnvelopeNode(SOAP.createEnvelopeBodyNode());
Node envNode = getEnvelopeNode();
Node bodyNode = getBodyNode();
Node qeuryNode = createContentNode(stateVar);
bodyNode.addNode(qeuryNode);
setContent(envNode);
setSOAPAction(Control.QUERY_SOAPACTION);
}
////////////////////////////////////////////////
// Contents
////////////////////////////////////////////////
private Node createContentNode(StateVariable stateVar)
{
Node queryVarNode = new Node();
queryVarNode.setName(Control.NS, Control.QUERY_STATE_VARIABLE);
queryVarNode.setNameSpace(Control.NS, Control.XMLNS);
Node varNode = new Node();
varNode.setName(Control.NS, Control.VAR_NAME);
varNode.setValue(stateVar.getName());
queryVarNode.addNode(varNode);
return queryVarNode;
}
////////////////////////////////////////////////
// post
////////////////////////////////////////////////
public QueryResponse post()
{
SOAPResponse soapRes = postMessage(getRequestHost(), getRequestPort());
return new QueryResponse(soapRes);
}
}