1
1
package com .styra .opa .wasm ;
2
2
3
- import com .dylibso .chicory .runtime .ByteBufferMemory ;
3
+ import com .dylibso .chicory .runtime .ByteArrayMemory ;
4
4
import com .dylibso .chicory .runtime .Memory ;
5
5
import com .dylibso .chicory .wasm .types .MemoryLimits ;
6
6
import com .fasterxml .jackson .core .JsonProcessingException ;
@@ -35,19 +35,19 @@ public class OpaPolicy {
35
35
private OpaPolicy (OpaWasm wasm ) {
36
36
this .wasm = wasm ;
37
37
38
- if (!(wasm .opaWasmAbiVersion ().getValue () == 1L
39
- && wasm .opaWasmAbiMinorVersion ().getValue () == 3L )) {
38
+ if (!(wasm .exports (). opaWasmAbiVersion ().getValue () == 1L
39
+ && wasm .exports (). opaWasmAbiMinorVersion ().getValue () == 3L )) {
40
40
throw new IllegalArgumentException (
41
41
"Invalid version, supported 1.3, detected "
42
- + wasm .opaWasmAbiVersion ()
42
+ + wasm .exports (). opaWasmAbiVersion ()
43
43
+ "."
44
- + wasm .opaWasmAbiMinorVersion ());
44
+ + wasm .exports (). opaWasmAbiMinorVersion ());
45
45
}
46
46
47
- this .baseHeapPtr = wasm .opaHeapPtrGet ();
47
+ this .baseHeapPtr = wasm .exports (). opaHeapPtrGet ();
48
48
this .dataHeapPtr = this .baseHeapPtr ;
49
49
this .dataAddr = -1 ;
50
- wasm .opaHeapPtrSet (this .dataHeapPtr );
50
+ wasm .exports (). opaHeapPtrSet (this .dataHeapPtr );
51
51
}
52
52
53
53
public OpaPolicy entrypoint (int entrypoint ) {
@@ -61,26 +61,26 @@ public OpaPolicy entrypoint(String entrypoint) {
61
61
}
62
62
63
63
private int loadJson (String data ) {
64
- var dataStrAddr = wasm .opaMalloc (data .length ());
64
+ var dataStrAddr = wasm .exports (). opaMalloc (data .length ());
65
65
wasm .memory ().writeCString (dataStrAddr , data );
66
- var dstAddr = wasm .opaJsonParse (dataStrAddr , data .length ());
67
- wasm .opaFree (dataStrAddr );
66
+ var dstAddr = wasm .exports (). opaJsonParse (dataStrAddr , data .length ());
67
+ wasm .exports (). opaFree (dataStrAddr );
68
68
return dstAddr ;
69
69
}
70
70
71
71
private String dumpJson (int addr ) {
72
- int resultStrAddr = wasm .opaJsonDump (addr );
72
+ int resultStrAddr = wasm .exports (). opaJsonDump (addr );
73
73
var result = wasm .memory ().readCString (resultStrAddr );
74
- wasm .opaFree (resultStrAddr );
74
+ wasm .exports (). opaFree (resultStrAddr );
75
75
return result ;
76
76
}
77
77
78
78
// data MUST be a serializable object or ArrayBuffer, which assumed to be a well-formed
79
79
// stringified JSON
80
80
public OpaPolicy data (String data ) {
81
- wasm .opaHeapPtrSet (this .baseHeapPtr );
81
+ wasm .exports (). opaHeapPtrSet (this .baseHeapPtr );
82
82
this .dataAddr = loadJson (data );
83
- this .dataHeapPtr = wasm .opaHeapPtrGet ();
83
+ this .dataHeapPtr = wasm .exports (). opaHeapPtrGet ();
84
84
return this ;
85
85
}
86
86
@@ -110,7 +110,7 @@ public OpaPolicy input(String input) {
110
110
111
111
public Map <String , Integer > entrypoints () {
112
112
try {
113
- var json = dumpJson (wasm .entrypoints ());
113
+ var json = dumpJson (wasm .exports (). entrypoints ());
114
114
var entrypoints =
115
115
wasm .jsonMapper ()
116
116
.readValue (json , new TypeReference <HashMap <String , Integer >>() {});
@@ -130,24 +130,24 @@ public int findEntrypoint(String name) {
130
130
}
131
131
132
132
public String evaluate () {
133
- var ctxAddr = wasm .opaEvalCtxNew ();
133
+ var ctxAddr = wasm .exports (). opaEvalCtxNew ();
134
134
if (this .dataAddr == -1 ) {
135
135
data ("" );
136
136
}
137
- wasm .opaEvalCtxSetData (ctxAddr , this .dataAddr );
137
+ wasm .exports (). opaEvalCtxSetData (ctxAddr , this .dataAddr );
138
138
if (this .inputAddr == -1 ) {
139
139
input ("" );
140
140
}
141
- wasm .opaEvalCtxSetInput (ctxAddr , this .inputAddr );
142
- wasm .opaEvalCtxSetEntrypoint (ctxAddr , this .entrypoint );
141
+ wasm .exports (). opaEvalCtxSetInput (ctxAddr , this .inputAddr );
142
+ wasm .exports (). opaEvalCtxSetEntrypoint (ctxAddr , this .entrypoint );
143
143
144
- var evalResult = OpaErrorCode .fromValue (wasm .eval (ctxAddr ));
144
+ var evalResult = OpaErrorCode .fromValue (wasm .exports (). eval (ctxAddr ));
145
145
if (evalResult != OpaErrorCode .OPA_ERR_OK ) {
146
146
throw new RuntimeException (
147
147
"Error evaluating the Opa Policy, returned code is: " + evalResult );
148
148
}
149
149
150
- this .resultAddr = wasm .opaEvalCtxGetResult (ctxAddr );
150
+ this .resultAddr = wasm .exports (). opaEvalCtxGetResult (ctxAddr );
151
151
var result = dumpJson (resultAddr );
152
152
return result ;
153
153
}
@@ -259,8 +259,7 @@ public OpaPolicy build() {
259
259
.withJsonMapper (jsonMapper )
260
260
.withYamlMapper (yamlMapper )
261
261
.withMemory (
262
- new ByteBufferMemory (
263
- new MemoryLimits (initialMemory , maxMemory )))
262
+ new ByteArrayMemory (new MemoryLimits (initialMemory , maxMemory )))
264
263
.withDefaultBuiltins (defaultBuiltins )
265
264
.addBuiltins (builtins .toArray (OpaBuiltin .Builtin []::new ))
266
265
.build ();
0 commit comments