Created
December 9, 2013 04:00
-
-
Save DImuthuUpe/7867226 to your computer and use it in GitHub Desktop.
Secure Client
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.dimuthuupeksha.clients; | |
import java.util.Iterator; | |
import org.apache.axiom.om.OMAbstractFactory; | |
import org.apache.axiom.om.OMElement; | |
import org.apache.axiom.om.OMFactory; | |
import org.apache.axiom.om.OMNamespace; | |
import org.apache.axiom.om.impl.builder.StAXOMBuilder; | |
import org.apache.axis2.AxisFault; | |
import org.apache.axis2.Constants; | |
import org.apache.axis2.addressing.EndpointReference; | |
import org.apache.axis2.client.Options; | |
import org.apache.axis2.client.ServiceClient; | |
import org.apache.axis2.context.ConfigurationContext; | |
import org.apache.axis2.context.ConfigurationContextFactory; | |
import org.apache.neethi.Policy; | |
import org.apache.neethi.PolicyEngine; | |
import org.apache.rampart.RampartMessageData; | |
public class OrderProcessingSecureClient { | |
private static EndpointReference targetEPR = new EndpointReference( | |
"http://localhost:8281/services/OrderProcessor"); | |
public static OMElement createOrderPayload(String customerName) { | |
OMFactory fac = OMAbstractFactory.getOMFactory(); | |
OMNamespace omNs = fac.createOMNamespace( | |
"http://axiom.service.quickstart.samples/xsd", "tns"); | |
OMElement method = fac.createOMElement("createOrder", omNs); | |
OMElement value = fac.createOMElement("name", omNs); | |
value.addChild(fac.createOMText(customerName)); | |
method.addChild(value); | |
return method; | |
} | |
public static OMElement getCustomerNamePayload(int orderId) { | |
OMFactory fac = OMAbstractFactory.getOMFactory(); | |
OMNamespace omNs = fac.createOMNamespace( | |
"http://axiom.service.quickstart.samples/xsd", "tns"); | |
OMElement method = fac.createOMElement("getCustomerName", omNs); | |
OMElement value = fac.createOMElement("name", omNs); | |
value.addChild(fac.createOMText(orderId + "")); | |
method.addChild(value); | |
return method; | |
} | |
public static OMElement addItemPayload(String orderId, String itemName, | |
int quantity) { | |
OMFactory fac = OMAbstractFactory.getOMFactory(); | |
OMNamespace omNs = fac.createOMNamespace( | |
"http://axiom.service.quickstart.samples/xsd", "tns"); | |
OMElement method = fac.createOMElement("addItem", omNs); | |
OMElement orderIDElement = fac.createOMElement("OrderId", omNs); | |
orderIDElement.addChild(fac.createOMText(orderId)); | |
OMElement itemElement = fac.createOMElement("Item", omNs); | |
OMElement nameElement = fac.createOMElement("Name", omNs); | |
nameElement.addChild(fac.createOMText(itemName)); | |
OMElement quantityElement = fac.createOMElement("Quantity", omNs); | |
quantityElement.addChild(fac.createOMText(quantity + "")); | |
itemElement.addChild(nameElement); | |
itemElement.addChild(quantityElement); | |
method.addChild(orderIDElement); | |
method.addChild(itemElement); | |
return method; | |
} | |
public static OMElement addItemToInventoryPayload(String name, | |
int quantity, double price) { | |
OMFactory fac = OMAbstractFactory.getOMFactory(); | |
OMNamespace omNs = fac.createOMNamespace( | |
"http://axiom.service.quickstart.samples/xsd", "tns"); | |
OMElement method = fac.createOMElement("addItemToInventory", omNs); | |
OMElement nameElement = fac.createOMElement("Name", omNs); | |
OMElement priceElement = fac.createOMElement("Price", omNs); | |
OMElement quantityElement = fac.createOMElement("Quantity", omNs); | |
nameElement.addChild(fac.createOMText(name)); | |
priceElement.addChild(fac.createOMText(price + "")); | |
quantityElement.addChild(fac.createOMText(quantity + "")); | |
method.addChild(nameElement); | |
method.addChild(quantityElement); | |
method.addChild(priceElement); | |
return method; | |
} | |
public static OMElement getAllItemsFromInventoryPayload() { | |
OMFactory fac = OMAbstractFactory.getOMFactory(); | |
OMNamespace omNs = fac.createOMNamespace( | |
"http://axiom.service.quickstart.samples/xsd", "tns"); | |
OMElement method = fac | |
.createOMElement("getAllItemsFromInventory", omNs); | |
return method; | |
} | |
private static Policy loadPolicy(String xmlPath) throws Exception { | |
StAXOMBuilder builder = new StAXOMBuilder(xmlPath); | |
return PolicyEngine.getPolicy(builder.getDocumentElement()); | |
} | |
public static void main(String ars[]) { | |
try { | |
Options options = new Options(); | |
options.setTo(targetEPR); | |
options.setTransportInProtocol(Constants.TRANSPORT_HTTP); | |
ConfigurationContext configContext = null; | |
configContext = ConfigurationContextFactory | |
.createConfigurationContextFromFileSystem("/Users/dimuthuupeksha/Documents/Academic/internship/WSO2/svn/dimuthuu/Axis2/OrderProcessingService","/Users/dimuthuupeksha/Documents/Academic/internship/WSO2/svn/dimuthuu/Axis2/OrderProcessingService/resources/axis2.xml"); | |
ServiceClient sender = new ServiceClient(configContext,null); | |
System.out.println("Using WS-Security"); | |
sender.engageModule("addressing"); | |
sender.engageModule("rampart"); | |
try { | |
options.setProperty( | |
RampartMessageData.KEY_RAMPART_POLICY, | |
loadPolicy("/Users/dimuthuupeksha/Documents/Academic/internship/WSO2/wso2esb-4.8.0/repository/samples/resources/policy/policy_3.xml")); | |
} catch (Exception e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} | |
sender.setOptions(options); | |
// Creating a new Order. Customer name should be passed | |
OMElement createOrderPayload = createOrderPayload("Dimuthu"); | |
sender.fireAndForget(createOrderPayload); | |
System.out.println("Order added \n"); | |
// Get customer name of a given order | |
OMElement getCustomerNamePayload = getCustomerNamePayload(0); | |
OMElement result = sender.sendReceive(getCustomerNamePayload); | |
String response = result.getFirstElement().getText(); | |
System.out.println("Customer Name :" + response); | |
// Add an item to a given order | |
OMElement addItemPayload = addItemPayload("Order 0", "Apple mac", | |
10); | |
result = sender.sendReceive(addItemPayload); | |
response = result.getFirstElement().getText(); | |
System.out.println("Message: " + response); | |
// Add an item to the inventory | |
OMElement addItemToInventoryPayload = addItemToInventoryPayload( | |
"New Item", 100, 32.32); | |
result = sender.sendReceive(addItemToInventoryPayload); | |
response = result.getFirstElement().getText(); | |
System.out.println("Message : " + response); | |
// Printing the all inventory item details | |
System.out.println("\nItem inventory..."); | |
OMElement getAllItemsFromInventoryPayload = getAllItemsFromInventoryPayload(); | |
result = sender.sendReceive(getAllItemsFromInventoryPayload); | |
Iterator<OMElement> it = result.getChildren(); | |
while (it.hasNext()) { | |
OMElement item = (OMElement) it.next(); | |
Iterator<OMElement> itemIterator = item.getChildren(); | |
while (itemIterator.hasNext()) { | |
OMElement itemAttr = (OMElement) itemIterator.next(); | |
System.out.println(itemAttr.getLocalName() + " : " | |
+ itemAttr.getText()); | |
} | |
System.out.println(); | |
} | |
} catch (AxisFault e) { | |
// TODO Auto-generated catch block | |
e.printStackTrace(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment