📄 houseloanagency.java
字号:
package houseloanbroker;
import javax.jbi.messaging.ExchangeStatus;
import javax.jbi.messaging.Fault;
import javax.jbi.messaging.InOut;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
import javax.jbi.messaging.NormalizedMessage;
import javax.xml.namespace.QName;
import javax.xml.transform.TransformerException;
import org.apache.servicemix.MessageExchangeListener;
import org.apache.servicemix.components.util.ComponentSupport;
import org.apache.servicemix.jbi.jaxp.SourceTransformer;
import org.apache.servicemix.jbi.jaxp.StringSource;
import org.apache.servicemix.jbi.util.DOMUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.traversal.NodeIterator;
import com.sun.org.apache.xpath.internal.CachedXPathAPI;
public class HouseLoanAgency extends ComponentSupport implements MessageExchangeListener {
public HouseLoanAgency() {
setService(new QName("urn:sample:soa:houseloanagency", "HouseLoanAgencyService"));
setEndpoint("houseLoanAgency");
}
private static String[][] loanStatusList = {
{"Zhang San","0"},
{"Li Si","1"},
{"Wang Wu","2"},
{"Zhao Liu","3"}
};
public void onMessageExchange(MessageExchange exchange) throws MessagingException {
InOut inOut = (InOut) exchange;
if (inOut.getStatus() == ExchangeStatus.DONE) {
return;
} else if (inOut.getStatus() == ExchangeStatus.ERROR) {
return;
}
try {
Document doc = (Document) new SourceTransformer().toDOMNode(inOut.getInMessage());
String name = textValueOfXPath(doc, "//*[local-name()='name']");
String operation = null;
if (inOut.getOperation() != null) {
operation = inOut.getOperation().getLocalPart();
} else {
operation = doc.getDocumentElement().getLocalName();
}
String output;
if ("getHouseNumber".equals(operation)) {
System.out.println("get number operation");
output = "<getHouseNumberResponse xmlns=\"urn:sample:soa:houseloanagency\"><housenumber>" + getHouseNumber(name) + "</housenumber></getHouseNumberResponse>";
}else {
System.out.println("else operation>>>>>>>>>>");
throw new UnsupportedOperationException(operation);
}
if(getHouseNumber(name) == -1)
{
Fault fault = inOut.createFault();
fault.setContent(new StringSource("<InvalidNAME xmlns=\"urn:sample:soa:houseloanagency\"><name>" + name + "</name></InvalidNAME>"));
fail(inOut, fault);
} else
{
System.out.println("output>>>>>>"+output);
NormalizedMessage answer = inOut.createMessage();
answer.setContent(new StringSource(output));
answer(inOut, answer);
}
} catch (Exception e) {
throw new MessagingException(e);
}
}
private int getHouseNumber(String name) {
int houseNumber = -1;
for (int i=0; i<loanStatusList.length; i++){
String[] item = loanStatusList[i];
String itemName = item[0];
int itemNum = Integer.parseInt(item[1]);
if (name.equalsIgnoreCase(itemName))
{
houseNumber = itemNum;
break;
}
}
return houseNumber;
}
protected String textValueOfXPath(Node node, String xpath) throws TransformerException {
CachedXPathAPI cachedXPathAPI = new CachedXPathAPI();
NodeIterator iterator = cachedXPathAPI.selectNodeIterator(node, xpath);
Node root = iterator.nextNode();
if (root instanceof Element) {
Element element = (Element) root;
if (element == null) {
return "";
}
String text = DOMUtil.getElementText(element);
return text;
}
else if (root != null) {
return root.getNodeValue();
} else {
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -