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 */
77package io .micronaut .data .examples ;
88
9- import com .fasterxml .jackson .databind .ObjectMapper ;
9+ //import com.fasterxml.jackson.databind.ObjectMapper;
10+ import org .json .JSONObject ;
1011import oracle .jdbc .OraclePreparedStatement ;
1112import oracle .jms .AQjmsConstants ;
1213import oracle .jms .AQjmsConsumer ;
1516
1617import javax .jms .*;
1718import javax .sql .DataSource ;
19+ import java .io .StringWriter ;
1820import java .sql .*;
1921import 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 ();
0 commit comments