package egovframework.rte.fdl.xml.ehcache; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.apache.log4j.Logger; import java.io.*; import java.util.*; import org.jdom.*; import org.jdom.input.*; import egovframework.rte.fdl.xml.EgovConcreteDOMFactory; import egovframework.rte.fdl.xml.EgovConcreteSAXFactory; import egovframework.rte.fdl.xml.EgovDOMValidatorService; import egovframework.rte.fdl.xml.EgovSAXValidatorService; import egovframework.rte.fdl.xml.SharedObject; import egovframework.rte.fdl.xml.XmlLog; import egovframework.rte.fdl.xml.exception.UnsupportedException; import java.net.*; /** * CategoryControllerTest is TestCase of CategoryController * * @author Byunghun Woo */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:spring/context-xmltest.xml" }) public class CacheXMLTest { @Resource(name = "domconcreteCont") EgovConcreteDOMFactory domconcrete = null; @Resource(name = "saxconcreteCont") EgovConcreteSAXFactory saxconcrete = null; String cacheServerIP; int cacheServerPort=0; String Storekey; String Retrievekey; String XMLFileName; Logger logger = XmlLog.getLogger(CacheXMLTest.class); String XMLFileName1 = "spring/context-sql.xml"; String fileName = Thread.currentThread().getContextClassLoader().getResource(XMLFileName1).getFile(); public void setXMLFileName(String XMLFileName) { this.XMLFileName = XMLFileName; } public void setPortNIp(String cacheServerIP,int cacheServerPort) { this.cacheServerIP = cacheServerIP; this.cacheServerPort = cacheServerPort; //64208 } public void setStorekey(String Storekey) { this.Storekey = Storekey; } public void setRetrievekey(String Retrievekey) { this.Retrievekey = Retrievekey; } public void sendCacheServer(List list) { Socket socket = null; ObjectOutputStream oos= null; ObjectInputStream ooi= null; SharedObject sObject = null; try { socket = new Socket(cacheServerIP, cacheServerPort); oos = new ObjectOutputStream(socket.getOutputStream()); sObject = new SharedObject(Storekey,list); oos.writeObject(sObject); ooi = new ObjectInputStream(socket.getInputStream()); sObject = (SharedObject)ooi.readObject(); logger.debug("서버로 부터 Message :" +sObject.getValue()); } catch(Throwable t) { t.printStackTrace(); } finally { try { oos.close(); } catch(Throwable t) {t.printStackTrace();} try { socket.close(); } catch(Throwable t) {t.printStackTrace();} } } public SharedObject getCacheServer() { Socket socket = null; ObjectOutputStream oos= null; ObjectInputStream ooi= null; SharedObject sObject = null; try { socket = new Socket(cacheServerIP, cacheServerPort); oos = new ObjectOutputStream(socket.getOutputStream()); sObject = new SharedObject("*",Retrievekey); oos.writeObject(sObject); ooi = new ObjectInputStream(socket.getInputStream()); sObject = (SharedObject)ooi.readObject(); } catch(Throwable t) { t.printStackTrace(); System.exit(1); } finally { try { oos.close(); } catch(Throwable t) {t.printStackTrace();} try { socket.close(); } catch(Throwable t) {t.printStackTrace();} } return sObject; } public void viewEelement(List list) { Iterator i = list.iterator(); while (i.hasNext()) { Element element = (Element) i.next(); List attList = element.getAttributes(); if (attList.size() != 0) { // 역시 속성리스트를 다시 iterator 로 담고 Iterator ii = attList.iterator(); while(ii.hasNext()) { /** Attribute 파싱 **/ // iterator 로 부터 하나의 속성을 꺼내와서... Attribute at = (Attribute)ii.next(); logger.debug("attribute : " + at.getName() +" attribute value : " + at.getValue()); logger.debug("Element1 Name :"+(String)element.getName() +" Element1 Value:"+(String)element.getValue()); } // end of while } // end of 속성 if List list2 = element.getChildren(); if(list2.size() > 1) { viewEelement(list2); } } } @Test public void ModuleTest() throws IOException,JDOMException{ // TODO Auto-generated method stub EgovDOMValidatorService domValidator = null; EgovSAXValidatorService saxValidator = null; String cacheServerIP = "127.0.0.1"; String Storekey = "1"; int cacheServerPort = 64208; CacheXMLAgent cxa = new CacheXMLAgent(); cxa.setPortNIp(cacheServerIP, cacheServerPort); cxa.setStorekey(Storekey); cxa.setXMLFileName(XMLFileName1); saxValidator = saxconcrete.CreateSAXValidator(); SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(new File(fileName)); // List list = domValidator.getResult(doc,"//*[@*]"); List list = saxValidator.getResult(doc,"//*[@*]"); // 1. 캐쉬에 저장 cxa.sendCacheServer(list); // 2. 캐쉬로부터 조회 /* cxa.setRetrievekey("1"); SharedObject sobject = cxa.getCacheServer(); List list_ = (List)sobject.getValue(); cxa.viewEelement(list_); */ } }