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