Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Skal der implementeres nye events kræver det nye releases af nap-typescript-sdket.

Bro

En NAP bridge er et simpelt interface med en send-funktion og en callback handle.

Code Block
languagejs
interface NAPHostBridge {
  setCallback: (handler: { handle: (message: string) => void }) => void;
  send: (message: string) => void;
}

Et værtssystem skal ligge en sådan bridge på window.NAP.


Et eksempel hvordan denne injectes i nap-java-host:

Code Block
languagejava
package dk.sds.nap.integrations;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import dk.sds.nap.scenes.WebPane;
import netscape.javascript.JSObject;

public class EmbeddedJavascriptIntegration extends AbstractBaseIntegration implements Integration {
    private static ObjectMapper objectMapper = new ObjectMapper();
    public NAPBridge bridge = new NAPBridge();

    public EmbeddedJavascriptIntegration(final WebPane webPane) {
        webPane.addInterface("NAP", bridge);
    }

    @Override
    public void send(NAPEvent event) {
        System.out.println("napevent send: " + event.getType());
        System.out.println("payload: " + event.getPayload());
        final String eventRawJSONString;
        try {
            eventRawJSONString = objectMapper.writeValueAsString(event);
            this.bridge.bridge.call("handle", eventRawJSONString);
        } catch (JsonProcessingException jsonProcessingException) {
            System.out.println(this.getClass().getName()+ " " + jsonProcessingException);
        }
    }

    public class NAPBridge {
        private JSObject bridge;

        public void send(String rawEventString) {
            try {
                System.out.println(this.getClass().getName() + " send(): " + rawEventString);
                NAPEvent event = objectMapper.readValue(rawEventString, NAPEvent.class);
                notifyListeners(event);
            } catch (IOException ioException) {
                System.out.println(this.getClass().getName() + " " + ioException);
            }
        }

        public void setCallback(JSObject bridge) {
            System.out.println(this.getClass().getName() + " setCallBack(): " +  bridge);
            this.bridge = bridge;
        }
    }
}


Når Nap-typescript-sdk har en function der hedder createNAP derefter sørger createNAP()  kalder sørger den for at finde en reference til denne bridge og initialisere besked strømmene. . Håndtaget til sendMessage() bruges til at initialisere en toHost kanal (fra det indlejrede system til værtssystemet). Håndtaget for setCallback bruges for at opsætte en fromHost kanal (fra værtssytemet til det indlejrede system)



Message-streams

Nærmere beskrivelse mangler.

...