2008. 7. 9.

이클립스개발/익스텐션 포인트

아래의 소스는 사용자가 정의한 확장포인트를 확장하는 모든 확장에 대하여
속성 class에 해당하는 클래스를 로드하는 클래스이다.


// 플렛폼에서 익스텐션레지스트리를 얻은 후 해당 플러그인 ID 및
// 익스텐션포인트이름을 이용해 익스텐션 포인트를 획득한다.
// 획득한 익스텐션 포인트를 확장하는 모든 익스텐션을 획득한다.
IExtension[] extensions = Platform.getExtensionRegistry()
.getExtensionPoint(Activator.PLUGIN_ID, EXTENTION_POINT_NAME)
.getExtensions();
for (IExtension extension : extensions) {
// 익스텐션의 설정 정보를 취득한다.
for (IConfigurationElement configurationElement : extension
.getConfigurationElements()) {
// 설정정보에서 속성명이 class인 속성을 취득한다. 여기에서는 그 값은
// 로드하고자하는 어떤 클래스의 "패키지.클래스명"의 문자열이다.
String classAttr = configurationElement.getAttribute("class");

try {
Class clazz = Platform.getBundle(
extension.getContributor().getName()).loadClass(
classAttr);

beanFactoryList.add((BeanFactory) clazz.newInstance());

} catch (Exception e1) {
throw new RuntimeException(e1);
}
}
}

댓글 없음: