Deprecating Technology.runSafe - BrwsrCtx.execute is good enough BrwsrCtxExec
authorJaroslav Tulach <jaroslav.tulach@netbeans.org>
Tue, 04 Mar 2014 17:32:54 +0100
branchBrwsrCtxExec
changeset 5753e6c5f24b12d
parent 574 7958c9c205d9
child 576 fef447226358
Deprecating Technology.runSafe - BrwsrCtx.execute is good enough
context/src/main/java/org/apidesign/html/context/spi/Contexts.java
context/src/main/java/org/netbeans/html/context/impl/CtxImpl.java
json/src/main/java/org/apidesign/html/json/spi/Technology.java
ko4j/src/main/java/org/netbeans/html/ko4j/FXContext.java
ko4j/src/main/java/org/netbeans/html/ko4j/KO4J.java
     1.1 --- a/context/src/main/java/org/apidesign/html/context/spi/Contexts.java	Tue Mar 04 17:09:22 2014 +0100
     1.2 +++ b/context/src/main/java/org/apidesign/html/context/spi/Contexts.java	Tue Mar 04 17:32:54 2014 +0100
     1.3 @@ -186,18 +186,4 @@
     1.4              return impl.build();
     1.5          }
     1.6      }
     1.7 -    
     1.8 -    /** Injects a {@link BrwsrCtx} into a technology registered by
     1.9 -     * {@link Builder#register(java.lang.Class, java.lang.Object, int)} when
    1.10 -     * appropriate context is created.
    1.11 -     * 
    1.12 -     * @since 0.7.6
    1.13 -     */
    1.14 -    public interface CtxAware {
    1.15 -        /** Injects associated context into an technology.
    1.16 -         * 
    1.17 -         * @param ctx the context this technology is registed in
    1.18 -         */
    1.19 -        public void injectCtx(BrwsrCtx ctx);
    1.20 -    }
    1.21  }
     2.1 --- a/context/src/main/java/org/netbeans/html/context/impl/CtxImpl.java	Tue Mar 04 17:09:22 2014 +0100
     2.2 +++ b/context/src/main/java/org/netbeans/html/context/impl/CtxImpl.java	Tue Mar 04 17:32:54 2014 +0100
     2.3 @@ -79,12 +79,6 @@
     2.4          final List<Bind<?>> arr = Collections.unmodifiableList(techs);
     2.5          CtxImpl impl = new CtxImpl(arr);
     2.6          BrwsrCtx ctx = CtxAccssr.getDefault().newContext(impl);
     2.7 -        for (Bind<?> b : arr) {
     2.8 -            if (b.impl instanceof Contexts.CtxAware) {
     2.9 -                Contexts.CtxAware aw = (Contexts.CtxAware)b.impl;
    2.10 -                aw.injectCtx(ctx);
    2.11 -            }
    2.12 -        }
    2.13          return ctx;
    2.14      }
    2.15  
     3.1 --- a/json/src/main/java/org/apidesign/html/json/spi/Technology.java	Tue Mar 04 17:09:22 2014 +0100
     3.2 +++ b/json/src/main/java/org/apidesign/html/json/spi/Technology.java	Tue Mar 04 17:32:54 2014 +0100
     3.3 @@ -42,6 +42,7 @@
     3.4   */
     3.5  package org.apidesign.html.json.spi;
     3.6  
     3.7 +import net.java.html.BrwsrCtx;
     3.8  import net.java.html.json.Model;
     3.9  import net.java.html.json.Models;
    3.10  
    3.11 @@ -108,7 +109,9 @@
    3.12       * runSafe method.
    3.13       * 
    3.14       * @param r the runnable to execute
    3.15 +     * @deprecated Use {@link BrwsrCtx#execute(java.lang.Runnable)}
    3.16       */
    3.17 +    @Deprecated
    3.18      public void runSafe(Runnable r);
    3.19  
    3.20      /** For certain rendering technologies it may be more efficient to register
     4.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/FXContext.java	Tue Mar 04 17:09:22 2014 +0100
     4.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/FXContext.java	Tue Mar 04 17:32:54 2014 +0100
     4.3 @@ -49,12 +49,9 @@
     4.4  import java.io.InputStreamReader;
     4.5  import java.io.Reader;
     4.6  import java.net.URL;
     4.7 -import java.util.concurrent.Executor;
     4.8  import java.util.logging.Logger;
     4.9 -import net.java.html.BrwsrCtx;
    4.10  import net.java.html.js.JavaScriptBody;
    4.11  import org.apidesign.html.boot.spi.Fn;
    4.12 -import org.apidesign.html.context.spi.Contexts;
    4.13  import org.apidesign.html.json.spi.FunctionBinding;
    4.14  import org.apidesign.html.json.spi.JSONCall;
    4.15  import org.apidesign.html.json.spi.PropertyBinding;
    4.16 @@ -71,51 +68,16 @@
    4.17   */
    4.18  final class FXContext
    4.19  implements Technology.BatchInit<Object>, Technology.ValueMutated<Object>,
    4.20 -Transfer, WSTransfer<LoadWS>, Contexts.CtxAware {
    4.21 +Transfer, WSTransfer<LoadWS> {
    4.22      static final Logger LOG = Logger.getLogger(FXContext.class.getName());
    4.23 -    private static Boolean javaScriptEnabled;
    4.24 -    private BrwsrCtx browserContext;
    4.25      private Object[] jsObjects;
    4.26      private int jsIndex;
    4.27  
    4.28      public FXContext(Fn.Presenter browserContext) {
    4.29 -        Contexts.Builder cb = Contexts.newBuilder();
    4.30 -        if (browserContext instanceof Executor) {
    4.31 -            cb.register(Executor.class, (Executor)browserContext, 1000);
    4.32 -        }
    4.33 -        this.browserContext = cb.build();
    4.34      }
    4.35      
    4.36 -    @JavaScriptBody(args = {}, body = "if (window) return true; else return false;")
    4.37 -    private static boolean isJavaScriptEnabledJs() {
    4.38 -        return false;
    4.39 -    }
    4.40 -    
    4.41 -    static boolean isJavaScriptEnabled() {
    4.42 -        if (javaScriptEnabled != null) {
    4.43 -            return javaScriptEnabled;
    4.44 -        }
    4.45 -        if (!(javaScriptEnabled = isJavaScriptEnabledJs())) {
    4.46 -            Closeable c = Fn.activate(new TrueFn());
    4.47 -            try {
    4.48 -                javaScriptEnabled = isJavaScriptEnabledJs();
    4.49 -            } finally {
    4.50 -                try {
    4.51 -                    c.close();
    4.52 -                } catch (IOException ex) {
    4.53 -                    // cannot happen
    4.54 -                }
    4.55 -            }
    4.56 -        }
    4.57 -        return javaScriptEnabled;
    4.58 -    }
    4.59 -
    4.60 +    @JavaScriptBody(args = {}, body = "if (window.WebSocket) return true; else return false;")
    4.61      final boolean areWebSocketsSupported() {
    4.62 -        return isWebSocket();
    4.63 -    }
    4.64 -
    4.65 -    @JavaScriptBody(args = {}, body = "if (window.WebSocket) return true; else return false;")
    4.66 -    private static boolean isWebSocket() {
    4.67          return false;
    4.68      }
    4.69  
    4.70 @@ -232,7 +194,8 @@
    4.71  
    4.72      @Override
    4.73      public void runSafe(final Runnable r) {
    4.74 -        browserContext.execute(r);
    4.75 +        LOG.warning("Technology.runSafe has been deprecated. Use BrwsrCtx.execute!");
    4.76 +        r.run();
    4.77      }
    4.78  
    4.79      @Override
    4.80 @@ -250,11 +213,6 @@
    4.81          socket.close();
    4.82      }
    4.83  
    4.84 -    @Override
    4.85 -    public void injectCtx(BrwsrCtx ctx) {
    4.86 -        browserContext = ctx;
    4.87 -    }
    4.88 -
    4.89      private static final class TrueFn extends Fn implements Fn.Presenter {
    4.90          @Override
    4.91          public Object invoke(Object thiz, Object... args) throws Exception {
     5.1 --- a/ko4j/src/main/java/org/netbeans/html/ko4j/KO4J.java	Tue Mar 04 17:09:22 2014 +0100
     5.2 +++ b/ko4j/src/main/java/org/netbeans/html/ko4j/KO4J.java	Tue Mar 04 17:32:54 2014 +0100
     5.3 @@ -116,12 +116,10 @@
     5.4       */
     5.5      @Override
     5.6      public void fillContext(Contexts.Builder context, Class<?> requestor) {
     5.7 -        if (FXContext.isJavaScriptEnabled()) {
     5.8 -            context.register(Technology.class, knockout(), 100);
     5.9 -            context.register(Transfer.class, transfer(), 100);
    5.10 -            if (c.areWebSocketsSupported()) {
    5.11 -                context.register(WSTransfer.class, websockets(), 100);
    5.12 -            }
    5.13 +        context.register(Technology.class, knockout(), 100);
    5.14 +        context.register(Transfer.class, transfer(), 100);
    5.15 +        if (c.areWebSocketsSupported()) {
    5.16 +            context.register(WSTransfer.class, websockets(), 100);
    5.17          }
    5.18      }
    5.19