[teiid-commits] teiid SVN: r3985 - in branches/7.7.x: client/src/main/java/org/teiid/client/plan and 2 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Apr 10 10:45:14 EDT 2012


Author: shawkins
Date: 2012-04-10 10:45:13 -0400 (Tue, 10 Apr 2012)
New Revision: 3985

Modified:
   branches/7.7.x/client/src/main/java/org/teiid/adminapi/impl/DQPManagement.java
   branches/7.7.x/client/src/main/java/org/teiid/client/plan/PlanNode.java
   branches/7.7.x/client/src/test/java/org/teiid/client/plan/TestPlanNode.java
   branches/7.7.x/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java
Log:
TEIID-1985 changing return type to string/xml

Modified: branches/7.7.x/client/src/main/java/org/teiid/adminapi/impl/DQPManagement.java
===================================================================
--- branches/7.7.x/client/src/main/java/org/teiid/adminapi/impl/DQPManagement.java	2012-04-10 01:09:15 UTC (rev 3984)
+++ branches/7.7.x/client/src/main/java/org/teiid/adminapi/impl/DQPManagement.java	2012-04-10 14:45:13 UTC (rev 3985)
@@ -25,7 +25,6 @@
 import java.util.List;
 
 import org.teiid.adminapi.AdminException;
-import org.teiid.client.plan.PlanNode;
 
 
 public interface DQPManagement {
@@ -50,8 +49,8 @@
      * 
      * @param sessionId
      * @param requestId
-     * @return the plan or null if the request does not exist
+     * @return the plan as XML or null if the request does not exist
      * @throws AdminException
      */
-    PlanNode getPlan(String sessionId, long requestId) throws AdminException;
+    String getPlan(String sessionId, long requestId) throws AdminException;
 }

Modified: branches/7.7.x/client/src/main/java/org/teiid/client/plan/PlanNode.java
===================================================================
--- branches/7.7.x/client/src/main/java/org/teiid/client/plan/PlanNode.java	2012-04-10 01:09:15 UTC (rev 3984)
+++ branches/7.7.x/client/src/main/java/org/teiid/client/plan/PlanNode.java	2012-04-10 14:45:13 UTC (rev 3985)
@@ -26,6 +26,7 @@
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
+import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.Arrays;
 import java.util.Collections;
@@ -35,6 +36,7 @@
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
@@ -183,6 +185,28 @@
     	}
     }
     
