annotate src/fdl/test/debug/AcceptXMLCallback.java @ 122:ad73eacf560a default tip

remove warning
author e095732
date Thu, 07 Feb 2013 22:32:26 +0900
parents 3b877c9a44f5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
114
3b877c9a44f5 gather old packages
kazz
parents: 92
diff changeset
1 package fdl.test.debug;
92
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 import java.io.IOException;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 import java.io.StringReader;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 import java.nio.ByteBuffer;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 import javax.xml.parsers.DocumentBuilder;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 import javax.xml.parsers.DocumentBuilderFactory;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 import javax.xml.parsers.ParserConfigurationException;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 import org.w3c.dom.Document;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 import org.w3c.dom.Element;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 import org.w3c.dom.NodeList;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 import org.xml.sax.InputSource;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 import org.xml.sax.SAXException;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 import fdl.PSXCallback;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 import fdl.PSXLindaImpl;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 class AcceptXMLCallback implements PSXCallback {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 TupleId tid;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 NodeProperty np;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 TreeProperty tp;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 DebugProperty dp;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 private DocumentBuilderFactory dbFactory = null;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 private DocumentBuilder docBuilder = null;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 public AcceptXMLCallback(TupleId tid, NodeProperty np) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 this.tid = tid;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 this.np = np;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 dbFactory = DocumentBuilderFactory.newInstance();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 try {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 docBuilder = dbFactory.newDocumentBuilder();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 } catch (ParserConfigurationException e) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 e.printStackTrace();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 public void callback(ByteBuffer reply) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 String xml = new String(reply.array());
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 Debug.print(xml);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 parseXML(xml);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 np.ml.in(tid.id, this);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 protected void parseXML(String xml) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 Document doc = null;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 try {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 doc = docBuilder.parse(new InputSource(new StringReader(xml)));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 } catch (SAXException e) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 e.printStackTrace();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 } catch (IOException e) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 e.printStackTrace();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 Element root = doc.getDocumentElement();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 if(root.getTagName().equals("connections")) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 np.nodeId = Integer.parseInt(root.getAttribute("id"));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 if (np.nodeId == 0) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 np.ml.in(TupleId.START.id, new StartCallback(np, tp = new TreeProperty(np)));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 np.ml.in(TupleId.DEBUGSTART.id, new DebugStartCallback(np, dp = new DebugProperty()));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 NodeList connections = root.getElementsByTagName("connection");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 makeConnections(connections);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 } else if (root.getTagName().equals("routing")) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 Debug.print("Routing xml received!");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 NodeList routing = root.getElementsByTagName("source");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 for (int i = 0; i < routing.getLength(); i++) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 Element src = (Element) routing.item(i);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 Integer srcId = Integer.parseInt(src.getAttribute("id"));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 Routing r = np.nodes.get(TupleId.getTupleIdFromId(srcId));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 NodeList dest = src.getElementsByTagName("dest");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 for (int j = 0; j < dest.getLength(); j++) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 Element dst = (Element) dest.item(j);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 r.route.add(Integer.parseInt(dst.getAttribute("id")));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 switch (tid) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 case MANAGE:
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 np.connected = true;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 break;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 case DEBUG:
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 np.debugConnected = true;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 break;
122
ad73eacf560a remove warning
e095732
parents: 114
diff changeset
89 default:
ad73eacf560a remove warning
e095732
parents: 114
diff changeset
90 break;
92
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 if (np.connected && np.debugConnected) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 np.sendLocalHostName();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 Debug.print("Send local host name");
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 np.connected = np.debugConnected = false;
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 private void makeConnections(NodeList connections) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 for (int i = 0; i < connections.getLength(); i++) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 Element connection = (Element)connections.item(i);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 Element host = (Element)connection.getElementsByTagName("host").item(0);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 Element port = (Element)connection.getElementsByTagName("port").item(0);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 Element t = (Element)connection.getElementsByTagName("tid").item(0);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 int srcId = Integer.parseInt(connection.getAttribute("id"));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 String dstHostName = host.getTextContent();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 int dstPort = Integer.parseInt(port.getAttribute("id"));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 int dstId = Integer.parseInt(t.getAttribute("id"));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 try {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 PSXLindaImpl linda = (PSXLindaImpl) np.ml.open(dstHostName, dstPort);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 Routing r = new Routing(linda, dstId);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 np.nodes.put(TupleId.getTupleIdFromId(srcId), r);
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 np.ml.in(srcId, new RoutingCallback(TupleId.getTupleIdFromId(srcId), r, np, tp, dp));
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 } catch (IOException e) {
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 e.printStackTrace();
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 }
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
kazz <kazz@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 }