How to Customize EMF Loading

EMF 2010. 9. 27. 15:02
EMF문서는 일반적으로 굉장히 복잡한 과정을 거쳐 파일로 부터 EObject 문서를 만들어 내기 때문에 어느지점을 수정해야할지 막막하기 그지없습니다. 주요역할을 하는 개체로는 리소스, Load, 로드 핸들러, 헬퍼가 있으며, 그 흐름은 다음과 같습니다.

EMF 문서의 읽기의 개요

ResourceImpl -> LoadImpl: doLoad
LoadImpl -> LoadHandler: SAX Events
LoadHandler -> XMLHelper: Deligates
XMLHelper -> XMLHelper : Build EObject DOM
XMLHelper -> ResourceImpl: 

ResourceImpl

리소스 객체는 기본적으로 EObject 문서를 시리얼라이즈 디시리얼라이즈 하는 진입점이 됩니다. 또한 리소스셋과 함께 멀티플 리소스의 관리도 이루어집니다.

  • createXMLLoad() / createXMLSave() : XMLLoad및 XMLSave를 만듭니다.
  • createXMLHelper() : XMLLoad및 XMLSave를 도와줄 XMLHelper를 만듭니다.

XMLLoadImpl

입력스트림을 SAX 처리하여, 문서를 구성하고 노드들을 탐색하며 에러등을 처리합니다. 대부분의 작업은 LoadHandler에 위임됩니다.

  • makeDefaultHandler() : SAX이벤트에 대응하여 문서를 작성하는 핸들러를 생성합니다.
  • handleErrors() : 문서의 진단 정보를 어떻게 처리할 것인지를 오버라이드 할 수 있습니다.

LoadHandler

SAXParser 이벤트 리스너와 유사합니다. 파일을 읽는 동안 진행상태등을 표시하려면 이것을 오버라이드 해야 합니다. save, load 시에 전달되는 Map에 IProgressMonitor등을 넣어두는 테크닉을 이용합니다.

  • sax이벤트 메소드들
  • 레퍼런스 업데이트

XMLHelper

XML과 EObject DOM사이의 최후의 중재자입니다. 로드 핸들러로부터 요청받아 DOM을 만들고, 속성을 지정하는 등의 작업을 수행합니다.

질문은 메일로만 받고 있습니다. jeeeyul@지메일.com

'EMF' 카테고리의 다른 글

EMF, XML 1.1 읽어들이기 문제  (0) 2011.04.18
EMF 트랜잭션 관리  (0) 2009.06.08
Posted by 지이이이율
,