EcoreUtil.equals
메서드로 이상한 동작을 관찰하고 있습니다. 두 개의 다른 위치 (정확히 2 개 위치에있는 파일)에서 동일한 2 개의 XML 파일을로드 중입니다. 리소스의 createResource
및 load
메서드를 사용합니다.EcoreUtil.equals는 다른 위치에서 동일한 리소스를로드하여 생성 된 두 개의 EObject를 비교할 때 false를 반환합니다.
ECoreUtil.equals
은 2에 대한 false를 반환합니다. EObjects
. EcoreUtil.equals
코드를 디버깅 할 때 EClass
및 EStructuralFeature
의 == 검사로 인해 오류가 발생하는 것으로 나타났습니다. 클래스와 구조적 특징은 동일하지만 두 개의 별도 인스턴스 인 EClass
과 EStructuralFeature
이 표시됩니다. EcoreUtil.equals
은 기능 및 클래스를 확인하므로 실패합니다.
내가 이해할 수없는 것은 EClass
및 EStructuralFeature
에 대해 2 개의 인스턴스가 생성되는 이유입니다. 나는 2 개의 XML 파일에 차이가 없다고 확신한다. 하나는 다른 하나의 사본입니다.
ecore 모델의 설정이 그 이유 일 수 있습니까? 내 XML 파일에 xmi:id
속성이 있습니다.
나는이 문제로 난처한 상황에 처해있다. 아무도 어떤 포인터를 줄 수 있습니까?
감사합니다, Arati
안녕하세요 Ed - 답장을 보내 주셔서 감사합니다. 나는 이클립스 포럼에 올렸지 만, 그건 검토 목록이다. 동일한 리소스 세트를 사용하여 리소스로드를 시도했지만 도움이되지 않았습니다. 사실, XML 스니 j은 AnyTypeImpl로 맵핑됩니다 (XML 파일은 제어 할 수없는 여러 유형의 오브젝트를 포함 할 수 있으 G로 확장 가능합니다). 그래서 URI 매핑을 위해 EPackage를 사용할 수 없습니다. 결과적으로 내부적으로 FeatureMaps가있는 두 개의 AnyTypeImpl EObject를 비교하게됩니다. 그리고 나는 항상 EClass 또는 FeatureMap 또는 EStructuralFeature의 두 가지 인스턴스를 얻습니다. – user1790625