1 46 47 50 51 55 56 57 package sample.dmf.headers; 58 59 import org.mr.api.jms.MantaConnectionFactory; 60 import org.mr.api.jms.MantaMessage; 61 import org.mr.core.protocol.MantaBusMessage; 62 import org.mr.core.util.exceptions.CreationException; 63 import org.mr.kernel.dmf.DMFDeclaration; 64 import org.mr.kernel.dmf.DMFObject; 65 import org.w3c.dom.Element ; 66 67 import javax.jms.*; 68 import java.util.Enumeration ; 69 import java.util.Map ; 70 71 72 public class ChangeHeaders implements DMFDeclaration{ 73 74 private final static String ITEAM_PRICE_HEADER_NAME = "item-price"; 76 private final static String TASK_HEADER_NAME = "task"; 77 78 82 public String declarationType() { 83 return "ChangeHeaders"; 84 } 85 86 public void configure(Element i_element) throws CreationException { 87 } 88 89 public Map execute(Map i_params) { 90 91 DMFObject dmfObject = (DMFObject)i_params; 93 94 try { 95 96 MantaBusMessage busMessage = dmfObject.getMantaBusMessage(); 97 MantaMessage mantaMessage = (MantaMessage)busMessage.getPayload(); 99 100 if(mantaMessage == null) 102 return i_params; 103 104 String task = mantaMessage.getStringProperty(TASK_HEADER_NAME); 105 mantaMessage.setWriteableState(true); 106 if (task.equals("tax")) { 107 double pbt = mantaMessage.getDoubleProperty(ITEAM_PRICE_HEADER_NAME); 109 110 double pat = (pbt*117)/100; 112 mantaMessage.setDoubleProperty(ITEAM_PRICE_HEADER_NAME, pat); 114 }else if(task.equals("gift")){ 115 mantaMessage.setDoubleProperty(ITEAM_PRICE_HEADER_NAME,0); 116 } 117 mantaMessage.setWriteableState(false); 118 busMessage.setPayload(mantaMessage); 120 121 dmfObject.setMantaBusMessage(busMessage); 123 124 } catch (JMSException e) { 125 e.printStackTrace(); 126 } 127 return dmfObject; 128 } 129 130 134 private static class MantaListener implements MessageListener{ 135 136 public void onMessage(Message i_message) { 137 printMessageHeaders("MessageListener", i_message); 138 } 139 140 } 141 142 146 private static void printMessageHeaders(String i_from, Message i_message){ 147 try { 148 TextMessage message = (TextMessage)i_message; 150 System.out.println("["+i_from+"][MSG Headers]{"); 151 Enumeration enumeration = message.getPropertyNames(); 152 while(enumeration.hasMoreElements()){ 154 String propName = (String )enumeration.nextElement(); 155 String propValue = message.getStringProperty(propName); 156 System.out.println(" Name=["+propName + "] Value=["+propValue+"] "); 157 } 158 System.out.println("}"); 159 } catch (JMSException e) { 160 e.printStackTrace(); 161 } 162 } 163 164 private static void printHelp() { 165 166 StringBuffer use = new StringBuffer (); 167 use.append("help: dmf, change header (options) (amount)\n\n"); 168 use.append("options:\n"); 169 use.append(" gift Set the value of the header item to 0.\n"); 170 use.append(" tax Adds 17% vat for an header item.\n"); 171 use.append("amount: any number\n"); 172 System.err.println (use); 173 } 174 175 176 180 public static void main(String [] args) { 181 182 if(args.length != 2){ 184 System.err.println("Wrong number of arguments"); 185 printHelp(); 186 System.exit(1); 187 } 188 String task = args[0]; 190 if(!"gift".equals(task) && !"tax".equals(task)){ 191 System.err.println("Unknown operation:"+task); 192 printHelp(); 193 System.exit(1); 194 } 195 double amount = -1; 196 try { 197 amount = Double.parseDouble(args[1]); 198 } catch (NumberFormatException e) { 199 System.err.println("Unknown amount:"+amount); 200 printHelp(); 201 System.exit(1); 202 } 203 try { 204 MantaConnectionFactory mcf = new MantaConnectionFactory(); 206 Connection connection = mcf.createConnection(); 207 connection.start(); 208 209 Session publiserSession = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); 211 Session subscriberSession = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); 212 213 Topic topic = publiserSession.createTopic("helloWorld"); 214 215 MantaListener mantaListener = new MantaListener(); 216 MessageConsumer mc = subscriberSession.createDurableSubscriber(topic, "test"); 217 mc.setMessageListener(mantaListener); 218 219 MessageProducer mp = publiserSession.createProducer(topic); 220 221 Message message = publiserSession.createTextMessage(); 223 message.setStringProperty(TASK_HEADER_NAME, task); 224 message.setDoubleProperty(ITEAM_PRICE_HEADER_NAME, amount); 225 226 printMessageHeaders("Message To be Sent", message); 228 mp.send(message); 229 230 } catch (JMSException e) { 231 e.printStackTrace(); 232 } 233 } 234 235 } 236 | Popular Tags |