2012-11-01 1 views
1

EcoreUtil.equals 메서드로 이상한 동작을 관찰하고 있습니다. 두 개의 다른 위치 (정확히 2 개 위치에있는 파일)에서 동일한 2 개의 XML 파일을로드 중입니다. 리소스의 createResourceload 메서드를 사용합니다.EcoreUtil.equals는 다른 위치에서 동일한 리소스를로드하여 생성 된 두 개의 EObject를 비교할 때 false를 반환합니다.

ECoreUtil.equals은 2에 대한 false를 반환합니다. EObjects. EcoreUtil.equals 코드를 디버깅 할 때 EClassEStructuralFeature의 == 검사로 인해 오류가 발생하는 것으로 나타났습니다. 클래스와 구조적 특징은 동일하지만 두 개의 별도 인스턴스 인 EClassEStructuralFeature이 표시됩니다. EcoreUtil.equals은 기능 및 클래스를 확인하므로 실패합니다.

내가 이해할 수없는 것은 EClassEStructuralFeature에 대해 2 개의 인스턴스가 생성되는 이유입니다. 나는 2 개의 XML 파일에 차이가 없다고 확신한다. 하나는 다른 하나의 사본입니다.

ecore 모델의 설정이 그 이유 일 수 있습니까? 내 XML 파일에 xmi:id 속성이 있습니다.

나는이 문제로 난처한 상황에 처해있다. 아무도 어떤 포인터를 줄 수 있습니까?

감사합니다, Arati

답변

1

그것은 eclipse.tools.emf 포럼에 EMF에 대해 질문하는 것이 좋습니다.

두 개 이상의 EPackage가있는 이유에 대한 힌트를주는 것은 없습니다. 그것은 당신이 동적 Ecore 모델을 사용하는 인스턴스 파일을 제안하는 것 같습니다. 그럴까요? 이 경우에도 동일한 자원 세트에서 자원을로드하면 단일 모델을 공유해야합니다.

+0

안녕하세요 Ed - 답장을 보내 주셔서 감사합니다. 나는 이클립스 포럼에 올렸지 만, 그건 검토 목록이다. 동일한 리소스 세트를 사용하여 리소스로드를 시도했지만 도움이되지 않았습니다. 사실, XML 스니 j은 AnyTypeImpl로 맵핑됩니다 (XML 파일은 제어 할 수없는 여러 유형의 오브젝트를 포함 할 수 있으 G로 확장 가능합니다). 그래서 URI 매핑을 위해 EPackage를 사용할 수 없습니다. 결과적으로 내부적으로 FeatureMaps가있는 두 개의 AnyTypeImpl EObject를 비교하게됩니다. 그리고 나는 항상 EClass 또는 FeatureMap 또는 EStructuralFeature의 두 가지 인스턴스를 얻습니다. – user1790625