[jboss-svn-commits] JBL Code SVN: r6012 - in labs/jbosslabs/trunk/portal-extensions/portal-dnd: . dndRenderer.war/js/portal src/java/org/jboss/portal/core/theme/render/impl src/java/org/jboss/portal/dnd test

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 29 18:19:47 EDT 2006


Author: szimano
Date: 2006-08-29 18:19:43 -0400 (Tue, 29 Aug 2006)
New Revision: 6012

Added:
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/ajaxAsserts.js
Modified:
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/portal/PortalDD.js
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/packaging-build.xml
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDTools.java
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/dnd/DnDAjaxServlet.java
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/testPortletDrop.html
Log:
added ajax test prototype JBLAB-728

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/portal/PortalDD.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/portal/PortalDD.js	2006-08-29 21:47:11 UTC (rev 6011)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/portal/PortalDD.js	2006-08-29 22:19:43 UTC (rev 6012)
@@ -4,6 +4,10 @@
 var borderTopBefore = "";
 var ajaxEnabled = true;
 
+var ajaxURI = "/dndRenderer/ajax";
+
+var host = "";
+
 function setAjaxEnabled(enabled) {
 	ajaxEnabled = enabled;
 }
@@ -53,10 +57,10 @@
 		{ 
 		  success:handleSuccess, 
 		  failure: handleFailure, 
-		  argument: ['foo','bar'] 
+		  argument: [] 
 		}; 
 		
-		var request = YAHOO.util.Connect.asyncRequest('POST', "/dndRenderer/ajax", callback, postData);
+		var request = YAHOO.util.Connect.asyncRequest('POST', host+ajaxURI, callback, postData);
 	}
 }
 

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/packaging-build.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/packaging-build.xml	2006-08-29 21:47:11 UTC (rev 6011)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/packaging-build.xml	2006-08-29 22:19:43 UTC (rev 6012)
@@ -8,6 +8,8 @@
 		<jar destfile="target/dndRenderer.war">
 			<zipfileset dir="dndRenderer.war" />
 			<zipfileset dir="target/classes" prefix="WEB-INF/classes" />
+			<zipfileset dir="jsunit" prefix="test" />
+			<zipfileset dir="test" prefix="test" />
 		</jar>
 	</target>
 

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDTools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDTools.java	2006-08-29 21:47:11 UTC (rev 6011)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDTools.java	2006-08-29 22:19:43 UTC (rev 6012)
@@ -25,6 +25,7 @@
 			+ "<script type='text/javascript' src='/dndRenderer/js/dragdrop/dragdrop-debug.js' ></script>\n"
 			+ "<script type='text/javascript' src='/dndRenderer/js/connection/connection.js' ></script>\n"
 			+ "<script type='text/javascript' src='/dndRenderer/js/portal/PortalDD.js' ></script>\n\n\n"
+			// comment out everything under this if you don't wanna have the logger
 			
 			+ "<script type='text/javascript'>"
 			+ "var myLogReader1 = new YAHOO.widget.LogReader(null, { newestOnTop: true, height: \"400px\" });"

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/dnd/DnDAjaxServlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/dnd/DnDAjaxServlet.java	2006-08-29 21:47:11 UTC (rev 6011)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/dnd/DnDAjaxServlet.java	2006-08-29 22:19:43 UTC (rev 6012)
@@ -20,10 +20,14 @@
 
 	private static final String PERSIST = "PERSIST";
 
+	private static final String TEST_MODE = "TEST_MODE";
+
 	private final static Logger log = Logger.getLogger(DnDAjaxServlet.class);
-	
-	private DnDPersistance persistance =  new DnDPersistanceImpl();
 
+	private DnDPersistance persistance = new DnDPersistanceImpl();
+
+	private boolean testMode = false;
+
 	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
 			throws ServletException, IOException {
 		doPost(req, resp);
@@ -53,12 +57,30 @@
 					return;
 				}
 
-				persistance.persistPosition(req.getParameter("positionNo"), req
-						.getParameter("windowId"), req
-						.getParameter("oldRegionId"), req
-						.getParameter("newRegionId"));
+				if (!testMode) {
+					persistance.persistPosition(req.getParameter("positionNo"),
+							req.getParameter("windowId"), req
+									.getParameter("oldRegionId"), req
+									.getParameter("newRegionId"));
+				}
 
 				sendResp(resp, "Position persisted");
