Skip to content

Commit fc218a0

Browse files
mn native-image use JsonObject instead of Jackson (#242)
* remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * remove sqlnet.ora edit work * recovery test work * recovery test work * recovery test work * recovery test work * replace postgres configmap with secret * replace postgres configmap with secret * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * TEQ setup and tracing * mongo, postgres, kafka crash tests * mongo, postgres, kafka crash tests * grafana work * grafana work * grafana work * grafana work * grafana work * grafana work * observability work * observability work * observability work * observability work * observability work * observability work * observability work * observability work * observability work * observability work * observability work * dotnet work * dotnet work * dotnet work * dotnet work * dotnet work * observability, dotnet, go, etc. work - move kafka etc. build to nonjava * observability, dotnet, go, etc. work - move kafka etc. build to nonjava * observability, dotnet, go, etc. work - move kafka etc. build to nonjava * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * enable teq * observability * enable teq * enable teq * enable teq * enable teq * enable teq * observability work * observability work * enable teq * enable teq * enable teq * observ * enable teq * observability dash * observability * osbservability * enable teq * enable teq * enable teq * obs * obs * enable teq * obs * enable teq * observ * obs * converged wording change * fix k6 command * correct workshop link * update workshop link * modifiy python impl to conn.autocommit = False * enable teq * various including security fix in inventory-nodejs * various including security fix in inventory-nodejs * various including security fix in inventory-nodejs * enable teq * inventory-micronaut * inventory-micronaut * inventory-quarkus * inventory-micronaut-native-image * upgrade helidon and db versions * mn and quarkus build wrappers * mn native-image build and deploy fixes * mn native-image build and deploy fixes * mn native-image use JsonObject instead of Jackson
1 parent c2a8892 commit fc218a0

File tree

4 files changed

+32
-22
lines changed

4 files changed

+32
-22
lines changed

grabdish/inventory-micronaut/build-native-image.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ echo set images value of dockerBuildNative task in build.gradle to $IMAGE ...
2424
./gradlew clean
2525
./gradlew build
2626
./gradlew dockerBuildNative
27+
#./gradlew nativeImage
2728

2829
docker push $IMAGE
2930
if [ $? -eq 0 ]; then

grabdish/inventory-micronaut/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ dependencies {
2727
implementation("javax.transaction:jta:1.1")
2828
implementation("com.oracle.database.messaging:aqapi:19.3.0.0")
2929
implementation("javax.json.bind:javax.json.bind-api:1.0")
30+
implementation("org.json:json:20210307")
3031
// implementation("com.fasterxml.jackson.core:jackson-databind")
3132

3233
annotationProcessor(platform("io.micronaut:micronaut-bom:2.0.2"))

grabdish/inventory-micronaut/src/main/java/io/micronaut/data/examples/InventoryServiceOrderEventConsumer.java

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
/*
2-
2+
33
**
44
** Copyright (c) 2021 Oracle and/or its affiliates.
55
** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
66
*/
77
package io.micronaut.data.examples;
88

9-
import com.fasterxml.jackson.databind.ObjectMapper;
9+
//import com.fasterxml.jackson.databind.ObjectMapper;
10+
import org.json.JSONObject;
1011
import oracle.jdbc.OraclePreparedStatement;
1112
import oracle.jms.AQjmsConstants;
1213
import oracle.jms.AQjmsConsumer;
@@ -15,6 +16,7 @@
1516

1617
import javax.jms.*;
1718
import javax.sql.DataSource;
19+
import java.io.StringWriter;
1820
import java.sql.*;
1921
import java.sql.Connection;
2022

@@ -25,7 +27,7 @@ public class InventoryServiceOrderEventConsumer implements Runnable {
2527
public static final String INVENTORYDOESNOTEXIST = "inventorydoesnotexist";
2628
private DataSource atpInventoryPDB;
2729
Connection dbConnection;
28-
String inventoryuser = "inventoryuser", inventorypw ="Welcome12345", orderQueueName = "ORDERQUEUE", inventoryQueueName = "INVENTORYQUEUE";
30+
String inventoryuser = "inventoryuser", inventorypw = "Welcome12345", orderQueueName = "ORDERQUEUE", inventoryQueueName = "INVENTORYQUEUE";
2931

3032

3133
public InventoryServiceOrderEventConsumer(DataSource atpInventoryPDB) {
@@ -51,34 +53,41 @@ public void listenForOrderEvents() throws Exception {
5153
AQjmsConsumer consumer = null;
5254
boolean done = false;
5355
while (!done) {
54-
// try {
55-
if (qconn == null || qsess == null || dbConnection ==null || dbConnection.isClosed()) {
56-
qconn = qcfact.createQueueConnection(inventoryuser, inventorypw);
57-
qsess = qconn.createQueueSession(true, Session.CLIENT_ACKNOWLEDGE);
58-
qconn.start();
59-
Queue queue = ((AQjmsSession) qsess).getQueue(inventoryuser, orderQueueName);
60-
consumer = (AQjmsConsumer) qsess.createConsumer(queue);
61-
}
62-
TextMessage orderMessage = (TextMessage) (consumer.receive(-1));
63-
String txt = orderMessage.getText();
64-
System.out.println("txt " + txt);
65-
System.out.print(" Message: " + orderMessage.getIntProperty("Id"));
66-
ObjectMapper mapper = new ObjectMapper();
67-
Order order = mapper.readValue(txt, Order.class);
56+
if (qconn == null || qsess == null || dbConnection == null || dbConnection.isClosed()) {
57+
qconn = qcfact.createQueueConnection(inventoryuser, inventorypw);
58+
qsess = qconn.createQueueSession(true, Session.CLIENT_ACKNOWLEDGE);
59+
qconn.start();
60+
Queue queue = ((AQjmsSession) qsess).getQueue(inventoryuser, orderQueueName);
61+
consumer = (AQjmsConsumer) qsess.createConsumer(queue);
62+
}
63+
TextMessage orderMessage = (TextMessage) (consumer.receive(-1));
64+
String txt = orderMessage.getText();
65+
System.out.println("txt " + txt);
66+
// {"orderid":"648","itemid":"sushi","deliverylocation":"780 PANORAMA DR,San Francisco,CA","status":"pending","inventoryLocation":"","suggestiveSale":""}
67+
JSONObject jsonObject = new JSONObject(txt);
68+
System.out.println("InventoryServiceOrderEventConsumer.listenForOrderEvents");
69+
System.out.println("InventoryServiceOrderEventConsumer.listenForOrderEvents jsonObject.getString(\"itemid\"):" + jsonObject.getString("itemid"));
70+
Order order = new Order(jsonObject.getString("orderid"),jsonObject.getString("itemid"),jsonObject.getString("deliverylocation"));
71+
//using JSONObject rather than jackson/reflectively accessed elements as it's somewhat more straightforward than... https://github.com/oracle/graal/issues/1022
72+
// ObjectMapper mapper = new ObjectMapper();
73+
// Order order = mapper.readValue(txt, Order.class);
6874
// Order order = JsonUtils.read(txt, Order.class);
6975
System.out.print(" orderid:" + order.getOrderid());
7076
System.out.print(" itemid:" + order.getItemid());
7177
updateDataAndSendEventOnInventory((AQjmsSession) qsess, order.getOrderid(), order.getItemid());
72-
if(qsess!=null) qsess.commit();
73-
System.out.println("message sent");
78+
if (qsess != null) qsess.commit();
79+
System.out.println("message sent");
7480

7581
}
7682
}
7783

7884
private void updateDataAndSendEventOnInventory(AQjmsSession session, String orderid, String itemid) throws Exception {
7985
String inventorylocation = evaluateInventory(session, itemid);
80-
Inventory inventory = new Inventory(orderid, itemid, inventorylocation, "beer"); //static suggestiveSale - represents an additional service/event
81-
String jsonString = JsonUtils.writeValueAsString(inventory);
86+
// Inventory inventory = new Inventory(orderid, itemid, inventorylocation, "beer"); //static suggestiveSale - represents an additional service/event
87+
// String jsonString = JsonUtils.writeValueAsString(inventory);
88+
String jsonString =
89+
new JSONObject().put("orderid", orderid).put("itemid", itemid)
90+
.put("inventorylocation", inventorylocation).put("suggestiveSale", "beer").toString();
8291
Topic inventoryTopic = session.getTopic(inventoryuser, inventoryQueueName);
8392
System.out.println("send inventory status message... jsonString:" + jsonString + " inventoryTopic:" + inventoryTopic);
8493
TextMessage objmsg = session.createTextMessage();

grabdish/inventory-micronaut/src/main/resources/application.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ micronaut:
22
application:
33
name: inventoryMicronaut
44
datasources:
5-
# atpInventoryPDB
65
default:
76
url: ${JDBC_URL:`jdbc:oracle:thin:/@gdpaulsep27i_tp?TNS_ADMIN=/Users/pparkins/Downloads/Wallet_gdpaulsep27o`}
87
driverClassName: oracle.jdbc.pool.OracleDataSource

0 commit comments

Comments
 (0)