public interface TestService { public void test(String name); }
public class TestServiceImpl implements TestService { @Override public void test(String name) { System.out.println("test:" + name); } }
public class BurlapSkeletonTest { private static TestServiceImpl testService; private static BurlapSkeleton skeleton; @BeforeClass public static void initialize() { testService = new TestServiceImpl(); skeleton = new BurlapSkeleton(testService, TestService.class); } private Document initBurlapRequest() throws BurlapException { DocumentBuilder domBuilder = null; try { domBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); } catch (ParserConfigurationException e) { throw new BurlapException(e); } return domBuilder.newDocument(); } private InputStream getBurlapInputStream(Document doc) throws BurlapException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); Transformer transformer = null; try { TransformerFactory transFactory = TransformerFactory.newInstance(); transformer = transFactory.newTransformer(); } catch (Exception e) { throw new BurlapException(e); } transformer.setOutputProperty("encoding", "gb2312"); transformer.setOutputProperty("indent", "yes"); // omit xml declaration // <?xml version="1.0" encoding="GB2312" standalone="no"?> transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); DOMSource source = new DOMSource(); source.setNode(doc); StreamResult result = new StreamResult(); result.setOutputStream(bos); try { transformer.transform(source, result); } catch (Exception e) { throw new BurlapException(e); } System.out.println(new String(bos.toByteArray())); return new ByteArrayInputStream(bos.toByteArray()); } /** * <burlap:call> * <method>test</method> * <string>helloworld</string> * </burlap:call> * * @throws IOException */ @Test public void invoke() throws IOException { Document doc = null; try { doc = initBurlapRequest(); } catch (BurlapException e) { throw new IOException(e); } Element root = doc.createElement("burlap:call"); Element element = doc.createElement("method"); element.setTextContent("test"); root.appendChild(element); element = doc.createElement("string"); element.setTextContent("helloworld"); root.appendChild(element); doc.appendChild(root); InputStream isToUse; try { isToUse = getBurlapInputStream (doc); } catch (BurlapException e) { throw new IOException(e); } OutputStream osToUse = new ByteArrayOutputStream(); BurlapInput in = new BurlapInput(isToUse); BurlapOutput out = new BurlapOutput(osToUse); try { skeleton.invoke(in, out); } catch (Throwable e) { e.printStackTrace (); } } }