This is an automated email from the ASF dual-hosted git repository.

jtulach pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans-html4j.git

commit ae7d00a2693e25492a16eae3cd96c2da6bb9b8a1
Author: Jaroslav Tulach <jaroslav.tul...@apidesign.org>
AuthorDate: Thu Dec 24 07:17:34 2020 +0100

    Allow only one deferred processing before flush
---
 .../main/java/org/netbeans/html/presenters/spi/Generic.java  | 12 ++++++++++--
 .../org/netbeans/html/presenters/spi/test/GenericTCK.java    |  2 +-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git 
a/generic/src/main/java/org/netbeans/html/presenters/spi/Generic.java 
b/generic/src/main/java/org/netbeans/html/presenters/spi/Generic.java
index 723a3c9..3204355 100644
--- a/generic/src/main/java/org/netbeans/html/presenters/spi/Generic.java
+++ b/generic/src/main/java/org/netbeans/html/presenters/spi/Generic.java
@@ -706,6 +706,7 @@ abstract class Generic implements Fn.Presenter, 
Fn.KeepAlive, Flushable {
     }
 
     private StringBuilder deferred;
+    private boolean deferredDisabled;
     private Collection<Object> arguments = new LinkedList<Object>();
 
     private StringBuilder getDeferred(boolean clear) {
@@ -713,6 +714,9 @@ abstract class Generic implements Fn.Presenter, 
Fn.KeepAlive, Flushable {
         StringBuilder sb = deferred;
         if (clear) {
             deferred = null;
+            if (sb != null) {
+                deferredDisabled = true;
+            }
         }
         return sb;
     }
@@ -753,6 +757,9 @@ abstract class Generic implements Fn.Presenter, 
Fn.KeepAlive, Flushable {
                 log(Level.FINE, "flush#{1}: {0}", def, id);
                 exec(id, Strings.flushExec(key, id).toString());
             }
+            if (topMostCall() == null) {
+                deferredDisabled = false;
+            }
         }
     }
 
@@ -931,9 +938,10 @@ abstract class Generic implements Fn.Presenter, 
Fn.KeepAlive, Flushable {
             arguments.add(args);
 
             synchronized (lock()) {
+                boolean synchronizedExecution = wait4js || deferredDisabled;
                 int callId = nextCallId();
-                sb.insert(0, Strings.invokeImplFn(id, wait4js, key, callId));
-                if (wait4js) {
+                sb.insert(0, Strings.invokeImplFn(id, synchronizedExecution, 
key, callId));
+                if (synchronizedExecution) {
                     return exec(callId, sb.toString());
                 } else {
                     deferExec(sb);
diff --git 
a/generic/src/test/java/org/netbeans/html/presenters/spi/test/GenericTCK.java 
b/generic/src/test/java/org/netbeans/html/presenters/spi/test/GenericTCK.java
index 872ad98..8c0ba9a 100644
--- 
a/generic/src/test/java/org/netbeans/html/presenters/spi/test/GenericTCK.java
+++ 
b/generic/src/test/java/org/netbeans/html/presenters/spi/test/GenericTCK.java
@@ -58,7 +58,7 @@ final class GenericTCK extends JavaScriptTCK {
                     }
                 }
             });
-            cdl.await(3, TimeUnit.SECONDS);
+            cdl.await(1, TimeUnit.SECONDS);
             if (error[0] != null) {
                 throw error[0];
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to