You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by jt...@apache.org on 2021/06/26 20:07:00 UTC

[netbeans-html4j] branch master updated: Perform the deferred JavaScript when method has already been done

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


The following commit(s) were added to refs/heads/master by this push:
     new d22fa01  Perform the deferred JavaScript when method has already been done
d22fa01 is described below

commit d22fa018ebaf2f8e50660b97ce62d61e6763e8ee
Author: Jaroslav Tulach <ja...@apidesign.org>
AuthorDate: Sat Jun 26 22:06:40 2021 +0200

    Perform the deferred JavaScript when method has already been done
---
 .../org/netbeans/html/presenters/spi/Generic.java  | 29 ++++++++++++++++------
 1 file changed, 22 insertions(+), 7 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 8389870..af0b99c 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
@@ -537,9 +537,9 @@ abstract class Generic implements Fn.Presenter, Fn.KeepAlive, Flushable {
                 return sj(finished);
             }
         }
-        protected final void inJava() {
+        protected final boolean inJava() {
             if (this.method == null) {
-                return;
+                return false;
             }
             if (done == null) {
                 done = false;
@@ -552,9 +552,12 @@ abstract class Generic implements Fn.Presenter, Fn.KeepAlive, Flushable {
                     done = true;
                     log(Level.FINE, "Result: {0}", result);
                 }
+                return false;
+            } else {
+                return done;
             }
         }
-        
+
         protected String js(boolean[] finished) {
             if (Boolean.TRUE.equals(done)) {
                 StringBuilder sb = new StringBuilder();
@@ -670,10 +673,16 @@ abstract class Generic implements Fn.Presenter, Fn.KeepAlive, Flushable {
         synchronized (lock()) {
             boolean[] finished = {false};
             for (;;) {
-                StringBuilder def = getDeferred(true);
+                StringBuilder def = getDeferred(false);
                 if (def != null) {
-                    def.insert(0, "javascript:");
-                    return def.toString();
+                    if (synchronous) {
+                        def = getDeferred(true);
+                        def.insert(0, "javascript:");
+                        return def.toString();
+                    }
+                    lock().notifyAll();
+                    lock().wait();
+                    continue;
                 }
                 finished[0] = false;
                 final Item top = dispatchPendingItem();
@@ -766,6 +775,7 @@ abstract class Generic implements Fn.Presenter, Fn.KeepAlive, Flushable {
                 final int id = nextCallId();
                 log(Level.FINE, "flush#{1}: {0}", def, id);
                 exec(id, Strings.flushExec(key, id).toString());
+                lock().notifyAll();
             }
             if (topMostCall() == null) {
                 resetDeferredDisabled();
@@ -820,7 +830,12 @@ abstract class Generic implements Fn.Presenter, Fn.KeepAlive, Flushable {
             }
             Item c = topMostCall();
             if (c != null) {
-                c.inJava();
+                if (c.inJava()) {
+                    StringBuilder def = getDeferred(true);
+                    if (def != null) {
+                        loadJS(def.toString());
+                    }
+                }
             }
             lock().notifyAll();
         }

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

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