2011-11-29 3 views
2

Eclipse의 Xtext 프레임 워크를 사용하여 DSL을 개발 중입니다.캐시 된 정보를 Eclipse 편집기 또는 자원에 첨부하려면 어떻게합니까?

콘텐츠 지원/코드 완성을 위해 필자에게 문자열 목록을 생성하는 값 비싼 프로세스가 있습니다.

어떻게 처리 결과를 캐시합니까?

Long story : My DSL은 Groovy 스크립트와 인터페이스합니다. 이 스크립트는 내 DSL의 특정 장소에서 제공하는 방법을 제공합니다. 이것은 스크립트의 메서드를 구문 분석하기 위해 정규 표현식을 사용하는 경우에도 매우 느립니다. 그래서 스크립트 분석 결과를 캐싱하고 싶습니다.

필자의 분석에서 분석 코드는 유효성 검사 중에 호출되므로 (필자는 항상 편집기가없는 것은 물론) 사용자가 DSL 파일을 열 때.

유효성 검사가 끝났을 때 알 수있는 방법이 없습니다. 코드는 개인 메서드이며 Xtext 개발자는이를 거부합니다. 그러나 Eclipse 용 편집기/컴파일러를 작성할 때 이것이 공통적 인 문제라고 생각합니다. 다른 사람들이이 문제를 어떻게 해결합니까? Eclipse 프레임 워크에 캐싱 서비스가 있습니까?

답변

1

Xtext에서 제공하는 JVM 모델을 사용할 수 있습니다. Groovy Plugin이 설치되어있는 한 그 유형과 방법이 플러그인을 통해 사용 가능해야합니다.

캐싱 : 그것의 변화가 있다면 자동으로 퇴거하는 캐시가 자원에

.

((XtextResource)x.eResource()).getCache().get(myKey, x.eResource(), 
    new Provider<List<String>>(){ 
     public List<String> get() { 
      return computeGroovyMethodNames(); 
     } 
    }) 

캐시도 주입 될 수

@Inject 
private IResourceScopeCache cache