Skip to content

Commit 6fd1b8f

Browse files
committed
Dependency updates
1 parent f7d2e03 commit 6fd1b8f

File tree

8 files changed

+115
-74
lines changed

8 files changed

+115
-74
lines changed

convex-cli/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<url>https://convex.world</url>
1414

1515
<properties>
16-
<picocli.version>4.7.6</picocli.version>
16+
<picocli.version>4.7.7</picocli.version>
1717
<maven.compiler.release>21</maven.compiler.release>
1818
</properties>
1919

convex-core/src/test/java/lab/PaisleyTest.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package lab;
22

3+
import static convex.test.Assertions.assertCVMEquals;
4+
import static convex.test.Assertions.assertNotError;
5+
import static convex.test.Assertions.assertStateError;
36
import static org.junit.jupiter.api.Assertions.assertEquals;
47
import static org.junit.jupiter.api.Assertions.assertNotNull;
58
import static org.junit.jupiter.api.Assertions.assertSame;
@@ -22,7 +25,6 @@
2225
import convex.core.lang.TestState;
2326
import convex.core.util.Utils;
2427
import convex.lib.AssetTester;
25-
import static convex.test.Assertions.*;
2628

2729
public class PaisleyTest extends ACVMTest {
2830

@@ -76,7 +78,10 @@ public class PaisleyTest extends ACVMTest {
7678
AssetTester.doFungibleTests(c, PAI, c.getAddress());
7779
}
7880

79-
@Test public void testPersonalToken() {
81+
/**
82+
* This test highlights use of a personal token *without* using the members list
83+
*/
84+
@Test public void testPersonalTokenDetached() {
8085
Context c=context();
8186
c=exec(c,"(def id (call personal (create)))");
8287
CVMLong ID=c.getResult();
@@ -90,6 +95,36 @@ public class PaisleyTest extends ACVMTest {
9095
AssetTester.doFungibleTests(c, AID, c.getAddress());
9196
}
9297

98+
/**
99+
* This test highlights use of a personal token using the members list
100+
*/
101+
@Test public void testMemberPersonalToken() {
102+
Context c=context();
103+
104+
// Create a member Convex account
105+
c=exec(c,"(def member-acct (deploy '(set-controller *caller*)))");
106+
Address memberID=c.getResult();
107+
assertNotNull(memberID);
108+
109+
// Create a member entry
110+
c=exec(c,"(def mid (call members (create-member member-acct)))");
111+
112+
// Create a member personal token (remembering 1 CVM offer)
113+
c=exec(c,"(def aid (call members 1000000000 (create-pt mid)))");
114+
AVector<?> AID=c.getResult(); // should be asset ID
115+
116+
// user should be able to mint now
117+
c=exec(c,"(eval-as member-acct `(call ~aid (mint 1000000)))");
118+
119+
// user should be able to transfer to HERO
120+
c=exec(c,"(eval-as member-acct `(@convex.asset/transfer ~*address* [~aid 10000]))");
121+
122+
// Run generic tests (as HERO who should now have 10000 units)
123+
AssetTester.doFungibleTests(c, AID, c.getAddress());
124+
}
125+
126+
127+
93128
@Test public void testMembersList() {
94129
Context c=context();
95130

convex-gui/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
<properties>
1818
<zxing.version>3.5.3</zxing.version>
19-
<flatlaf.version>3.5.4</flatlaf.version>
19+
<flatlaf.version>3.6</flatlaf.version>
2020
</properties>
2121

2222
<build>

convex-gui/src/main/java/convex/gui/utils/Toolkit.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
import org.slf4j.LoggerFactory;
5555

5656
import com.formdev.flatlaf.FlatDarculaLaf;
57-
import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialOceanicIJTheme;
57+
import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMTMaterialOceanicIJTheme;
5858
import com.formdev.flatlaf.util.SystemInfo;
5959

6060
import convex.core.util.Utils;
@@ -110,7 +110,7 @@ public class Toolkit {
110110
}
111111

112112
UIManager.setLookAndFeel(laf);
113-
FlatMaterialOceanicIJTheme.setup();
113+
FlatMTMaterialOceanicIJTheme.setup();
114114

115115
// Override button foreground, too dark by default
116116
UIManager.put("Button.foreground", UIManager.get("Label.foreground"));

convex-restapi/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
<properties>
1818
<json.simple.version>1.1.1</json.simple.version>
19-
<javalin.version>6.4.0</javalin.version>
19+
<javalin.version>6.6.0</javalin.version>
2020
</properties>
2121

2222
<build>

convex-restapi/src/main/java/convex/restapi/api/AGenericAPI.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,20 @@
22

33
import java.util.Collections;
44
import java.util.Enumeration;
5+
import java.util.HashMap;
56
import java.util.Map;
67

78
import convex.api.ContentTypes;
9+
import convex.core.ErrorCodes;
10+
import convex.core.Result;
11+
import convex.core.SourceCodes;
812
import convex.core.data.ACell;
13+
import convex.core.data.AString;
914
import convex.core.data.Blob;
1015
import convex.core.data.Format;
16+
import convex.core.data.Keyword;
17+
import convex.core.data.Strings;
18+
import convex.core.lang.RT;
1119
import convex.core.lang.Reader;
1220
import convex.java.JSON;
1321
import io.javalin.Javalin;
@@ -97,4 +105,56 @@ protected static String jsonError(String string) {
97105
}
98106

99107

108+
public void prepareResult(Context ctx, Result r) {
109+
if (r.getSource()==null) {
110+
r=r.withSource(SourceCodes.SERVER);
111+
}
112+
113+
int status=statusForResult(r);
114+
ctx.status(status);
115+
116+
String type = calcResponseContentType(ctx);
117+
118+
if (type.equals(ContentTypes.JSON)) {
119+
ctx.contentType(ContentTypes.JSON);
120+
HashMap<String, Object> resultJSON = r.toJSON();
121+
ctx.result(JSON.toPrettyString(resultJSON));
122+
} else if (type.equals(ContentTypes.CVX)) {
123+
ctx.contentType(ContentTypes.CVX);
124+
AString rs=RT.print(r);
125+
if (rs==null) {
126+
rs=RT.print(Result.error(ErrorCodes.LIMIT, Strings.PRINT_EXCEEDED).withSource(SourceCodes.PEER));
127+
ctx.status(403); // Forbidden because of result size
128+
}
129+
ctx.result(rs.toString());
130+
} else if (type.equals(ContentTypes.CVX_RAW)) {
131+
ctx.contentType(ContentTypes.CVX_RAW);
132+
Blob b=Format.encodeMultiCell(r, true);
133+
ctx.result(b.getBytes());
134+
} else {
135+
ctx.contentType(ContentTypes.TEXT);
136+
ctx.status(415); // unsupported media type for "Accept" header
137+
ctx.result("Unsupported content type: "+type);
138+
}
139+
}
140+
141+
public int statusForResult(Result r) {
142+
if (!r.isError()) {
143+
return 200;
144+
}
145+
Keyword source=r.getSource();
146+
ACell error=r.getErrorCode();
147+
if (SourceCodes.CVM.equals(source)) {
148+
return 200;
149+
} else if (SourceCodes.CODE.equals(source)) {
150+
return 200;
151+
} else if (SourceCodes.PEER.equals(source)) {
152+
if (ErrorCodes.SIGNATURE.equals(error)) return 403; // Forbidden
153+
if (ErrorCodes.FUNDS.equals(error)) return 402; // payment required
154+
}
155+
if (ErrorCodes.FORMAT.equals(error)) return 400; // bad request
156+
if (ErrorCodes.TIMEOUT.equals(error)) return 408; // timeout
157+
int status = 422;
158+
return status;
159+
}
100160
}

convex-restapi/src/main/java/convex/restapi/api/ChainAPI.java

Lines changed: 12 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -11,55 +11,55 @@
1111
import convex.core.Coin;
1212
import convex.core.ErrorCodes;
1313
import convex.core.Result;
14-
import convex.core.SourceCodes;
1514
import convex.core.crypto.AKeyPair;
1615
import convex.core.crypto.ASignature;
1716
import convex.core.crypto.Ed25519Signature;
17+
import convex.core.cvm.AccountStatus;
18+
import convex.core.cvm.Address;
19+
import convex.core.cvm.Keywords;
20+
import convex.core.cvm.PeerStatus;
21+
import convex.core.cvm.Symbols;
22+
import convex.core.cvm.transactions.ATransaction;
23+
import convex.core.cvm.transactions.Invoke;
1824
import convex.core.data.ABlob;
1925
import convex.core.data.ACell;
2026
import convex.core.data.AMap;
21-
import convex.core.data.AString;
2227
import convex.core.data.AccountKey;
23-
import convex.core.cvm.AccountStatus;
24-
import convex.core.cvm.Address;
2528
import convex.core.data.Blob;
2629
import convex.core.data.Blobs;
2730
import convex.core.data.Cells;
2831
import convex.core.data.Format;
2932
import convex.core.data.Hash;
3033
import convex.core.data.Keyword;
31-
import convex.core.cvm.Keywords;
3234
import convex.core.data.Lists;
33-
import convex.core.cvm.PeerStatus;
34-
import convex.core.cvm.transactions.ATransaction;
35-
import convex.core.cvm.transactions.Invoke;
3635
import convex.core.data.Ref;
3736
import convex.core.data.SignedData;
38-
import convex.core.data.Strings;
3937
import convex.core.data.prim.AInteger;
4038
import convex.core.data.prim.CVMLong;
4139
import convex.core.exceptions.BadFormatException;
4240
import convex.core.exceptions.MissingDataException;
4341
import convex.core.exceptions.ResultException;
4442
import convex.core.lang.RT;
4543
import convex.core.lang.Reader;
46-
import convex.core.cvm.Symbols;
4744
import convex.core.util.JSONUtils;
4845
import convex.core.util.Utils;
4946
import convex.java.JSON;
5047
import convex.restapi.RESTServer;
51-
import convex.restapi.model.ResultResponse;
5248
import convex.restapi.model.CreateAccountRequest;
5349
import convex.restapi.model.CreateAccountResponse;
5450
import convex.restapi.model.FaucetRequest;
5551
import convex.restapi.model.QueryAccountResponse;
5652
import convex.restapi.model.QueryRequest;
53+
import convex.restapi.model.ResultResponse;
5754
import convex.restapi.model.TransactRequest;
5855
import convex.restapi.model.TransactionPrepareRequest;
5956
import convex.restapi.model.TransactionPrepareResponse;
6057
import convex.restapi.model.TransactionSubmitRequest;
6158
import io.javalin.Javalin;
62-
import io.javalin.http.*;
59+
import io.javalin.http.BadRequestResponse;
60+
import io.javalin.http.Context;
61+
import io.javalin.http.ForbiddenResponse;
62+
import io.javalin.http.NotFoundResponse;
6363
import io.javalin.openapi.HttpMethod;
6464
import io.javalin.openapi.OpenApi;
6565
import io.javalin.openapi.OpenApiContent;
@@ -687,58 +687,4 @@ public void query(Context ctx) throws InterruptedException {
687687
Result r = convex.querySync(form, addr);
688688
prepareResult(ctx,r);
689689
}
690-
691-
private void prepareResult(Context ctx, Result r) {
692-
if (r.getSource()==null) {
693-
r=r.withSource(SourceCodes.SERVER);
694-
}
695-
696-
int status=statusForResult(r);
697-
ctx.status(status);
698-
699-
String type = calcResponseContentType(ctx);
700-
701-
if (type.equals(ContentTypes.JSON)) {
702-
ctx.contentType(ContentTypes.JSON);
703-
HashMap<String, Object> resultJSON = r.toJSON();
704-
ctx.result(JSON.toPrettyString(resultJSON));
705-
} else if (type.equals(ContentTypes.CVX)) {
706-
ctx.contentType(ContentTypes.CVX);
707-
AString rs=RT.print(r);
708-
if (rs==null) {
709-
rs=RT.print(Result.error(ErrorCodes.LIMIT, Strings.PRINT_EXCEEDED).withSource(SourceCodes.PEER));
710-
ctx.status(403); // Forbidden because of result size
711-
}
712-
ctx.result(rs.toString());
713-
} else if (type.equals(ContentTypes.CVX_RAW)) {
714-
ctx.contentType(ContentTypes.CVX_RAW);
715-
Blob b=Format.encodeMultiCell(r, true);
716-
ctx.result(b.getBytes());
717-
} else {
718-
ctx.contentType(ContentTypes.TEXT);
719-
ctx.status(415); // unsupported media type for "Accept" header
720-
ctx.result("Unsupported content type: "+type);
721-
}
722-
}
723-
724-
private int statusForResult(Result r) {
725-
if (!r.isError()) {
726-
return 200;
727-
}
728-
Keyword source=r.getSource();
729-
ACell error=r.getErrorCode();
730-
if (SourceCodes.CVM.equals(source)) {
731-
return 200;
732-
} else if (SourceCodes.CODE.equals(source)) {
733-
return 200;
734-
} else if (SourceCodes.PEER.equals(source)) {
735-
if (ErrorCodes.SIGNATURE.equals(error)) return 403; // Forbidden
736-
if (ErrorCodes.FUNDS.equals(error)) return 402; // payment required
737-
}
738-
if (ErrorCodes.FORMAT.equals(error)) return 400; // bad request
739-
if (ErrorCodes.TIMEOUT.equals(error)) return 408; // timeout
740-
int status = 422;
741-
return status;
742-
}
743-
744690
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3232
<logback.version>1.5.12</logback.version>
3333
<jmh.version>1.37</jmh.version>
34-
<junit.version>5.11.3</junit.version>
34+
<junit.version>5.12.2</junit.version>
3535
<slf4j.version>2.0.16</slf4j.version>
3636
<hc.version>5.4.1</hc.version>
3737
<convex.version>${project.version}</convex.version>

0 commit comments

Comments
 (0)