[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