📄 extensibilityquerybindingimpl.java
字号:
/** * ExtensibilityQueryBindingImpl.java * */package test.wsdl.extensibility;import org.apache.axis.components.logger.LogFactory;import org.apache.axis.message.MessageElement;import org.apache.axis.message.Text;import org.apache.commons.logging.Log;import javax.xml.namespace.QName;import java.io.PrintWriter;import java.io.StringWriter;import java.rmi.RemoteException;import java.util.Calendar;public class ExtensibilityQueryBindingImpl implements ExtensibilityQueryPortType { private final static String[] books = new String[] { "The Grid", "The Oxford Dictionary" }; private final static String[] subjects = new String[] { "Computer Science", "English" }; protected static Log log = LogFactory.getLog(ExtensibilityQueryBindingImpl.class.getName()); public ExtensibilityType query(ExtensibilityType query) throws RemoteException { ExtensibilityType result = new ExtensibilityType(); Object obj = null; try { obj = query.get_any()[0].getObjectValue(BookType.class); } catch (Exception e) { StringWriter writer = new StringWriter(); PrintWriter out = new PrintWriter(writer); log.error("Error converting query: " + writer.toString()); throw new RemoteException(e.toString()); } log.error("Incoming MessageContext " + obj + " : " + query.get_any()[0].toString()); if (obj instanceof BookType) { BookType bookQuery = (BookType)obj; String subject = bookQuery.getSubject(); if (!"all".equals(subject)) { throw new RemoteException("ExtensibilityQueryBindingImpl: Book subject query should be all, instead was " + subject); } ResultListType resultList = new ResultListType(); QueryResultType[] queryResult = new QueryResultType[books.length]; for (int i = 0; i < books.length; i++) { queryResult[i] = new QueryResultType(); queryResult[i].setName(subjects[i]); queryResult[i].setStatus(StatusType.MORE); queryResult[i].setValue(books[i]); queryResult[i].setTime(Calendar.getInstance()); queryResult[i].setQueryType(new QName("urn:QueryType","BookQuery")); } resultList.setResult(queryResult); QName elementName = QueryResultElement.getTypeDesc().getFields()[0].getXmlName(); MessageElement me = new MessageElement(elementName.getNamespaceURI(), elementName.getLocalPart(), resultList); log.debug("Outgoing message: " + me.toString()); result.set_any(new MessageElement [] { me }); } else { throw new RemoteException("Failed to get FindBooksQueryExpressionElement. Got: " + obj); } return result; } public ExtensibilityType mixedQuery(ExtensibilityType query) throws RemoteException { MessageElement [] elements = query.get_any(); if (elements == null) { throw new RemoteException("No any"); } if (elements.length != 3) { throw new RemoteException("Expected: 3 got: " + elements.length + " element"); } String expected = "123 456"; String received = elements[0].toString(); if (!expected.equals(received)) { throw new RemoteException("Expected: " + expected + " received: " + received); } Object obj = null; try { obj = elements[1].getObjectValue(BookType.class); } catch (Exception e) { throw new RemoteException("Failed to deserialize", e); } BookType bookQuery = (BookType)obj; String subject = bookQuery.getSubject(); if (!"all".equals(subject)) { throw new RemoteException("ExtensibilityQueryBindingImpl: Book subject query should be all, instead was " + subject); } expected = "789"; received = elements[2].toString(); if (!expected.equals(received)) { throw new RemoteException("Expected: " + expected + " received: " + received); } ExtensibilityType reply = new ExtensibilityType(); MessageElement [] replyElements = new MessageElement[2]; BookType book = new BookType(); book.setSubject("gotAll"); QName elementName = FindBooksQueryExpressionElement.getTypeDesc().getFields()[0].getXmlName(); replyElements[0] = new MessageElement(elementName.getNamespaceURI(), elementName.getLocalPart(), book); replyElements[1] = new MessageElement(new Text("ABCD")); reply.set_any(replyElements); return reply; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -