package org.fireflow.service.java;
import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.dom4j.DocumentException;
import org.dom4j.DocumentFactory;
import org.dom4j.io.SAXReader;
import org.fireflow.model.InvalidModelException;
import org.fireflow.model.io.service.ServiceParser;
import org.fireflow.model.servicedef.ServiceDef;
import org.fireflow.model.servicedef.impl.JavaInterfaceDef;
import org.junit.Assert;
import org.junit.Test;
import org.w3c.dom.Document;
public class JavaServiceParserTest {
@Test
public void testJavaServiceParser()throws Exception {
try {
List<ServiceDef> services = this.buildServices();
String xml = ServiceParser.serializeToXmlString(services);
System.out.println(xml);
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setNamespaceAware(true);
try {
DocumentBuilder documentBuilder = docBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new ByteArrayInputStream(xml.getBytes("UTF-8")));
List<ServiceDef> services2 = ServiceParser.deserialize(document);
Assert.assertNotNull(services2);
Assert.assertEquals(services.size(), services2.size());
ServiceDef svc1_2 = services.get(1);
ServiceDef svc2_2 = services2.get(1);
Assert.assertEquals(svc1_2.getId(), svc2_2.getId());
Assert.assertEquals(svc1_2.getDisplayName(), svc2_2.getDisplayName());
Assert.assertEquals(svc1_2.getBizCategory(), svc2_2.getBizCategory());
Assert.assertEquals(svc1_2.getDescription(), svc2_2.getDescription());
Assert.assertEquals(svc1_2.getInvokerBeanName(), svc2_2.getInvokerBeanName());
Assert.assertEquals(((JavaInterfaceDef)svc1_2.getInterface()).getInterfaceClassName(),
((JavaInterfaceDef)svc2_2.getInterface()).getInterfaceClassName());
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// DocumentFactory df = new DocumentFactory();
// Document ddf.createDocument("UTF-8");
} catch (InvalidModelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
fail(e.getMessage());
}
}
protected List<ServiceDef> buildServices(){
List<ServiceDef> list = new ArrayList<ServiceDef>();
////////////service1//////////////////////////
JavaService svc = new JavaService();
svc.setName("java_service_1");
svc.setDisplayName("调用XYZ功能");
svc.setDescription("This is a java service");
svc.setBizCategory("abc\\xyz");
svc.setInvokerBeanName("testInvokerBean");
svc.setJavaBeanName("testJavaBean");
svc.setJavaClassName("org.firesoa.test.Test");
JavaInterfaceDef javaInterface = new JavaInterfaceDef();
javaInterface.setInterfaceClassName("org.firesoa.test.Test");
svc.setInterface(javaInterface);
svc.getExtendedAttributes().put("key1", "value1");
svc.getExtendedAttributes().put("key2", "value2");
list.add(svc);
/////////////service2//////////////////////////
svc = new JavaService();
svc.setName("java_service_2");
svc.setDisplayName("调用XYZ功能");
svc.setDescription("This is a java service");
svc.setBizCategory("abc\\xyz");
svc.setInvokerBeanName("testInvokerBean");
svc.setJavaBeanName("testJavaBean");
svc.setJavaClassName("org.firesoa.test.Test");
javaInterface = new JavaInterfaceDef();
javaInterface.setInterfaceClassName("org.firesoa.test.Test");
svc.setInterface(javaInterface);
svc.getExtendedAttributes().put("key1", "value1");
svc.getExtendedAttributes().put("key2", "value2");
list.add(svc);
return list;
}
}