package sample_consumers;
import javax.servlet.http.HttpServletRequest;
import java.util.Vector;
import java.util.Enumeration;
import javax.naming.InitialContext;
import javax.xml.rpc.Stub;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
public class DomClientObj {
public Document doc;
public DsmlClient dsml;
private InitialContext ctx;
private DsmlClientService svc;
private DocumentBuilderFactory factory;
private DocumentBuilder builder;
private Vector v = new Vector();
private String identation = "";
public DomClientObj() {
setDomClientObj();
}
private void setDomClientObj() {
try {
ctx = new InitialContext();
svc = (DsmlClientService)
ctx.lookup("xmlrpc:soap:sample_consumers.DsmlClientService");
dsml = (DsmlClient) svc.getDsmlClientPort();
((Stub)dsml)._setProperty(
"javax.xml.rpc.service.endpoint.address",
"http://localhost:8080/novell-dsml/stream");
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
doc = builder.newDocument();
}
catch(Exception e) {
System.out.println("Error in 'setDomClientObj' of "
+ "DomClientObj: " + e.toString());
}
}
public void setAuthProperties(String dn, String pwd) {
((Stub)dsml)._setProperty("javax.xml.rpc.security.auth.username",dn);
((Stub)dsml)._setProperty("javax.xml.rpc.security.auth.password",pwd);
}
public void saveElement(Element e) {
saveElement(e, v, identation);
}
public void saveElement(Element element, Vector v, String iden) {
String eText = new String( iden + "<" + element.getNodeName());
NamedNodeMap nodeMap = element.getAttributes();
int attrNum = nodeMap.getLength();
for (int i=0; i<attrNum; i++) {
Attr attr = (Attr)nodeMap.item(i);
eText += " " + attr.getNodeName()+"=\"" + attr.getNodeValue() + "\"";
}
v.addElement(eText + ">");
for ( Node cNode = element.getFirstChild();
cNode != null;
cNode = cNode.getNextSibling()) {
int nodeType = cNode.getNodeType();
iden += " ";
if (nodeType == Node.ELEMENT_NODE) {
saveElement((Element)cNode, v, iden);
}
else if (nodeType == Node.TEXT_NODE) {
String nText = cNode.getNodeValue().trim();
if(nText.length() > 0) {
v.addElement(iden + nText);
}
}
iden = iden.substring(2);
}
v.addElement(iden + "</" + element.getNodeName() + ">");
if (iden.length() > 2) {
iden = iden.substring(2);
}
}
public void saveMessage(String msg) {
v.addElement(msg);
}
public Document getDocObj() {
return doc;
}
public DsmlClient getDSML() {
return dsml;
}
public DocumentBuilder getBuilder() {
return builder;
}
public String[] getDSMLLines() {
String[] s = new String[v.size()];
v.copyInto(s);
return s;
}
}