1
1
/*
2
-
2
+
3
3
**
4
4
** Copyright (c) 2021 Oracle and/or its affiliates.
5
5
** Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
6
6
*/
7
7
package io .micronaut .data .examples ;
8
8
9
- import com .fasterxml .jackson .databind .ObjectMapper ;
9
+ //import com.fasterxml.jackson.databind.ObjectMapper;
10
+ import org .json .JSONObject ;
10
11
import oracle .jdbc .OraclePreparedStatement ;
11
12
import oracle .jms .AQjmsConstants ;
12
13
import oracle .jms .AQjmsConsumer ;
15
16
16
17
import javax .jms .*;
17
18
import javax .sql .DataSource ;
19
+ import java .io .StringWriter ;
18
20
import java .sql .*;
19
21
import java .sql .Connection ;
20
22
@@ -25,7 +27,7 @@ public class InventoryServiceOrderEventConsumer implements Runnable {
25
27
public static final String INVENTORYDOESNOTEXIST = "inventorydoesnotexist" ;
26
28
private DataSource atpInventoryPDB ;
27
29
Connection dbConnection ;
28
- String inventoryuser = "inventoryuser" , inventorypw ="Welcome12345" , orderQueueName = "ORDERQUEUE" , inventoryQueueName = "INVENTORYQUEUE" ;
30
+ String inventoryuser = "inventoryuser" , inventorypw = "Welcome12345" , orderQueueName = "ORDERQUEUE" , inventoryQueueName = "INVENTORYQUEUE" ;
29
31
30
32
31
33
public InventoryServiceOrderEventConsumer (DataSource atpInventoryPDB ) {
@@ -51,34 +53,41 @@ public void listenForOrderEvents() throws Exception {
51
53
AQjmsConsumer consumer = null ;
52
54
boolean done = false ;
53
55
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);
68
74
// Order order = JsonUtils.read(txt, Order.class);
69
75
System .out .print (" orderid:" + order .getOrderid ());
70
76
System .out .print (" itemid:" + order .getItemid ());
71
77
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" );
74
80
75
81
}
76
82
}
77
83
78
84
private void updateDataAndSendEventOnInventory (AQjmsSession session , String orderid , String itemid ) throws Exception {
79
85
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 ();
82
91
Topic inventoryTopic = session .getTopic (inventoryuser , inventoryQueueName );
83
92
System .out .println ("send inventory status message... jsonString:" + jsonString + " inventoryTopic:" + inventoryTopic );
84
93
TextMessage objmsg = session .createTextMessage ();
0 commit comments