+    public static PlanNode fromXml(String planString) {
+    	try {
+	    	JAXBContext jc = JAXBContext.newInstance(new Class<?>[] {PlanNode.class});
+			Unmarshaller marshaller = jc.createUnmarshaller();
+			PlanNode planNode = (PlanNode) marshaller.unmarshal(new StringReader(planString));
+			setParents(planNode);
+			return planNode;
+    	} catch (JAXBException e) {
+    		//shouldn't happen
+    		throw new TeiidRuntimeException(e);
+    	}
+    }
+
+	private static void setParents(PlanNode planNode) {
+		for (Property property : planNode.properties) {
+			if (property.planNode != null) {
+				property.planNode.parent = planNode;
+				setParents(property.planNode);
+			}
+		}
+	}
+    
     @Override
     public String toString() {
     	StringBuilder builder = new StringBuilder();

Modified: branches/7.7.x/client/src/test/java/org/teiid/client/plan/TestPlanNode.java
===================================================================
--- branches/7.7.x/client/src/test/java/org/teiid/client/plan/TestPlanNode.java	2012-04-10 01:09:15 UTC (rev 3984)
+++ branches/7.7.x/client/src/test/java/org/teiid/client/plan/TestPlanNode.java	2012-04-10 14:45:13 UTC (rev 3985)
@@ -22,21 +22,18 @@
 
 package org.teiid.client.plan;
 
+import static org.junit.Assert.*;
+
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
-import junit.framework.TestCase;
+import org.junit.Test;
 
 
 /**
  */
-public class TestPlanNode extends TestCase {
+public class TestPlanNode {
 
-    public TestPlanNode(String name) {
-        super(name);
-    }
-    
     public static PlanNode example1() {
     	PlanNode map = new PlanNode("x"); //$NON-NLS-1$ 
     	map.addProperty("test", ""); //$NON-NLS-1$ //$NON-NLS-2$
@@ -61,11 +58,17 @@
         return map;
     }
 
-    public void testXml() throws Exception {
+    @Test public void testXml() throws Exception {
         assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<node name=\"x\">\n    <property name=\"test\">\n        <value></value>\n    </property>\n    <property name=\"string\">\n        <value>string</value>\n    </property>\n    <property name=\"list&lt;string&gt;\">\n        <value>item1</value>\n        <value>item2</value>\n        <value>item3</value>\n    </property>\n    <property name=\"child\">\n        <node name=\"y\">\n            <property name=\"outputCols\">\n                <value>Name (string)</value>\n                <value>Year (integer)</value>\n            </property>\n            <property name=\"Join Type\">\n                <value>INNER JOIN</value>\n            </property>\n            <property name=\"Criteria\">\n                <value>Item.ID = History.ID</value>\n            </property>\n            <property name=\"Other\"/>\n        </node>\n    </property>\n</node>\n", example1().toXml()); //$NON-NLS-1$
     }
+    
+    @Test public void testXmlRoundtrip() throws Exception {
+    	String planString = example1().toXml();
+    	PlanNode planNode = PlanNode.fromXml(planString);
+        assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<node name=\"x\">\n    <property name=\"test\">\n        <value></value>\n    </property>\n    <property name=\"string\">\n        <value>string</value>\n    </property>\n    <property name=\"list&lt;string&gt;\">\n        <value>item1</value>\n        <value>item2</value>\n        <value>item3</value>\n    </property>\n    <property name=\"child\">\n        <node name=\"y\">\n            <property name=\"outputCols\">\n                <value>Name (string)</value>\n                <value>Year (integer)</value>\n            </property>\n            <property name=\"Join Type\">\n                <value>INNER JOIN</value>\n            </property>\n            <property name=\"Criteria\">\n                <value>Item.ID = History.ID</value>\n            </property>\n            <property name=\"Other\"/>\n        </node>\n    </property>\n</node>\n", planNode.toXml()); //$NON-NLS-1$
+    }
 
-    public void testText() throws Exception {
+    @Test public void testText() throws Exception {
         assertEquals("x\n  + test:\n  + string:string\n  + list<string>:\n    0: item1\n    1: item2\n    2: item3\n  + child:\n    y\n      + outputCols:\n        0: Name (string)\n        1: Year (integer)\n      + Join Type:INNER JOIN\n      + Criteria:Item.ID = History.ID\n      + Other\n", example1().toString()); //$NON-NLS-1$
     }
     

Modified: branches/7.7.x/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java
===================================================================
--- branches/7.7.x/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java	2012-04-10 01:09:15 UTC (rev 3984)
+++ branches/7.7.x/jboss-integration/src/main/java/org/teiid/jboss/deployers/RuntimeEngineDeployer.java	2012-04-10 14:45:13 UTC (rev 3985)
@@ -516,8 +516,12 @@
 
 	@Override
     @ManagementOperation(description="Get a plan for the request",params={@ManagementParameter(name="sessionId",description="The session Identifier"), @ManagementParameter(name="executionId",description="The Execution Identifier")})    
-    public PlanNode getPlan(String sessionId, long executionId) throws AdminException {
-		return this.dqpCore.getPlan(sessionId, executionId);
+    public String getPlan(String sessionId, long executionId) throws AdminException {
+		PlanNode plan = this.dqpCore.getPlan(sessionId, executionId);
+		if (plan == null) {
+			return null;
+		}
+		return plan.toXml();
     }
     
 	@Override



More information about the teiid-commits mailing list