+			} else if (req.getParameter("action").equals(TEST_MODE)) {
+				if (req.getParameter("mode") != null) {
+					try {
+						testMode = Boolean.valueOf(req.getParameter("mode"))
+								.booleanValue();
+					} catch (RuntimeException e) {
+						resp.sendError(400, "Bad arguments");
+						return;
+					}
+					
+					sendResp(resp, ((testMode) ? "Test mode ON" : "Test mode OFF"));
+
+				} else {
+					resp.sendError(400, "Not enought parameters");
+					return;
+				}
 			} else {
 				resp.sendError(400, "Unknown ajax call");
 				return;

Added: labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/ajaxAsserts.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/ajaxAsserts.js	2006-08-29 21:47:11 UTC (rev 6011)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/ajaxAsserts.js	2006-08-29 22:19:43 UTC (rev 6012)
@@ -0,0 +1,142 @@
+var ajaxFailMsg;
+var ajaxFailComment;
+var ajaxFailed = false;
+
+var ajaxProcessed = false;
+
+function ajaxStart() {
+	ajaxProcessed = false;
+}
+
+function ajaxEnd() {
+	ajaxProcessed = true;
+	inform("Ending ajax");	
+}
+
+function invokeTestAjax(postData, handleSuccess, handleFailure) {
+	ajaxStart();
+	
+	var callback = 
+	{ 
+	  success:handleSuccess, 
+	  failure: handleFailure, 
+	  argument: [] 
+	}; 
+
+	var request = YAHOO.util.Connect.asyncRequest('POST', host+ajaxURI, callback, postData);
+	
+	
+	while (!isAjaxProcessed()) {
+		// wait till call is processed
+		//waitForAjax();
+		inform(isAjaxProcessed());
+	}
+	
+	handleAjaxError();
+}
+
+function waitForAjax()
+{
+	//wait half second
+	var millis = 500;
+	
+	date = new Date();
+	var curDate = null;
+	
+	do { var curDate = new Date(); }
+	while(curDate - date < millis);
+	
+} 
+
+function isAjaxProcessed() {
+	return ajaxProcessed;
+}
+
+function handleAjaxError() {
+	inform("handle error "+ajaxFailed);
+	
+	if(ajaxFailed) {
+		ajaxFailed = false;
+		throw new JSUnitException(ajaxFailComment,ajaxFailMsg);
+	}
+}
+		
+function _assertAjax(comment, booleanValue, failureMessage) {
+	if (!booleanValue) {
+		ajaxFailMsg = failureMessage;
+		ajaxFailComment = comment;
+		ajaxFailed = true;
+	}
+}
+
+function _trueTypeOfAjax(something) {
+    var result = typeof something;
+    try {
+        switch (result) {
+            case 'string':
+            case 'boolean':
+            case 'number':
+                break;
+            case 'object':
+            case 'function':
+                switch (something.constructor)
+                        {
+                    case String:
+                        result = 'String';
+                        break;
+                    case Boolean:
+                        result = 'Boolean';
+                        break;
+                    case Number:
+                        result = 'Number';
+                        break;
+                    case Array:
+                        result = 'Array';
+                        break;
+                    case RegExp:
+                        result = 'RegExp';
+                        break;
+                    case Function:
+                        result = 'Function';
+                        break;
+                    default:
+                        var m = something.constructor.toString().match(/function\s*([^( ]+)\(/);
+                        if (m)
+                            result = m[1];
+                        else
+                            break;
+                }
+                break;
+        }
+    }
+    finally {
+        result = result.substr(0, 1).toUpperCase() + result.substr(1);
+        return result;
+    }
+}
+
+function _displayStringForValueAjax(aVar) {
+    var result = '<' + aVar + '>';
+    if (!(aVar === null || aVar === top.JSUNIT_UNDEFINED_VALUE)) {
+        result += ' (' + _trueTypeOfAjax(aVar) + ')';
+    }
+    return result;
+}
+
+function _validateArgumentsAjax(expectedNumberOfNonCommentArgs, args) {
+    if (!( args.length == expectedNumberOfNonCommentArgs ||
+           (args.length == expectedNumberOfNonCommentArgs + 1 && typeof(args[0]) == 'string') ))
+        error('Incorrect arguments passed to assert function');
+}
+
+function assertEqualsAjax() {
+    _validateArgumentsAjax(2, arguments);
+    var var1 = nonCommentArg(1, 2, arguments);
+    var var2 = nonCommentArg(2, 2, arguments);
+    inform("assert " + (var1 === var2));
+    _assertAjax(commentArg(2, arguments), var1 === var2, 'Expected ' + _displayStringForValueAjax(var1) + ' but was ' + _displayStringForValueAjax(var2));
+}
+
+function failAjax(failureMessage) {
+    _assertAjax("Call fail()", false, failureMessage);
+}
\ No newline at end of file

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/testPortletDrop.html
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/testPortletDrop.html	2006-08-29 21:47:11 UTC (rev 6011)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/test/testPortletDrop.html	2006-08-29 22:19:43 UTC (rev 6012)
@@ -7,17 +7,21 @@
     <!-- JSUnit lib -->
     <script language="JavaScript" type="text/javascript" src="jsUnitCore.js"></script>
     
+    <!-- Ajax asserts -->
+    <script language="JavaScript" type="text/javascript" src="ajaxAsserts.js"></script>
+    
     <!-- All used YUI and portal ajax libs -->
-    <script language="JavaScript" type='text/javascript' src='../dndRenderer.war/js/yahoo/yahoo.js' ></script>
-    <script language="JavaScript" type='text/javascript' src='../dndRenderer.war/js/event/event.js' ></script>
-    <script language="JavaScript" type='text/javascript' src='../dndRenderer.war/js/dom/dom.js'></script>
-    <script language="JavaScript" type='text/javascript' src='../dndRenderer.war/js/logger/logger.js' ></script>
-    <script language="JavaScript" type='text/javascript' src='../dndRenderer.war/js/dragdrop/dragdrop-debug.js' ></script>
-    <script language="JavaScript" type='text/javascript' src='../dndRenderer.war/js/connection/connection.js' ></script>
-    <script language="JavaScript" type='text/javascript' src='../dndRenderer.war/js/portal/PortalDD.js' ></script>
+    <script language="JavaScript" type='text/javascript' src='/dndRenderer/js/yahoo/yahoo.js' ></script>
+    <script language="JavaScript" type='text/javascript' src='/dndRenderer/js/event/event.js' ></script>
+    <script language="JavaScript" type='text/javascript' src='/dndRenderer/js/dom/dom.js'></script>
+    <script language="JavaScript" type='text/javascript' src='/dndRenderer/js/logger/logger.js' ></script>
+    <script language="JavaScript" type='text/javascript' src='/dndRenderer/js/dragdrop/dragdrop-debug.js' ></script>
+    <script language="JavaScript" type='text/javascript' src='/dndRenderer/js/connection/connection.js' ></script>
+    <script language="JavaScript" type='text/javascript' src='/dndRenderer/js/portal/PortalDD.js' ></script>
     
 					
     <script language="JavaScript" type="text/javascript">
+    	
     	var ddPortletregionNumberOne0, ddPortletregionNumberOne1, regionDropregionNumberOne;
     	var ddPortletregionNumberTwo0, ddPortletregionNumberTwo1, regionDropregionNumberTwo;
     	
@@ -75,7 +79,40 @@
 			// parents should match now
 			assertEquals("Parents don't match", ddPortletregionNumberTwo0.getEl().parentNode, ddPortletregionNumberOne0.getEl().parentNode);
 		}
-
+		
+		// next tests need running instance of JBPortal with ajax servlet enabled
+		
+		function testTestMode() {
+			var postdata = "action=TEST_MODE&mode=true";
+			
+			var handle = function(o) {
+				inform("bim");
+				assertEqualsAjax("Wrong response", o.responseText, "Test mode ONs");
+				ajaxEnd();
+			}
+			var error = function(o) {
+				inform("bom");
+				failAjax("Ajax call failed");
+				ajaxEnd();
+			}
+			
+			invokeTestAjax(postdata, handle, error);
+			
+			var postdata2 = "action=TEST_MODE&mode=false";
+			
+			var handle2 = function(o) {
+				assertEqualsAjax("Wrong response", o.responseText, "Test mode OFFs");
+				ajaxEnd()
+			}
+			var error2 = function(o) {
+				failAjax("Ajax call failed");
+				ajaxEnd()
+			}
+			
+			invokeTestAjax(postdata2, handle2, error2);
+		}
+		
+		
     </script>
     
 </head>




More information about the jboss-svn-commits mailing list