Skip to content

Instantly share code, notes, and snippets.

@DImuthuUpe
Created December 9, 2013 04:00
Show Gist options
  • Save DImuthuUpe/7867226 to your computer and use it in GitHub Desktop.
Save DImuthuUpe/7867226 to your computer and use it in GitHub Desktop.
Secure Client
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